civic71 ha scritto:Serve per convertire una mesh in un primitivo ?
No, serve solo a dire quali tipi di primitiva ci sono nella mesh (point, line, triangle, polygon)
Essendo abbastanza inutile l'ho tolto dalla lista, al massimo lo rimetterò più avanti.
Per la modifica della mesh ci sono i bellissimi post process al momento dell'importazione.
Ad esempio nello script all in one (e nella versione semplificata di LoadScene che ha gli stessi all'interno della dll) uso:
GMA_PP_CALC_TANGENT_SPACE //calcola le tangenti (necessarie per il bump mapping)
GMA_PP_TRIANGULATE //triangolizza la mesh, ofni faccia sarà un triangolo quindi ricavare una trianglelist sarà semplicissimo
GMA_PP_JOIN_IDENTICAL_VERTICES //semplice ottimizzazione che fonde i vertici uguali, non molto utile con game maker
GMA_PP_GEN_SMOOTH_NORMALS //se il modello non ha normali le genera (smoothate, cè anche la versione non smooth ovviamente)
GMA_PP_CONVERT_TO_LEFT_HANDED //in genere si usa un sistema di coordinate right handed mentre directx (e quindi GM) usa left handed, ecco perchè spesso importando modelli con importer fatti in casa tipo obj cè sempre il problema di specchiamento della mesh e delle UV. Questo post process risolve automaticamente tutti questi problemi
Ovviamente il left handed non è limitato alle mesh ma anche a nodi ed altro quindi è molto utile ed importante (diciamo pure indispensabile, fa quello che dovremmo comunque fare a mano)
Questo post process a dire il vero è la combinazione di altri post process, ovviamente gestibili anche separatamente.
Ma ce ne sono molti altri
http://assimp.sourceforge.net/lib_html/ ... be4f52e410
I post process hanno una corrispondenza 1:1 con assimp e pertanto si usano allo stesso modo ossia con le bitmask per combinarli:
Codice: Seleziona tutto
scene_id = GMA_LoadSceneExt(argument0,
GMA_PP_CALC_TANGENT_SPACE |
GMA_PP_TRIANGULATE |
GMA_PP_JOIN_IDENTICAL_VERTICES |
GMA_PP_GEN_SMOOTH_NORMALS |
GMA_PP_CONVERT_TO_LEFT_HANDED);
Usando l'operatore booleano or | posso combinare i vari post process.
Nella gex sono delle costanti.
Essendo una dll ovviamente funzionerà anche con GM5 ma bisogna tramutare tutto in script.
Non è difficile ma è un lavoro un po lungo e noioso (come lo è già fare la gex)
Certo, usando GM5 cè il problema di avere un 3d limitatissimo persino più di GM8.1 quindi molte cose come il bump mapping non sono possibili... Le animazioni invece credo proprio che si possano fare
(via software)
Sinceramente non c'ho voglia di fare la versione script perchè la gex dovrebbe funzionare da 8.0 in su se non addirittura dalla versione 7 e probabilmente te sei l'unico al mondo ancora rimasto indietro (causa suppongo lo scarso uso) ma se sarai disposto a sacrificarti per fare questo lavoro di sicuro non te lo negherò.
Ora sto pensando all'importazione delle animazioni, chiaramente le animazioni vengono importate ed i pesi pure ma tutta la matematica che sta dietro alle animazioni per vederle in atto è roba lunga e per niente facile.
Farò una libreria matematica che integrerò su lizard_api (nonchè ovviamente lizard_api) e tramite quella si potranno finalmente visualizzare ma fino ad allora nada a meno che non lo facciate voi (non ci crederò mai
)
Ricordo inoltre che questa dll serve ad importare i modelli da svariati formati con tutte le informazioni possibili, tutto ciò che ne deriva, come "l'uso" delle animazioni importate, è una roba a parte. E' pensata sopratutto per conversioni a vostri formati proprietari senza preoccuparvi troppo del formato e programma di modellazione che state usando.
EDIT:
Grazie a civic ho notato
aiProcess_JoinIdenticalVertices : blablabla... If this flag is not specified, no vertices are referenced by more than one face and no index buffer is required for rendering.
Quindi senza usarla mi risparmierei tutta la lettura delle facce nel superscript.
Bella roba che velocizzerà (di praticamente niente) il caricamento