Создание и экспорт объектов из 3ds Max

Материал из CryWiki Russia

Перейти к: навигация, поиск

Содержание

Создание и экспорт объектов из 3ds Max

ExportMax image023.png

Описание

С помощью этой статьи вы научитесь создавать простые объекты и экспортировать их из 3ds Max в .cgf.

Этот урок предполагает, что пользователь понимает основы 3ds Max, такие как пользовательский интерфейс и создание простой геометрии.

Подготовка объекта

Структура папки

Все папки содержащие объекты, должны быть помещены в корневую папку игры. Для этого урока я создам свой объект в качестве примера в Game\Objects\Testbox. Объекты, помещенные вне папки игры, не будут работать в движке.


Объект

Для начала, создайте простой box (коробка) в 3ds Max, метр на метр. Поскольку Sandbox использует метрическую систему для того, чтобы измерить расстояния, вы можете использовать сантиметры в 3ds Max.

  • Центр объекта в 3ds Max будет соответствовать центру объекта в движке.
  • Удостоверьтесь, что вашему объекту назначены группы сглаживания. Движок назначит группу сглаживания для любых полигонов, иначе это может привести к нежелательным визуальным результатам.
  • Удостоверьтесь, что у вашего объекта есть координаты текстурной карты (UVW mapping).
  • Вы можете использовать любые стеки модификатора на своем объекте, они не будут затрагивать экспорт, и ваш объект успешно экспортируется в движок.
  • Чем больше полигонов, которые имеет ваш объект, тем дольше он будет экспортироваться, хотя экспорт вообще проходит очень быстро.
  • Ваш объект должен быть либо редактируемой сеткой (Editable Mesh) либо редактируемой поверхностью (Editable Poly).


Создание материала для объекта

Чтобы использовать текстуры и шейдер эффекты, объект нуждается в материале. Материалы сохранены в .mtl-файлах. В этой части урока мы создадим материал в 3ds Max и научимся передавать, информацию в .mtl-файл, где это можно будет отредактировать позже с помощью редактора материалов (Material Editor) в SandBox'е.

1. Откройте редактор материалов в 3ds Max.

2. Выберите новый материал, нажмите на "Standard" и измените тип материала на "Multi/Sub-Object".

ExportMax image003.png

3. Установите подматериальный счет на 3. Движок поддерживает до 32 подматериалов. Чем больше подматериалов использует объект, тем сильней уменьшается производительность. Поэтому лучше всего найти способ удерживать чилов подматериалов настолько низко, насколько это возможно.

4. Дайте материалу и всем подматериалам название. Когда вы создадите материальный файл, эти названия будут переданы. Название материала, которое вы назначаете на объект в 3ds Max, должно быть таким же как и название самого материального файла. Мы назовём материал "Testbox" и создадим материальный файл с названием "Testbox.mtl"

Sandbox ExportMax image005.png

5. Откройте каждый подматериал, и в “Shader Basic Parameters” измените тип шейдера на “Crytek Shader”. Вы должны использовать только Crytek Shader для ваших объектов. Другие типы шейдеров не будут работать правильно после экспорта. Если у вас возникли проблемы, пожалуйста проверьте, что все плагины установлены правильно.

Sandbox ExportMax image007.png

Вы увидите новый раскрывшийся список рядом с "Physicalization". Этот список задает пути для работы материалов в движке. Пока, нам только интересны два из них; Default и Physical Proxy.

  • Default — нормальный материал. Вы будете использовать его для большинства материалов. Он ничего не меняет.
  • Physical Proxy — специальный материал, который вы можете использовать для физикализированной (Physicalized) геометрии. Этот параметр применяется с физикализированной геометрией, но при рендере его не видно.

6. Третий подматериал должен быть с параметром “physics proxy” (объясню позже). Откройте этот подматериал и измените тип Physicalization на “Physical Proxy NoDraw)”.

Нажмите на флажок "Physicalization" рядом со свитком. Это будет физикализируемым материалом в движке. Если этот флажок не будет поставлен, то ваш объект не будет физикализирован, а это значит что объект ни с чем не будет физически взаимодействовать в игре.

Sandbox ExportMax image009.png

Если ваш объект имеет отдельную физическую прокси (physics proxy), то данная геометрия не должна быть в физикализирована.

7. Нам нужно назначить текстуру каждого подматериала за исключением подматериал physics proxy, который будет невидимым и использоваться только для соединения.

Перейдите к первому подматериалу и в свитке Maps выберите Diffuse Color Map "Bitmap".

Sandbox ExportMax image011.png

Найдите текстуру, которую вы будите использовать. Все текстуры (за исключением Flash текстуры) должны быть либо в формате TIF, либо в формате DDS, подходящими для CryENGINE.

Теперь, подберите изображение для Bump Normals Map. Не забудьте приписать суффикс "_DDN", иначе текстура не будет работать как normalmaps. Эта текстура будет вашей картой нормалей. Использование карты нормалей конечно не обязательно, но желательно.

Повторите эти шаги и со вторым подматериалом. Используя различные текстуры.

Назначение материала на объект

1. Назначьте свой мультиматериал на объект.

2. Измените ID материала одних полигонов на 1, а других на 2. Убедитесь, что объект не имеет материальных идентификаторов вне числа подматериалов, которые имеет мультиматериал. При наличии текстур они будут отображаться как "Replace Me".


