2011-01-19 7 views
7

Sto lavorando su un raytracer e non voglio reinventare la ruota quando si tratta di formati di file per scene 3D. Voglio anche essere in grado di testare il mio programma con scene fatte da altri. Sono un programmatore non un modellatore 3D.Esiste un formato di scena 3D specifico o adatto per il raytracing?

Esiste un formato di scena 3D specifico o adatto per il raytracing?

+1

Correlati: http://stackoverflow.com/questions/4364537/what-types-of-geometry-definition-file-format-is-best-used-with-ray-tracing-to-in –

risposta

4

Quando ho scritto il mio ray tracer, ho scritto un esportatore per Blender (è gratuito). Blender stesso può caricare dozzine di formati, quindi un semplice script python a 20 linee ti darà i punti che ti servono.

La caratteristica super bella è che all'interno di Blender è possibile convertire tutti i volti del modello in triangoli. La maggior parte dei traccianti di raggio funzionerà solo con triangoli (o convertirà i poligoni in triangoli internamente). Quindi avere Blender fare il lavoro pesante di scricchiolare quei poligoni è super bello.

Per iniziare con 20 righe di codice, è possibile esportare solo i poligoni. Da lì, puoi estenderlo a materiali di output, normali, ecc. Mi piace questo metodo, perché posso ottenere i dati desiderati nel formato che desidero, ma ho comunque la possibilità di importare modelli più complessi.

Altri metodi funzioneranno, ma prima devi capire come analizzare un file, quindi farlo nel formato che desideri. Preferirei codificare un ray traccer piuttosto che un parser.

+2

In realtà la maggior parte dei tracciatori _ray reali si adattano perfettamente ai solidi geometrici.Si tratta di software di modellazione e di renderizzatori basati su raster che in genere gestiscono solo triangoli (o quad). – Alnitak

+0

Beh, questo non è quello che ho detto nel mio commento è stato? Torna indietro e rileggi la mia risposta. Stavo parlando di esportare triangoli e di parlare di come Blender rende più semplice riducendo quad e poligoni ai triangoli. I solidi geometrici sono facilmente supportati dai tracciatori di raggi, ma non ho mai visto un tracciante a raggio singolo mantenere poligoni nel formato poligono. Invece li convertiranno in triangoli in primo luogo in quanto ciò semplifica la pipeline. I solidi geometrici non sono mai stati menzionati in questa domanda. –

+0

Hai detto che "la maggior parte dei rivelatori di raggi ** funzionerà solo con triangoli" che per la maggior parte dei lettori significherebbe esattamente questo (e quindi escludendo i solidi geometrici). – Alnitak

1

Non credo ci sia una particolare scena formato in uso, in quanto diversi modellisti richiedono parametri diversi, e le direttive di configurazione, ecc

Il WaveFront .obj format è comunque molto popolare per descrivere i singoli oggetti all'interno di un scena e molti file in quel formato sono disponibili su Internet.

+0

Bene, il Il formato WaveFront sembra essere abbastanza semplice, ma non è particolarmente adatto per il raytracing, perché è uno stile vertice e orientato al viso. Mi è venuto in mente che potevo usare il formato POV-Ray. –

+1

È vero, non è possibile descrivere un solido parametrico in formato OBJ. Tuttavia, il formato POVRay è un "linguaggio di descrizione della scena", con complicati costrutti di programmazione, ecc. È molto più che "metti questa sfera qui". – Alnitak

4

Non esiste un formato specifico per il ray tracing (a meno che non si contenga il formato PovRay). Il ray tracing è un metodo per il rendering delle immagini, che può essere applicato a qualsiasi scena. Le scene di modellazione delle persone useranno il software di modellazione di loro scelta e di solito salveranno nel formato predefinito del modellatore.

Sembra che tu non abbia alcun requisito per caricare un particolare formato (o non lo chiedi) quindi suppongo che tu voglia solo essere in grado di importare varie geometrie dalla rete per il test. Se questo è il caso, controlla il forum di ompf all'indirizzo: http://ompf.org/ Hanno una sezione con collegamenti a scene liberamente disponibili. Puoi avere un'idea di ciò che è comune lì.

Un'altra opzione è utilizzare l'Open asset Importa libreria: http://assimp.sourceforge.net/

questo può importare un gran numero di formati di file per voi. Li carica tutti in una struttura dati interna, che puoi elaborare come ritieni opportuno. Usa una licenza BSD quindi dovrebbe essere ragionevolmente compatibile con qualsiasi cosa tu stia facendo.