суббота, 1 июня 2019 г.

Planetary Terrain. Часть 2.

PAINT HEIGHT

Настройки кисти

  • Brush mode - устанавливает функцию кисти:
    • Add - увеличение высоты
    •  Subtract - уменьшает высоту
    • Set - перемещает высоту в направлении поставленной цели
  • Brush size - означает, насколько большой размер кисти относительно планеты.
  • Brush strength - насколько сильным будет эффект кисти.
  • Brush falloff - определяет, как сила кисти изменяется на расстоянии.
  • Low limit / High limit - минимальная и максимальная высота, которую может сделать кисть.

Options

  •  Painting resolution - определяет размер буфера высоты и, следовательно, насколько детальным будет рисование.
  • Clear all - удаляет все детали, нарисованные до сих пор, и изменяет размер буфера до разрешения рисования.

 Уточнение местности

PlanetaryTerrain поставляется с расширением Module Editor, которое используется для создания модулей terrain и сохранения их в файлы. Модули определяют формы местности, а выходные данные отображаются в виде карт высот.

Соединительные ноды. Чтобы соединить ноды, просто нажмите маленькую кнопку на стороне нода и подключите его к другому. Разъемы на левой стороне нода являются входами, а справа - выходами. Выходы могут быть подключены только к входам и наоборот.


Существует 4 типа нодов: Generators, Operators, Macros и Output.
  • Нода Generator - генерирует шум или другие исходные значения.
    • FBM - генерирует фрактальное броуновское движение на основе
    • Ridged - генерирует Ridged мультифрактальный шум на основе FBM.
    • Billow - генерирует шум Billow. (Равен абсолютному шуму хребта).
    • Const - генерирует постоянное значение.
  • Нода Operator - изменяет значения, поступающие от генераторов или других узлов оператора.
    • Abs - возвращает абсолютное значение заданного входа.
    • Add - добавляет два входа вместе. 
    • Blend - линейная интерполяция двух входов, используя третий вход.
    • Clamp - обрезает ввод до заданного диапазона.
    • Exponent - повышает входные данные для данного показателя.
    • Invert - возвращает инвертированное значение.
    • Max - выбирает более высокий из двух входов.
    • Min - выбирает нижний из двух входов.
    • Multiply - умножить два входа.
    • Power - увеличивает первый вход до мощности второго входного значения.
    • Substract - вычитает второе значение из первого.
    • Terrace - создает террасу между заданным диапазоном.
    • Translate - переводит шум в направлении XYZ.
    • Divide - делит первый вход на второй.
    • Curve - смещает входные данные на заданную пользователем кривую.
    • Weight - взвешивает входные данные в соответствии с заданным целевым значением.
  • Нода Output  - показывает окончательный вывод графика и может также использоваться для экспорта текстур.
  • Нода Macro - загружает полный график для использования в качестве единого нода. Полезен для создания сложных графиков.

Глубокая генерация планеты 

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

Вот пошаговое описание процедуры генерации:

  1. Планета начинается с куба, каждая поверхность хранится в виде массива точек. Количество поверхностей определяется уровнем подразделения, начиная с 6 (по одному на каждую сторону куба) и подразделяя каждую еще на 4, пока не будет достигнут уровень subdivision (подразделения).
  2. Каждая точка преобразуется в точку на поверхности сферы с одинаковым расстоянием между точками.
  3. Каждая точка смещается на величину высоты, заданную алгоритмом когерентного шума для заданной координаты точки в трехмерном пространстве.
  4. Точки масштабируются до желаемого радиуса планет.
Локация кода:
  •  Subdivision(Подразделение) происходит в функции Generate классов Planet.
  • Transformation (Преобразование) точек происходит в классе Surface под функцией CalculateGeometry.
 Рисунок 1. Сетка до и после сферификации.

LOD работает, далее подразделяя каждую поверхность на 4 более мелких и генерируя каждую новую с той же процедурой.

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

Такие данные, как значение высоты из алгоритма шума и полярность (расстояние в диапазоне 0-1 от любого полюса), сохраняются в цветовом канале вершины для использования в шейдере.

 
Изображение 2. Плотная сетчатая сетка (32x32, уровень подразделения 8) до и после окраски

Рисунок 3. Динамический LOD в действии. Настройки: уровень подразделения 2, 16x16 сетки и LOD уровеня 8.

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.