Эта статья является адаптированным под современны редактор переводом на русский язык оригинальной инструкции: «Terrain export from world machine to unity».


World Machine может служить отличным генератором местности для Unity. Unity же имеет нативную поддержку текстур и splatmaps. Вы можете создать и использовать несколько слоёв текстур местности одновременно. Здесь представлен простой рабочий код для импорта в Unity местности из World Machine. Пожалуйста, обратите внимание, что, хотя этот метод работает для основных местностей в unity, многие продвинутые пользователи могут создать собственные шейдеры местности, которые могут потребовать другую технику исполнения.

Что необходимо сделать для экспорта в World Machine


  • Выставите Height Output в вашем мире. Запомните это значение.
  • Создайте маски текстур для ландшафта, основанные на любых критериях (с помощью: Height Selectors, Slope Selectors, Erosion masks и других).
  • Используйте Splat Converter для того, чтобы контролировать и соблюдать вес своих splatmaps. Так же Вы можете использовать Splat Converter, включённый в «New Examples for WM 2.3\Techniques»
  • Чтобы преобразовать отдельные карты в растровом изображении, свяжите их в канал конвертер, который будет производить изображения RGB в течение первых трех каналов. Четвертый будет использоваться в качестве альфа-канале растрового изображения. Разводка полученные карты в одной или нескольких выходных устройств растровые создать splatmap 4 канала. Если вы используете более чем 4 текстуры, просто создайте несколько выходов растровые и отрегулируйте Splat конвертер соответственно.
  • Выберете формат в File Output, который будет использован для экспорта из WM. В данном случае Вы должны использовать формат RAW16.
  • Постройте свой мир и экспортируйте все файлы. Выберите Export Terrain files в меню Files, которое представляет собой централизованное место для таких команд.

Что необходимо сделать для импорта в Unity3D


  • В своём проекте в меню GameObject выберите 3D Object->Terrain.
  • Выберите объект и компонент Terrain и откройте раздел Terrain Settings. Рекомендуется отредактировать значения Detail Resolutoin, Control Texture Resolution и Base Texture Resolution.
  • *Если Вы собираетесь импортировать ландшафт в формате RAW16, то лучше предварительно поместить этот файл в свой проект (для RAW8 этого можно можно не делать).
  • Нажмите кнопку Import Raw.
  • В открывшемся окне найдите и выберите ландшафт, который Вы хотите импортировать. Если Вы импортируете файл в формате RAW16, то выберите тип файлов «All files».
  • В появившемся меню в пункте Depth выберите «bit16», если импортируете ландшафт в формате RAW16, для формата RAW8 выберите «bit8». Так же убедитесь, что значение Byte order выставлено на «Windows» и значения Width/Height карты высоты соответствуют значениям импортируемого Вами ландшафта.
  • Измените Terrain Size на значения от импортируемой местности (X соответствует значению Width карты высоты, Z — Height, а значение Y Вам придётся вспоминать самим), чтобы пересозданный terrain соответствовал тому, который Вы экспортировали из WM.
  • Нажмите кнопку Import.
  • Назначьте текстуры, которые вы хотите использовать на вашей местности, как обычно. Затем убедитесь, что вы сохранили сцену. Вы должны увидеть красный splatmap для ландшафта, который появится в окне asset'ов.
  • Импортируйте (просто перетащите в окно unity) splatmap, созданный и экспортированный в WM ранее.
  • Перейдите к инспектору для импортированного splatmap'а и измените следующие параметры:
    Texture Type: Advanced
    Read/Write Enabled: checked
    Format: ARGB 32 bit

    Затем нажмите Apply.
  • Скачайте и импортируйте приведённый ниже скрипт в Ваш проект и расположите его в «YourProject/Assets/Editor folder»: скачать.
  • Из меню Terrain, выберите «Replace Splatmap». Если вы не видите эту надпись, значит, что сценарий ReplaceSplatmap.js не был правильно расположен в папке проекта. Перетащите встроенный внутри ландшафта splatmap на первое поле «Splatmap» и импортированный splatmap к полю «New». Убедитесь, что «Flip Vertical» соответствует ориентации Вашей местности.
  • Если Вы — инди-разработчик, то можете взять с полки пирожок: Вы закончили!




P.S.: На этом пока всё. Возможно, ещё будет видеозапись всего этого процесса.

Комментарии (1)


  1. MorfeusKiev
    10.10.2015 02:15

    Кто интересуется расширенной возможностью работать с террейном в Unity — рекомендую купить и изучить единственный доступный редактор — Terrain Composer (ну и его аддон, если нужно, для генерации реальных карт высот с планеты Земля — World composer). Там можно все делать — импортировать маски, склеивать и применять фильтры, генерировать растительность, размещать объекты, траву — используя фильтры(генератор), маски и даже рейкасты.

    А вообще я не рекомендую использовать террейн Unity. В купе с тем что мы имеем ограничения по оси Y, количество деталей (разрешение хейтмапы), качество лодирования и скорость работы. Да, растительность отлично батчится(и билборды), но её можно юзать и без террейна, но с террейном :))) Кто думает что это шутка — рекомендую поковырять демки от Unity — Village Viking и BlackSmith.