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

Руководство Planetary Terrain. Часть 1

Planetary Terrain

Настраиваемые Процедурные Планеты для Unity.


Planetary Terrain позволяет быстро создавать собственные процедурные планеты прямо в Редакторе Unity. Используйте комбинацию процедурных функций шумов и и рисования ландшафта, чтобы создать именно те планеты, который нужен вашему проекту, от крошечных до огромных миров.

Особенности:


  • Процедурно сгенерированные планеты с динамическим уровнем детализации.
  • Рисование ландшафта: рисовать объекты прямо на поверхности планеты!
  • Мощный редактор, основанный на нодах, для контроля процедурной генерации.
  • Генерация в реальном времени для минимального размера приложения.
  • Легко сохранять планеты в меши и префабы.
  • Полный исходный код.
  • Поддержка как Unity Free, так и Pro!
  • Префабы атмосферы и воды.

Начало

Последовательность выполняемых действий:


Чтобы создать планету, нужно выполнить несколько шагов:
  1.  Создайте или выберите модуль Terrain. Модули Terrain определяют процедурный алгоритм, который уточняет ландшафт планеты.
  2. Установите параметры генерации меша. Требуемый уровень детализации и ограниченный polygon/draw call? Следует ли использовать динамический LOD? На эти вопросы лучше всего ответить, попробовав различные настройки в Инспектор Planet.
  3. Определите текстуры поверхности и цвета. Они находятся в скрипте SurfaceColor, прикрепленном к игровому объекту планеты по умолчанию. Вы можете полностью заменить шейдер по умолчанию. 
  4. Нарисуйте высоту. Настройки рисования и кисти находятся в Инспектор Planet во вкладке Paint. Кисти высоты изменяют высоту местности, но сохраняют процедурные детали.
  5. Разместите предметы. Существует скрипт под названием PlacementHelper, который можно добавить на игровой объект планеты. Этот скрипт содержит базовые функции для рисования объектов на поверхности и автоматического размещения объектов во время генерации. Может быть несколько PlacementHelper-скриптов одновременно.
  6. Создайте сборку. Чтобы генерация во время выполнения работала, файлы модуля Terrain должны находиться внутри папки Resources. Для минимального размера приложения очистите поверхности на планете и включите «Generate on start».
  7. Сохраните меши и префабы. Кнопка экспорта находится в Инспектор Planet. Он создаст префаб, содержащий все иерархии игровых объектов планеты, и сохранит меши и материалы в файлы.

 Создание планеты

  1. Чтобы создать новую планету, перейдите в GameObject → Create Other → PlanetaryTerrain → Planet в меню редактора Unity. Это добавит новый пустой объект Planet на сцену. 
  2.  Установите «Terrain Module» в окне Инспектора. Готовые модули можно найти в папке «PlanetaryTerrain / Resources / Modules /». В качестве альтернативы вы можете создать новый модуль, нажав кнопку «Edit».
  3.  Установите параметр «Radius» в Инспекторе, чтобы он соответствовал желаемому масштабу.
  4. Нажмите «Generate Now».
  5. См. Главу «Настройки планеты» для объяснения других настроек. 

 Создание модуля Terrain

  1. Откройте Module Editor в меню редактора Unity: Window → Planet Module Editor ИЛИ в Инспектор Planet, нажав кнопку «Edit» рядом с файлом модуля.
  2. Нажмите «New» в верхнем левом углу окна.
  3.  Это вызывает график по умолчанию, который очень прост, только с одним узлом FBM и выходным нодом.
  4. Нажмите «Parameters» в узле FBM, чтобы изменить настройки.
  5. Используйте «New Generator», «New Operator» и «New Macro», чтобы добавить ноды.
  6. Подключите ноды, щелкнув на маленькие разъемы на их боковой стороне. Входы расположены слева, а выходы - справа.
  7. Подключите последний нод к Output ноду.
  8. Сохраните график с помощью кнопки «Save» в верхнем левом углу.
  9. Теперь вы можете загрузить график в Инспектор Planet, как указано выше в разделе «Creating a Planet»!

