Как повернуть абстраткную модель вместе с головой игрока?

Версия Minecraft
1.7.10
API
Forge

VeniVidiVici

Санта Барбарис
327
15
198
Появился ещё один вопрос.

У меня есть obj модель, которая рендерится непосредственно в координатах головы игрока, не связана с броней. Как можно заставить её вращаться вместе с головой игрока?

Т.е. аналогия вот этих строк в самом ModelBiped:
ModelBiped:
this.bipedHead.rotateAngleY = p_78087_4_ / (180F / (float)Math.PI);
this.bipedHead.rotateAngleX = p_78087_5_ / (180F / (float)Math.PI);

Не понимаю, как мне из игрока получить его модель, да и что это за p_78087_4_ и p_78087_5_ в оригинальном методе? Предполагаю, что это rotationYaw и rotationPitch, однако не могу собрать пазл.

Если использую
Поворот:
GL11.glRotatef(player.rotationYaw, 0F, -1F, 0F);
То модель вращается, но почему-то рывками и не пропорционально голове, иным шагом
 
Последнее редактирование:
7,099
324
1,510
Вращение происходит вокруг начала координат. Поэтому нужно сместить центр модели в начало координат, повернуть, и сместить обратно.
Чтобы было не рывками используй интерполяцию между углом в текущем тике и в предыдущем
 

VeniVidiVici

Санта Барбарис
327
15
198
Вращение происходит вокруг начала координат. Поэтому нужно сместить центр модели в начало координат, повернуть, и сместить обратно.
Да вращается вроде как по нужной оси.
Чтобы было не рывками используй интерполяцию между углом в текущем тике и в предыдущем
А можно поподробнее этот момент? Как правильно это задать в формуле?

Спасибо, но я умею пользоваться поиском по форуму, читал эту тему, и указал в посте, что использую предмет не в виде брони. Соответственно мне не подходит используемый в данной теме метод привязки к повороту модели Biped
 
7,099
324
1,510
А можно поподробнее этот момент? Как правильно это задать в формуле?
Примерно так, линейная интерполяция:
rotationYawPrev + (rotationYaw - rotationYawPrev) * partialTick

Не знаю, есть ли в ванильном игроке поле для rotationYaw предыдущего тика. Если нету - запоминай его в своей переменной. На новых версиях удобно делать это в капабилити
 

VeniVidiVici

Санта Барбарис
327
15
198
Я понимаю, но данный способ можно использовать не только для брони. Я к примеру, юзаю его для рендера рюкзаков в кастумном слоте
Хм, тогда я видать не до конца понимаю саму суть конструкции. А всё же, как тогда получить саму модель, к которой привзываться?

Примерно так, линейная интерполяция:
rotationYawPrev + (rotationYaw - rotationYawPrev) * partialTick

Не знаю, есть ли в ванильном игроке поле для rotationYaw предыдущего тика. Если нету - запоминай его в своей переменной. На новых версиях удобно делать это в капабилити
Спасибо, попробую вечером. Если правильно помню, то Prev там есть.
 

VeniVidiVici

Санта Барбарис
327
15
198
Примерно так, линейная интерполяция:
rotationYawPrev + (rotationYaw - rotationYawPrev) * partialTick
Попробовал и так и эдак, что-то у меня немного не то получается. Попробую наверное всё же перелопатить под псевдо модель брони, чтобы напрямую связать с biped. Спасибо за советы hohserg1 BambyGail
 

VeniVidiVici

Санта Барбарис
327
15
198
Я вот заметил, что у меня объект крутится правильно вместе с головой, пока не начинает поворачиваться тело. После того как достигло края, и начало крутиться тело - голова соответственно относительно тела не меняется, а вот объект продолжает совершать поворот. То есть мне надо как-то учесть в формуле поворот самого тела.
Пробовал из
player.prevRotationYawHead + (player.rotationYawHead - player.prevRotationYawHead)
вычитать player.rotationYaw - player.prevRotationYaw, исходя из логики, что так я отсеку лишний доворот, который совершило тело. Но явно хромают мои знания геометрии и математики, забытого школьного курса, потому что оно так не сработало, и объект продолжает уходить за плечо.
 

VeniVidiVici

Санта Барбарис
327
15
198
Посмотрел, но пока ничего полезного не приметил. Там в основном всё про сам рендер, а я вот пытаюсь извратиться на привязку его к голове объекта. К самому объекту модель то я без проблем привязал, она крутится вместе с ним в нужной позиции
 
7,099
324
1,510
В этом туторе рассматривается та же проблема
1604593147559.png
 
Сверху