GmItalia (Game Maker Italia Forum)

Gmitalia.tk - Programmazione e sviluppo di videogiochi e programmi con GameMaker
Oggi è dom nov 29, 2009 3:38 pm

Tutti gli orari sono UTC + 1 ora [ ora legale ]




Apri un nuovo argomento Rispondi all’argomento  [ 69 messaggi ]  Vai alla pagina Precedente  1, 2, 3, 4
Autore Messaggio
 Oggetto del messaggio: Re: D3D
MessaggioInviato: dom ott 11, 2009 11:10 am 
Membro d'elite
Avatar utente

Iscritto il: dom gen 13, 2008 9:59 pm
Messaggi: 1048
@Baron:
ecco il mio codice, è già diviso su due oggetti diversi

Codice:
oggetto_1 col modello "mano":


d3d_transform_set_identity();
d3d_transform_set_translation(0,0,0);
d3d_transform_add_rotation_x(xrot);
d3d_transform_add_rotation_y(yrot);
d3d_transform_add_rotation_z(zrot);
d3d_transform_add_rotation_x(oggetto_2.xrot);
d3d_transform_add_rotation_y(oggetto_2.yrot);
d3d_transform_add_rotation_z(oggetto_2.zrot);
d3d_transform_add_scaling(0.5,0.5,0.5);
d3d_model_draw(model_1,0,-740,0,-1);
d3d_transform_set_identity();
draw_set_color(c_white);

come modelli puoi usare 2 semplici cilindri, 1 per il braccio con lunghezza y=740
Codice:
oggetto_2 col modello "braccio"



d3d_transform_set_identity();
d3d_transform_add_rotation_x(xrot)
d3d_transform_add_rotation_y(yrot)
d3d_transform_add_rotation_z(zrot)
d3d_transform_add_translation(0,0,0);
d3d_transform_add_scaling(0.5,0.5,0.5)
  d3d_model_draw(model_2,0,0,0,-1);
d3d_transform_set_identity();


draw_set_color(c_white);


l'ho modificato ulteriolmente , togliendo il sign(), funziona, ma le rotazioni sono entrambe di rivoluzione, manca la rotazione su se stesso della "mano"

EDIT: c'è anche il piccolo particolare che il modello_1 mi viene disegnato due volte, su x0y0z0 e su x0y-740z0 :roll:


Top
 Profilo E-mail  
 
 Oggetto del messaggio: Re: D3D
MessaggioInviato: dom ott 11, 2009 12:55 pm 
Membro molto attivo
Avatar utente

Iscritto il: sab feb 14, 2004 1:05 pm
Messaggi: 655
Località: Ferrara
Codice:
oggetto_1 col modello "mano":
d3d_transform_set_identity();
d3d_transform_set_translation(0,0,0); //non serve a nulla ovviamente! tra l'altro è già inclusa in seet_identity
d3d_transform_add_rotation_x(xrot);
d3d_transform_add_rotation_y(yrot);
d3d_transform_add_rotation_z(zrot);
d3d_transform_add_rotation_x(oggetto_2.xrot);
d3d_transform_add_rotation_y(oggetto_2.yrot);
d3d_transform_add_rotation_z(oggetto_2.zrot);
d3d_transform_add_scaling(0.5,0.5,0.5);
d3d_model_draw(model_1,0,-740,0,-1); //OCCHIO! stai disegnando il tuo modello in un punto che non è l'origine
//la rotazione (doppia) è fatta attorno all'origine... non capisco se sia quello che tu vuoi...
d3d_transform_set_identity();
draw_set_color(c_white);


Codice:
oggetto_2 col modello "braccio"

d3d_transform_set_identity();
d3d_transform_add_rotation_x(xrot)
d3d_transform_add_rotation_y(yrot)
d3d_transform_add_rotation_z(zrot)
d3d_transform_add_translation(0,0,0);
d3d_transform_add_scaling(0.5,0.5,0.5)
  d3d_model_draw(model_2,0,0,0,-1);
d3d_transform_set_identity();

draw_set_color(c_white);


se disegni due volte il braccio vul dire che anche altro codice, o che model_1 e model_2 non sono quello che suppongo siano.
verifica tutti i tuoi oggetti (o ancora melgio, fai una prova in modo che ci siano disegnati solo questi due modelli e rimuovi tutti gli altri oggetti che disegnano... lascia quelli che impostano il 3d però ;) )

