AnvilBay Forum

Мастерская TES => Туториалы и ресурсы => Skyrim => Тема начата: @perture от 13 Января 2015, 17:35

Название: [Скайрим] Создаём свой мир в Skyrim
Отправлено: @perture от 13 Января 2015, 17:35
Для начала немного теории.

Единицы измерения.

1 GU (Game Unit) = 0,5625 дюйма = 1,42875 см.
1 THU (TES Height Unit) = 8 GU = 4,5 дюйма = 11,43 см. – шаг изменения высоты рельефа.
1 HP (Height Point) =128 х 128 GU = 182,88 х 182,88 см. - базовая величина, фрагмент поверхности ландшафта приходящийся на один пиксел карты высот.
1 Cell (Ячейка игрового мира) = 32 х 32 HP.
Максимальный размер играбельного мира составляет 128 х 128 Cell, 4096 х 4096 HP, или приблизительно 7 491 х 7 491 метр.

Кое-что о карте высот.

Карта высот, из которой компилируется esp файл с ландшафтом мира, представляет собой изображение в цветовом режиме «градации серого» с глубиной канала 8 или 16 бит, что составляет 256 и 65536 оттенков серого соответственно. Каждый шаг градиента соответствует 1 THU, таким образом из 8-ми битной карты высот можно сделать ландшафт с глубиной от -128 до +127 THU или 29,15 метров. Пригодно только для плоских ландшафтов. Можно, конечно, применить масштабирование при компиляции, но при этом пострадает детализация поверхности. 16-ти битная карта формирует рельеф с глубиной от -32768 до +32767 THU, что соответствует 7 491 метру. Один пиксел карты высот соответствует одному HP, таким образом максимальное разрешение карты должно составлять 4096 х 4096 пикселов.
Существует миф о том, что Skyrim считывает изображения с оттенками в интервале 0-76%. Это не так. Я скомпилировал градиентную карту с оттенками от черного до белого цветов, и получил ландшафт соответствующей высоты – от -3 745 м. до +3 745 м., без каких либо ограничений.

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr1.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr2_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr2.jpg)

Использование же таких глубин и высот на практике маловероятно. К примеру мир Tamriel содержит 3808 x 3008 HP, а разница по высоте между самой высокой и самой низкой точками ландшафта составляет 1063 метра. В 3D это выглядит так

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr9_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr9.jpg)

Однако существует некоторое ограничение на разницу высот соседних HP, которая должна лежать в диапазоне от -128 до +127 THU. Если это правило будет нарушено, то соответствующие пикселы карты высот будут исключены при компиляции и на ландшафте получим неприятные артефакты в виде отверстий или вертикальных стен. О наличии подобных ошибок мы узнаем по итогам компиляции, отчетная информация будет содержать следующие строки
Some gradient overflows/underflows have been caught and blocked:
Total Overflows:  46785                     
Total Underflows: -3671

Цифры, естественно, будут иными. В этом случае надо доработать карту высот, яркость любых двух соседних пикселов которой не должна отличаться более чем на -128 или +127 шагов градации серого. Это применимо в основном к 16-ти битной карте и лечится, к примеру, снижением яркости изображения (как следствие снижение глубины рельефа) либо применением каких-нибудь сглаживающих фильтров в графическом редакторе (что повлечет сглаживание детализации) или в Geo Control, что даст более интересный результат.

Переходим к практике.

Создаем карту высот.

Самое сложное – это создание карты высот, которая дала бы нам в итоге желаемый рельеф и без ошибок. Можно рисовать её в каком-нибудь графическом редакторе, можно воспользоваться специализированным софтом, предназначенным для генерации ландшафтов, а можно совместить эти два варианта – наброски сделать в редакторе, а необходимую детализацию добавить с спец-софте. Для данного туториала я воспользовался программой Geo Control 2. После запуска программы будет активна вкладка Generation и в настройках General устанавливаем Terrain Size – 4096 (разрешение карты высот), Width – 7491 (ширина ландшафта), Height – 600 (желаемая максимальная высота рельефа), Amount of details – 16 (детализация генерируемых искривлений поверхности), переходим в настройки Filter и добавляем парочку фильтров с настройками как на скриншоте

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr3_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr3.jpg)

Нажимаем кнопку Generate и ждем завершения генерации, смотрим в режиме 3D, устраивает ли нас результат. Если не очень – то генерируем заново, до достижения приемлемого рисунка, каждый раз рельеф будет разный. При получении желаемого рисунка можно отметить чекбокс Keep Seed – это предотвратит изменение рельефа при последующей перегенерации, которая может понадобиться при настройках или изменениях фильтров. У меня получилось вот так

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr4_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr4.jpg)

