[d3d] 3D e depth

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

[d3d] 3D e depth

Messaggio da Homunculus »

Non riesco a capire come influisca la depth nel 3d di game maker. Ho fatto alcune prove, e ottengo risultati strani. Ho creato uno skybox da usare come sfondo, gli ho dato una depth altissima e ora oggetti che dovrebbero essere fuori dallo skybox sono disegnati all'interno (corretto per altro come effetto). Pero lo stesso ragionamento trai altri oggetti non funziona, sono sempre disegnati secondo la profondita. Sapete dirmi brevemente il funzionamento quindi di depth in 3d?

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: 3D e depth

Messaggio da maz85 »

Io ho sempre disegnato senza dare importanza al depth dell'istanza, solo la posizione dell'oggetto determina la sua "profondità" ovvero cosa copre e da cosa è coperto (in base alla cam).
Però se non erro c'è un discorso di priorità nel disegnare gli oggetti per essere visualizzati dalla telecamera.
Sto notando in un progetto 3d che ho dato maggiore depth alla cam (1) mentre gli altri oggetti 3d hanno depth 0.
Domani provo a dare un'occhiata e a variare.

Edit: rettifico la seconda parte, ho provato a modificare depth, no problem di visualizzazione.

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: 3D e depth

Messaggio da Homunculus »

Quello che mi ha dato da pensare é proprio lo skybox. Io disegno le pareti a distanza 5 dalla telecamera, quindi un oggetto che si trova a distanza 200 dovrebbe essere chiaramente non visibile. È effettivamente cosi se l'oggetto ha la stessa depth dello skybox, ma aumentando la depth dello skybox l'oggetto pur trovandosi palesemente lontano risulta visibile.

La cosa buffa é che questo comportamento lo ottengo solo tra skybox e altri oggetti, e non tra gli altro oggetti uno con l'altro. Mah... fintanto che funziona...
Ultima modifica di Homunculus il 29/06/2009, 12:13, modificato 2 volte in totale.

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: 3D e depth

Messaggio da BaronVsCorsar »

la depth influenza l'ordine di esecuzione dell'evento draw nei vari oggetti (mentre la posizione nel 3D è dato dalle primitive che vengono chiamate, anche se l'ordine fosse sbagliato dovrebbero venire disegnate e/o coperte correttamente).

Il problema che io ho incontrato sono principalmente:
- nel settaggio della telecamera e projection (andrebbe fatto nel draw del primo oggetto)
- nel disegnare in 2D sovraimpresso (proiezione ortoganale classica), andrebbe fatto nell'ultimo oggetto.

Se non hai problemi di dover passare dal "3D" al "2D" durante l'evento draw non ti dovresti accorgere di molto, mentre diventa piuttosto importante se disegni informazioni 2D sovrapposte all'ambiente 3D (per intederci: scheda personaggi, hud, ecc. ecc.).
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: 3D e depth

Messaggio da maz85 »

BaronVsCorsar ha scritto::
- nel settaggio della telecamera e projection (andrebbe fatto nel draw del primo oggetto)
- nel disegnare in 2D sovraimpresso (proiezione ortoganale classica), andrebbe fatto nell'ultimo oggetto.
Ora che mi ci fai pensare spesso gli oggetti creati dopo non vengono presi in considerazione dalla projection e appaiono "flat" quindi ricordo che ho dovuto agire di depth in qualche progetto.
Per gli hud ho sempre usato con successo questo codice, senza problema di ordine o di oggetto:

Codice: Seleziona tutto

    d3d_set_projection_ortho(0,0,800,600,0);
    d3d_set_hidden(false);
    //draw_rectangle(0,280,320,480,0);
    d3d_set_hidden(true);

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: 3D e depth

Messaggio da Homunculus »

In effetti maz dopo qualche test sembra che la depth venga prersa in considerazione in particolare quando si ha d3d_set_hidden(false); , cosa che faccio senza volerlo nel mio skybox e che da quindi l'effetto giusto. Immagino che anche nell'hud quindi abbia senso che indipendentemente dalla distanza sia sempre visibile.

Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: 3D e depth

Messaggio da BaronVsCorsar »

se dopo aver settato la projection orto continui a disegnare delle primitive 3D ovviamente ti ritrovi con effetti sbagliati,
ma se continui con altri oggetti che disegnano in 2D è tutto ok.
Non necessariamente si ha un problema passando 2D/3D, dipende da cosa si sta progettando di fare ovviamente.
Anche se settate tutte le projection in ogni oggetto non dovrebbero esserci problemi... ma non ho mai provato.
Meglio pianificare con corretto depth in ogni oggetto ;)
ImmagineSchiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?

Avatar utente
civic71
GMI Advanced
Messaggi: 2210
Iscritto il: 23/10/2003, 17:31
Specialità: Risotto con zucchine
Uso: GM:Studio 1.4 Pro
Località: Jesolo (venezia)
Contatta:

Re: 3D e depth

Messaggio da civic71 »

Non riesco a capire come influisca la depth nel 3d di game maker.
Non uso il 3d di Game maker ma farei delle prove con :

Codice: Seleziona tutto

depth-=y;
oppure con una distanza dalla camera :

Codice: Seleziona tutto

depth-=distance_to_point(x,y,camera.x,camera.y)
oppure depth +=distance_to_point(x,y,camera.x,camera.y)

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: 3D e depth

Messaggio da Homunculus »

Grazie civic, in realtà mi sono gia risposto da solo dopo alcune prove. La depth influisce sull'ordine di disegno, quindi in linea di massima influenza solo le trasparenze o cio che viene disegnato con d3d_set_hidden(false); (se si usa la prospettiva).

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti