Эта статья является адаптированным под современны редактор переводом на русский язык оригинальной инструкции: «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.: На этом пока всё. Возможно, ещё будет видеозапись всего этого процесса.
MorfeusKiev
Кто интересуется расширенной возможностью работать с террейном в Unity — рекомендую купить и изучить единственный доступный редактор — Terrain Composer (ну и его аддон, если нужно, для генерации реальных карт высот с планеты Земля — World composer). Там можно все делать — импортировать маски, склеивать и применять фильтры, генерировать растительность, размещать объекты, траву — используя фильтры(генератор), маски и даже рейкасты.
А вообще я не рекомендую использовать террейн Unity. В купе с тем что мы имеем ограничения по оси Y, количество деталей (разрешение хейтмапы), качество лодирования и скорость работы. Да, растительность отлично батчится(и билборды), но её можно юзать и без террейна, но с террейном :))) Кто думает что это шутка — рекомендую поковырять демки от Unity — Village Viking и BlackSmith.