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

Система деревьев

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

Здесь вы узнаете, как использовать систему деревьев.

SimpleTreeTest.java

В демо-проектах есть файле с название SimpleTreeTest.java. В нем есть метод setupForester(), где вы можете увидеть, как настроена система деревьев. Так же если вы этого еще этого не сделали, вам может понадобиться проверить файл SimpleGrassTest.java, поскольку он содержит гораздо больше информации о некоторых других важных вещах, касающихся библиотеки forester.

Основная процедура такова:

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

PhysicsTest.java

В демо-проекте под названием PhysicsTest.java есть еще один файл. В этом файле вы можете увидеть, как фигуры-столкновений добавляются к деревьям.

Когда вы создаете слой-деревьев через treeLoader.createTreeLayer(Spatial spat, boolean usePhysics), вы предоставляете модель и логическое значение которое решает нужно или нет использовать физику. Если вы хотите включить физику столкновений, посмотрите в этом файле, как это делается.

Существуют некоторые общие принципы:

  1. Чтобы использовать физику столкновений, вам сначала нужно создать physics space. В разделе уроков в jME wiki есть урок на эту тему: Hello Physics.
  2. Если вы хотите включить физику в леснике, вам необходимо предоставить physics space объекту класса Forester. Как это делать показано в файле PhysicsTest.java.
  3. Как только это будет сделано, далее вам необходимо предоставить фигуру столкновения вашу модель. Это можно сделать несколькими способами. Вы можете сделать это через jMP scene composer или программно.

Когда модель передается в слой-деревьев, а физика включена, модель будет проверяться на наличие столкновений фигур. Затем форма удаляется из модели и добавляется к древовидному слою.

Причиной для этого является то, что деревья объединяются в процесс, называемый батчинг геометрии(geometry-batching). Он обычно используется для уменьшения количества вызовов рисованныия для групп объектов, которые очень похожи.

На практике это означает, что ваша модель не просто дублируется и распространяется по всей сцене, они фактически выпекаются вместе в одну сетку (за «блок»). Этот процесс также используется для фигур столкновений. Все они объединены в одну большую фигуру столкновения, а затем добавляются к этому вновь созданному скоплению вершин. Обычно!

Короче говоря — есть несколько случаев, когда система физики столкновения может выйти из строя:

  • Если вы не предоставите physics space объекту класса Forester, физика не будет включена.
  • Если вы не установите значение true для включения физики при создании слоя-деревьев.
  • Если вы не предоставите сетку столкновения модели.

Система данных деревьев (Базовая)

Основы

В основе размещения деревьев лежит класс TreeData. Он содержит пять float значений, представляющих дерево — х, у, z — координаты, поворот, масштаб. Это означает, что слой-деревьев просто должен содержать одну копию модели, а не многие экземпляры, которые отличаются только преобразованиями.

Данные дерева хранятся в TreeDataLists, которые в основном являются arraylists.

Использование данных дерева

В SimpleTreeTest.java приведен пример того, как настроить treeloader для использования density map для генерации данных деревьев через data-provider MapGrid. Вам не нужно беспокоиться об этом, если вы используете density map.

Там будет информация о том, как использовать альтернативный data-provider DataGrid.


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

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

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