Применение процедурных генераторов в создании контента для real-time 3d приложений: часть 1. oil rush

Получение[]

Воду нельзя получить в режиме выживания в качестве предмета. Однако можно получить ведро воды с помощью пустого ведра, если кликнуть ПКМ по водоёму или наполненному котлу.

Естественная генерация

Демонстрация водоёма

Вода естественным образом генерируется в Верхнем мире, как правило, в виде океанов, озёр, рек и родников. Кроме того, игрок может встретить её в натуральных структурах: деревнях, колодцах, крепостях и лесных особняках. В Bedrock Edition вода также генерируется как часть подводных руин с сундуками с добычей, но только в виде двух блоков:

  • первый блок воды расположен внутри сундука с добычей, что делает его полузатопленным;
  • второй блок воды образуется поверх сундука с добычей.

Неизвестно, сделано это преднамеренно или нет. Это не относится к Java Edition.

Эффекты

  • Вспышки света (например, при сварке)
  • Расползающиеся пятна нефти

Волны на воде

Вода в игре Oil Rush
Карты нормалей, использованные в материале воды для симуляции сильного ветра в игре Oil Rush

Скачать фильтр (ocean_waves.ffxml)

Создание айсбергов, каньонов, скал и льдин

Айсберги в игре Oil Rush
  1. Была поставлена задача в сжатые сроки реализовать достаточно большое количество различных вариантов объектов окружающей среды.
  2. Необходимо было уже на ранних стадиях видеть формы объектов, отбирать только те, которые нас полностью устраивают, и без особых колебаний выкидывать ненужные.

3D-CoatHoudiniVoxelogic Acropora

Карта высот для айсбергов (сверху) и выдавленный по ней меш (снизу)

Скачать фильтр (icebergs_forms.ffxml)

Ретопология айсбергов
Карта высот для формирования боковой поверхности айсберга (сверху) и выдавленный по ней меш, готовый к запеканию текстур (снизу). Нетрудно увидеть, что на скульптинг одного варианта такой поверхности уходило бы немало времени

Скачать фильтр (iceberg_side.ffxml)

Карта высот для формирования верхней поверхности айсберга (сверху) и выдавленный по ней меш, готовый к запеканию текстур (снизу)

Скачать фильтр (iceberg_top.ffxml)

Выдавливание боковых поверхностей айсбергов картой высот (сверху), меш после оптимизации (посередине) и склеивания вершин с верхней частью (снизу)
Каньоны в игре Oil Rush
Карта высот боковых поверхностей каньонов (сверху) и выдавленный по ней меш (снизу)

Скачать фильтр (canyon_side.ffxml)Скачать фильтр (canyon_top.ffxml)

Скалы в игре Oil Rush
Карта высот скальной поверхности (сверху) и выдавленный по ней меш (снизу)

Скачать фильтр (rock.ffxml)

Процесс формирования скал и придания им необходимой рельефности
Льдины в игре Oil Rush
Карта высот льдин (сверху), выдавленный по ней меш (посередине) и ретопология выдавленного меша (снизу)

Скачать фильтр (ice_forms.ffxml)

Карта нормалей поверхности льдин

Скачать фильтр (ice_top.ffxml)

Дно океана

Дно океана в игре Oil Rush
Диффузная текстура (сверху) и карта высот (снизу) океанического дна

Скачать фильтр (ocean_bottom_1_height.ffxml)

Дно океана в игре Oil Rush
Диффузная текстура (сверху) и карта нормалей (снизу) океанического дна

Скачать фильтр (ocean_bottom_2_color.ffxml)

Нефтяная пленка

Нефтяная плёнка на поверхности воды в игре Oil Rush
Диффузная текстура нефтяной плёнки

Скачать фильтр (oil_slick.ffxml)

Элементы руин

Руины в игре Oil Rush
  1. Отсутствие возможности сохранения готовых фильтров в блоки и переиспользования их как узлов со своими входами (inputs) и выходами (outputs) в других фильтрах (надеемся, что с реализацией группировок в четвертой версии программы эта проблема будет решена).
  2. Отсутствие кэширования результатов рассчётов для каждого блока. При осуществлении любых изменений перерассчитывается вся связанная с результатом вывода ветка графа, а не только тот отрезок, на который эти изменения повлияли. Очень часто в начале фильтра создаётся несколько сложных генераторов шума, формирующих общий характер и рисунок поверхности, которые после создания практически не изменяются. Далее идут узлы, отвечающие за цвет, контраст и смешивание (blending) разных составляющих, параметры которых претерпевают гораздо большее количество итераций, но из-за того, что вычисления не кэшируются, работать с фильтром становится всё затруднительнее по мере его усложнения. Это вынуждает осуществлять компоновку (composing) финальной текстуры в линейных редакторах изображений.

Пена на воде

Эффекты на воде от передвигающихся юнитов в игре Oil Rush
  • расходящаяся в стороны пена (по бокам лодок)
  • пена от вращающихся винтов (сзади лодок)
  • пузырьки воздуха под водой
  • брызги над водой
Диффузные текстуры пены на воде

Скачать фильтр (ocean_foam_sfx.ffxml)

Filter Forge

Достоинства

  • Богатый и логичный набор базовых компонент, позволяющий реализовать практически любой фильтр.
  • Возможность создания собственных компонент с помощью скриптов на языке Lua.
  • Удобный и интуитивный функционал редактора фильтров.
  • Очень удобные компоненты генераторов шума, позволяющие сформировать базовую фактуру практически любой поверхности.
  • Бесплатные библиотеки фильтров. С большой вероятностью можно найти фильтр, уже реализующий необходимое изображение, и изменить его под свои нужды.

Недостатки

  • Отсутствие какого-либо GPU ускорения — все вычисления конечного цвета пикселя осуществляются процессором.
  • Отсутствие компонент для вывода произвольного количества получившихся изображений во внешние растровые файлы (output компонент) и отсутствие возможности сохранения всех этих файлов прямо в режиме редактирования фильтра по нажатию горячей клавиши (чтобы после отстройки параметров фильтра быстро получить весь набор необходимых текстур).
  • Отсутствие автоматического отслеживания изменений в исходных растровых изображениях с последующей их перегрузкой и, соответственно, пересчётом фильтра.
  • Отсутствие возможности создания и полноценного использования дополнительных буферов в скриптах Lua (например, для реализации эффекта свечения (glow) понадобится несколько таких буферов). Решение-заглушка с использованием таблиц на Lua страдает довольно существенными недостатками.
  • Отсутствие возможности группировки созданных фильтров для дальнейшего их переиспользования в качестве компонент для формирования более сложных фильтров.
  • Ориентированность на 2D. Отсутствие 3D viewport’а для возможности быстрого предпросмотра результатов.

Пожелания

  • Хочется иметь возможность поддержки исходных изображений в форматах PSD (с возможностью использования как собранного изображения, так и отдельного слоя) и SVG (чтобы исходные изображения также не были зависимы от разрешения; этот формат удобно использовать в качестве масок).
  • Блоки с комментариями помогли бы значительно улучшить восприятие дерева фильтра.

Allegorithmic Substance Designer

Свойства[]

Зависящие от биомов цвета воды в Java Edition.

Плавание

Если игровой персонаж или моб не плывёт в воде, он начинает медленно тонуть. Для того чтобы двигаться вверх, следует зажать кнопку плавания (Пробел по умолчанию). Игрок будет всплывать на поверхность до тех пор, пока эта кнопка удерживается. После достижения поверхности будет наблюдаться эффект покачивания. Для того, чтобы начать плыть, следует, находясь под водой, нажать кнопку W + левый ctrl (по умолчанию). Это позволяет не только быстрее перемещаться в воде, но и проходить через отверстия высотой в один блок. При этом включается соответствующая анимация. Плыть против течения воды намного медленнее, а по течению — быстрее, чем в стоячей воде.

Большинство мобов, способных стоять, всегда всплывают, когда оказываются в воде. Исключения — железные големы и нежить.

Течение

Вода на поверхности, как правило, растекается. Она предотвращает горение блоков, а также разрушает некоторые блоки: растения, снег, факелы, ковры, нить, красную пыль — в результате чего выпадет соответствующий предмет.

Перемещение объектов против течения значительно медленнее, а по течению — быстрее, чем в стоячей воде.

Бесконечный источник воды

Два течения максимальной силы, сливаясь, создают новый блок воды. Поэтому можно создать бесконечный источник воды, если разместить блоки воды в формате 3×1, 2×2 и более.

