Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine SDK: Документация
            jMonkeyEngine SDK: Terrain Editor(Редактор Ландшафта)

jMonkeyEngine SDK: Terrain Editor(Редактор Ландшафта)

Опубликованно: 28.04.2017, 23:42
Последняя редакция, Andry: 26.09.2018 11:14

Редактор ландшафта позволяет создавать, изменять и рисовать ландшафты.

Управление

Управления Редактором Ландшафта такое же, как и у Scene Composer, вы поворачиваете камеру [ЛК мыши] и перемещаете камеру [ПК мыши]. И так до тех пор пока вы не выберете один из инструментов ландшафта на панели инструментов, тогда управление изменятся под использование этого инструмента. Тогда [ЛК мыши] будет использовать этот инструмент: рисование, повышение/понижение рельефа и.т.п. [ПК мыши] тоже может выполнять какие то действия в зависимости от инструмента.

Создание ландшафта

Чтобы создать ландшафт, сначала выберите папку Scene в вашем Project Assets, щелкните [ПК мыши] и выберите Новый ▸ Другое ▸ Scene ▸ Empty jme3 Scene. Это создаст пустую сцену в этой папке. Щелкните [ПК мыши] этот новый файл и выберите Edit Terrain(Редактировать Ландшафт). Это откроет новый файл в TerrainEditor и отобразит вашу файловую структуру сцены в SceneExplorer, расположенном в нижнем левом окне в SDK. В окне SceneExplorer выберите узел (обычно ваш корневой узел) в вашей сцене.

sdk-terrain-tut-selectnode

Затем нажмите кнопку Add Terrain(добавить ландшафт).

sdk-terrain-tut-addterrain

Появится Create Terrain Wizard(мастер создания ландшафта), который проведет вас по этапам создания ландшафта. Удостоверьтесь, что вы зададите действительно нужный вам размер ландшафта, и насколько деталезированными вы хотите, чтобы были текстуры, так как вы не сможете изменить это позже!

Чтобы увидеть местность, вам нужно добавить свет к вашей сцене. Для этого щелкните правой кнопкой мыши корневой узел в окне SceneExplorer и выберите Add Light(Добавить Свет) ▸ Directional Light(Направленный свет). Кроме того, вы так же можете создав ландшафт нажать кнопку [Toggle cam light](Переключить подсветку камеры), расположенную в меню вверху открытого окна местности. Позже вам нужно будет добавить свет в сцену с помощью кода метода simpleinitApp(), чтобы вы могли видеть ландшафт в вашей игре.

Шаг 1: Размер рельефа

Здесь вы определяете размер вашего ландшафта, общий размер(total size) и размер клочков(patch size). Вероятно, вам следует менять размер клочков. Но общий размер нужно будет задать; насколько большой будет ваш ландшафт.

Шаг 2: Карта высот

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

Шаг 3. Изображение альфа детали.

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

Изменение ландшафта

В настоящее время существуют два инструмента для изменения ландшафта: повышение и понижение рельефа.

sdk-terrain-raise-lower

Есть два ползунка, которые влияют на работу этих инструментов:

  • Radius(Радиус): насколько велика кисть
  • Weight/Height(Нагрузка/Высота): насколько сильно воздействие кисти

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

Рельеф местности

Ваш ландшафт поставляется с одной диффузной текстурой по умолчанию, и вы можете иметь до 12 полных диффузных текстур. Он также позволяет вам добавлять карты нормалей(normal maps) к каждому текстурному слою. Может быть максимум 13 текстур, в том числе Diffuse и Normal (3 текстуры рассматриваются альфа-картами).

Всеми текстурами можно управлять на вкладке Texture Layer(Слои Текстур), щелкая по текстурам. Есть два ползунка, которые влияют на работу инструмента рисования:

  • Radius(Радиус): насколько велика кисть
  • Weight/Height(Нагрузка/Высота): насколько сильно воздействие кисти

Добавление нового текстурного слоя

Добавляет новый слой текстуры к ландшафту. Он будет нарисован поверх остальных слоев текстуры, перечисленных выше в списке.

sdk-terrain-addtexture

Изменение диффузной(Diffuse) текстуры

