Vai al contenuto
44 gatti

[SOLVED] - Rotazione coordinate locali

Recommended Posts

Devo animare una ruota che è un pò inclinata rispetto alle coordinate world e se provo a ruotarla il movimento è sfasato.

Ho quindi allineato il pivot all'inclinazione della ruota e se la ruoto manualmente con lo strumento rotate adesso il movimento è corretto.

Se però inserisco delle key e creo un animazione 3ds max considera nell'animazione le coordinate world e ia rotazione della ruota è nuovamente sbaglata.

Come faccio a creare una rotazione animata utilizzando le coordinare Local?


Modificato da 44 gatti

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Potresti usare una espressione per ruotare la tua ruota in locale. Comunque ho notato che devi fare un xform dell'oggetto per funzionare al meglio.

Allora, vediamo se ti può essere utile... Per la velocità della ruota o usi un controller (Attribute Holder) o usi una formula "Constant"; a te la scelta. In questo esempio uso il parametro Constant. Apri il listener e scrivi le seguenti stringhe:

 

obj = $+nome -- il segno del dollaro è seguito dal nome del oggetto (es:$box001)
obj.rotation.x_rotation.controller = Float_Expression() applichi all'asse x (in questo caso) l'espressione

 

Poi vai in "Motion tab", asse di rotazione del tuo oggetto, click destro sul controller e seleziona "Properties" oppure apri il "Curve Editor" vai sull'asse di rotazione dell'oggetto interessato e doppio click per aprire il rollout "Espression Controller".

 

Nel campo "Create Variables" scrivi una variabile a te congeniale, ad esempio "Speed", usa il valore "Scalar" e poi click su "create". Seleziona Speed nel campo "Scalars" e poi premi il pulsante in basso "Assign to Constant". Nel campo che appare, inserisci una velocità media di rotazione (puoi sempre cambiare). In questo modo ho attribuito a Speed ha una velocità costante di tot valore.

 

Nella finestra "Expression" inserisci:

 

degToRad(Speed*S)*2

La stringa sopra significa:

 

  • degToRad trasforma la rotazione bezier in gradi (più gestibile per questo caso)
  • Inserisce la velocità media (Speed) per i Secondi (S è la durata in secondi dei frame che stai utilizzando)
  • Il tutto moltiplicato per due.

Puoi cambiare la S in F(frame) ecc. Devi decidere tu come muoverti.  Logicamente la velocità deve essere gestita da ciò che ti serve veramente. 

 

Tutto l'ambaradam che ho scritto sopra mi ha portato ad una rotazione lineare sull'asse scelto con una ruota inclinata a piacimento.

 

 

TestRotazione.rar

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Grazie Michele, davvero una risposta da 10 e lode ;)

Le espressioni sono un aspetto che mi manca proprio e ora capisco perchè ho sbattuto la testa contro il muro per 2 giorni.

Sai che però ho risolto in una maniera diversa......sicuramente non in modo elegante come le tue espressioni ma sempre grazie a una tua intuizione, le xform!

In pratica  ho aggiustato le coordinate in locale nel modo desiderato e ho fatto un reset dell'xform,poi ho riallineato nuovamente le coordinate in locale e adesso la rotazione funziona correttamente anche nell'animazione. 

Ti ringrazio davvero tanto Michele per il prezioso aiuto e per le conoscenze che metti generosamente a disposizioni di tutti gli appassionati di 3d

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ciao, questo è un messaggio generato automaticamente per avvertire tutti che questa discussione è stata etichettata come "risolta".

Grazie per la collaborazione

lo staff di Treddi.com

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.

×