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

Лесник(Forester)

Опубликованно: 27.06.2017, 14:20
Последняя редакция, Andry: 04.07.2017 13:13

Это страница вики Лесника(Forester) системы загрузки травы/деревьев. Она содержит информацию о том, как добавить растительность в сцену и как ею управлять. Трава и деревья обрабатываются по-разному, но подходы очень похожим образом.

Темы отмечены как (Базовая) или (Расширенная). Расширенные темы могут быть пропущены.

Библиотека может быть найдена в репозитории Github jMonkeyEngine Contributions.

The Forester (Базовая)

Класс Forester является корневым классом этой библиотеки. Вы можете использовать его для создания grass/treeloaders и еще некоторых вещей. Он также управляет случайными таблицами чисел и несколькими другими вещами.

Это одноэлементный класс, поэтому его можно использовать в любом месте для легкого доступа к данным Forester.

Трава

Перейдите к разделу травы: Трава(Grass)

Деревья

Перейдите к разделу деревьев: Деревья(Trees)

Настройка движка paging (Расширенная)

Все tree/grassloader используют движок paging для загрузки/выгрузки данных. Есть некоторые вещи, которые вы можете сделать, влияющие влияет на производительность и эффективность использования памяти как для деревьев так и для травы.

Управление кэшем

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

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

Нет смысла отключать его, если, вы используете чрезвычайно мелкие плитки. Но вы можете изменить таймер кеширования. Время по умолчанию 2 секунды (фактически 2000 мс, значение в мс). Через 2 секунды плитки удаляются из кеша.

Чтобы изменить значение, сделайте следующее:

grassLoader.getPagingManager().setCacheTime(6000);

Это увеличит время кэширования до 6 секунд.

Изменение размера и разрешения плитки

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

Тем не менее, создание нескольких больших геометрии гораздо эффективнее при рендеренге. Вот как работают GPU; Они скорее берут несколько больших блоков данных, чем много маленьких. Это также приводит к меньшему количеству объектов в Java, меньше накладных расходов и.т.д.

Имея множество геометрий, с другой стороны, в среднем получается большее отсечений геометрий. Если вы используете один мега-блок из 512×512 квадратных единиц, вам придется рендерить весь блок, даже если вы можете увидеть только небольшую его часть. Кроме того, когда массивные блоки вставляются в очередь рендеринга и выходят из нее, вы можете заметно увеличить/уменьшить частоту кадров.

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

Это в общем то нехорошо, использовать гигантские геометрии или крошечные — но больше лучше, чем меньше.

Еще не все.


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

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

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