Vai al contenuto
coren

Attributo Transform

Recommended Posts

Ciao a tutti!

Sono da poco entrato nel mondo di maxscript e sto cercando di creare uno script che mi velocizzi il lavoro.

Quello che mi proponevo di fare è di scrivere uno script che a partire da una pivotDoor (che io utilizzo per fare le finestre, porte e porte-finestre ) mi creasse una chamferBox per fare la banchina che sta sotto ad ogni finestra, e mi generasse gli scuroni della finestra(che a loro volta sono la pivotDoor clonata ma con attivato il flag FlipSwing): il mio problema non sono gli scuroni, ma le chamferbox, che a seconda di come sono orientate le PivotDoor selezionate devono essere orientate e poisizionate in modo adeguato; usando il listener ho visto che l'orientamento e la posizione di una PivotDoor è data dall'attributo transform, ho fatto quanche prova ma non ci ho capito molto:

(matrix3 [0,1,0] [0,0,1] [1,0,0] [-30,-10,0])

Questo è il suo contenuto in una prova, una cosa l'ho capita, [-30,-10,0] definisce la posizione, ma il resto non l'ho capito.

Pensando che alla fine le mie PivotDoor hanno quattro orientamenti possibili(ore 12,ore 3,ore 6,ore 9; se visto dall'alto) ho preso i quattro valori possibili di transform e pensavo di fare una comparazione con questi quattro valori possibili, ovviamente traslando prima la pivot door all'origine, in modo di avere l'indipendenza dalla traslazione, il codice che ho scritto è il seguente(per il momento controllo solo il caso delle ore 12)

for i in selection do(

global Array Vold

Vold=i.pos

move i [-i.pos[1],-i.pos[2],-i.pos[3]]

if(i.transform==$PivotRif01.transform) then

(

--operazione di creazione della banchina e della persiana

)

move i [Vold[1],Vold[2],Vold[3]]

)

PivotRif01 è una pivot di test creata da me che ha l'orientamento ad ore 12 e che è posizionata all'origine, il mio problema è che l'if non mi verifica mai l'uguaglianza, anche se io guardo i valori manualmente e mi risultano uguali.

Spero di essere riuscito a spiegare il mio problema e mi scuso per la lunghezza del post

Grazie in anticipo!!!!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

mi sembra ke stai usando max script giusto?

se è così prova a scriver

if i.transform==$PivotRif01.transform then

(

...

)

questa dovrebbe essere la sintassi giusta per maxscript

Non ho mai provato se accetta anche una sintassi stile javascript o cmq ECMA


Modificato da BioSurf

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

per conoscere la rotazione di un oggetto solitamente si scrive nel listener

$.rotation
e si da invio il valore restituito è però in quaternioni (che sinceramente ancora non ho compreso bene) per avere un valore comprensibile espresso secondo la rotazione attorno agli assi x y e z basta scrivere
$.rotation as eulerangles
e ti restituisce un valore tra parentesi dove il primo rappresenta l'angolo di rotazione rispetto a X il secondo rispetto a Y e il terzo rispetto a Z per consocere invece i valori di rotazione rispetto ai singoli assi puoi scrivere
$.rotation.x_rotation

$.rotation.y_rotation

$.rotation.z_rotation
per resettare la rotazione potresti scrivere
$.rotation = (eulerangles 0 0 0)
per ruotare l'oggetto di 35° attorno ad x potresti scrivere sia
$.rotation = (eulerangles 35 0 0)
sia
$.rotation.x_rotation = 35

spero di essere stato chiaro e di non averti incasinato ulteriormente ;)

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

grazie mille!!! mò vedo di terminarlo e poi magari se qualcuno lo vuole lo posto!!!!

Anche se non è niente di speciale(il mio script intendo, il vostro aiuto invece è stato assai prezioso).... grazie ancora!!!!!!!!

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×