2010-01-16 12 views
10

Fare il mio clone di asteroidi (in C) Mi sono piuttosto innamorato di entità basate su vettori, ma li ho semplicemente codificati come array di x, y-point. Va bene per qualcosa come Asteroids, ma cosa dovrei fare se volevo realizzare modelli 2D più complessi?Modellazione vettoriale 2D per lo sviluppo del gioco

Ho notato che ci sono an awful lot of 3D modelling software là fuori, così come ampie esercitazioni e aiuto nell'importazione di modelli 3D nel proprio programma C/C++ per l'uso con Open GL.

Tuttavia, sono piuttosto più interessato a creare modelli basati su vettori 2D che 3D, dato che sono felice di continuare a provare i giochi 2D ancora per un po '. Esiste un concetto come la modellazione 2D? Esistono strumenti per la creazione e l'esportazione di modelli e librerie 2D per l'importazione di modelli 2D in particolare, oppure si creano semplicemente modelli piatti nel software 3D e quindi si importano quei file (ad esempio .3ds, .ms3d) e li si appiattiscono sull'asse z?

Il mio unico pensiero fino ad ora era forse usare qualcosa come Inkscape per la modellazione, generare file SVG e quindi usare Cairo per importarli e renderli. Funzionerà bene o hai altre raccomandazioni?

Nota Sono un po 'di un novizio di modellazione di qualsiasi tipo, così mi può chiedere una domanda stupida ...

risposta

6

Per quanto riguarda la programmazione di videogiochi 2D vettore va, di solito è il dominio di Flash e Flex.

Still SVG e caricarlo via Cairo sembra essere una soluzione praticabile. Anche se mi piacerebbe avere la certezza di avere l'accelerazione hardware abilitata (backend OpenGL preferibilmente).

Per quanto riguarda i formati 2D, non si otterrà il miglior supporto di SVG per qualsiasi formato, quindi mi ci riprometterei. Tecnicamente cose come Collada o X3D supportano la grafica 2D, ma praticamente hanno un sacco di inutili (per un programmatore 2D) gonfie.

+0

+1 per flash e flex –

3

SVG è la strada da percorrere per il 2D :)

Se la velocità di disegno è un problema, dovrete stare attenti a come complicato ottenere i file anche se - e si noti che SVG non è ottimizzato per la velocità di analizzare, in modo da poter incorrere in una significativa penalità di avvio durante il caricamento dei modelli.

+0

+1: il tempo di avvio non è un problema di questo tipo, più importante è mantenere il formato nel programma in modo da consentire un rendering hardware veloce. –

7

Non c'è bisogno di cambiare la mia risposta, ma ho fatto un po 'più di ricerche sull'uso di SVG. Poiché sto usando OpenGL, sembra che OpenVG potrebbe essere una buona partita.

  • AmanithVG - un'implementazione commerciale di OpenVG basata su OpenGL, con rendering sia software che hardware. Scarica disponibile solo per valutazione e funziona magnificamente, anche se non so quanto costa.
  • ShivaVG - l'autore era infastidito dal fatto che AmanithVG fosse commerciale, quindi ha fatto la sua implementazione opensource in puro ANSI C. Non è stato aggiornato per un po 'di tempo. At SourceForge.
  • Anti-Grain Geometry - non sono sicuro di questo. Penso che ci sia il supporto per SVG, ma penso solo al rendering del software.
  • librsvg - utilizza Cairo come back-end primario per il rendering di SVG. Sembra buono.

Sembra che tutti tranne librsvg fermano poco effettivamente permettere formato SVG da caricare, in modo presumibilmente ci deve essere un altro passaggio in cui SVG vengono analizzati in apposite strutture OpenVG (che sembrano principalmente ad essere grandi array galleggiante, quindi non troppo difficile). Allo stesso modo sembra che ci sia una mappatura uno-a-uno di elementi da SVG a OpenVG, che è promettente. Per quanto posso dire, OpenVG è stato creato per SVG.

Probabilmente userò ShivaVG. Forse non è perfetto, ma attira la tigre e adoro una pura implementazione C/OpenGL, e dubito seriamente che farò ancora qualcosa di così complesso.

+0

Bene, la tua domanda iniziale era troppo ampia. Per il bit OpenGL, consultare: http://stackoverflow.com/a/25162290/3588161 – Fizz

Problemi correlati