Конференция "Игры" » Глюк в анимации смд [Delphi, Windows]
 
  • 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
 
Конференция "Игры" » Глюк в анимации смд [Delphi, Windows]
Есть новые Нет новых   [134431   +10][b:0][p:0.002]