Экспорт в FBX: 3ds Max, Maya, Blender
This guide covers the correct methods for exporting to an Fbx file. Necessary settings are described for three software packages: 3ds Max, Maya, and Blender.
Гайд сообщества, переведённый на русский с mod.io.
Важное примечание относительно осей координат.
Как описано в разделе «2.1. Координатные оси» основного руководства, в игре грузовик ориентирован по оси OX. Ось OY направлена вверх. Ось OZ направлена влево.

Эта ориентация соответствует осям (x, y, -z) в Maya:

И в 3DS Max к осям (x, z, y):

В Blender оси такие же, как и в 3DS Max. Итак, ориентация игры соответствует ориентации осей (x, z, y) в Blender:

Таким образом, чтобы правильно экспортировать грузовик, во время экспорта передняя ось вашего грузовика должна смотреть в направлении оси OX.
Настройки экспорта в вашем 3D-редакторе должны точно соответствовать скриншотам ниже. Обязательно обратитесь к правильному разделу, соответствующему вашему пакету программного обеспечения 3D-редактора.
После экспорта, когда вы приступите к указанию свойств грузовика в XML, вам следует принять во внимание разницу в ориентации осей, как описано выше.
Например: Если координаты центра колеса вашего грузовика в 3Ds Max или Blender равны (1; 2; 3) , то в XML-описании этого колеса нужно указать «(1; 3; 2)» в качестве значения атрибута Pos: Pos="(1; 3; 2)"
Подготовка сцены в 3ds Max.
В 3Ds Max в качестве костей для скиннинга можно использовать кости, хелперы или сетки. Однако для движка SnowRunner:
- Ведь помощник ничем не отличается от кости – это всего лишь каркас.
- но сетка рассматривается этим движком как кадр с объектом cdt.
Движок SnowRunner использует два типа фреймов:
- Фреймы физической модели («физические фреймы») — эти фреймы должны иметь форму cdt.
- Нефизические рамки – нефизические рамки не могут иметь форму. Это также необходимо.
Мы рекомендуем использовать один из следующих подходов для настройки грузовика в 3ds Max:
- Подход №1: Редактируемые полюса для физических фреймов; Кости или помощники для нефизических каркасов.
- Подход №2: Все кадры можно сделать с использованием костей. Необходимые cdt-меши следует добавлять как дочерние элементы соответствующих костей. Имена этих сеток должны начинаться с «cdt».
- Подход №3: Если вы повторно используете настройки из MudRunner, вам нужно удалить формы на нефизических костях. Например, вы можете сделать это, например, с помощью модификатора DeleteMesh.
Перед экспортом мы рекомендуем использовать утилиту Reset xForm для всех объектов.

Все материалы должны иметь правильные названия. Разрешены только латинские символы, цифры и «_». Имена не должны содержать специальных символов (за исключением «_»).
Вам нужно только экспортировать сетки со скинами, кости и сетки cdt. Поэтому мы рекомендуем вам использовать Экспорт > Экспортировать выбор.

Настройки экспорта должны быть следующими:

Preparing the scene in Maya
Настройки юнитов в сцене должны быть следующими:

Export settings:

Подготовка сцены в Blender
ПРИМЕЧАНИЕ. В этом документе представлены настройки для Blender 2.82.
Scene settings
Чтобы гарантировать, что юниты на сцене и в игре совпадают, настройки в Blender должны выглядеть следующим образом:

С этими настройками импорт fbx-шаблона можно выполнить с настройками импортера по умолчанию.
Setup of the truck
В сцене грузовик должен располагаться по направлению оси X.

Ориентация костей важна для описания поведения грузовика. Поэтому для достижения более простых и удобных XML-описаний мы рекомендуем строить скелет с помощью Keep Offset Parent.

Объекты столкновений могут быть связаны с физическими костями следующим образом:

Архитектура скелета в Blender отличается от аналогичной архитектуры в большинстве 3D-инструментов. При экспорте в Fbx система создает дополнительный узел Armature, который является корневым узлом скелета. Все сетки со скинами находятся на одном уровне иерархии с этим узлом.
На рисунке слева показана иерархия после преобразования из Maya или 3dsMax. На рисунке справа показана иерархия в Blender.


Из-за создания дополнительного узла Armature преобразователь движка не может быть родительским для скин-геометрии под корневой костью и поэтому принудительно создает узел RootNode самостоятельно.
Неверное решение проблемы с арматурой
В XML вы можете явно указать корневую кость, используя атрибут ModelFrame. В этом случае дополнительные узлы будут игнорироваться.
Однако в случае такого подхода корневой фрейм фактически останется в точке появления, поскольку корневой узел остается на месте. Так, система неправильно определит координаты грузовика. Это приведет к некорректной работе (например, в игре не будут открываться зоны на карте).
Правильное решение проблемы с арматурой
Узлы, не описанные в XML, игнорируются (принудительно привязываются к родительским узлам). Следовательно, мы можем рассматривать RootNode, созданный во время преобразования, как корневую физическую кость. Для корректной работы в Havok этот узел должен иметь объект столкновения. Итак, для корректной работы вам необходимо изменить иерархию и переродить cdt-меш: переместить его из текущего положения под корневую кость и поместить на тот уровень иерархии, где находится скелет Арматуры:


Фактически у нас будет RootNode как физическая кость, отвечающая за работу в Havok, и BoneRootNodeSkin как скиннинг-кость, отвечающая за деформацию геометрии.

В случае такого подхода явное описание корневой кости в XML не требуется, но если вы хотите это сделать, то нужно помнить, что RootNode всегда является корнем.
Export Settings
Чтобы избежать экспорта ненужных компонентов, используйте «Экспорт выбранных объектов» и отключите добавление костей листьев. Настройки для этого показаны ниже:
