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 - этот флаг должен быть выставлен для всех костей, кроме тех, которые являются последними на конкретном иерархическом уровне