Документация
Docs/ru/reference/model-format/composition.md
Композиция моделей
Сгенерированный справочник. Не редактируйте напрямую. Обновите
BuildTools/ModelFormatInterface.json, затем запуститеpython BuildTools/docs_model_format.py --write.
| Индекс | Синтаксис | Токены | Композиция | Ресурсы | Анимация | Валидация | Каноническая JSON-модель | Руководство |
Runtime-композиция начинается с default Root, затем активирует links, у которых Layer и Value совпадают с текущим model-layer array.
Процесс композиции слоёв
- Скопировать предоставленный проектом layer array.
- Применить точные overrides
AnimLayerValueдля запрошенной animation. - Применить default
Root: transforms, materials, effects, disables и cuts. - Активировать совпавшие layer
Root, child attachments и particle attachments. - Удалить children и particles, links которых перестали быть активны.
- Перегенерировать combined meshes при изменении composition, materials, effects или cuts.
Директивы композиции
| Directive | Контекст | Контракт авторинга | Runtime-эффект | Источник |
|---|---|---|---|---|
Root |
description or selected Layer/Value |
Без Layer выбирает default root modifier; при active Layer и ненулевом Value создаёт modifier пары. | Может преобразовать model, изменить speed/materials/effects, отключить meshes/layers и применить cuts без child. | Source/Tools/ModelInfoBaker.cpp |
Attach |
selected Layer/Value |
Создаёт layer-selected child-model link. Path относителен к файлу с directive. | С Link child присоединяется к одной parent bone; без него одноимённые child/parent bones образуют shared-skeleton attachment. У direct FBX/OBJ child нет description-level коррекции scale, поэтому static extent должен находиться между Baking.ModelAttachmentMinExtent и Baking.ModelAttachmentMaxExtent. | Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
AttachParticles |
selected Layer/Value |
Создаёт layer-selected baked-particle link. Resource path хранится буквально, не относительно description. | Client создаёт particle на Link bone и удаляет её, когда активирующий layer value больше не выбран. | Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
Link |
current layer link |
Задаёт parent bone текущего non-default link; игнорируется на default или dummy link. | Child целиком присоединяется к bone; particle требует bone. Пустой child-model link не использует её в runtime. | Source/Tools/ModelInfoBaker.cpp |
Cut |
current link |
Добавляет baked cut volumes в выбранные composed-mesh layers. Дефис разделяет lists, - пропускает unskin fields, ~ обращает unskin shape. | Combined geometry внутри или снаружи shapes удаляется; optional paired bones управляют unskin. | Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
RotX, RotY, RotZ, MoveX, MoveY, MoveZ, ScaleX, ScaleY, ScaleZ, Speed |
current link |
Задаёт transform axis или playback-speed multiplier. Rotation задаётся в градусах. | Ненулевые values умножают model transform или speed chain; ноль не даёт вклада. | Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
Scale |
current link |
Задаёт одинаковые ScaleX, ScaleY, ScaleZ. | Ненулевое value создаёт uniform scale transform. | Source/Tools/ModelInfoBaker.cpp |
RotX+, RotY+, RotZ+, MoveX+, MoveY+, MoveZ+, ScaleX+, ScaleY+, ScaleZ+, Speed+ |
current link |
Прибавляет к transform/speed field; при нуле operand становится initial value. | Include может накладывать additive adjustments без base assignment. | Source/Tools/ModelInfoBaker.cpp |
Scale+ |
current link |
Применяет additive rule ко всем scale axes. | Даёт uniform additive adjustment для templates и selected links. | Source/Tools/ModelInfoBaker.cpp |
RotX*, RotY*, RotZ*, MoveX*, MoveY*, MoveZ*, ScaleX*, ScaleY*, ScaleZ*, Speed* |
current link |
Умножает transform/speed field; при нуле operand становится initial value. | Include применяет proportional adjustments, сохраняя ноль как runtime identity sentinel. | Source/Tools/ModelInfoBaker.cpp |
Scale* |
current link |
Применяет multiplicative rule ко всем scale axes. | Даёт uniform proportional scale adjustment. | Source/Tools/ModelInfoBaker.cpp |
DisableLayer |
current link |
Добавляет indices в disabled-layer set; каждое значение проверяется по range. | При active link совпавшие layer slots пропускаются в model instance. | Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
DisableMesh |
current link |
Добавляет drawable mesh names в disabled set; All хранит empty wildcard. | При active link совпавшие meshes исключаются из combined geometry. | Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
Texture |
current link and Mesh selector |
Переопределяет texture slot выбранного mesh или всех. Не-Parent names относительны к current model mesh; Parent копирует active parent texture в attached-model context. | Override участвует в mesh batching и adjustment texture-atlas coordinates. | Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
Effect |
current link and Mesh selector |
Переопределяет draw effect выбранного mesh или всех; Parent копирует active parent effect. | Meshes с разными effects не могут делить combined draw batch. | Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
DisableShadow |
description |
Отключает shadow rendering всех instances description. | Model-level flag объединяется с per-instance shadow toggle. | Source/Tools/ModelInfoBaker.cpp, Source/Client/ModelInstance.cpp |
Выбор attachment
- Используйте
Attach child.fo3d, если child нужны собственные description, layers, materials, cuts или animations. - Используйте
Attach child.fbxилиAttach child.objдля прямой baked hierarchy. - Добавьте
Link Bone, чтобы поместить весь child под одной parent bone. - Не задавайте
Linkтолько когда parent и child намеренно имеют одноимённые bones и child должен следовать parent skeleton. - Для particles используйте
AttachParticles ... Link Bone; runtime требует target bone.