Модель жесткого соединения (.cmp)
🔥 Обзор
Комплекс, состоящий из нескольких частей. Корабли с разрушаемыми частями, станции с док-портами, имеющими подвижные двери, и т. д.
Комплексная модель включает в себя одну или несколько .3db, используя общие ресурсы (сетки, материалы и т. д.) между частями.
Запись Cmpnd содержит часть Root и другие части, начинающиеся с префикса Part_. Иерархические отношения между частями определяются в записи ограничений Cons.
stateDiagram-v2
File_name: File name
Object_name: Object name
Constraint: Fix, Rev, Pris, etc
Part: Root, Part_*
Fragment: part.3db
VMesh: VMeshPart or MultiLevel
VMeshLibrary --> mesh.vms
mesh.vms --> VMeshData
Cmpnd --> Cons
Cons --> Constraint
Cmpnd --> Part
Part --> Object_name
Part --> Index
Part --> File_name
Object_name --> Constraint : Value ref
File_name --> Fragment : Value ref
Fragment --> VMesh
Fragment --> VMeshWire
VMeshWire --> VWireData
VWireData --> VMeshData : meshId reference
Fragment --> Hardpoints
VMesh --> VMeshRef
VMeshRef --> VMeshData : meshId reference
💥 Ограничения
- Имена родительских и дочерних частей в ограничениях всегда имеют размер 64 байта, независимо от фактической длины строки, строка обрезается на символе NUL.
📎 Fix (fixed)
| Имя | Тип | Описание |
|---|---|---|
| parent | char[64] | Имя родителя. |
| child | char[64] | Имя ребенка. |
| translation | float[3] | Вектор сдвига. |
| rotation | float[9] | Матрица поворота 3x3. |
- Неодушевленный, но может быть сделан разрушаемым через раздел [CollisionGroup] в архетипе.
🔭 Rev (revolute)
| Имя | Тип | Описание |
|---|---|---|
| parent | char[64] | Имя родителя. |
| child | char[64] | Имя ребенка. |
| translation | float[3] | Вектор сдвига. |
| offset | float[3] | Вектор смещения. |
| rotation | float[9] | Матрица поворота 3x3. |
| axis | float[3] | Вектор оси направления. |
| min | float | Минимальный угол. |
| max | float | Максимальный угол. |
- Анимация с помощью ключевых кадров с одним значением типа float.
🔭 Pris (prismatic)
| Имя | Тип | Описание |
|---|---|---|
| parent | char[64] | Имя родителя. |
| child | char[64] | Имя ребенка. |
| translation | float[3] | Вектор сдвига. |
| offset | float[3] | Вектор смещения. Unused. |
| rotation | float[9] | Матрица поворота 3x3. |
| axis | float[3] | Вектор оси направления. |
| min | float | Минимальная длина. |
| max | float | Максимальная длина. |
- Анимация с помощью ключевых кадров с одним значением типа float.
💨 Cyl (cylindric)
| Имя | Тип | Описание |
|---|---|---|
| parent | char[64] | Имя родителя. |
| child | char[64] | Имя ребенка. |
| translation | float[3] | Вектор сдвига. |
| offset | float[3] | Вектор смещения. |
| rotation | float[9] | Матрица поворота 3x3. |
| axis | float[3] | Ось направления. |
| rotateMin | float | |
| rotateMax | float | |
| slideMin | float | |
| slideMax | float |
- ❗ Существует, но, по-видимому, не используется. Попытка анимировать цилиндрическое соединение приводит к сбою игры.
🔥 Sphere (spherical)
Шарнирное соединение и, в отличие от ограничения поворота, его вращение не фиксировано по оси.
| Имя | Тип | Описание |
|---|---|---|
| parent | char[64] | Имя родителя. |
| child | char[64] | Имя ребенка. |
| translation | float[3] | Вектор сдвига. |
| rotation | float[9] | Матрица поворота 3x3. |
| pitchMin | float | |
| pitchMax | float | |
| yawMin | float | |
| yawMax | float | |
| rollMin | float | |
| rollMax | float |
- Анимация с помощью ключевых кадров со значением кватерниона.
📎 Loose
Обеспечивает свободное движение (перемещение и вращение).
| Имя | Тип | Описание |
|---|---|---|
| parent | char[64] | Имя родителя. |
| child | char[64] | Имя ребенка. |
| translation | float[3] | Вектор сдвига. |
| rotation | float[9] | Матрица поворота 3x3. |
- Анимация с помощью ключевых кадров со значениями векторов и кватернионов.
