А, так вот оно чо... Последняя фраза мне объяснила всю суть проблемы В смысле вот эта вот:
Смешения в анимациях заданы одним набором, да, это не ошибка и тут нет логического несоответствия. Для расчета правильной позиции косточки необходимо учитывать не только это смещение, но и "саму кость" (из bon-файла). У меня сейчас, к сожалению, нет возможности посмотреть собственный код, но я точно помню, что классический подход к анимации мне не подошел. Если я правильно помню, мне в итоге вообще пришлось забить на смещения из anm и рендерить анимированный скелет только с помощью вращений. Смещения для косточек используются вроде только в случае корневых костей (первая кость дерева в скелете).
Короче говоря, упрощенно алгоритм для расчета позиции и ориентации некорневой кости на кажом кадре можно представить примерно вот так:
1) Повернуть текущую кость (из bon-файла) на родительскую ориентацию
2) Прибавить к получившемуся смещению смещение родительской кости (предрасчитанное уже)
3) Взять текущую ориентацию и довернуть ее на родительскую ориентацию
В итоге получишь нужные смещение и ориентацию для кости. Под "текущими" ориентациями я понимаю кватернион, считанный из anm.
IDoL,Пятница, 15 Июля 2011, 12:13 Написал:Так вот если смещения по комплекции у нас считаются - мы используем все 8 наборов fig8, а если нтерполируем смещение из anm, то совершенно непонятно как его пересчитать по комплекции - набор смещений у нас тут вроде как один.
[right][snapback]40881[/snapback][/right]
Смешения в анимациях заданы одним набором, да, это не ошибка и тут нет логического несоответствия. Для расчета правильной позиции косточки необходимо учитывать не только это смещение, но и "саму кость" (из bon-файла). У меня сейчас, к сожалению, нет возможности посмотреть собственный код, но я точно помню, что классический подход к анимации мне не подошел. Если я правильно помню, мне в итоге вообще пришлось забить на смещения из anm и рендерить анимированный скелет только с помощью вращений. Смещения для косточек используются вроде только в случае корневых костей (первая кость дерева в скелете).
Короче говоря, упрощенно алгоритм для расчета позиции и ориентации некорневой кости на кажом кадре можно представить примерно вот так:
1) Повернуть текущую кость (из bon-файла) на родительскую ориентацию
2) Прибавить к получившемуся смещению смещение родительской кости (предрасчитанное уже)
3) Взять текущую ориентацию и довернуть ее на родительскую ориентацию
В итоге получишь нужные смещение и ориентацию для кости. Под "текущими" ориентациями я понимаю кватернион, считанный из anm.
Duty is everything, the greatest of joys, the deepest of sorrows.