Какие существуют способы рисования 3D-деревьев с помощью Java и OpenGL?

Я знаю, как рисовать основные объекты с помощью JOGL или LWJGL для подключения к OpenGL. Я бы хотел, чтобы что-то могло генерировать какую-то геометрию для деревьев, похожую на то, чем славится SpeedTree. Очевидно, я не ожидаю того же качества, что и SpeedTree.

Я хочу, чтобы деревья не выглядели повторяющимися. Скорость не вызывает беспокойства, я не ожидаю, что потребуется более 100 деревьев на экране одновременно.

есть ли бесплатные библиотеки рисования деревьев, доступные в Java? Или пример кода или демо? Есть ли что-нибудь на других языках, на которых я мог бы портировать или учиться?

9 ответов



существуют тысячи методов. Лучший вопрос определил бы "лучший" более ограниченным образом. Мы говорим "лучше", как в скорости рисования (подходит для тысяч или миллионов деревьев)? Лучше всего, как в best-looking? так далее.


2D или 3D?
В 2D, распространенным способом является использование L-систем.
Я также попробовал подход OO, определяя объекты для ствола, ветвей, листьев, расширяя абстрактный класс и реализуя интерфейс генотипа (для изменения вида деревьев).
Не уверен, что это эффективно (много объектов, созданных, особенно если я анимирую дерево), но интересно делать.


вот несколько ресурсов, которые могут быть полезны:

  • gamedev нить на тему - содержит некоторые полезные советы/предложения
  • ngPlant - инструмент поколения завода открытого источника процедурный. Он не написан на Java, но вы можете найти идеи в его алгоритмах.

Если вы используете eclipse / SWT, попробуйте нарисовать 2D.


Если вы серьезно относитесь к получению красивых, быстрых деревьев, есть коммерческая библиотека C++SpeedTree. Многие крупные игры используют его (например, GTA, Elder Scrolls).


комбинация OpenSceneGraph и SpeedTree сработала для меня.


Я знаю две библиотеки, которые позволяют использовать OpenGl с java.

LWJGL (легкая игровая библиотека Java), которая imo является лучшей из-за ее простоты и ее сходства с использованием opengl с c/C++.

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

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

edit: я думаю, я немного неправильно понял вопрос, Ну хорошо : / вы можете загрузить в 3d-модель дерева и отобразить это.


http://www.codeplex.com/LTrees имеет некоторый исходный код на этом. хотя это c++.