Показать сообщение отдельно
Старый 04.09.2014, 22:27   #324
mr.DIMAS
Дэвелопер
 
Аватар для mr.DIMAS
 
Регистрация: 26.12.2006
Адрес: Санкт-Петербург
Сообщений: 1,572
Написано 547 полезных сообщений
(для 1,540 пользователей)
Ответ: [TrueHorror] - разработка

У меня опять вопросы по скелетке. Сейчас я рассчитываю вершины таким макаром:

newPosition += ( ( boneNode->globalTransform * boneNode->invBoneBindTransform ) 
* globalTransform ) * initialPosition * bone.weight;
как видно, вершины получаются в глобальной системе координат, и поэтому перед отрисовкой я передаю в шейдер единичную мировую матрицу. Меня это не устраивает. По логике нужно рассчитывать вершины в локальных координатах, но если так сделать, т.е:

newPosition += ( ( boneNode->globalTransform * boneNode->invBoneBindTransform ) ) 
* initialPosition * bone.weight;
А в шейдер передать мировую матрицу, то анимация благополучно превратится в говно. В чем косяк?


boneNode->globalTransform * boneNode->invBoneBindTransform

Эта строчка позволяет получить относительную трансформацию относительно первого кадра? Или трансформацию в локальных координатах?

Пжлста разъясните, а то криповый момент в игру не добавить
__________________

(Offline)
 
Ответить с цитированием