Редактирование поверхности планеты (рисование)

  1. Убедитесь, что на планете включены коллайдеры (в Инспектор Planet на вкладке «Generate» в разделе «Colliders» нажмите «Show», а затем отметьте «Level 0: Generate colliders»).
  2.  Выберите Paint в Инспекторе Planet, теперь вы должны увидеть круг кисти, когда мышь наводится на планету на Сцене. Левый клик на планете применит выбранную кисть.
  3. Измените настройки кисти и разрешение в Инспекторе.
  4. Планета сохранит изменения, даже если поверхности будут удалены, изменения будут применены к любым поверхностям, сгенерированным позже. Чтобы очистить изменения, нажмите «Clear all».

Сохранение Мешей Planet

  1. Нажмите кнопку «Save to Assets» в Инспектор Planet.
  2. Выберите папку и имя файла для сохранения ассета.
  3. Скрипт создаст префаб всей планеты и сохранит каждую отдельный меш в папке.

Настройки планеты

Пояснения к настройкам Инспектора Planet:

Generate 


Terrain Module:

  •  Terrain Module - это файл, содержащий инструкции для генерации поверхности планеты.
    •  ПРИМЕЧАНИЕ. Для генерации, во время выполнения, файл должен находиться в папке «Resources», чтобы его можно было включить в сборку.
  •  Frequency scale - это множитель, который влияет на все генераторы в файле модуля. Это переопределение позволяет вам легко настроить масштаб объекта terrain без изменений в файле модуля.

Настройки Меша:

  •  Radius - устанавливает масштаб планет в единицах.
  • Height variation - определяет масштаб элементов местности по отношению к радиусу.
  • Mesh resolution - это размер одного участка поверхности планеты. Например, 32 означает 32x32 вершины. Рекомендуется от 16 до 64 при использовании LOD.
  • Maximum - составляет 254x254 = 64516 вершин (предел юнитов составляет 65000 для одного меша).
  • Subdivisions - означает, сколько раз 6 оригинальных патчей были разделены в начале. Это формирует минимальную сложность для модели до LOD.
    • Например, значение деления 1 означает, что в базовой модели 6 полных поверхностей (до LOD). Значение 2 означает, что каждая из 6 поверхностей разделена на 4 меньшие поверхности, в результате чего общее количество составляет 24.
  • Generate on start - определяет, должна ли Планета генерироваться в функции запуска.
  • Randomize seeds - определяет, будут ли случайные seeds перетасованы при создании планеты. Доступно только в том случае, если включена функция «Generate on start».
  • Generate now - генерирует планету в редакторе с текущими настройками.
  • Clear - уничтожает любые существующие в настоящее время поверхности планеты.
 Изображение, показывающее различные уровни subdivision на полной планете и одной поверхности. Слева направо: subdivision 1, subdivision 2 и subdivision 3.
Colliders
  • Для каждого уровня LOD (установленного на вкладке LOD) есть две опции:
  • Generate colliders - определяет, должны ли к поверхностям добавлены меш коллайдеры.
    • ВНИМАНИЕ: Генерация большого количества коллайдеров снижает производительность.
  • Disable when subdividing - отключает коллайдеры на этом уровне, когда генерируется более высокий уровень.

Export  

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

LOD


  • Use LOD - включает / отключает динамический уровень детализации системы.
  • LOD target - это преобразование, которое используется для расчета расстояний при определении необходимости загрузки нового уровня LOD.
  • LOD levels - определяют, насколько глубокой будет иерархия подразделения и, следовательно, насколько детализированной будет поверхность на максимальном уровне детализации.
  •  Level loading distances - это расстояния в единицах, когда произойдет subdivision(подразделение) на каждый уровень.

Performance  

  • LOD update interval - это время в секундах между проверками обновления, когда система LOD проверяет, следует ли загружать или выгружать какие-либо поверхности.
  • Simultaneous subdivisions - определяет, сколько поверхностей можно подразделить одновременно. Большое число означает, что много деталей может быть получено быстро, но за счет производительности (кадров в секунду).
  • Use angle culling - определяет, будут ли средства визуализации поверхности отключены, если они находятся за пределами угла отбраковки.
  • Renderer culling angle - это минимальный угол между целью LOD и ближайшей точкой поверхности (относительно центра планет), когда поверхность не будет визуализирована. Это помогает отключить рендеры, которые находятся в усеченной камере, но находятся за горизонтом планеты.

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

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

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