d3d_model_load() dove sbaglio?

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

d3d_model_load() dove sbaglio?

Messaggio da Jak »

Sto facendo un semplice e piccolo giochetto da 4 soldi. Tempo fa provai a farlo manualmente facendo una primitiva particolare con qualche calcolo matematico per simulare l'effetto 3d senza usare il 3d ma senza successo.
Ora volevo riprendere quel progetto ma stavolta senza farmi troppi problemi, ho aperto anim8or e fatto un semplice modello su misura quindi esportato in .obj e convertito in .d3d con l'obj converter di homu.
Fin qua tutto perfetto, il .d3d di homu ha un numero di vertici che ad occhio sembra giusto e lo stesso vale per i valori.
Ho quindi creato un modello e poi caricato da file usando quell'indice ma disegnandolo non vedo assolutamente niente. Ho quindi provato a fare varie prove spostando la visuale(per il resto fungeva, ho usato le primitive interne e non mi ha dato problemi) ma non sono riuscito a vedere assolutamente niente.
Ho quindi provato ad usare d3d_model_save subito dopo il load e... il numero dei vertici nel file è identico(la seconda riga del file e pure il numero di righe che vedo con block notes è la stessa quindi come numero vertici ci siamo) ma mi ritrovo con tutti i parametri dei vertici a 0,000000 tranne il primo valore del primo vertice che è 4,000000

Il modello l'ho salvato subito dopo il load senza fare nient'altro in mezzo ma mi da sempre questa strana cosa(anche in altri eventi e dopo un po di tempo).

Il load sta ovviamente nel create dell'unico oggetto che ho.
Sono abbastanza arruginito con il d3d ma non mi sembra di avere chissà quali errori. Vi ricordate di problemi del genere?
Spoiler
CREATE

Codice: Seleziona tutto

d3d_start();
model=d3d_model_create();
d3d_model_load(model,working_directory+"\palla.d3d");
d3d_model_save(model,working_directory+"\palla2.d3d");
DRAW

Codice: Seleziona tutto

direction+=2;//per ruotare in continuazione
d3d_set_culling(false);//per vedere tutti i triangoli, ho 50% di possibilità in più di vederli così
draw_set_color(c_white);//il colore bianco
d3d_transform_set_rotation_y(direction);//ruota
d3d_transform_add_scaling(1,1,1);//scala(lho usato per varie prove)
d3d_transform_add_translation(400,300,0);//sposta
d3d_draw_ellipsoid(-200,-200,-200,200,200,200,sprite0,1,1,50);//disegna una spera texturata(si vede perfettamente centrata sullo schermo)
d3d_model_draw(model,0,0,0,sprite1);//con o senza texture non cambia nulla
Il modello è centrato rispetto all'origine quindi teoricamente dovrebbe stare nello stesso punto della primitiva al massimo più grande o più piccolo.

Non so proprio cosa fare, gm8.1 ovviamente

PS: ah a quanto pare la prima riga è giusta, tutte le altre no. Forse la primitiva numero 8(nel file tutti i vertici hanno 8 all'inizio, non ricordo bene a cosa serva) non esiste più? Forse devo mantenere la stessa? Che sia quindi cambiato qualcosa nella gestione dei modelli con la 8.1? Mi sembra strano visto che sul manuale non cè scritto niente a riguardo.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: d3d_model_load() dove sbaglio?

Messaggio da Jak »

La curiosità sale sempre di più. Ho provato ad usare questo:
http://sandbox.yoyogames.com/games/83404
Che tra l'altro gestisce i file obj(non me l'aspettavo nemmeno :lol: )
Caricando dal file obj si vede tutto perfettamente ed il salvataggio risulta identico a quello di homu.
Caricando dal d3d invece non si vede assolutamente niente(oltre a metterci una frazione di sec a caricare, un vero e proprio lampo come sul mio gioco) con ne il mio modello, ne il modello di esempio del programma di homu.
A quanto pare game maker con me non vuole caricare i modelli, perchè? :fapensare:

EDIT: A quanto pare il viewer del link ti lascia pure il codice da usare per caricare un modelo dai .obj, potrebbe essere un sistema per risolvere ma preferirei caricare tramite game maker per maggiore velocità, 5/6 secondi non son pochi :lol:
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti