Под этим солнцем и небом мы тепло приветствуем Вас, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Бухта 2.0. Тёплая. Ламповая. Твоя.

Автор Тема: [Скайрим] Создаём свой мир в Skyrim  (Прочитано 11175 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн @perture

  • *
  • Сообщений: 7
  • Пол: Мужской
[Скайрим] Создаём свой мир в Skyrim
« : 13 Января 2015, 17:35 »
+5
Для начала немного теории.

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

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 м., без каких либо ограничений.



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



Однако существует некоторое ограничение на разницу высот соседних 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 и добавляем парочку фильтров с настройками как на скриншоте



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



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



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



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



Компилируем .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 и зависит от особенностей рельефа и необходимого уровня воды.
Компиляция завершилась успешно



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

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

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



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



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



Также после создания лодов надо будет исправить четыре текстуры лежащие по пути 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 – название мира, у вас будет своим), закрасив чёрный квадрат основным цветом. Результат до и после.



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



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

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



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

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

Спойлер - Вот что получилось у меня:




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

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



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



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



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


Спойлер - Ну и собственно результат:






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

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

Оффлайн Little ghost

  • *
  • Сообщений: 384
  • Осьминожкой прослыл
[Скайрим] Создаём свой мир в Skyrim
« Ответ #1 : 13 Января 2015, 18:04 »
0
Хороший тутор. Всё внятно разжёвано по частям.

Оффлайн РЕДМЕНЪ

  • *
  • Сообщений: 17292
  • Красный мракобесЪ
[Скайрим] Создаём свой мир в Skyrim
« Ответ #2 : 13 Января 2015, 18:05 »
0
Спасибо, очень полезный туториал!
Нельзя ли добавить ссылки на программы Geo Control 2, TESAnnwyn, Oscape?
УЛЫБНИСЬ МИРУ И МИР УЛЫБНЁТСЯ ТЕБЕ!
Награды Маяк - за неоценимую помощь в создании Бухты 2.0 Мужественному и неотразимому Господину Бухты-2016 Друг императора - монетка на удачу! За то, что успевает, проделывает, умудряется и непонятный (ПП 2014 года) За участие в Битве сонетов За победу на новогоднем конкурсе скриншотов "Зимний пейзаж" Нетрезвому Драугру, правившему бал на Фестивале ведьм 13.10.13 Цветущий Кактус - лучшему критику Первого поэтического конкурса Бухты Синяя Роза - за победу на Первом поэтическом конкурсе Бухты За обширный и значительный вклад в развитие сайта и форума (ВП 2012 года) За обширный и значительный вклад в развитие сайта и форума (ПП 2012 года) Друг Скайрима - монетка на удачу! Почётный житель Бухты (ВП 2011) Победитель конкурса модмейкеров №1 по теме "Расы" Золотой Пергамент - за замечательные рассказы (ВП 2011 года)

Оффлайн a.king61

  • *
  • Сообщений: 1264
  • Пол: Мужской
[Скайрим] Создаём свой мир в Skyrim
« Ответ #3 : 13 Января 2015, 22:28 »
+2

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

1. TESAnnwyn - сборка от комрада Kalian

2. Skyrim » Utilities » Oscape 
Спойлер - скрытое:

 
3. GeoControl 2

Материал по теме автора
Создание и внедрение карты высот в THE ELDER SCROLLS V: SKYRIM
Мысль № 6 - Лучше скажи мало, но хорошо.
©Козьма Прутков©Плоды раздумья, не включавшиеся в собрание сочинений.
Награды Ebony banhammer - лучшему модератору форума (ПП 2014 года) Ebony banhammer - лучшему модератору форума (ПП 2013 года) Ebony banhammer - лучшему модератору (ПП 2012 года)  Ebony banhammer - лучшему модератору форума (ВП 2011 года)

Оффлайн РЕДМЕНЪ

  • *
  • Сообщений: 17292
  • Красный мракобесЪ
[Скайрим] Создаём свой мир в Skyrim
« Ответ #4 : 22 Января 2015, 01:07 »
0
Туториал @perture в формате PDF, буде кому понадобится, можно скачать на сайте: Создаём свой мир в Skyrim
УЛЫБНИСЬ МИРУ И МИР УЛЫБНЁТСЯ ТЕБЕ!
Награды Маяк - за неоценимую помощь в создании Бухты 2.0 Мужественному и неотразимому Господину Бухты-2016 Друг императора - монетка на удачу! За то, что успевает, проделывает, умудряется и непонятный (ПП 2014 года) За участие в Битве сонетов За победу на новогоднем конкурсе скриншотов "Зимний пейзаж" Нетрезвому Драугру, правившему бал на Фестивале ведьм 13.10.13 Цветущий Кактус - лучшему критику Первого поэтического конкурса Бухты Синяя Роза - за победу на Первом поэтическом конкурсе Бухты За обширный и значительный вклад в развитие сайта и форума (ВП 2012 года) За обширный и значительный вклад в развитие сайта и форума (ПП 2012 года) Друг Скайрима - монетка на удачу! Почётный житель Бухты (ВП 2011) Победитель конкурса модмейкеров №1 по теме "Расы" Золотой Пергамент - за замечательные рассказы (ВП 2011 года)

Оффлайн РЕДМЕНЪ

  • *
  • Сообщений: 17292
  • Красный мракобесЪ
[Скайрим] Создаём свой мир в Skyrim
« Ответ #5 : 14 Октября 2017, 08:35 »
0
Картинки к туториалу пропали, увы. Со временем это починится, а пока можно туториал скачать-почитать в формате PDF по ссылке ниже.

https://drive.google.com/file/d/0B4YwfY63mZYnOE51YlFFakd0Ukk/view?usp=sharing
УЛЫБНИСЬ МИРУ И МИР УЛЫБНЁТСЯ ТЕБЕ!
Награды Маяк - за неоценимую помощь в создании Бухты 2.0 Мужественному и неотразимому Господину Бухты-2016 Друг императора - монетка на удачу! За то, что успевает, проделывает, умудряется и непонятный (ПП 2014 года) За участие в Битве сонетов За победу на новогоднем конкурсе скриншотов "Зимний пейзаж" Нетрезвому Драугру, правившему бал на Фестивале ведьм 13.10.13 Цветущий Кактус - лучшему критику Первого поэтического конкурса Бухты Синяя Роза - за победу на Первом поэтическом конкурсе Бухты За обширный и значительный вклад в развитие сайта и форума (ВП 2012 года) За обширный и значительный вклад в развитие сайта и форума (ПП 2012 года) Друг Скайрима - монетка на удачу! Почётный житель Бухты (ВП 2011) Победитель конкурса модмейкеров №1 по теме "Расы" Золотой Пергамент - за замечательные рассказы (ВП 2011 года)