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

Система травы

Опубликованно: 04.07.2017, 13:04
Последняя редакция, Andry: 04.07.2017 19:41

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

SimpleGrassTest.java

Демо-проект содержит пример с название SimpleGrassTest.java. У этого класса есть метод с именем setupForester(). Он хорошо прокомментирован и может быть использован в качестве учебного, демонстрирующего то как создать простую систему травы.

Основной подход такой:

  1. Создайте объект класса Forester и инициализируйте его.
  2. Используйте его для создания загрузчика-деревьев.
  3. Используйте grassloader для создания map-provider. Map-provider используется для подачи загрузчику-деревьев с density map.
  4. Используйте grassloader, чтобы создать один слой-травы для каждого типа травы. Каждый тип травы имеет свой собственный объект травы, который содержит настройки материала, саму текстуру травы и множество других настроек. Каждый слой также имеет свой собственный экземпляр алгоритма посадки, так что каждый тип травы можно посадить по-своему.
  5. Подстраивайте все, пока вы не будете удовлетворены тем, как он выглядит/работает.
  6. Убедитесь, что вы вызываете forester.update() для каждого кадра.

Рендеринг растительности (Базовая)

Вот некоторые основные сведения и советы о том, как сделать систему растительности более эффективной и/или лучше выглядящей. Существуют также ссылки на более углубленные jME- уроки по каждому предмету.

Альфа текстуры

Трава и листва часто используют альфа-текстуры. Альфа-текстуры частично (или полностью) прозрачны. Стандартная альфа-текстура содержит каналы RGB, но также дополнительный альфа-канал, в котором хранятся значения прозрачности.

Вот более подробный урок по работе с альфа-текстурами и прозрачностью: Hello Material

Окраска и толщина

В материалах есть что-то, называемое Additional RenderState параметрами. Их можно найти в редакторе материалов. При рендеринге травы обычно вам нужно посмотреть эти настройки:

FaceCull(отсечение граней): При использовании фиксированных quad необходимо установить значение «Выкл.». Это означает, что обе стороны quad будут отображаться. При использовании billboarded травы вы можете отсекать заднюю сторону, потому что она никогда не смотрит в камеру.

Blending mode(Режим смешивания): С травой обычно вы используете Alpha. Параметр AlphaTestFallof также должен быть задан, но то какое значение использовать сильно зависит от текстуры. Возможно, стоит попробовать несколько разных значений.

DepthWrite/DepthCheck: Оба из них обычно выбираются.

ColorWrite: Это всегда должно быть включено.

Альфа для покрытия

Alpha to coverage (AtoC) — это метод, используемый для сглаживания краев травы и.т.п. Это альтернатива регулярному альфа-смешению. В jME вы включаете его через rendermanager или renderer:

renderer.setAlphaToCoverage(true);

В тестовом проекте Forester есть пример, который показывает, как вы его включаете, и как вы используете его в Forester.

Alpha to coverage работает через мультисэмплинг, и вам нужно использовать 4xMSAA, чтобы он работал. Это довольно новая методика и может не поддерживаться на старых видеокартах. Он также реализуется по-разному разными поставщиками, и, хотя некоторые карты «технически поддерживают его, он может работать не так, как предполагалось». Это означает, что всегда рекомендуется предлагать альтернативу AtoC в ваших приложениях/играх.

Alpha to coverage


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

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

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