Як процедурно (створити) виростити художнє (2D) дерево в режимі реального часу (L-System?)


20

Нещодавно я запрограмував модуль L-системи , і це мене ще більше зацікавило. Я також наркоман Plants vs Zombies, дуже сподобалась концепція Дерева Мудрості. Хочеться створити подібне процедурне мистецтво просто для розваги та дізнатися більше.

Питання: Як я повинен динамічно підходити до процесу створення художнього дерева (2d, можливо, з фіксованою камерою / перспективою)?

В ідеалі я хотів би почати з рослини (лише стебло з листом) і динамічно вирощувати його, використовуючи деякий вплив (введення / дії користувача) на його структуру. Ці впливи можуть спричинити різний тип розгалуження, вигини у гілках, його поширення, розташування плодів, колір квітів тощо. Хочете, щоб це було справді повно життя / духу. :)

Рослини проти зомбі: Дерево мудрості Було б чудово динамічно вирощувати подібне дерево, але з набагато більшою кількістю варіацій та анімацій.

Моє передумови: Програміст, використовував декілька ігрових двигунів (Ogre3d, cocos2d, юнит). Насправді не запрограмований безпосередньо за допомогою OpenGL, намагаючись це виправити :).

Я готовий витратити чималий час, повідомте, будь ласка, про API? і як би такий експерт, як ви, поставився до цієї проблеми?

Чому 2D? Я думаю, що простіше вирішити проблему, лише враховуючи 2 виміри.

Художнє натхнення:

Тільки дерево, з плодами та листям, без кущів на дні

Велике дерево (видимі гілки, зелене листя, квіти, фрукти і т.д.) , на лівій стороні , позаду мавпи.

Едем PixelJunk (натхнення в стилі мистецтва).

Процедурно вироблене яблуневе дерево з використанням фракталів

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

Я сподіваюся, що обговорення різних підходів буде корисним для всіх. Ви, хлопці, приголомшливі.


2
У мене, можливо, немає відповіді за вас, але я точно хотів би побачити, куди це йде. Дивовижна концепція!
Bloodyaugust

Чудове запитання, я деякий час цікавився L-Systems, але нічого не робив із цим інтересом :)
Лютер

Ще одне референтне мистецтво. jinsonathemes.com/demo3/wp-content/uploads/2011/02/…
lal

1
@Stephen тільки так ви знаєте , це питання з 2011 року і отримав necro'd до початку користувачем задає питання редагування з Student/зStudent/Programmer
PeterT

@lalan Будь ласка, вносіть лише зміни, які є суттєвими для питання, те, що ви вже не студент, не є істотною зміною чи причиною для редагування.
MichaelHouse

Відповіді:



8

Деякі ідеї для вашої "гри":

  • Спочатку запропонуйте користувачеві ім'я для свого дерева. Використовуйте це ім'я для створення насіння для алгоритму. Тож у кожної назви буде унікальне дерево. Насіння також може впливати на тип листя та плоди дерева.
  • Ви можете реалізувати якусь "деревну тамагочі ", коли дерево росте більшим і приємнішим, чим більше користувач піклується про нього (удобрювати, поливати тощо)
  • Створіть список рейтингів найвищих дерев. Іншою ідеєю було б показати висоти та імена інших користувачів поруч із вашим деревом. Таким чином, ви можете порівняти висоту дерева безпосередньо з іншими користувачами. Дивіться це відео як приклад. Хмари вказують висоту, яку досягли інші користувачі.

Існує багато алгоритмів і паперів для генерації процедурних дерев ( ця тема може бути цікавою ). Складне завдання - красиво змішати гілки. 2D, безумовно, буде простішим у цьому плані, оскільки ви можете вирішити це за допомогою альфа-змішування.

Оскільки у вас є досвід роботи з Ogre3D, Unitiy та cocos2d, ви можете піти вперед і реалізувати цю річ (не потрібно починати вивчати OpenGL зараз IMHO). Особисто я б вибрав cocos2d і випустив для iPad та / або iPhone, щоб кожен міг переносити своє дерево навколо свого мобільного пристрою.


1
Я б у цій грі просто грав з L-Systems соціально / конкурентоспроможно.
deft_code

1
Дякую, що вказали мені на тему gamedev .. Приємні ідеї, тамагочі та goo-tower .. мобільний додаток був би дуже класним. знайшли відео з плагіном 3DS Max - це досить приголомшливе посилання ..
lal

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