Нажмите на изображение диффузного текстуры в таблице текстур. Появится окно с доступными текстурами в вашей папке ресурсов.

sdk-terrain-editdiffuse

Добавление карты нормалей(normal maps) к текстурному слою

Когда вы добавляете слой текстуры, по умолчанию он не добавляет карту нормалей для вас. Чтобы добавить нажмите один раз на кнопку рядом с диффузной текстурой для этого слоя текстуры. Появится просмоторшик текстур. Выберите текстуру и нажмите [Ok], и все готово.

sdk-terrain-addnormaltexture

Удаление карты нормалей из слоя текстуры

Чтобы удалить карту нормалей из слоя текстуры, снова нажмите кнопку карты нормалей для этого слоя текстуры и снимите выделение текстуры. Затем нажмите [Ok] и текстура должна быть удалена.

Изменение масштаба текстуры

Поле в таблице справа от диффузной и нормальной текстур для вашего слоя текстуры — это масштаб. Изменение этого значения изменяет масштаб текстуры.

sdk-terrain-texturescale

Вы заметите, что масштаб изменяется, когда вы переключаетесь между Tri-Planar(Трех-плановое) и обычным текстурным отображением. Трех плановое отображение не использует координаты текстуры геометрии, а исапользует координаты реального мира. И по этому, чтобы текстура выглядела одинаково, когда вы переключаетесь между двумя методами отображения текстуры, редактор ландшафта автоматически преобразует масштаб для вас. По существу, если ваш масштаб в нормальных координатах текстуры равен 16, то для tri-planar он преобразуется следующим образом: 1/terrainSize/16

Трехплановое отображение текстуры

Трех плановое отображение текстуры рекомендуется, если у вас много почти вертикальной местности. При нормальном построении текстуры, текстуры могут выглядеть растянутыми, потому что они отображаются на одной плоскости: X-Z. Трех плановое отображение, отображает текстуры на трех плоскостях: X-Z, X-Y, Z-Y; И смешивает их вместе, исходя из того, на каком плане больше всего стоит нормаль треугольника. Это делает ландшафт намного лучше, но это удар по производительности! Вот статья о трех плановом отображении: https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch01.html

Общее количество текстур

Ландшафт будет поддерживать максимум 12 диффузных текстур. И в общей сложности 13 диффузных и карт нормалей. Большинство видеокарт ограничено 16 текстурами (текстуры), а 3 используются за кулисами сцены как материал рельефа для альфа-смешивания текстур, поэтому вы остаетесь с максимум 13 текстурами.

Создание энтропий ландшафта для LOD

Если вы используете рекомендуемый PerspectiveLodCalculator для расчета уровней LOD в ландшафте, вам нужно предварительно сгенерировать уровни энтропии для рельефа. Это медленный процесс. Если они не сгенерированы заранее, LOD control будет генерировать их для вас, но этот процесс будет лагать для пользователя, когда он будет загружать сцену, и местность может иметь мерцания. Используйте кнопку «Generate Entropies»(Сгенерировать энтропии), чтобы предварительно сгенерировать энтропии для ландшафта, они будут сохранены вместе с ним. Обратите внимание, что всякий раз, когда вы изменяете высоту ландшафта, вы будете должны повторно генерировать энтропии. Конечно, не делайте этого каждый раз, но, это стоит сделать непосредственно перед тем, как вы будете готовы отправить карту для тестирования.

Загрузка ландшафта в игру

Есть несколько вещей, которые ваш код должен сделать, чтобы загрузить ландшафт.

  • Сначала вы должны использовать менеджер ресурсов, чтобы загрузить сцену, см. Учебник по hello asset.
  • Ландшафт (как вы можете видеть слева в редакторе) является под узлом сцены, поэтому вам нужно написать код, чтобы исследовать дочерние узлы сцены до тех пор, пока вы не найдете узел, являющийся ландшафтом, см. Этот учебник Концепций графа сцены.
  • Вы также должны задать камере элемент LOD control, чтобы она работала правильно:
TerrainLodControl lodControl = ((Node)terrain).getControl(TerrainLodControl.class);
            if (lodControl != null)
                lodControl.setCamera(getCamera());

Смотрите также:


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.