Если освоить программу и изучить настройки фильтров, то можно делать весьма приличные ландшафты. К тому же (если например нужно определенное расположение гор) можно импортировать изображение с набросками рельефа, и доработать до приемлемого качества.
Закончив генерацию ландшафта переходим на вкладку Project, и устанавливаем параметры Projectsize 4096 и Max Altitude 600 (высота рельефа, как в настройках Generation, но можно и другую выставить) и 0 в полях Point at и Cut соответственно. После чего нажимаем Rebuild и ландшафт реконструируется. При этом он станет почти плоским, это нормально. Проект можно сохранить и экспортировать результат в формате RAW 16 bit или TIFF 16 bit.

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr5_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr5.jpg)

Полученную карту высот открываем в Photoshop и отражаем по вертикали, так как TESAnnwyn при обработке RAW формата отражает изображение, таким образом восстанавливая исходное положение, и применяем размытие по Гауссу с радиусом 1 пиксел, для сглаживания угловатостей в рельефе подобных этим

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr6_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr6.jpg)

Сохраняем результат в формате RAW. На всякий случай настройки открытия и сохранения RAW формата в Photoshop

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr7_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr7.jpg)

Компилируем .esp

TESAnnwyn – это консольная утилита, которая на основе карты высот компилирует esp файл с ландшафтом. Для своего ландшафта я использовал следующие параметры
TESAnnwyn.exe -i Skyrim -p 1 -b 16 -d 4096x4096 -x -64 -y -64 -h -11000 -w TestWorld land.raw
Подробности о программе и параметрах её запуска можно изучить в прилагаемой к ней документации. Остановлюсь лишь на параметре –h, который отвечает за уровень самой нижней точки ландшафта относительно уровня воды, который в свою очередь задаётся в параметрах Worldspace в esp файле создаваемого мира, по умолчанию равен нулю, и я его не менял, за отсутствием видимого смысла. Эта цифра измеряется в GU и зависит от особенностей рельефа и необходимого уровня воды.
Компиляция завершилась успешно

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr8_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr8.jpg)

Ошибок не возникло, разница высот около 600 метров, что и ожидалось. Копируем полученный esp в папку data в директории игры (можно переименовать) и переходим к следующему шагу.

Создание лодов.

Для создания лодов воспользуемся программой Oscape. Лоды можно создать и с помощью Creation Kit, но это долго, чревато вылетами конструктора и отсутствием контроля над процессом. После запуска программы первым делом в меню Game выбираем режим работы Skyrim. Во вкладке Active Plugins отмечаем наш esp файл с ландшафтом, если вы его не переименовали, то он будет называться tesannwyn.esp. По слухам Oscape работает только с esm файлами, но у меня он и с esp прекрасно справился. Далее нажимаем кнопку Fill и в выпадающем слева списке выбираем наш мир, название которого задавали в параметре –w при создании esp. Отмечаем чекбоксы feature-map и surface-map. Выбираем место и имя файла вывода, и жмём Extract.

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr10_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr10.jpg)

После извлечения необходимых файлов программа переключится на вкладку Preview, где мы увидим нашу карту высот, и области заполненные водой, обозначенные синим цветом. Если уровень воды отличается от ожидаемого, то нужно перекомпилировать esp с корректировкой параметра –h. Затем повторить извлечение карты высот в Oscape.

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr11_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr11.jpg)

Oscape имеет одну неприятную особенность – ячейка с координатами 0, 0 не обрабатывается при извлечении карты высот, что выражается черным квадратом на карте размером 31 х 32 пиксела и соответствующим провалом в лодах. Лечится вставкой в извлеченную карту аналогичной области из исходной карты, с корректировкой яркости, так как карты отличаются. Результат до и после.

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr14_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr14.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr15_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr15.jpg)

Также после создания лодов надо будет исправить четыре текстуры лежащие по пути Data\Textures\terrain\TestWorld testworld.4.0.0.dds, testworld.8.0.0.dds, testworld.16.0.0.dds и testworld.32.0.0.dds (testworld – название мира, у вас будет своим), закрасив чёрный квадрат основным цветом. Результат до и после.

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr16_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr16.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr18_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr18.jpg)

Параметры сохранения текстур

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr17_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr17.jpg)

UPD. Проблема с ячейкой 0, 0 обусловлена отсутствием регионов в esp файле. Добавление хотя бы одного региона с помощью Creation Kit, даже без назначения на какие либо ячейки, перед запуском Oscape, устраняет проблему пустой ячейки с координатами 0, 0 в лодах.

После исправления карты высот нажимаем кнопку Accept в программе Oscape и попадаем во вкладку Generator. Выставляем параметр Target of max. Resolution отвечающий за полигональность генерируемых мешей. Слишком высокое значение приводит к ошибке при генерации лодов, поскольку количество полигонов в мешах не может превышать 64 К на один меш. Для моей карты подошло значение 800 000. Отмечаем чекбоксы как на скриншоте и жмём Generate. После завершения генерации программа переключит нас на вкладку Installer, где проверяем правильность директории инсталляции (папка data в директории игры), отмечаем все чекбоксы и жмём Install.

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr12_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr12.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr13_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr13.jpg)

После инсталляции не забываем исправить текстуры центральной ячейки.

