Импорт карты высот (heightmap) в Unity / Хабр
Всем привет! Не так давно (месяца два назад) мне пришлось импортировать карту высот (она же heightmap) в игровой движок unity. Все, что я нашарил в интернете — устаревшие статейки 2012 года. И да, официальные доки юнити тоже устарели…
Начнем с начала
Я снял еще видео и выложил на ютуб. Если ничего не понятно — смотрите здесь. Я создал проект, затем создаем новый террейн(3D -> Terrain)
новый проектновый террейнвот так он выглядитИтак, ландшафт готов, самое время его сделать объемным
Можно использовать инструменты в инспекторе:
Но такой способ неудобен и подходит либо для создания маленьких карт, либо для редактирования уже готовых
Берем карту высот
Для начала надо взять образец карты в самом движке
Переходим в Settings(шестеренка справа)
И мотаем вниз
(P.S): чуть выше в графе terrain width и terrain height поставьте значения побольше(у меня это раз в 10)
Heightmap resolution — разрешение карты. Чем выше — тем карта точнее. Но острее. У меня стабильно 1025
Import Raw / Export Raw — кнопки для импорта/экспорта карты соответственно
Control texture resolution — «смешивание» текстур рельефа.
Я сам не знаю что это, поэтому я оставляю по умолчанию. Если что, потом методом тыка подкрутим
Ну и Base texture resolution — разрешение текстур. Чем все эти цифры выше — тем качественнее террейн. Ежу понятно…
В итоге мои значения такие:
Нажимаем Export Raw и…
Я оставил как есть. Затем просто нажимаем кнопку export и сохраняем карту. Идем дальше
Редактируем карту
Я сохранил карту(она должна быть в формате .raw). Затем открыл ее с помощью фотошопа.(просто нажал о ней ПКМ -> Открыть с помощью -> Photoshop)
Еще я скачал самую простую карту высот из интернета. Вот она:
Тоже открываю эту картинку в фотошопе -> ctrl + A -> ctrl + C
Переходим в файл с картой высот и ctrl + V
В итоге получается так:
(карту еще придется немного уменьшить)
Черной кистью удаляю все ненужное:
Затем ctrl + shift + S и выбираем формат . RAW
Возвращаемся в Юнити
Находим кнопку Import Raw
Вот онаИ выбираем нашу RAW карту
Ничего не меняем и нажимаем Import
И тут такое…
Вполне возможно, что у вас будут либо штыки либо ничего. Не паникуем! Это мой горький опыт. Надо просто поменять цифры в настройках террейна
Было такМои шаги:
1) Я вернул значения с 10000 на 1000(в графах terrain width и height)
2) Terrain Height на 5000 вместо 600 по дефолту
3) Heightmap Resolution на 513 (у меня все было резко, острые края и т.д)
И вот итог:
Вдали вроде бы все размыто, но…ВблизиВывод
Как бы не была сложна технология, выход всегда есть. Более подробно на сделал на ютубе.
Сегодня я немного освежил технологию импорта карты высот в юнити и считаю это своим достижением.
Это мой личный способ. Я понимаю, что все карты разные, но технология одна и та же. Надо просто покопаться в цифрах и все получится😎
С вами был я Всем пока 🙂
От карты высот до мира в Skyrim — Часть 1
Создание карты высот | Создание лодов для мира | Создание .
lod-файлаАвтор статьи — девушка, потому все фразы построены от женского лица
Краткое содержание того, что я буду делать:
- создание карты высот (Height map) в Photoshop, сохранение в TIFF
- импорт в Geocontrol 2, чтобы сделать более реалистичную эрозию.
- редактирование в Photoshop, чтобы уменьшить оттенки серого, сохранение в .RAW
- запуск TESAnnwyn для создания .esp
- (конверт .esp в .esm с помощью TESGecko)
- изменение LOD воды, обычной воды и уровней земли в FNVEdit
Размер изображения в пикселях будет задавать размеры мира в Oblivion/Skyrim. Игра состоит из квадрантов, размеры которых 32 x 32 ячейки в каждом. Каждый квадрант состоит из 1024 x 1024 пикселей. Так, например, Skyrim состоит из 3808 x 3008 пикселей (и не все из них играбельны, к слову). Мир же может быть в размерах до 16 x 16 квадрантов (16384 x 16384 пикселей).
Есть несколько способов создать карту высот: нарисовать ее самому или, например, использовать специальные программы (такие как GeoControl, EarthEdit и др.
Ниже описан рабочий процесс создания мира размером 4096 x 4096 пикселей.
Photoshop (фш):
1. Я сделала свою карту высот в фш. Создайте новое изображение с выбранным вами размером (256х256/512х512/1024х1204). File (Файл) -> New (Новый), размер 4096 x 4096 pix, 16-бит и gray scale (оттенки серого).
(Так же можно изменить настройки уже готового изображения: Image (Изображение) -> Mode (Режим) -> gray scale (Оттенки серого) и 16-бит.)
2. Нарисуйте вашу землю, я делала это в слоях. Черные участки — это низменности, белые участки — это горы. На цветовой палитре вы можете выбрать оттенок серого в процентах. 100% — это черный, 0% — это белый, соответственно 50% серого имеет 50% черного и т.п.. Всякий раз, когда я говорю о процентах серого, я имею ввиду это:
(Oblivion и Skyrim не могут полноценно обработать полный спектр от черного до белого в карте высот, но я исправлю это в следующих шагах.)
При рисовании мира, хорошо бы знать, где будет находится уровень воды. Когда я рисовала свою карту высот в 100-2% оттенка серого, уровень воды будет между 89% и 90% оттенков серого. (Это значение будет позже изменено на 99-98%, когда я буду понижать оттенки до такого состояния, чтобы Skyrim мог их обработать.)
3. Убедитесь, что все слои сведены в изображении в один, сохраните файл в формат TIFF.
GeoControl
4. Импортируйте изображение в GeoControl2. Generation -> Terrain Import -> Image Import
GeoControl2 может обработать файлы размером до 4096×4096 пикселей. В GeoControl2 множество настроек, НЕ ПАНИКУЙТЕ.
5. (справа) Обратитесь к вкладке General, под ней будет -> Filter-> Add -> erosion system или erosion system inverse -> выберите тип эрозии, который вы хотите применить. Я использовала следующие: Thin flow deep — inverse (все уровни, силой 100), Thin flows sediment (только уровни 1024 и 2048, силой 40), Thin flow deep (все уровни, силой 100) и Mountain ridged (все уровни, силой 100).
6. Нажмите Generate, это займет какое-то время в зависимости от вашего компьютера.
7. Когда все будет готово, нажмите Generation -> Terrain Export ->выберите TIFF 16 bit grayscale.
Использование GeoControl подобным образом дает мне меньше контроля над окончательным результатом моего мира, но для меня это подходит. Я была приятно удивлена увиденным пейзажем в игре, это было совершенно не похоже на то, что я ожидала получить.
Photoshop
8. Откройте файл в фш, поверните изображение по вертикали (TESAnnwyn повернет обратно): Image (Изображение) -> Image Rotation (Повернуть изображение)-> Flip Canvas Vertical (Повернуть холст вертикально).
9. Последнее, что нужно сделать — это изменить уровень серого. Это связано с тем, что Oblivion/Skyrim считывает изображения с оттенками в интервале 0-76% серого.
Зайдите в Image (Изображение) -> Adjustments (Коррекция) -> Brightness/Contrast (Яркость/Контрастность) и поменяйте яркость на -150, и затем еще раз повторите это.
10. Проверьте с помощью Eyedropper (Пипетка), что ваши цвета находятся в пределах 75% серого.
11. Сохраните как RAW с настройками: Header 0, IBM PC
Теперь ваша карта высот готова.
ВАЖНО: Важное правило для карт высот. Если изменение высот слишком большое, тогда в ячейках могут быть дыры!
Я провела несколько тестов, для того, чтобы увидеть, где будут разрывы в ячейках. На картинке ниже представлены различные диапазоны оттенков серого: 100-95%, 100-90%, 100-85% and 100-80%. Цветовая гамма представлена на 3 и 5 ячейках, и цветовые границы — те месте, где будут разрывы(*). Обратите внимание, что изменение в высоте на 100-90% — практически вертикальная стена.
* Уровни воды будут между 99% и 98% оттенками серого на финальной карте высот.
TESAnnwyn: создание esp
Я использую TESAnnwyn (совместимую со Skyrim), чтобы сделать esp из raw файлов, куда проще, чем создание через Creation kit. TESAnnwyn — это консольная программа, которая проста в использовании:
TESAnnwyn. exe -i Skyrim -p 1 -b 16 -d 4096×4096 -x -64 -y -64 -h -22192 -w ameOfWorldspace YourImage.raw
- -i — задает игру,
- -p — определяет формат RAW,
- -b — битность изображения, -d размер в пикселях,
- -x и -y смещение ячеек по осям x и y,
- -h -22192 нижняя отметка земли, специфично для работы с лодами воды
- -w — имя вашего мира.
Теперь перейдем к .esp в папке Skyrim/Data.
Чтобы лоды заработали как положено, нам надо изменить уровни воды и земли в мире. Сделать это можно в Creation kit или в редакторе Fallout New Vegas — FNVEdit (вам понадобиться копия Fallout New Vegas для работы).
Alt 1) Использование Creation kit (для .esp файлов)
Для маленьких миров вплоть до 4096×4096 пикселей можно использовать и редактировать мир в Creation kit.
- В Creation kit откройте ваш esp (сделайте активным)
- Перейдите на вкладку World -> Worldspace
- Выберите ваш мир и отредактируйте: LOD water height на -14000. 0000, Default Land Height на -27000.0000 и Default Water Height на -14000.0000
- Сохраните .esp.
Alt 2) Использование FNVEdit (для esp и .esm файлов)
Для большого мира, такого как мой с 106384×16384 пикселями, нет возможности открыть .esp в Creation kit.
1. Поместите esp в папку FalloutNewVegas/Data folder, откройте FNVedit и выберите файл.
2. Поменяйте LOD water height на -14000.0000, Default Land Height на -27000.0000 и Default Water Height на -14000.0000.
3. Закройте FNVEdit и дождитесь сохранения. После у вас будет готов бэкап и сохраненный файл. Затем переименуйте файл обратно в .esm.
Всё готово, теперь можно приступать к созданию лодов.
Надеюсь, что описанный способ и у вас заработает. =)
/E
Обновления данных высокого разрешения для слоев высот Living Atlas World (июнь 2019 г.)
Living Atlas of the World предоставляет базовые слои высот и инструменты для поддержки анализа и визуализации на платформе ArcGIS.
Terrain и TopoBathy
Эти слои обновляются с помощью топографической лидарной высотной отметки голой земли:
- Обновления 1-метровых ЦММ USGS 3DEP, покрывающих частичные территории совпадающих с США территорий
- Лидарная ЦММ 0,25 метра, охватывающая кантон Базель-Ландшафт, Швейцария
- Лидарная ЦММ 0,5 метра, охватывающая кантон Золотурн, Швейцария
- Полученная с помощью лидара ЦММ 0,5 метра, охватывающая кантон Аргау, Швейцария
TopoBathy
Слой TopoBathy обновлен следующими наборами батиметрических данных:
- NCEI NOAA 1/9 угловой секунды (~ 3 метра) DTM, покрывающие частичные районы вдоль восточного побережья США
- NCEI NOAA 1/3 угловой секунды (~ 10 метров) DTM, покрывающие частичные районы вдоль восточного побережья США
- NCEI NOAA 1 угловая секунда (~ 31 метр) DTM, покрывающие частичные районы вдоль северо-восточного побережья США
- NCEI 3 угловых секунды NOAA (~ 93 метра) DTM, покрывающие частичные районы вдоль северо-восточного побережья США
В этом выпуске USGS 3DEP 1 метр получил значительное обновление, увеличив зону покрытия 1 м почти вдвое.
Вот несколько примеров, демонстрирующих улучшения с изображениями до и после.
Хайленд, Калифорния, США — мелкие детали, полученные с помощью лидара USGS 3DEP, получены на 1 метр в пригородном ландшафте по сравнению со старым NED 10 метров
Обердорф, кантон Базель-Ландшафт, Швейцария — отображение мелких деталей с помощью данных лидара, полученных с расстояния 0,25 метра, по сравнению с WorldDEM4Ortho 24 метра
Лангендорф, кантон Золотурн, Швейцария — изображение мелких деталей городского пейзажа с помощью лидарных данных с расстояния 0,5 метра по сравнению с WorldDEM4Ortho 24 метра
Баден, кантон Ааргау, Швейцария — отображение мелких деталей холмистого ландшафта с помощью лидарных данных с шагом 0,5 метра по сравнению с WorldDEM4Ortho 24 метра
Эти обновления данных также будут развернуты для других продуктов, производных от мировых высот — Elevation 3D (Terrain3D и TopoBathy3D) и World Hillshade в следующем квартале (Q3).
Для получения дополнительной информации о различных источниках данных, доступных в сервисах World Elevation, ознакомьтесь с картой покрытия Elevation. Esri продолжит совершенствовать World Elevation Services, инструменты и производные продукты, включая данные высокого разрешения из открытого источника и программу Esri Community Maps. Кроме того, чтобы добавить данные о высотах с высоким разрешением в Living Atlas of the World, ознакомьтесь с программой Esri Community Maps for Elevation.
Раджиндер Наги
Раджиндер имеет более чем 19-летний опыт работы в области ГИС и дистанционного зондирования. В своей нынешней должности он возглавляет программу возвышения сообществ в Esri и имеет большой опыт в картографической визуализации, обработке изображений, базах данных и геообработке. Раджиндер разработал многонаправленный алгоритм затенения отмывки (esriurl.com/NextGenHillshade) для улучшения визуализации местности на базовых картах Esri. Он также разработал технику слияния (esriurl.
Подключить:
3d карта высот — Etsy Турция
Etsy больше не поддерживает старые версии вашего веб-браузера, чтобы обеспечить безопасность пользовательских данных. Пожалуйста, обновите до последней версии.
Воспользуйтесь всеми преимуществами нашего сайта, включив JavaScript.