Раздатчик будет размещать воду на поверхности при активации, если загружен ведром воды. Также он забирает воду при наличии в нём пустого ведра.

Замерзание

Если в холодном биоме разместить воду, то она превратится в лёд. В глубоких водоёмах замерзает верхний слой воды толщиной в 1 блок. Замерзание не происходит, если вода накрыта твёрдыми блоками или освещена искусственным светом силой не менее 11.
Также можно превратить воду в подмороженный лёд, если начать идти по ней в ботинках, зачарованных на «Ледоход».

Течение воды также замерзает.

Освещение

Вода уменьшает уровень освещения на 2 за каждый блок, поэтому видимость под водой снижается с увеличением глубины. Кроме того, видимость зависит от биома, в котором находится игровой персонаж. Также чем дольше игрок находится под водой, тем лучше становится его видимость.

Существует несколько способов увеличения подводной видимости: шлем, зачарованный на «Дыхание», зелье ночного видения или активация морского проводника.

Взаимодействие с другими блоками

При соприкосновении лавы и воды образуется новый блок:

  • если сталкиваются течения лавы и воды, появляется булыжник;
  • если течение лавы встречает источник воды, появляется камень;
  • если течение воды встречает источник лавы, появляется обсидиан.

Если вода (в том числе течение) контактирует с цементом, то последний превращается в бетон.

Урон

Основная статья: Урон

Вода наносит урон странникам Края, снежным големам, страйдерам, ифритам и пчёлам.

Игроки и мобы не могут дышать под водой (за исключением железных големов, рыб, черепах, спрутов, стражей, древних стражей, скелетов, скелетов-иссушителей, зиммогоров, лошадей-скелетов, зомби-пиглинов, зоглинов, лошадей-зомби, зомби-жителей ). Игрок может задержать дыхание на 15 секунд. Запас воздуха отображается шкалой пузырьков. При окончании запаса воздуха игрок будет получать урон 2 () от утопления, если его голова расположена в воде.

Если зомби тонет под водой, он превращается в утопленника. Если кадавр тонет под водой, он превращается в зомби, а потом в утопленника.

Скорость течения

На данный момент вода в обычном мире растекается на 8 блоков (1 блок источник + 7 блоков текучей воды) со скоростью 4 блока в секунду.

Общие настройки¶

Размер

Размер растров для текстур-изображений (длина и ширина изображения в пикселах) должен быть числом 2N, т.е. 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 пикселов. Использование текстур других размеров (т.н. NPOT) поддерживается, но не рекомендуется. Для корректной работы компрессии текстур размер должен составлять не менее 4 пикселов. Как правило, используются изображения квадратной формы (например, 512 x 512 px), однако могут использоваться и прямоугольные (например, 4 x 128 px). Использование изображений размером более 2048 пикселов не рекомендуется.

Image Mapping > Extension

Режим интерпретации текстурных координат (в WebGL — Wrap Mode). Доступен для текстур типа . В случае значения движок устанавливает для текстуры режим . При этом целочисленная часть текстурных координат игнорируется, используется только дробная часть. Во всех остальных случаях (например, ) движок устанавливает . При этом происходит ограничение текстурных координат отрезком . Значение по умолчанию .

Mapping > Coordinates

Тип текстурных координат. Поддерживаются (использовать развертку), (использовать направление на камеру, только для диффузных текстур, применяется для создания материалов в стиле material capture, matcap) и (исходные недеформированные координаты объекта). Значение по умолчанию .

Mapping > Size

Масштабирование развертки по соответствующим осям. Значения по умолчанию 1.0.

Export Options > Do Not Export

Не экспортировать текстуру.

Export Options > Disable Compression

Отключить использование текстурной компрессии (т.е. формата текстур ) для данной текстуры. Применяется в случае, когда приводит к ухудшению качества изображения. В частности, рекомендуется отключать для текстур-масок, использующихся для смешивания различных характеристик материалов.

Export Options > Shore Distance Map

Используется в .

Export Options > Anisotropic Filtering

Фактор анизотропной фильтрации для индивидуальной текстуры. Имеет приоритет перед аналогичной настройкой для сцены. Значение по умолчанию (т.е. использовать настройки сцены).

Water Foam

Текстура пены. Используется материалом для рендеринга воды.

Примечание

Для карт нормалей текстурная компрессия не применяется.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
3D-тест
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: