Director: elementi 3D

Di: Gameleo | 26/09/2020 17:25:49
Ciao!
Qualcuno sa come resettare i valori di transform di un modello 3D attraverso uno script da pulsante?
Ho questo ma non so dove utilizzare le prime 2 linee
global gOriginal
gOriginal= member("your3dMember").model("theMode").getWorldTransform();
-------------------------
on mouseDown
-- reset the model
member("your3dMember").model("theMode").transform = gOriginal
end
Grazie

Risposte



Ciao Gameleo, premesso che siamo in periodo estivo, e che ho appena iniziato a studiare queste cose,
prova semplicemente ad associarlo come Movie Script (script del filmato).
global gOriginal
gOriginal= member("your3dMember").model("theMode").getWorldTransform();
-- semplicemente inserisce il tuo modello 3d di default in una variabile globale,
-- poi con il pulsante ripristina lo stato come il Cast Member memorizzato nella variabile.
Altre info che potrebbero interessarti.
getWorldTransform() è una proprietà che descrive la posizione e la rotazione nello spazio 3d del tuo modello.
Per aggiungere o rimuovere i modelli dallo spazio 3d, si usano i comandi: addToWorld() e removeFromWorld().
Aggiunge il modello allo spazio 3d attivo e imposta il relativo principale come "World"
Ed equivale a:
model.parent=member("scene").group("world")
Tutti i modelli appena creati si aggiungeranno allo spazio globale così per default.
Quindi:
transform.position
restituisce la posizione relativa
transform.rotation
restituisce la rotazione relativa
getWorldTransform()
imposta la posizione e l'orientamento del modello, relativamente alla posizione e all'orientamento del modello globale.
model.getWorldTransform().position
ti restituisce la posizione del modello nelle coordinate globali.
group.getWorldTransform().position
ti restituisce la posizione di un gruppo nelle coordinate polari.

Di: Pablito | 26/09/2020 17:25:49


Grazie, prezioso come al solito. :P

Di: Gameleo | 26/09/2020 17:25:49


Ciao Gameleo,
Ciao Pablito,
aggiungo alcune considerazioni sull’argomento.
Inserire le due linee di codice nel Movie Script può generare in alcuni casi un errore (p.es. se il modello 3d è un file esportato da un programma esterno) in quanto bisogna assicurarsi che lo stato del cast member sia a livello 4, cioe' completamente caricato in memoria (member("your3dMember").state = 4).
Nel tutorial che ho preparato http://www.gameprog.it/?section2=59&=0 c’è la procedura completa per il caricamento di un cast member 3d valido in tutti i casi.
L’altra considerazione riguarda il fatto di inserire l’azione di riposizionamento del modello nell’handler di mouseDown del pulsante. Di regola questo tipo di comandi andrebbero messi nell’handler mouseUp per dare all’utente la possibilità di un ripensamento. Basta vedere i pulsanti dei programmi commerciali e dei sistemi operativi: se l’utente clicca su un pulsante e si accorge di avere sbagliato basta che con il tasto del mouse premuto esce dal pulsante per non avviare il comando.
Maury

Di: maury | 26/09/2020 17:25:49


Ciao Maury, bentornato.
Mi sono permesso di rendere cliccabile il link che hai appena postato (tra l'altro avevo già visitato la pagina in questione). Io purtroppo non ne so molto del 3d in Director e allora non posso scrivere tutorial in proposito...
È un argomento che sicuramente troverà ampio spazio qui, nel forum di 001design.it.
Grazie dei consigli e della partecipazione, con il contributo e l'attenzione di tutti, quella che potrebbe sembrare utopia (riferito alla condivisione di conoscenza per crescere insieme) diventerà presto una realtà.
Sul MouseUp sono naturalmente d'accordo con te.

Di: Pablito | 26/09/2020 17:25:49


È molto semplice, devi usare la funzione duplicate().
on beginsprite me
gpOrigine = duplicate(member("mondo").model("modello").transform.position)
end
-- nel pulsante scrivi--
on mouseup me
member("mondo").model("modello").transform.position = gpOrigine
end
duplicate è una funzione che registra il valore di una variabile rendendola costante, se non usi duplicate il valore di gpOrigine cambia costantemente, per questo il tuo script non funzionava.
Ciao a tutti alla prossima!

Di: Ekleipsis | 26/09/2020 17:26:49


Bentornato Ekleipsis

Di: Pablito | 26/09/2020 17:26:49

grazie

quando posso intervengo sono sommerso dal lavoro...purtroppo ma quando posso è sempre un piacere.
alla proxima
hai creato davvero un bel forum complimenti pablito...

Di: Ekleipsis | 26/09/2020 17:26:49


Ottimo, se hai bisogno di aiuto chiama pure.
Grazie dei complimenti, “creato” è una parola un po' grossa, faccio solo in modo che la teoria non resti fine a se stessa e che l’ordine sia un concetto realizzabile anche nel mondo di internet.
Contiamo sull’aiuto di tutti per quanto riguarda la collaborazione, il buon senso e la comprensione dei problemi.
È un’impresa davvero ardua, ma proprio per questo il discorso diventa molto interessante per me.
A presto Ekleipsis, fammi sapere via e-mail nel caso avessi qualcosa in mente riguardo al forum, ciao.

Di: Pablito | 26/09/2020 17:26:49