Создание физической прокси

В сложных многополигональных объектах, как правило, используется вспомогательная сетка называемая physics proxy. Физикализированные объекты в игровом мире можно связать друг с другом и больше полигонов, эти объекты будут иметь более интенсивные физические расчеты. Поэтому с physics proxy вы можете иметь больше полигонов насколько это возможно.

Сложные proxy также могут привести к некорректному поведению во время столкновений. Proxy также используется для взаимодействия с игроком.

С physics proxy объект всегда должен быть с "закрытой" сеткой, и не должен иметь открытых ребер. Открытые края могут вызвать различные проблемы с физическим взаимодействием, а также может вызывать уменьшение производительности поэтому следует избегать их, по возможности.

1. Сделайте копию окна сетки на уровне элемента

2. Назначение "Proxy" sub-material ID к нему. Он теперь будет действовать в качестве physics proxy.


Создание файла материала

1. Откройте CryENGINE 2 экспортер в Utility. Это хорошей идеей будет добавить кнопку для экспортера в список кнопок Utility, если вы собираетесь использовать его не раз.

2. В нижней части окна утилы можно найти свиток "Material".

Sandbox ExportMax image013.png

Убедитесь, что вы находитесь в корневом уровне вашего материала в MAX. Это означает, что вы не должны просматривать какой-либо из подматериалов, а просто в multimaterial. Если вы находитесь в каком-либо из подматериалов при создании файла .mlt, файл будет содержать только то, что содержит подматериал, и ничего больше.

3. Нажмите на кнопку "Create Material". Это позволит открыть окно редактора материалов в SandBox. Теперь, в MAX снова нажмите на кнопку "Create Material". Вам будет предложено ввести имя для нового файла MTL. Убедитесь, что это имя совпадает с именем материала в MAX.

Sandbox ExportMax image015.png

Нажмите кнопку "Сохранить", когда закончите.

4. Ваши материалы в настоящее время генерируется. Вы можете раскрыть корневой материал, для просмотра подматериалов. Все текстуры вы выбранные MAX теперь используются и здесь. Сведения о редакторе материалов рассматриваются в другом разделе.

Sandbox ExportMax image017.png

Закройте окно редактора материалов.


Экспорт из 3ds Max

1. 1. В разделе Object Export выберите объект и нажмите на кнопку "Add Selected" под пустым списком. Вы можете выбрать несколько объектов одновременно.

Sandbox ExportMax image019.png

2. Щёлкните по синей кнопке "Export Nodes". Это позволит экспортировать объект. Он будет создан в той же папке, где расположен файл MAX. Вы можете просмотреть эту папку, нажав на кнопку "Explore ...".

Ваш объект будет иметь то же имя, что и Max-файла (Testbox.cgf). Вы можете назвать свой объект как угодно, проверьте галочку "Export File per Node" под Geometry Export Options и переименуйте объект.


Просмотр объектов в SandBox

1.Запустите SandBox и загрузите уровень.

2. Нажмите на кнопку "Brush" на панели инструментов справа.

3. Найдите ваш объект.

Sandbox ExportMax image021.png

4. 4. Перетащите объект на уровень.


Дополнительная информация

Извлечение/назначение материалов

Вы можете просмотреть материал объекта путем открытия редактора материалов (кнопка "M" на клавиатуре или нажмите кнопку на панели инструментов, которая выглядит как синий кружок, или воспользуйтесь меню View).

Sandbox ExportMax image025.png

Нажмите на третью кнопку слева в верхней части окна редактора материалов, выглядит как голубой ящик. Так вы перейдёте к просмотру материала выбранного объекта.

Вы можете назначить любой материал на объект, выбрав материал (всегда выбирайте корень материала, не подматериал) и нажмите левую кнопку на панели инструментов редактора материалов ("Assign material to selection").


Включение теней

Вы можете включить тени для объекта. Нажмите кнопку "CastShadowMaps" флажок в свойствах объекта.

Sandbox ExportMax image027.png


Тестирование объекта игре

Вы можете перейти в режим игры, нажав SHIFT + G, или с помощью меню Game.

Если вы использовали параметр "Physicalize" в максе на proxy материал (и предположим, что вы создали proxy, если вы так сделали, то physicalize может быть любой материал, который вы захотите), вы или любые другие игровые объекты будут взаимодействовать с вашим объектом.

Кнопка "Reload" в brush parameters могут быть использованы для обновления CGF файла. Таким образом, вы можете внести в него изменения в MAX, экспортировать и быстро увидеть результат в редакторе.

ExportMax image029.png.png

Примечание: вы увидите, что объекты использующие параметр physicalized не обновляются (если они были изменены), после нажатия кнопки "Reload". Вы можете обойти эту проблему путем удаления объекта и использования Undo (Ctrl + Z или отменить кнопкой). Physicalized геометрии также автоматически обновляется, когда уровень загружается снова.

Консольная команда "P_Draw_Helpers 1" покажет physicalized геометрии. Установка этого параметра на 0 отключает её.

Консольная команда "E_Debug_Draw 1" (и другие номера, за 10) будет отображать различные виды полезной информации об объектах, такие как количество полигонов, количество материалов и т.д.


Авторы

Перевод: EpoS