Теперь можно подключить наш esp в лаунчере игры и переместиться в созданный мир с помощью консольной команды cow testworld 0 0. Testworld – название вашего мира, координаты ячейки могут быть другими, в диапазоне размеров вашего мира.

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr20_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr20.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr21_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr21.jpg)
(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr22_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr22.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr23_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr23.jpg)
(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr24_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr24.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr25_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr25.jpg)


Сообщение объединено: [time]13 Январь 2015, 17:37[/time]
В качестве дополнения к туториалу хочу показать ещё один вариант создания карты высот.

На этот раз мы не будем генерировать рельеф случайно, а попробуем создать его по своим параметрам, на основе заготовки. Заготовочку для примера я сделал разрешением 2048 х 2048 пикселов, и довольно примитивную. Можно сделать её с большим количеством слоёв, и более разнообразным рельефом. В моём случае это будет остров с большой горой. Нарисована она из восьми слоев разного оттенка серого, от 30% до 95%. Первые три слоя (самые темные) имеют между собой меньшую разницу в оттенке, нежели последние, этим обеспечивается необходимый угол наклона поверхности. После сведения слоев применяем размытие по Гауссу, в моем случае с радиусом 20 пикселов.

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr26_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr26.jpg)

Импортируем в Geo Control

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr27_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr27.jpg)

и начинаем экспериментировать с фильтрами. Здесь ни каких конкретных советов дать не могу, сам только учусь. После часа экспериментов у меня получилась вот такая картина

(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr28_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr28.jpg)

Дальше всё по туториалу, компилируем esp, если возникают ошибки возвращаемся в Geo Control, меняем настройки фильтров, и пробуем ещё раз. Если ошибок не много, то можно уменьшить высоту рельефа в параметре Max Altitude на вкладке Project. У меня рельеф генерировался с высотой 1500 м., а Max Altitude я установил в 1000 м. Высота после компиляции получилась 964 м. над водой, и 29 м. под водой.


(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr30_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr30.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr31_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr31.jpg)
(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr32_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr32.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr33_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr33.jpg)
(http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr34_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr34.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr35_pre.jpg) (http://dl.dropboxusercontent.com/u/8305891/images/CreationKit/world/scr35.jpg)




Картинки к туториалу пропали, увы. Со временем это починится, а пока можно туториал скачать-почитать в формате PDF по ссылке ниже.

https://drive.google.com/file/d/0B4YwfY63mZYnOE51YlFFakd0Ukk/view?usp=sharing (https://drive.google.com/file/d/0B4YwfY63mZYnOE51YlFFakd0Ukk/view?usp=sharing)
Название: [Скайрим] Создаём свой мир в Skyrim
Отправлено: Little ghost от 13 Января 2015, 18:04
Хороший тутор. Всё внятно разжёвано по частям.
Название: [Скайрим] Создаём свой мир в Skyrim
Отправлено: РЕДМЕНЪ от 13 Января 2015, 18:05
Спасибо, очень полезный туториал!
Нельзя ли добавить ссылки на программы Geo Control 2, TESAnnwyn, Oscape?
Название: [Скайрим] Создаём свой мир в Skyrim
Отправлено: a.king61 от 13 Января 2015, 22:28

Нельзя ли добавить ссылки на программы Geo Control 2, TESAnnwyn, Oscape?

1. TESAnnwyn (https://yadi.sk/d/GcIwXRQq7T5si) - сборка от комрада Kalian

2. Skyrim » Utilities » Oscape (http://www.nexusmods.com/skyrim/mods/4727/?) 
Photoscape 3.3 (http://www.photoscape.org/ps/main/download.php)

 
3. GeoControl 2
офф. сайт (http://www.geocontrol2.com/d_geocontrol_geocontrol2.htm)
версия с активацией (http://binural.org/2011/01/24/geocontrol-2-build-51.html)

Материал по теме автора
Создание и внедрение карты высот в THE ELDER SCROLLS V: SKYRIM (http://imtw.ru/tutorials/article/128-%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BA%D0%B0%D1%80%D1%82%D1%8B-%D0%B2%D1%8B%D1%81%D0%BE%D1%82-%D0%B2-tes-v-skyrim-%D0%B8-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5-lod-%D0%BE%D0%B2/)
Название: [Скайрим] Создаём свой мир в Skyrim
Отправлено: РЕДМЕНЪ от 22 Января 2015, 01:07
Туториал @perture в формате PDF, буде кому понадобится, можно скачать на сайте: Создаём свой мир в Skyrim (http://anvilbay.ru/files/CreateWorldSkyrim/)
Название: [Скайрим] Создаём свой мир в Skyrim
Отправлено: РЕДМЕНЪ от 14 Октября 2017, 08:35
Картинки к туториалу пропали, увы. Со временем это починится, а пока можно туториал скачать-почитать в формате PDF по ссылке ниже.

https://drive.google.com/file/d/0B4YwfY63mZYnOE51YlFFakd0Ukk/view?usp=sharing (https://drive.google.com/file/d/0B4YwfY63mZYnOE51YlFFakd0Ukk/view?usp=sharing)