Повернуть руку вместе с головой

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Повернуть руку вместе с головой

Сообщение AndreyMust19 08 фев 2013, 17:10

Опять у меня с математикой проблемы. 2 дня пробую и так и эдак, но не получается как надо. Ненавижу!
У персонажа такой скелет (спереди):

human.jpg

RA - правое предплечье, RH - от локтя и до пальцев, с левой рукой аналогично.
Линии из точек - это смещение костей друг от друга.

Для разных предметов в руке предумотрена разная ориентация RA и RH, причем скрипт управления камерой и передвижением написан так, что позволяет немного поворачивать голову влево-вправо относительно позвоночника. Чтобы описать позы для каждого предмета я записал в массив локальную ориентацию RA и RH. Проблема с RA в том, что его ориентация считается относительно спины, а вращается голова. В результате если смотреть ровно прямо, то рука устанавливается в правильное положение, а если есть небольшое отклонение - RA уже повернута немного не так. Я не могу вразумить - как найти такой Quaternion, чтобы при его умножении на localRotation головы сразу получить правильный localRotation для RA.
Временно удочерить руки к голове не вариант - должна еще воспроизводиться анимация рук (покачивание, отдача, перезарядка), так что нарушать иерархию костей скелета нельзя. И еще - руки и голова, конечно же, изначально имеют разные ориентации (т.е локальная ось Z смотрит в разные стороны), иначе все решалось бы очень просто.
У вас нет доступа для просмотра вложений в этом сообщении.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: Повернуть руку вместе с головой

Сообщение Syberex 09 фев 2013, 01:13

Наверно ты делаешь так:
rh.transform.rotation = rh.transform.rotation * q_rot;

а нужно:
rh.transform.localRotation = rh.transform.localRotation * q_rot;
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Повернуть руку вместе с головой

Сообщение AndreyMust19 09 фев 2013, 07:59

У меня в массиве заданы конечные localRotation костей RA и RH для каждого предмета. Скрипт за 0.5f секунды меняет поворот руки с начального на конечный функцией Slerp. Конечный localRotation как раз и надо изменять во время поворота, чтобы учитывать положение головы.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: Повернуть руку вместе с головой

Сообщение Syberex 09 фев 2013, 13:29

Значит нужно запоминать не только локальные позиции, а и локальные повороты и также их лерпить в процессе :-?
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Повернуть руку вместе с головой

Сообщение AndreyMust19 24 фев 2013, 22:44

В общем, убрал поворот головы, оставил только поворот туловища. До лучших времен, когда будет настроение. :ymsigh:
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34