|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2009
Messaggi: 366
|
[OpenGL] inserimento avatar all' interno di un gioco 3D
salve ragazzi sto realizzando un gioco in openGL e come da titolo vorrei inserire degli avatar(animaletti,personaggi dei cartoni all'interno del gioco)
o fatto una googlata ma ho trovato poca roba avete qualche consiglio,tutorial dal quale posso partire grazie
__________________
visitate http://www.forumsenzacontro.altervista.org |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La questione in sè è piuttosto semplice: crei gli elementi con un modellatore (tipo Blender) e li salvi.
Il salvataggio produce una rappresentazione di quei modelli secondo un certo formato. A te non resta che leggere i dati salvati ed interpretarli in modo da poterli rappresentare nel tuo gioco. Se per il gioco usi opengl l'interpretazione sarà la traduzione dei dati del modello, secondo il formato in cui è stato salvato, in una successione di invocazioni opengl che riproducano quel modello. Ad esempio se crei un cubo e lo salvi in formato Wavefront.obj quel che devi tradurre è un file che contiene questi dati: Codice:
# Blender3D v249 OBJ File: # www.blender3d.org v 1.000000 1.000000 -1.000000 v 1.000000 -1.000000 -1.000000 v -1.000000 -1.000000 -1.000000 v -1.000000 1.000000 -1.000000 v 1.000000 0.999999 1.000000 v 0.999999 -1.000001 1.000000 v -1.000000 -1.000000 1.000000 v -1.000000 1.000000 1.000000 vn 0.000000 0.000000 -1.000000 vn 0.000000 -0.000000 1.000000 vn 1.000000 -0.000000 0.000000 vn -0.000000 -1.000000 -0.000000 vn -1.000000 0.000000 -0.000000 vn 0.000000 1.000000 0.000000 f 1//1 2//1 3//1 4//1 f 5//2 8//2 7//2 6//2 f 1//3 5//3 6//3 2//3 f 2//4 6//4 7//4 3//4 f 3//5 7//5 8//5 4//5 f 5//6 1//6 4//6 8//6 I dati dicono che ogni v è un vertice, che ogni vn è un normale, che ogni "f" è una faccia. Vertici e normali sono tuple di 3 valori, a cui è associato un indice progressivo corrispondente all'ordine in cui appaiono nel file. Le facce usano queligli indici (vertice/texture/normale) per creare un poligono . Significa che la prima faccia è fatta dai vertici di indici (1, 2, 3, 4), la seconda dai vertici (5, 8, 7, 6), la terza dai vertici (1, 5, 6, 2) eccetera. Se trovi il modo per disegnare in opengl un quadrilatero usando quattro vertici hai anche il modo di riprodurre ciò che quel file rappresenta. Tutto qua.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: May 2009
Messaggi: 366
|
Quote:
e adesso lo voglio disegnare all' interno del gioco come faccio?
__________________
visitate http://www.forumsenzacontro.altervista.org |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Be', qui la trama si infittisce.
Nel caso più semplice avrai un file che anzichè contenere la definizione di un solo elemento contiene una lista di definizioni. E qui direi che non ci sia alcun problema. Diventa un pelo più complicato quando gli elementi sono organizzati in gruppi di rendering o di trasformazione o entrambi. Qui il file ti dirà che un certo elemento, fatto di un certo insieme di triangoli, occupa una posizione, definita attraverso dei valori che indicano rotazione, spostamento e ingrandimento di quell'elemento rispetto ad un qualche sistema di coordinate (di solito quello del nodo superiore, cioè locale). Tu che fai? Semplicemente ti carichi i dati e prima di disegnarli usi quelle istruzioni di opengl che ti permettono di manipolare lo spazio di coordinate e dopo averli disegnati ripristini lo stato dello stesso spazio a ciò che era prima della trasformazione. Naturalmente non è necessario occuparsi di questi dettagli se usi una delle tante librerie di rendering che usano opengl (ogre, panda, c'è tutto un bestiario). A meno che non siano proprio i dettagli ad interessarti.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: May 2009
Messaggi: 366
|
Quote:
devo tentare il caricamento con le librerie che mi hai elencato? ho dato un'okkiata in giro e dicono di caricare in modelli con estensione .3ds che differenza ce Grazie
__________________
visitate http://www.forumsenzacontro.altervista.org Ultima modifica di bobby1112 : 07-06-2010 alle 15:33. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Nel formato obj se "f" ha quattro valori è un quadrilatero, se ne ha 3 è un triangolo.
Usare il formato 3ds non cambia la situazione di una virgola: devi sempre tradurlo a mano. Per quanto riguarda le librerie citate se vuoi usarle devi prendere il tuo programma, chiuderlo e riscriverlo usando gli strumenti di quelle librerie. In questo caso il caricamento del modello si risolverebbe "semplicemente" nell'invocazione di una funzione tra i cui argomenti troveremmo il file che definisce il modello. Si tratta comunque di un approccio diverso: non le usi accanto al tuo programma, devi proprio scrivere il tuo programma in un modo diverso. Se ti interessa più il gioco che il dettagliume opengl direi che ti converrebbe usarle. Prova a dargli un'occhiata, ad esempio: http://www.panda3d.org/ ci sono manuali, tutorial, documentazione, tutto quanto.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2009
Messaggi: 366
|
ciao sono riuscito a caricare i modelli attraverso i file .obj adesso vorrei farti una domanda per incollare le texture su questi modelli devo farlo sempre attraverso blender?
ho scaricato dei modelli con estendione .3ds (compresi di texture) dalla rete ,li importo in blender ma poi quando vado ad esportarli in .obj non trovo nessuna informazione per quanto riguarda la texture.
__________________
visitate http://www.forumsenzacontro.altervista.org |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Ci sono delle opzioni nell'esportare obj di blender che determinano le informazioni contenute nel file esportato.
Nota che i materiali in obj sono scritti in un file a parte (estensione mtl) e il file obj poi contiene un riferimento al materiale. Quindi se vuoi leggere un file obj che contiene un modello con texture dovrai leggere e tradurre sia il file obj che il file mtl.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
No, per la texture non "serve" caricarla dal modello, infatti per mostrarla basta fare il "bind" di una qualsiasi texture caricata da memoria prima di disegnare il modello;
l'unica informazione che deve fornire il modello sono le UV, cioè le coordinate della texture relative ad ogni vertice. Certo, "serve" è tra virgolette perchè, generalmente ogni modello ha la sua texture, e potrebbe essere interessante caricarla quando carichi il file... ma come già detto, questo a OpenGL non interessa |
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: May 2009
Messaggi: 366
|
Quote:
__________________
visitate http://www.forumsenzacontro.altervista.org |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:30.



















