Створені 3d деревні сітки


16

Я ще не знайшов запитання в цих рядках, виправте мене, якщо я помиляюся.

Дерева (і фауна взагалі) поширені в іграх. Завдяки своїй природі вони є хорошим кандидатом у процедурні генерації.

Звичайно, є SpeedTree , якщо ви можете собі це дозволити; Наскільки я можу сказати, це не забезпечує можливості генерування ваших деревних сіток під час виконання. Тоді є SnappyTree , онлайн-генератор дерев на основі webgl на базі proctree.js, який становить приблизно 500 рядків JavaScript.

Можна було б скористатися будь-яким із вищезгаданих (або якийсь інший генератор дерев, на який я не натрапив), щоб заздалегідь створити кілька десятків деревних сіток - або моделювати їх з нуля в 3d-модельєрі - а потім випадковим чином дзеркально / масштабувати їх для ще кількох варіантів ..

Але я вважаю за краще мати вільний, пов'язаний генератор деревних сіток.

Можливі рішення:

  • Порт proctree.js на c ++ і мати справу з ліцензією з відкритим кодом (не здається, що це gpl, тому це може бути здійснено; автор також може бути готовим співпрацювати, щоб зробити ліцензію ще більш вільною).
  • Згорніть свою власну базуючись на L-системах.
  • Не турбуйтеся, просто використовуйте генеровані в автономному режимі дерева.
  • Скористайтеся іншим методом, якого я ще не знайшов.

Оновлення 2015 року : закінчилося перенесення proctree.js на c ++ https://github.com/jarikomppa/proctree


5
Для прокатки свій власний, я б рекомендував книгу «алгоритмічна красу рослин» по Prusinkiewicz і Lindenmeyer, яка доступна на algorithmicbotany.org/papers/#abop . У книзі та на сайті також перелічено чимало науково-дослідних робіт щодо покоління віртуальної ботаніки.
Вихід

Я створив онлайн-інструмент під назвою 3DFlora з WebGL. У ньому більше 80 параметрів, і ви можете завантажувати результати у вигляді obj-файлу. За допомогою нього можна створити майже будь-які рослини. Ознайомтесь тут: 3dflora.sina-s.com
користувач2002741

Відповіді:


12

Я проробив неабияку роботу в цій галузі, хоча більшість моїх демонстрацій старші:

(спалах 2010)
http://genesisbbs.com/appstem.html (клацання та перетягування миші)
http://genesisbbs.com/appstem2.html
(directX 2006)
http://vimeo.com/5206795

Я настійно закликаю вас зробити свій власний, якщо ви робите це для розваги. Вам майже напевно знадобиться працювати з Кватерніонами . Розуміти їх дуже важко, але для їх використання не потрібно надто глибоко розуміти. Подумайте про кватерніон як про вектор із додатковим компонентом: обертання. Якщо ви хочете, щоб ваші рослини крутилися і оберталися по мірі зростання, їм знадобляться кватерніони.

Інші речі, які слід дізнатись:
Ліхтенберг Фігури
Лаплаціанського Зростання
Вороного Діаграми
Найближчі сусідні алгоритми (google їм)

Я (особисто) заперечував би використання L-систем, крім того, щоб, мабуть, диктувати граматику того, що росте де, тобто [насіння -> [корінь] / [стовбур-> гілка -> [квітка / листя]]. Системи L не підходять для реагування на стимули навколишнього середовища, такі як напрямок сонячного світла, сила тяжіння, перешкоди тощо.

Що стосується швидкості, то в режимі реального часу може формуватися одне дерево. З метою пам’яті та продуктивності, ви, ймовірно, захочете генерувати невеликий набір дерев і трохи інстанціонувати їх, якщо ви маєте справу з лісами.

Більшість існуючих генераторів дерев не такі великі (ІМХО), окрім найвищого класу, які використовуються для майя тощо.

Я також дуже настійно рекомендую використовувати вокселі для генерування дерева (тоді шкіра з сіткою, якщо потрібно). Перевага вокселів полягає в тому, що ви можете легко імітувати алгоритми росту, використовуючи такі речі, як ріст Лапласіана і різні автомати (не гра в життя Конвей, але інші правила дають цікаві результати).


3

Особисто я б, мабуть, почав із попередньо сформованих дерев, і лише одного разу я мав би двигун відбивання лісу - разом із кущами, травою, грибами та іншим - я б почав шукати, якщо мені потрібні більше мінливі ялинки.

Якщо говорити, ви можете поглянути на ngPlant . Вона включає в себе додаток для моделювання дерев GPL-процедур, але бібліотеки, які виконують усі важкі підйоми, мають ліцензію BSD. Це написано на C ++.

Для візуалізації лісу існує (з ліцензією MIT) поетапна геометрія для системи відтворення Ogre .


3

Основна проблема процедурних дерев - це не їх генерування, а надання їх усім кадрам під час виконання. Це причина, що ви побачите багато однакових дерев в іграх AAA, це не те, що вони не змогли реалізувати чи написати техніку, яка створила унікальні дерева, це те, що це означає, що вам доведеться вирізати безліч інших функцій для гри бігти.

Якщо у вас є багато однакових дерев, ви можете їх обертати і, можливо, масштабувати їх рівномірно, щоб вони виглядали різними під будь-яким кутом, а оскільки вони однакові, ви можете встановити їх, щоб зберегти дорогоцінні мілісекунди кожен кадр.

Поміркувавши над цією проблемою на секунду, може виникнути щасливе середовище - як щодо того, щоб ви генерували кілька різних частин дерева, стовбурів, гілок, листя тощо. Але ті, які всі поєднуються модульно, як, наприклад, дерево лего. Тоді ви могли б отримати безліч комбінацій і так декілька досить унікальних дерев, але ви також можете застосувати всі безлічі деталей для швидшого запуску гри.


Окрім кускової ідеї, ця відповідь насправді не додає нічого нового.
Jari Komppa

3
завжди приємно, коли ОП настільки вдячний. Для сайту QandA у вашої публікації є чітка відсутність питань. Окрім цього, відповідь безпосередньо стосується ваших пунктів кулі.
СерЯкалот

Так, вибачтесь там.
Jari Komppa

1

Я наткнувся на дерево [d] деякий час тому ... Я використовував його лише невелику кількість часу для тестування проекту, але це було лише тому, що я зупинив розробку - інструмент дає вам широкий спектр варіантів генератора, щоб грати і , з того, що я пам’ятаю, досить швидко. Посилання нижче.

Мінусом є те, що це не деревогенератор, який ви можете включити. Вам доведеться заздалегідь створити кілька дерев, а потім змінити дані, розміщуючи їх під час виконання, щоб змінити їх унікальність.

Найкраще TreeD є безкоштовним у використанні, і ви можете включати дерева, які ви створюєте, у своїх власних проектах, комерційних або безкоштовних, якщо вони не є модельними пакетами, пакетами текстур, генераторами 3D моделей або генераторами текстур.


Приємно бачити інших безкоштовних генераторів, навіть якщо це у форматі бібліотеки.
Jari Komppa

1

Це маленьке акуратне рішення, і я використовував це в проекті, і я можу вам сказати, що це досить швидко, щоб ген дерева були на льоту, чому гра працює. Це, звичайно, не детально, але якщо ви позбудетеся білбордів, це може бути досить акуратно.

http://ltrees.codeplex.com/


Здається, хорошим рішенням для користувачів XNA.
Jari Komppa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.