Генерация ландшафта на основе реальных карт высот.
Не секрет, что в ряде крупных модов, добавляющих новые земли, ландшафт был создан не вручную, а сгенерирован на основе карты высот аналогичного региона в реальной жизни.
И это оправданно, такой подход обеспечивает хорошую точность и позволяет хорошо сэкономить время, как если бы ландшафт строился вручную в GECK.
Перед вами собирательная мини-инструкция о том, как программными средствами воссоздать геометрию ландшафта какой-нибудь территории, чтобы затем приступить к обработке его в GECK и, разумеется, строительству локаций.
I. Необходимое ПО.
- Adobe Photoshop или любой его эквивалент, способный работать с RAW.
- GECK.
- (опционально) TESannwyn
- VTP (Virtual Terrain Project): http://vterrain.org/Download/ (или другое ПО, способное работать с DEM)
II. Подготовка карт высот.
1. Экспортируем DEM.
Это можно сделать на сайте USGS: https://viewer.nationalmap.gov/basic/
- В правом окне откройте нужный вам регион и нажмите Search Products.
- Откроется список доступных файлов, с помощью кнопки Thumbnail вы можете определить какой или какие файлы вам нужны (они покажутся на карте). Самый подходящий формат - 1/3 arc. Всегда берите только формат 'arcgrid'.
- Нажав там же Download, вы скачаете большой архив по данному квадрату. Распакуйте архив в рабочую папку.
2. Конвертируем в RAW.
Запускаем Virtual Terrain Project (VTBuilder).
- Жмете Layer - Import Data - Elevation. Выбираете самый большой файл *ADF в из полученного выше архива. Ждете.
- Далее жмете Elevation - Export to. Здесь вариантов много, но уж точно работает выбор RAW (Scaled to 8-bit) for Unity. Сохраняем.
III. Обработка карт высот.
3. Открываем в Photoshop полученный RAW.
4. Уменьшаем размер каждого RAW до 3072x3072. В этом случае для одного квадрата получается оптимальный по игровым меркам ландшафт.
Для понимания: в полученном квадрате у нас три на три игровых блока.
(Далее идет выбор, зависящий от используемого ПО. Но работы продолжаются в Фотошопе.)
>Вариант для импорта через GECK.
5. Нужно преобразовать картинку в 16-битную в градациях серого.
6. При необходимости повысить ей контрастность, сгладить швы и т.д.
7. Нужно порезать ее на четкие квадраты 1024x1024, и сохранить с названиями, в соответствии со схемой: http://geck.bethsoft.com/images/8/80/Overviewgrid.jpg
8. Положить сохраненные файлики RAW в Data/Heightfield
Идем в GECK. Грузим наш мод, выбираем HeightMap. Ждем пока откроется окно, жмем импорт. Ждем. Сохраняем плагин. Готово.
>Вариант для импорта через tesannwyn.
Мне он импонирует больше, т.к. в чем-то проще и умеет работать с разной битностью RAW. Я после кучи экспериментов остался на 8-бит.
Итак:
5. Если у нас несколько RAW, которые нужно сцепить вместе, делаем это в Photoshop, попутно подгоняя их яркость и контрастность друг к другу. (карты высот разных годов отличаются).
6. Добавляем немного размытия. Мне приглянулся результат размытия по поверхности. Стоит поиграть ползунками, чтобы немного сгладить особенности 8битности (швы).
7. Резать на квадраты здесь не нужно, картинка может быть большой, но она должна быть квадратной. (У меня получился квадрат 6144x6144). Импортируются ячейки 1 к 1, так что лучше иметь размер изображения, кратный 1024.
8. И так, мы экспортировали RAW (у меня он получился весом 36 MB)
9. Теперь переходим непосредственно к tesannwyn. Я работал через консоль, т.к. интерфейс mpgui работать корректно не хотел.
Через консоль нам нужно составить и выполнить команду:
tesannwyn.exe -i FalloutNV -p 1 -b 8 -d 6144x6144 -s 3.0 -x -100 -y -100 -h 500 -w TESAnnwyn "F:\Fallout\Programs\MPGUI\templates\6144.raw"
Разберем ее по порядку:
-i - импорт, ключ указана игра.
-p - режим. 1 - это RAW.
-b - битность, указано 8.
-d - разрешение файла.
-s масштаб. Но по факту это множитель высоты. У меня 3, т.е. в игре контраст высот будет в 3 раза больше, чем в исходном RAW. Стоит поиграться с этим параметром, т.к. карты в игре значительно меньше реальных прототипов и множитель 1 сделает горы маленькими холмами.
-x и -y - это значения крайней левой нижней ячейки. У меня по -100, что для 6144x6144 значит, что карта простирается от -100,-100 до 92,92.
-w - название мирка в плагине. Можно потом спокойно поменять в GECK.
Ну и путь до raw, в конце.
(Параметров на самом деле куда больше, ниже полный перечень)
-i (num or name): Import an image to a create a TES ESP (3 or 4 or 5, or Skyrim, Fallout3, FalloutNV, Oblivion, Morrowind).
-c: Import/Export the VCLR vertex colour image as a BMP called tesannwyn-vclr.bmp.
-T (3 or 4): Import/Export a TES3 or TES4 texture placement map a BMP called tesannwyn-vtex3.bmp.
********************************************************
-d (numxnum): X and Y dimensions of import image. e.g. 2688x1344 (default is 1024x1024).
-p (num): Type of image file ( 1 = RAW, 2 = BMP, 3 = CSV).
-b (num): Bits per pixel of the input/output image RAW/BMP image file. For BMP, 8 bit implies Greyscale.
-x (num): The Bottom-Left cell X co-ordinate will start here (default 0).
-y (num): The Bottom-Left cell Y co-ordinate will start here (default 0).
-h (num): Offset height of land by this number of game units.
-s (num): Scale land height by this number (floating point allowed).
-l (num,num): Limit all imported height to within these lower,upper limits (e.g. -2048,32768).
-o (num-num): Do not import land whose land is all between these heights (e.g. -2048 or -4096-1024).
-g: Draw square cell sized grids on all image exports.
-w (word): WorldSpaceName: The name of the Worldspace you want exported (TES4 only). e.g. Tamriel.
-t (num/FormID): Texture the entire landscape in a texture number (TES3) or texture FormID (TES4).
-F (num): (TES4 Import only) Force the new worldspace to be created with this reverse byte FormID number (like the LOD filenames).
-r: (Greyscale 8-bit BMP only). Automatically rescale the Greyscale export between 0-255. (No parameter required).
-q : Quiet mode: Outputs less so runs faster in a Windows Console.
-v : Display current Version, then exit.
Запустив команду, она потратит какое-то время, и создаст в своем каталоге файл: tesannwyn.esp
Его вес будет зависеть от того, насколько гладкая или рельефная у вас карта высот. У меня при наиболее красивом результате вышло 33mb.
Но 6144x6144 - это 36 блоков, что ОЧЕНЬ много. Для сравнения, доступная для пешей прогулки карта Столичной пустоши F3 - это 4 блока или чуть больше.
Вот. Полученный ESP можно спокойно переносить в Data, и запускать в GECK, чтобы назначить погоду, и ряд других параметров. То же самое можно сделать и в FNVEdit.
*Если у вас GECK берет много памяти и зависает (бывает на тяжелых файлах), поставьте плагину флаг ESM в FNVEdit.
Часть информации взята отсюда: Tutorial-Converting a DEM to a Heightmap