Каждому объекту присваивается его порядковый номер при следовании в файле, поле parent выставляется в -1, если у данного объекта нет родителя. Вот пример. объект | номер | parent --------+-------+-------- A | 0 | -1 B | 1 | 0 A C | 2 | 1 +---------+----+ D | 3 | 2 B K N E | 4 | 1 +----+----+ + + F | 5 | 4 C E H L O G | 6 | 5 + + + + + H | 7 | 1 D F I M P I | 8 | 7 + + J | 9 | 8 G J K | 10 | 0 L | 11 | 10 M | 12 | 11 N | 13 | 0 O | 14 | 13 P | 15 | 14
Насколько я понял, дерево используется следующим образом: если к какому-то узлу дерева применяется преобразование, то оно же автоматически применяется и ко всем узлам, "растущим" из этого. То есть, если объект B в нашем примере есть рука, а объекты C, D, E, F, G, H, I, J - пальцы, то при повороте руки пальцы должны повернуться автоматически, вместе с рукой. В результате блок CHUNK_TRACKROTATE для пальцев может быть пустым, а пальцы будут вращаться вместе с рукой.
Блок:
Данные:
Формат:
Центр вращения - это как раз та точка "начального" объекта, через которую надо будет провести ось вращения, задающуюся в блоке CHUNK_TRACKROTATE.
Блок:
Данные:
Формат:
Блок:
Данные:
Формат:
Только самое первое ключевое значение задает абсолютный поворот.