Visto che spessissimo con game maker si hanno problemi ad importare i file ho pensato di risolvere definitivamente il problema con una bella dll che risolverà tutti i vostri problemi una volta per tutte sfruttando la libreria
assimp
Basta guardare
questo link per capire che ciò risolverà praticamente ogni problema nonchè permetterà di importare svariati tipi di informazioni come la pesatura dei vertici e le tangenti, o ancor meglio i vari elementi della scena quindi oltre alle mesh anche materiali, luci ecc
Questa dll che farò, non limitandosi al solo d3d, vi permetterà anche di fare formati proprietari ed altro per eventuali altre dll grafiche che supportano più roba o ancora meglio accompagnata agli shaders su GM Studio.
Ovviamente questa dll è pensata più che altro per una conversione offline, anche se baderò alle prestazioni il modo in cui è strutturato game maker non permette di essere sfruttato al meglio per leggere grandi quantità di informazioni tuttavia sarà utilissima per fare un bel converter.
Features:
-importazione di tutti gli elementi della scena per svariati formati 3d: mesh, materiali, textures, luci, camere, ecc.
-attualmente in versione gex.
-fungerà con tutte le versioni di game maker che supportano le dll quindi civic sarà contento, devo ancora fare la versione script preferendo dedicarmi prima al supporto gex.
-supporto alle animazioni di tutta la scena, dai singoli modelli a veri e propri filmati. (limitato all'importazione delle informazioni, il motore di animazioni sarà sviluppato a parte)
-supporto a tutto ciò che assimp permette di fare.
Stato attuale:
Perfetta importazione di tutta la scena, ossa comprese.
Mancanti:
-Aggiungere alcune funzionalità dell'importer
Stato attuale download:
Ha tutte le funzioni sufficienti per essere utilizzata nonchè una funzione che importa automaticamente un modello e allo stesso tempo fa da esempio d'uso.
Le features attuali sono più che sufficienti per un progetto con gm8.1, con gmstudio ovviamente si hanno più possibilità tramite gli shaders e quindi sarà molto utile per chi vuole usare effetti particolari come bump mapping ed animazioni scheletriche.
DOWNLOAD V1.0.0:
Google Drive
MEGA
Come usare le varie funzioni:
Prima o poi farò una documentazione decente, per ora accontentatevi della funzione "faccio tutto io" ossia CreateModelFromFile(filename). Se volete provare a fare qualcosa di più vi basterà guardare il codice della funzione per capire come si usa, i nomi sono abbastanza semplici ed intuitivi ma tanto so che nessuno si metterà a fare qualcosa in più per ora.
Come usare gli esempi:
Spoiler
Il file zip è composto da:
-Cartella "Data": questa contiene dei modelli di esempio.
-GMAssimp.gm8.1: esempio per gm8.1, vi basterà installare la gex ed avviarlo per funzionare.
-GMAssimp.gmz: esempio per gmstudio. Per via del cambio di funzionamento di working_directory e program_directory gmstudio esegue l'esempio su una cartella temporanea e non sulla cartella del progetto come avveniva per gm8.1
Di conseguenza non posso usare un percorso relativo senza compilare il gioco quindi dovrete andare sul create code dell'unico oggetto presente e modificare il percorso a mano in base a dove mettete i modelli.
Poichè usa una dll non ci saranno i classici problemi di gmstudio relativi al percorso dei file quindi potrete tranquillamente mettere i modelli in una cartella qualsiasi all'interno del vostro gioco.
Una volta modificato il percorso con quello corretto vi basterà avviarlo.
-GMAssimp.gex: la gex che funzionerà sia con gm8.1 sia per gmstudio e , teoricamente, anche per gm8.0 e gm7.
GMstudio integra automaticamente dentro di se la gex mentre per gm8.1 sarà necessario installarla per poterla usare.
L'esempio di gm8.1 utilizza la gex quindi non si può avviarlo senza prima averla installata.
Per via di strani bug di gmstudio la gex aveva problemi con gm8.1 e per risolvere ho dovuto ho dovuto inserire un chm vuoto e...
-assimp32.dll: per via di qualche bug gmstudio non ne vuole sapere di includere questa dll nella gex, di conseguenza è necessaria inserirla nella stessa cartella dell'exe quando usare gm8.1
Riassumendo se volete partire da un progetto nuovo vi basterà:
-Se usate gmstudio: importate la gex
-Se usate gm8.1: installate la gex ed inserite la dll "assimp32.dll" nella stessa cartella di editabile/eseguibile
In entrambi i casi lo script "CreateModelFromFile(filename)" è fornito a parte all'interno dei relativi esempi, vi basterà quindi creare un nuovo script e copia/incollare il codice degli esempi.
A questo punto a meno di provare ad usare le funzioni a basso livello senza l'opportuna documentazione CreateModelFromFile sarà la porta per il nirvana. Molto semplicemente chiamatela impostando il filename corretto e questa funzione restituirà l'indice del modello d3d da utilizzare con le opportune funzioni come d3d_model_draw()
Praticamente crea e carica il modello contemporaneamente.
Buon divertimento