per la mano suggerisco:
Codice:
oggetto_1 col modello "mano":
d3d_transform_set_identity();
//ruoto quello che voglio per la mano (attorno all'origine)
d3d_transform_add_rotation_x(xrot);
d3d_transform_add_rotation_y(yrot);
d3d_transform_add_rotation_z(zrot);
d3d_transform_set_translation(0,-740,0); //mi metto a fine braccio
//aggiungo la rotazione dovuta al braccio (non è una rotazione della mano su sè stessa!)
d3d_transform_add_rotation_x(oggetto_2.xrot);
d3d_transform_add_rotation_y(oggetto_2.yrot);
d3d_transform_add_rotation_z(oggetto_2.zrot);
d3d_transform_add_scaling(0.5,0.5,0.5);
//per via delle mie trasofrmazioni il modello dovrebbe essere a 0-740,0 quando il braccio non è ruotato, e seguirlo nella rotazione: ammesso che il braccio in 0,0,0 abbia la spalla! altrimenti cambia parecchio.
d3d_model_draw(model_1,0,0,0,-1);
d3d_transform_set_identity();
draw_set_color(c_white);

_________________
-------------------- baronvscorsar_at_supereva_dot_it
--Schiva questo--
-------------------- http:\\baronvscorsar.supereva.it ... oops... supereva è defunta...


Top
 Profilo  
 
 Oggetto del messaggio: Re: D3D
MessaggioInviato: dom ott 11, 2009 5:19 pm 
Membro d'elite
Avatar utente

Iscritto il: dom gen 13, 2008 9:59 pm
Messaggi: 1048
funzionaaa!!! :D :D
però ho dovuto cambiare il "set_translation" in "add_translation" e continua ad esserci la doppia figura del primo modello, ma non mi importa ,ora, proseguo con la terza rotazione :paura: :paura: :paura:

grazie Baron ;)


Top
 Profilo E-mail  
 
 Oggetto del messaggio: Re: D3D
MessaggioInviato: dom ott 11, 2009 11:42 pm 
Membro molto attivo
Avatar utente

Iscritto il: sab feb 14, 2004 1:05 pm
Messaggi: 655
Località: Ferrara
jumoonp ha scritto:
funzionaaa!!! :D :D
però ho dovuto cambiare il "set_translation" in "add_translation"


ho riletto il manuale: in effetti per utti i set_translation e set_rotation il manuale dice che "imposta la trasformazione come una traslazione/rotazione. In altre parole cancella tutte le modifiche precedenti, sia di rotazione sia di traslazione.
erroneamente consideravo che il set_translation cancellasse solo le precedenti traslazioni e il set rotation solo le precedenti rotazioni.
Quindi la tua correzione è più che giustificata, e se avessi letto meglio il manuale :manual: non avrei dovuto aver nessun dubbio :oops:

Buona fortuna per la terza rotazione... e tienici informati sul perchè c'è il doppio braccio :confuso:

_________________
-------------------- baronvscorsar_at_supereva_dot_it
--Schiva questo--
-------------------- http:\\baronvscorsar.supereva.it ... oops... supereva è defunta...


Top
 Profilo  
 
 Oggetto del messaggio: Re: D3D
MessaggioInviato: lun ott 12, 2009 4:34 pm 
Membro d'elite
Avatar utente

Iscritto il: dom gen 13, 2008 9:59 pm
Messaggi: 1048
BaronVsCorsar ha scritto:
jumoonp ha scritto:
funzionaaa!!! :D :D
però ho dovuto cambiare il "set_translation" in "add_translation"


ho riletto il manuale: in effetti per utti i set_translation e set_rotation il manuale dice che "imposta la trasformazione come una traslazione/rotazione. In altre parole cancella tutte le modifiche precedenti, sia di rotazione sia di traslazione.
erroneamente consideravo che il set_translation cancellasse solo le precedenti traslazioni e il set rotation solo le precedenti rotazioni.
Quindi la tua correzione è più che giustificata, e se avessi letto meglio il manuale :manual: non avrei dovuto aver nessun dubbio :oops:

Buona fortuna per la terza rotazione... e tienici informati sul perchè c'è il doppio braccio :confuso:


ok...ho risolto anche la terza rotazione, praticamente al primo modello si aggiunge 2 rivoluzioni ed 1 rotazione, al secondo modello 1 rivoluzione ed 1 rotazione, al terzo modello soltanto la propria rotazione.....

per quanto riguarda il doppio "braccio" era dovuto ad un "difetto" dello script....infatti io non uso marzipan per importare i modelli, ma faccio uso di questo script per prendere i file.obj esterni....ed ogni oggetto che si trova nella room si avvale del modello che è stato al momento importato, per cui al momento in cui chiamavo 1 modello, avevo lo stesso modello per ogni oggetto che veniva poi sostituito dal 2 modello e cosi via....con una semplice variabile ho tolto questo piccolo bug...

