И еще хотел добавить (тема сложноватая), что когда я в своем экспортере беру эту мировую матрицу и просто вывожу модели на экран- все безупречно, все модели рисуються правильно. Но когда я беру эту матрицу мировую и извлекаю из нее кватернионы и трансляцию- то не все модели рисуються правильно, некоторые криво. Так же из моих наблюдений я заметил, что ключи трансляции правильно размещают все меши моделей (меши из которых состоят модели) в пространстве- значит дело не в трансляции. А вот кватернионы, и ключи перемещения- с глюками извлекаються из мировой матрицы.
Вот я приведу пример где глюки. Пример из сохраненного глючного Х файла модели - анимация левой задней ноги. В Х файлах кватернионы храняться в старом виде w,x,y,z. Первый раздел AnimationKey это ключи вращения, кватернионы, второй AnimationKey это ключи трансляции. Что тут не правильно в первом AnimationKey:
Animation {
AnimationKey { 0; 11; 0;4;0.687315,0.726359,0.000000,-0.000000;;, 960;4;0.667000,0.745058,0.000000,-0.000000;;, 1920;4;0.901349,-0.433094,0.000000,0.000000;;, 2880;4;0.912962,-0.408044,0.000000,0.000000;;, 3840;4;0.912962,-0.408044,0.000000,0.000000;;, 4800;4;0.959572,0.281465,0.000000,0.000000;;, 5760;4;0.887640,0.460539,0.000000,0.000000;;, 6720;4;0.857729,0.514103,0.000000,0.000000;;, 7680;4;0.829761,0.558119,0.000000,0.000000;;, 8640;4;0.767139,0.641481,0.000000,0.000000;;, 9600;4;0.702755,0.711432,0.000000,-0.000000;;; }
AnimationKey { 2; 11; 0;3;0.000000,-90.000000,3.000000;;, 960;3;0.000000,-90.000000,3.000000;;, 1920;3;0.000000,-90.000000,3.000000;;, 2880;3;0.000000,-90.000000,3.000000;;, 3840;3;0.000000,-90.000000,3.000000;;, 4800;3;0.000000,-90.000000,3.000000;;, 5760;3;0.000000,-90.000000,3.000000;;, 6720;3;0.000000,-90.000000,3.000000;;, 7680;3;0.000000,-90.000000,3.000000;;, 8640;3;0.000000,-90.000000,3.000000;;, 9600;3;0.000000,-90.000000,3.000000;;; } { Frame_22 } }
Не правильные третий, четверный и пятый ключи потому что x кватерниона идет со знаком "-":
1920;4;0.901349,-0.433094,0.000000,0.000000;;, 2880;4;0.912962,-0.408044,0.000000,0.000000;;, 3840;4;0.912962,-0.408044,0.000000,0.000000;;,
Я убераю этот "-" редактирую Х файл- и моделька нормально воспроизводиться - левая задняя нога нормально анимируеться. Если "-" не убераю, оставляю Х файл как есть- то глюки в модельке при анимации.
Откуда может появляться этот знак "-"?
|