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

jMonkeyEngine SDK: Редактор Ландшафта

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

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

Управление

Элементы управления ландшафтом такие же, как у 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

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

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

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

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

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

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

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

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

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

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

sdk-terrain-raise-lower

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

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

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

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

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

Все текстуры можно контролировать в таблице «Уровень текстуры», щелкнув по текстурам. Есть два ползунка, которые влияют на работу инструмента рисования:

  • 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 будет генерировать их для вас, но этот процесс будет отставать от пользователя, когда они загружают сцену, и местность мерцает. Используйте кнопку «Сгенерировать энтропии», чтобы предварительно сгенерировать энтропии для местности, они будут сохранены вместе с ней. Обратите внимание, что всякий раз, когда вы изменяете высоту ландшафта, вы должны повторно генерировать энтропии. Конечно, не делайте этого каждый раз, но, возможно стоит непосредственно перед тем, как вы будете готовы отправить карту для тестирования.

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

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

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

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

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

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