HAnim PLG (Секция RW)

Материал из GTAModding.ru
Перейти к: навигация, поиск
Секция RenderWare
HAnim PLG
0x011E

HAnim (Hierarchical Animation) - секция DFF-файла, которая является расширением и хранится в секции Frame List. Эта секция содержит данные для фреймов, которые задействованы в иерархической анимации. По сути, эти фреймы являются костями скелетной анимации.

Структура

В начале секции размещены основные параметры кости.

4b hAnimVersion - версия формата иерархии анимации (во всех версиях GTA - 1.0 (0x100))
4b nodeId - пользовательский id этой кости
4b numNodes - количество костей в иерархии (если данная кость является корневой; для других костей этот параметр равен 0)

Если параметр numNodes отличен от нуля (т.е. если кость является корневой), то данная структура дополняется ещё двумя параметами:

4b - flags - флаги иерархии анимации
4b - keyFrameSize - размер информации (в байтах) о фрейме анимации (в GTA этот параметр равен 36)

а также - массивом, который содержит информацию о каждой задействованной в анимации кости (размер массива - количество костей numNodes):

4b - nodeID - пользовательский id кости
4b - nodeIndex - индекс кости в массиве
4b - flags - флаги кости

Флаги иерархии анимации

Данные флаги представляют набор параметров создания и обновления иерархии.

    1 SUBHIERARCHY - иерархия наследуется от другой иерархии
    2 NOMATRICES - иерархия не использует локальные матрицы для костей
 4096 UPDATEMODELLINGMATRICES - производить обновление локальных матриц костей
 8192 UPDATELTMS - производить пересчет мировых матриц для костей
16384 LOCALSPACEMATRICES - иерархия вычисляет матрицы в локальном пространстве

Флаги костей

1 POPPARENTMATRIX - этот флаг должен быть выставлен для костей, которые не имеют дочерних костей
2 PUSHPARENTMATRIX - этот флаг должен быть выставлен для всех костей, кроме тех, которые являются последними на конкретном иерархическом уровне