problemino con d3d [risolto]

Argomenti riguardanti il D3D di GameMaker e librerie esterne.
Rispondi
Avatar utente
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: problemino con d3d

Messaggio da BaronVsCorsar »

ma se primi li disegni e poi dici dove vuoi mettere la telecamera come pensi che possano essere visti "dalla telecamera"? :confuso:

la proiezione va configurata sempre come prima azione nel draw. Crea un oggetto telecamera con depth maggiore di tutti e nel suo draw (se sei in modalità 3d) inizializza tutto quanto ti serve, ma soprattutto la telecamera!

poi in altri oggetti esegui tutti i disegni che vuoi.

PS: non ho verificato assolutamente i parametri che hai messo nelle funzioni, ho solo visto dove stava la projection.
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
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: problemino con d3d [risolto 1/2]

Messaggio da BaronVsCorsar »

Prerequisiti: hai letto il manuale a riguardo? conosci l'argomento matematico?

d3d_transform_set_identity(); //a meno che tu non abbia trasformazioni che pendono da prima non serve, perhcè inizia sempre in identity
d3d_transform_add_rotation_x(45) //ruoti il tuo nuovo sistema di riferimento attorno attorno all'origine...

d3d_transform_add_translation(-5,0,0); //ok, ora trasli la tua orgine (definisci un nuovo sistema di riferimento il cui centro, ripsetto al sistema originale è in -5,0,0

d3d_draw_ellipsoid(x-15,y-15,z-15,x+15,y+15,z+15,background_get_texture(tBall),2,2,32);
//ed ecco la sfera di diametro 30 disegnata nel nuovo sistema di riferimnento (al centro dato che il boundingbox è sviluppato simmetricalmente rispetto il centro).
disegni una sfera... graficamente cosa ti aspetti di vedere? una sfera ruotata! che notoriamente è invariante a rotazioni centrate all'origine.
Oltre alla rotazione hai aggiunto la traslazione di -5, quindi la tua sfera rispetto all'iniziale sistema di riferimento è centrata in -5,0,0 e ruotata di 45° (ma ovviamente la rotazione, che c'è, non ha un effetto visibile su di una sfera)
apparte che non ruota... mi trasla la palla alle coordinate -5,0,0 settandole invece di aggiungerle
per la rotazione ok...
per la traslazione ... non capisco
settandole (parola "rubata" all'inglese) significa in questo contesto impostarle come valore
aggiungerle significa sommarle.
0-5 = -5
setto a -5 quindi ho -5

cerca traslazione, rotazione e rototraslazione nel piano cartesiano con google, forse dopo ti sarà più chiaro. :hum:
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
BaronVsCorsar
GMI VIP
Messaggi: 4699
Iscritto il: 14/02/2004, 12:05
Specialità: Saccenza
Uso: GameMaker 8.1
Località: Ferrara
Contatta:

Re: problemino con d3d [risolto 1/2]

Messaggio da BaronVsCorsar »

rimane il fatto che quando non premo i tasti praticamente la rotazione si ferma mentre la palla decellera
non capisco perchè dovrebbe fare altrimenti.
quando non premi i tasti la variabile rot dove la modifichi?
poi c'è un'altra cosa perchè se metto set_translation (con _add funziona) la palla non ruota, eppure i valori sono diversi ogni volta e non uguali
manual ha scritto:d3d_transform_set_translation(xt,yt,zt) Sets the transformation to a translation over the indicated vector.
traduzione: IMPOSTA la trasformazione come una traslazione indicata dal vettore.
:manual: <- ave al manuale.

Se vuoi fare trasformazioni complesse devi impostare solo la prima, e sommare le altre.

esempio con le variabili:
x= 3;
x+= 2; //x == 5

x= 3;
x= 2; //x == 2

set_transf_blabla(); //la trasformazione è "blabla"
set_transf_nabbo(); //la trasformazione è "nabbo"

mentre

set_transf_blabla(); //la trasformazione è "blabla"
add_transf_nabbo(); //la trasformazione è "blabla" + "nabbo"
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é?

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti