-
Pa5ha © (03.10.07 21:03) [0]Вобщем пытаюсь сейчас присобачить анимацию. Вобщем то я бы сказал, что все работает но есть одно но.
Анимацию пока только одну пробовал, вот нашол в данных проблемный участок:death3.smd
46 "Bip01 R Thigh" 1
time 80
46 0.000005 -0.000003 -3.619081 1.190866 2.377027 0.668896
time 81
46 0.000005 -0.000003 -3.619081 1.329434 2.288924 0.698778
time 82
46 0.000005 -0.000003 -3.619081 1.534188 2.221815 0.756434
time 83
46 0.000005 -0.000003 -3.619081 -1.373787 0.934963 -2.326650
time 84
46 0.000005 -0.000003 -3.619081 -1.175133 0.896615 -2.318040
time 85
46 0.000005 -0.000003 -3.619081 -1.048860 0.811196 -2.381857
А теперь подробнее. Между 82 и 83 кадрами нога делает некрасивое вращательное движение (анимация из кс-а кстати). Я сначала подумал, что это из-за того что разница во вращениях между этими двумя кадрами больше 2*pi, пропарсил файл на предмет таких нестыковок, но оказалось, что это не так. Кто-нить может объяснить как убрать такие баги?
ЗЫ.: поясню формат куска файла анимации:
первые три float - координаты кости x,y,z;
вторая тройка float - вращения кости x,y,z в радианах, кака я понимаю. Все это 46 кость, т.е. бедро, которое крутится не так как надо. -
Тындекс (04.10.07 01:57) [1]Чем проигрываешь? Может проигрыватель глючит?
-
Pa5ha from university ) (04.10.07 13:50) [2]Проигрываю своей прогой и проблема явно в ней т.к. в милкшейпе все работает как надо. Не могу понять в чем проблема и как надо преобразовать исходные данные.
-
Тындекс (05.10.07 05:40) [3]
> Pa5ha from university ) (04.10.07 13:50) [2]
>
> Проигрываю своей прогой и проблема явно в ней
На GLScene?
Если нет, как ты делаешь преобразования фрейма к фрейму? Возможно в этом месте ошибка. -
Pa5ha © (05.10.07 20:51) [4]Тындекс, нет, прога просто на опенГл и апи. Преобразования делаю просто: V_Lerp. Короче просто интерполяция линейная от одного вращения к другому, от одного Translation к другому. И ииногда между некоторыми кадрами некоторые части тела бесяца вот так вот.
-
Тындекс (06.10.07 03:56) [5]
> Pa5ha © (05.10.07 20:51) [4]
>
> Тындекс, нет, прога просто на опенГл и апи. Преобразования
> делаю просто: V_Lerp. Короче просто интерполяция линейная
> от одного вращения к другому, от одного Translation к другому.
> И ииногда между некоторыми кадрами некоторые части тела
> бесяца вот так вот.
V_Lerp чего? Уголов в радианах из smd-файла? Так нельзя.
Нужно перевести ротации в кватернионы, и делать Lerp им. Функция Lerp для кватернионов, если надо, есть в GLScene в файле VectorGeometry.pas. -
Pa5ha © (06.10.07 15:42) [6]Тындекс, обясни пожайлуйста почему? Я вот никак в кватернионы доганть не могу.
-
Тындекс (08.10.07 04:15) [7]
> Pa5ha © (06.10.07 15:42) [6]
>
> Тындекс, обясни пожайлуйста почему? Я вот никак в кватернионы
> доганть не могу.
Скажу честно, я не знаю почему. Просто знаю, что с углами Эйлера может глючить, а с кватернионами нормально работает.
> Я вот никак в кватернионы доганть не могу.
Что именно? Форумала Lerp ( QuaternionSlerp ) для кватернионов есть здесь:
http://glscene.cvs.sourceforge.net/glscene/Source/Base/VectorGeometry.pas?revision=1.54&view=markup