la prossima domanda è questa:
oltre a ruotare, i modelli devono anche spostarsi a destra, sinistra, avanti, dietro, rimanendo sempre attaccati tra loro....per far ciò, bisogna sempre usare le "translation"?


Top
 Profilo E-mail  
 
 Oggetto del messaggio: Re: D3D
MessaggioInviato: lun ott 12, 2009 5:22 pm 
Membro molto attivo
Avatar utente

Iscritto il: sab feb 14, 2004 1:05 pm
Messaggi: 655
Località: Ferrara
già, nulla di più facile.

guarda quello che fai per la mano.
la ruoti, la metti in fondo al braccio e la disegni.

stessa cosa quando devi traslare il tutto.
prima di disegnarla aggiungi la traslazione che ti serve.
Se tu non ruotassi potresti fare direttamente un draw del modello alle coordinate. Ma tu sai che la rotazione è sempre centrata nell'origine (quella che tu chiami rotazione e rivoluzione è una rotazione in entrambi i casi. solo che una volta l'origine del modello coincide con quello degli assi, nel caso di "rivoluzione" no).

_________________
-------------------- baronvscorsar_at_supereva_dot_it
--Schiva questo--
-------------------- http:\\baronvscorsar.supereva.it ... oops... supereva è defunta...


Top
 Profilo  
 
 Oggetto del messaggio: Re: D3D
MessaggioInviato: gio ott 15, 2009 5:26 pm 
Membro d'elite
Avatar utente

Iscritto il: dom gen 13, 2008 9:59 pm
Messaggi: 1048
ho notato che anim8or esporta i modelli anche in linguaggio c...quindi si potrebbero anche usare tramite una dll, in game maker? lo chiedo perchè lo script che ho io da qualche problema e marzipan non mi accetta file voluminosi...


Top
 Profilo E-mail  
 
 Oggetto del messaggio: Re: D3D
MessaggioInviato: gio ott 15, 2009 10:54 pm 
Membro d'elite
Avatar utente

Iscritto il: dom gen 13, 2008 9:59 pm
Messaggi: 1048
ho messo una variabile nei vertici in questo modo:
Codice:
d3d_model_vertex_normal_texture(cubo1_ID0,-40.96,-35.86,kap,0,0,1,1,0);
d3d_model_vertex_normal_texture(cubo1_ID0,-78.79,-35.86,kap,0,0,1,0,0);
d3d_model_vertex_normal_texture(cubo1_ID0,-40.96,-35.86,kap,0,0,1,1,0);
d3d_model_vertex_normal_texture(cubo1_ID0,-78.79,3.64,kap,0,0,1,0,1);


kap sarebbe la variabile, ma per modificarne il volume del modello e quindi il valore della variabile kap, devo trasferire tutto il code da create event a step event, ma in questo modo lo schermo mi sfarfalla, l'immagine va e viene....in quale altro modo posso fare senza usare lo step event?


Top
 Profilo E-mail  
 
 Oggetto del messaggio: Re: D3D
MessaggioInviato: ven ott 16, 2009 9:05 am 
Membro molto attivo
Avatar utente

Iscritto il: sab feb 14, 2004 1:05 pm
Messaggi: 655
Località: Ferrara
quel codice lascialo in draw event.
kap lo modifichi in uno degli step event.

credo che se sfarfalla non c'entrino gli eventi usati, ma con il modo in cui modifichi kap..
a meno che tu non cambi kap nell'evento draw durante il disegno del modello...

---edit-
oops... ho letto in fretta il tuo post e pensavo stessi disegnando un cubo, non aggiungendo vertici al modello.
Scusa, ma kap non funziona come scala, ma semplicemente ridefinisce il tuo modello con una z differente :fapensare:
Quello che tu stai provando a fare è ridefinire il modello con vertici diversi... direi che distruggerlo e poi ricostruirlo da zero sia la cosa migliore...
oppure utilizzi uno scale...
non so... non mi è ben chiaro quello che vuoi fare.

_________________
-------------------- baronvscorsar_at_supereva_dot_it
--Schiva questo--
-------------------- http:\\baronvscorsar.supereva.it ... oops... supereva è defunta...


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 69 messaggi ]  Vai alla pagina Precedente  1, 2, 3, 4

Tutti gli orari sono UTC + 1 ora [ ora legale ]


Chi c’è in linea

Visitano il forum: Nessuno


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traduzione Italiana phpBB.it