Опять у меня с математикой проблемы. 2 дня пробую и так и эдак, но не получается как надо. Ненавижу!
У персонажа такой скелет (спереди):
RA - правое предплечье, RH - от локтя и до пальцев, с левой рукой аналогично.
Линии из точек - это смещение костей друг от друга.
Для разных предметов в руке предумотрена разная ориентация RA и RH, причем скрипт управления камерой и передвижением написан так, что позволяет немного поворачивать голову влево-вправо относительно позвоночника. Чтобы описать позы для каждого предмета я записал в массив локальную ориентацию RA и RH. Проблема с RA в том, что его ориентация считается относительно спины, а вращается голова. В результате если смотреть ровно прямо, то рука устанавливается в правильное положение, а если есть небольшое отклонение - RA уже повернута немного не так. Я не могу вразумить - как найти такой Quaternion, чтобы при его умножении на localRotation головы сразу получить правильный localRotation для RA.
Временно удочерить руки к голове не вариант - должна еще воспроизводиться анимация рук (покачивание, отдача, перезарядка), так что нарушать иерархию костей скелета нельзя. И еще - руки и голова, конечно же, изначально имеют разные ориентации (т.е локальная ось Z смотрит в разные стороны), иначе все решалось бы очень просто.