Animazione in OpenGL usando modelli 3D


11

Ho creato un modello in Blender. Ora voglio leggere quel modello 3D nel mio programma c ++. Ho pensato che un modello potesse essere esportato in vari formati di file, ad esempio .obj, .3ds o COLLADA e quindi essere letto in un programma c ++. Ho cercato sul web per farlo per un bel po 'e ho trovato molti tutorial. Ma ho riscontrato problemi con la maggior parte di essi. Ad esempio, nel tutorial di Nehe stanno usando glaux che non voglio usare nel mio programma. E i tutorial rimanenti usano md2 che non è supportato da Blender.

Qualcuno può guidarmi quale formato di file utilizzare per esportare il modello 3D e come caricarlo nel mio programma OpenGL? Inoltre, come posso animare quel modello? È possibile aggiungere effetti extra come la mappatura dei toni dopo che è stato caricato nel programma c ++ usando OpenGL? se si allora come?

PS Sto usando Linux per lo sviluppo del gioco

Risposte:


2

Vorrei scegliere il formato OBJ. Come probabilmente hai già capito, ci sono centinaia di caricatori OBJ per C ++ là fuori . Credo che uno dei più maturi sia Assimp , supporta molti formati diversi ed è abbastanza ben documentato. Ecco un esempio di come lo usano.


il link lighthouse.com non funziona
snape

Funziona per me in tutti i miei browser ... Prova questo link x90.es/1CC
Dan

2
Obj non ha il supporto per le mesh animate, però? basta google "Blender opengl skinned mesh" e mi aspetto che troverai un formato adatto a quello che vuoi modificare: impossibile eliminare il mio post, doveva essere una risposta a un post precedente che raccomandava il formato obj
Stowelly

1
.obj non supporta l'animazione e questa risposta è errata. stackoverflow.com/questions/757145/…
Sean Middleditch il

2

Blender 2.60 ha riparato il supporto all'animazione COLLADA, era più o meno rotto nelle versioni precedenti. Tuttavia, se non hai ancora caricato alcun formato di modello nel tuo codice, ti suggerisco di imparare a caricare prima .obj. È in ASCII, quindi è leggibile e facile da leggere senza le librerie del caricatore esterno.


1

3ds non contiene alcun dato di animazione, quindi non funzionerà. Collada di cui non so molto, ma quando ho deciso quale formato utilizzare nel mio gioco ho cercato e confrontato molto e infine sono andato con il formato B3D, supporta l'animazione scheletrica ed è caricabile da Irrlicht (contiene anche valori di illuminazione ).

Uso l'esportatore "pipeline b3d" di 3dsMax e ho codificato il mio shader hlsl per animare e illuminare le mesh, funziona davvero bene.

Puoi controllare come lo fa Irrlicht (es. Caricamento e animazione), ma fa l'animazione nel software ma ci sono esempi se cerchi un po 'su come farlo con uno shader (se lo desideri). Una cosa bella è che Irrlicht supporta sia OpenGL che Linux.

Un altro formato che è abbastanza semplice è il formato .X, ci devono essere tonnellate di esempi là fuori su come esportare, caricare, analizzare e impostare lo scheletro e animare con esso. È un formato Microsof, quindi forse non vorrai usarlo :-)

La mappatura dei toni e cose del genere non hanno assolutamente nulla a che fare con l'animazione, quindi sì, se sai come usare quella tecnica, puoi farlo con le mesh animate.

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.