Экспорт в FBX: 3ds Max, Maya, Blender

Источник: гайд сообщества mod.io
Автор: SnowRunner_Support
Просмотров: 3,790

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

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

Скриншот из гайда

Оригинал гайда на mod.io →