Maglie di alberi 3d generate


16

Non ho ancora trovato una domanda su queste righe, correggimi se sbaglio.

Gli alberi (e la fauna in generale) sono comuni nei giochi. Per la loro natura, sono un buon candidato per la generazione procedurale.

C'è SpeedTree , ovviamente, se te lo puoi permettere; per quanto posso dire, non offre la possibilità di generare le tue maglie dell'albero in fase di esecuzione. Poi c'è SnappyTree , un generatore di alberi online basato su webgl basato su proctree.js che è circa 500 righe di javascript.

Si potrebbe usare uno dei precedenti (o qualche altro generatore di alberi su cui non mi sono imbattuto) per creare in anticipo qualche dozzina di maglie di alberi - o modellarle da zero in un modellatore 3d - e quindi specularle / ridimensionarle casualmente per alcune altre varianti ..

Ma preferirei avere un generatore di maglie di alberi gratuito e collegabile.

Possibili soluzioni:

  • Porta proctree.js su c ++ e gestisci la licenza open source (non sembra essere gpl, quindi potrebbe essere fattibile; l'autore potrebbe anche essere disposto a collaborare per rendere la licenza ancora più gratuita).
  • Crea il mio basato su sistemi L.
  • Non preoccuparti, usa solo alberi generati offline.
  • Usa qualche altro metodo che non ho ancora trovato.

Aggiornamento 2015 : finito il porting di proctree.js su c ++ https://github.com/jarikomppa/proctree


5
Per farti un'idea, consiglierei il libro "La bellezza algoritmica delle piante" di Prusinkiewicz e Lindenmeyer, disponibile su algoritmicobotany.org/papers/#abop . Il libro e il sito elencano anche molti articoli di ricerca sulla generazione della botanica virtuale.
Exilyth,

Ho creato uno strumento online chiamato 3DFlora con WebGL. Ha più di 80 parametri e ti consente di scaricare i risultati come file obj. Puoi creare quasi ogni tipo di pianta con esso. Dai un'occhiata qui: 3dflora.sina-s.com
user2002741

Risposte:


12

Ho fatto un bel po 'di lavoro in quest'area, anche se la maggior parte delle mie demo sono più vecchie:

(flash 2010)
http://genesisbbs.com/appstem.html (fare clic e trascinare il mouse)
http://genesisbbs.com/appstem2.html
(directX 2006)
http://vimeo.com/5206795

Ti incoraggio vivamente a fare il tuo, se lo stai facendo per divertimento. Quasi sicuramente dovrai lavorare con i Quaternioni . Comprenderli è molto difficile, ma non è necessario andare troppo in profondità per usarli. Pensa a un quaternione come a un vettore con un componente aggiuntivo: la rotazione. Se vuoi che le tue piante si attorciglino e ruotino mentre crescono, avranno bisogno di quaternioni.

Altre cose da imparare:
Lichtenberg calcola i diagrammi di Voronoi della
crescita laplaciana

Algoritmi del vicino più vicino (google them)

Scoraggerei (personalmente) l'uso di L-Systems, oltre a dettare forse una grammatica per ciò che cresce dove, cioè [seme -> [radice] / [tronco-> ramo -> [fiore / foglia]]. I sistemi L non sono adatti per rispondere a stimoli ambientali come direzione della luce solare, gravità, ostacoli, ecc.

Per quanto riguarda i problemi di velocità, un singolo albero può essere generato in tempo reale. Per motivi di memoria e prestazioni, però, probabilmente vorrai generare un piccolo insieme di alberi e istanziarli un po 'se hai a che fare con foreste.

La maggior parte dei generatori di alberi esistenti non è così eccezionale (IMHO), oltre a quelli di fascia alta usati per Maya e simili.

Consiglio anche vivamente di utilizzare i voxel per generare l'albero (quindi, se necessario, skin con una mesh). Il vantaggio dei voxel è che puoi simulare facilmente algoritmi di crescita usando cose come la crescita laplaciana e vari automi (non il gioco della vita di Conway, ma altre regole producono risultati interessanti).


3

Personalmente probabilmente inizierei con alberi pre-generati e solo una volta che avessi un motore di rendering forestale kick-ass - completo di cespugli, erba, funghi e cose - inizierei a cercare se avessi bisogno di più maglie di alberi variabili.

Detto questo, potresti dare un'occhiata a ngPlant . Include un'app di modellistica ad albero procedurale GPL, ma le librerie che fanno tutto il lavoro pesante hanno la licenza BSD. È scritto in C ++.

Per il rendering della foresta, esiste un motore di rendering per geometria pagata (con licenza MIT) per Ogre .


3

Il problema principale con gli alberi procedurali non li sta generando, ma li rende tutti i frame in fase di esecuzione. Questo è il motivo per cui vedrai molti alberi identici nei giochi AAA, non è che non potrebbero implementare o scrivere la tecnologia che ha creato alberi unici, è che significherebbe che dovresti tagliare un sacco di altre funzionalità per il gioco correre.

Se hai molti alberi identici, puoi ruotarli e possibilmente ridimensionarli in modo uniforme per farli apparire diversi da ogni angolo, e poiché sono identici puoi istanziarli per risparmiare millisecondi preziosi per ogni fotogramma.

Solo pensando a questo problema per un secondo, potrebbe esserci un mezzo felice - che ne dici di generare alcune parti di alberi, tronchi, rami, foglie ecc. Diversi ma che si incastrano tutti in modi modulari, come l'albero di lego. Quindi potresti avere molte combinazioni e quindi alcuni alberi piuttosto unici, ma potresti anche istanziare tutte le molte parti per un gioco più veloce.


A parte l'idea a tratti, questa risposta non aggiunge davvero nulla di nuovo.
Jari Komppa,

3
sempre bello quando l'OP è così apprezzabile. Per un sito QandA il tuo post presenta una netta mancanza di domande. Oltre a questa risposta indirizza direttamente i tuoi punti elenco.
SirYakalot,

Sì, ci sono stato anch'io, mi scuso.
Jari Komppa,

1

Mi sono imbattuto in un albero [d] qualche tempo fa ... L'ho usato solo per un breve periodo di tempo per testare un progetto, ma solo perché ho interrotto lo sviluppo - lo strumento offre una vasta gamma di opzioni di generatore con cui giocare e , da quello che ricordo, è abbastanza veloce. Un link è sotto.

Il rovescio della medaglia è che non è un generatore di alberi che è possibile incorporare. Dovresti pre-generare alcuni alberi e quindi modificare i dati quando li metti in fase di esecuzione per modificarne l'unicità.

La cosa migliore è che TreeD è gratuito e puoi includere gli alberi che crei nei tuoi progetti, commerciali o gratuiti, purché non siano pacchetti di modelli, pacchetti di trame, generatori di modelli 3D o generatori di trame.


Bello vedere altri generatori gratuiti, anche se è in formato libreria.
Jari Komppa,

1

Questa è una piccola soluzione ordinata, e l'ho usata in un progetto e posso dirti che è abbastanza veloce da generare alberi al volo perché il gioco è in esecuzione. Non è certamente dettagliato, ma se ti sbarazzi dei cartelloni pubblicitari potrebbe essere abbastanza pulito.

http://ltrees.codeplex.com/


Sembra una buona soluzione per gli utenti XNA.
Jari Komppa il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.