Version: 5.4
Water in Unity
Как мне импортировать модели из моего 3D редактора?

Руководство по лучшим практикам работы с графическими ассетами

Unity поддерживает текстурированные 3D модели, созданные в различных программах. Это краткое руководство было создано игровыми художниками и разработчиками в Unity, чтобы помочь вам в создании ассетов, которые будут работать лучше и эффективнее в вашем Unity проекте.

Масштаб и единицы измерения

  • Установите единицы измерения системы и проекта в вашем программном обеспечении для согласованного использования с Unity, например, метрические.
    • Working to scale can be important for both lighting and physics simulation.
    • Be aware that, for example, the Max system unit default is inches and Maya is centimetres.
    • Unity has different scaling for FBX and 3D application files on import; check the FBX import scale setting in Inspector.
    • If in doubt export a metre cube with your scene to match in Unity.
  • В разных приложениях частота кадров анимации может быть различна, лучше установить постоянную частоту на протяжение всего цикла разработки, например, 30 fps.

Файлы и объекты

  • Давайте объектам в вашей сцене осмысленные и уникальные имена. Это может помочь найти и отладить определённые меши в вашем проекте.
  • Не используйте специальные символы *()?"#$ и т.д.
  • Для объектов и файлов используйте простые, но содержательные имена.
  • Сохраняйте наиболее простую иерархию по возможности.
  • При работе над большими проетками в вашем приложении для 3D моделирования, постарайтесь размещать файл проекта вне папки проекта Unity. Зачастую это может сэкономить время, требуемое для обновления и импортирования ненужных данных.
Sensibly named objects help you find things quickly
Sensibly named objects help you find things quickly

Меш

  • Моделируйте с эффективной топологией. Используйте полигоны только там, где они необходимы.
  • Оптимизируйте вашу геометрию, если она содержит слишком большое количество полигонов. Многие модели персонажей должны быть грамотно оптимизированы или даже пересобраны художником, особенно если они получены/собраны из:
    • 3D capture data
    • Poser
    • Zbrush
    • Other high density Nurbs/Patch models designed for render
  • По возможности, равномерно распределяйте полигоны в зданиях, ландшафте и архитектуре, это поможет в распространении освещения и позволит избежать некрасивых изломов.
  • Избегайте очень длинных тонких треугольников.
Stairway to framerate heaven
Stairway to framerate heaven

Метод, который вы используете для сборки объектов может значительно влиять на количество полигонов, особенно, если не производить оптимизацию. На изображении выше показан один и тот же shape меш, со 156 треугольниками справа и 726 слева. 726 может звучать не так серьёзно, когда речь идёт о полигонах, но если такой меш использован на уровне 40 раз, вы начнёте замечать разницу. Хорошее правило для применения на практике - начинать с простого и затем добавлять детали по мере необходимости. Всегда проще добавить полигон, чем удалить.

Текстуры

Если вы создаёте текстуры с размером, кратным степени двойки (напр., 512x512), текстуры будут более эффективны и не потребуется изменение их масштаба во время сборки проекта. Вы можете использовать до 4096x4096 пикселей (хотя на некоторых видео картах и платформах максимально возможный размер - 2048x2048). Поищите в сети советы экспертов по созданию хороших текстур. Некоторые из этих советов могут помочь вам в получении наиболее эффективных результатов в вашем проекте:

  • Работайте с исходным файлом высокого разрешения вне проекта Unity (напр., PSD или файл Gimp). Вы всегда можете отмасштабировать размер исходной графики в меньшую сторону, но не наоборот.
  • Используйте требуемое в сцене разрешение для текстур (сохраните копию, например оптимизированный 256x256 PNG или TGA файл). Вы можете судить по тому, где будет отображаться текстура и где она будет видна.
  • Store your output texture files together in your Unity project (for example: \Assets\textures).
  • Убедитесь, что ваш рабочий файл с 3D контентом ссылается на эти текстуры для сохранения целостности при сохранении / экспорте.
  • Используйте свободное место в вашей текстуре, но учтите, что разные материалы могут работать с разными частями одной и той же текстуры. Это может привести к многократному использованию / загрузке этой текстуры.
  • Разделяйте текстуры для альфы (cutout) и элементов, которые могут обрабатываться различными шейдерами. Например, одиночная текстура, показанная ниже (слева) была заменена тремя меньшими по размеру текстурами (справа).
One texture (left) vs three textures (right)
One texture (left) vs three textures (right)
  • Используйте тайлинг текстуры (те, которые могут повторяться бесшовно), тогда вы сможете использовать более высокое разрешение на повторяющихся участках.
  • Удаляйте из вашего изображения повторяющиеся элементы, которые легко заметить и будьте осторожны с контрастностью. Если вы желаете добавить деталей, используйте декали и объекты для разряжения повторений.
Tiling textures ftw
Tiling textures ftw
  • Unity заботится о сжатии для целевой платформы, так что, если ваш исходный файл уже не является JPG верного разрешения, лучше использовать lossless формат для ваших текстур.
  • При создании текстуры из фотографии, уменьшайте её используя отдельные модульные секций, которые могут повторяться. Например, вам не нужны 12 одинаковых окон, использующих текстурное пространство. Таким образом, вы можете иметь больше деталей на пиксель для этого одного окна.
Do you need ALL those windows?
Do you need ALL those windows?

Материалы

  • Организуйте и именуйте материалы в вашей сцене. Таким образом вам будет намного проще редактировать ваши материалы в Unity после импорта.
  • Вы можете выбрать создание материалов в Unity из:
    • <modelname> - <material name> or
    • <texture name> - make sure you are aware of which you want.
  • Не все настройки материалов из вашего пакета моделирования будут импортированы в Unity:
    • Diffuse Colour, Diffuse texture and Names are usually supported
    • Shader model, specular, normal, other secondary textures and substance material settings will not be recognised/imported

Импорт / экспорт

Unity может использовать два типа файлов: сохранённые файлы приложений для 3D моделирования и экспортированные 3D форматы. Выбор в пользу одного из них может быть довольно важен:

Сохранённые файлы приложений для моделирования

Unity can import, through conversion: Max, Maya, Blender, Cinema4D, Modo, Lightwave & cheetah3D files, e.g. .MAX, .MB, .MA etc. see more in Importing Objects.

Преимущества:

  • Быстрый итеративный процесс (сохраняете изменения и Unity их “подхватывает”)
  • Изначально просто

Недостатки:

  • Лицензионная копия программы (чей формат используется) должна быть установленна на всех машинах, на которых используется проект Unity
  • Файлы, содержащие ненужные данные могут стать неоправданно большими
  • Большие файлы могут замедлить “живое” обновление Unity
  • Меньше проверок и сложнее отлаживать поблемы

Экспортированные 3D форматы

Unity также может читать FBX, OBJ, 3DS, DAE & DXF файлы. Для подробного руководства по экспорту, вы можете обратиться к этому разделу.

Преимущества:

  • Экспортируются только необходимые файлы
  • Вы можете проверить ваши данные (повторно импортировав в пакет 3D моделирования) до того, как использовать в Unity
  • Обычно вы получите файлы меньшего размера
  • Позволяет использовать модульный подход

Недостатки:

  • Прототипирование, итерации и весь рабочий процесс может быть медленней
  • Проще запутаться в версиях исходника (рабочего файла) и игровых данных (экспортированного FBX)
Water in Unity
Как мне импортировать модели из моего 3D редактора?