Jump to content
Siao

Problema con rotazione di un gruppo lungo un asse

Recommended Posts

Buongiorno a tutti,

probabilmente è un problema stupido ma è tutto il giorno che litigo con assi e rotazioni senza venirne a capo.

Devo ruotato un gruppo di oggetti (importati esternamente) lungo un asse inclinato. Il problema è che io ruoto il pivot del gruppo in modo che segua l'asse da me desiderato ma quando poi vado a ruotare l'oggetto la rotazione è totalmente sballata.

Ho cercato sul forum, tutorial e altro ma non ne sono venuto a capo.

Qualcuno potrebbe aiutarmi per cortesia? Non capisco il meccanismo degli assi local e di quelli world.

Grazie.

Share this post


Link to post
Share on other sites
Posted (edited)

Il problema è che l'oggetto che io importo è già ruotato però va a prendere degli assi che sono dritti e per ruotare correttamente l'oggetto devo allineare gli assi rispetto all'asse teorico dell'oggetto.


Edited by Siao
Errore di scrittura

Share this post


Link to post
Share on other sites
2 ore fa, Siao ha scritto:

Il problema è che l'oggetto che io importo è già ruotato però va a prendere degli assi che sono dritti e per ruotare correttamente l'oggetto devo allineare gli assi rispetto all'asse teorico dell'oggetto.

 

Ma un Reset XForm l'hai provato a fare? 

Share this post


Link to post
Share on other sites

Ci provo domani come prima cosa. Ora non riesco. A me sembra che tra le mille cose provate oggi ci fosse già anche quella comunque.

Share this post


Link to post
Share on other sites
12 ore fa, Michele71 ha scritto:

Ma un Reset XForm l'hai provato a fare? 

Ho provato a fare il Reset XForm ma il gruppo si ruota e si sposta completamente ed anche gli oggetti al suo interno. Poi diventa un po' complicato riposizionare tutto al posto giusto.

Share this post


Link to post
Share on other sites

Probabilmente dovrai fare il reset degli assi di ogni elemento del gruppo, cioe: apri una nuova scena (meglio con la stessa unità di misura del lavoro finale), importa e apri il gruppo, in modo che tutti gli oggetti componenti il gruppo abbiano ognuno il proprio pivot, fai un bel reset xform per tutti, converti tutto in poly, quindi raggruppa di nuovo e salva con altro nome. Apri il lavoro precedente e riprova di nuovo.

 

 

Share this post


Link to post
Share on other sites
1 minuto fa, Superokkio ha scritto:

Probabilmente dovrai fare il reset degli assi di ogni elemento del gruppo, cioe: apri una nuova scena (meglio con la stessa unità di misura del lavoro finale), importa e apri il gruppo, in modo che tutti gli oggetti componenti il gruppo abbiano ognuno il proprio pivot, fai un bel reset xform per tutti, converti tutto in poly, quindi raggruppa di nuovo e salva con altro nome. Apri il lavoro precedente e riprova di nuovo.

 

 

Provo grazie. Sto anche provando ad utilizzare un oggetto Dummy ma anche in questo caso non riesco a far sì che ruoti lungo un asse inclinato. Imposto il pivot con la rotazione corretta ma quando poi vado a ruotare l'oggetto, l'oggetto ruota lungo gli assi World che sono sempre non ruotati. Mi sa che sbaglio qualcosa a priori io.

Share this post


Link to post
Share on other sites

Credo che il mio problema non sia da associare al modello importato. Non so proprio quale sia il modo corretto per ruotare un oggetto lungo un asse inclinato.

 

Per farvi capire meglio il io problema, allego una gif presa da un altro forum in cui un ragazzo aveva il mio stesso problema. In pratica si vede la rotazione corretta impostata localmente, e poi il problema che si presenta quando si anima la rotazione.

La soluzione che gli hanno indicato è la seguente:

 

Quote

 

You can use just the default Euler XYZ controller do achieve what you want. But you need to know the following, especially if you want to improve your skills on building mechanisms:

The local coordinates of an object do not (necessarily) match the XYZ rotation axes used in the Euler XYZ controller.

First, Each axis in that controller has a value which defines a rotation angle around that axis in parent space, whichever the parent of the rotating object is (that can include the world). On top of that, each one of these three values is internally computed in a certain order, usually X, then Y then Z.

That means that, for each frame, 3ds Max internally rotates the object in X in parent space, then rotates in Y (which makes the rotation achieved in X to be carried by that second rotation), and then the same happens with Z.

As a user you can pose your object for animation by rotating it around its local axis, but what you are doing then is to create keys whose XYZ values are stored for animation. Because the local axis of an already rotated object rarely match the XYZ axes used for Euler rotation, you could easily get variations in all three axes values even when you are using only one axis of the transform gizmo to rotate the object. Then 3ds Max interpolates these values from key to key, doing what I explained in the previous paragraph, making all three axes to be animated (or two axes maybe).

This topic is complicated and would provide a long debate, but after much analysis about it, you will find that because of the order the rotations are computed, you can safely rotate an object around the first axis to be computed in the Euler rotations and be sure that it will always match the local equivalent axis of the object, because it really happens like that (The explanation for this is complicated, so take it as is.)

The order of the computation of the axes in an Euler XYZ controller can be changed. That is the solution to many similar problems that happen during rigging.

So, the short answer to your problem would be:

[ol]
[li]Determine the axis around which you want to spin your object (before animating). Lets say it is Z
[/li][li]Change the axis order of the Euler XYZ controller to a combination that has that axis in the first position. For example ZXY.
[/li][li]Spin 
[/li][/ol] Step 2 can be done in the Motion Panel, in the Euler Parameters rollout. Be sure to pick the Rotation button to access it.

 

 

Io purtroppo non riesco comunque a capire come dovrei fare.

Se qualcuno sapesse indicarmi la modalità corretta gliene sarei molto grato perchè sto diventando matto per un lavoro.

giphy.gif

Share this post


Link to post
Share on other sites

Adesso è tutto chiaro. 

Segui passo passo: seleziona il tuo gruppo/oggetto con il reference coordinate system (in alto) impostato su "Local" , ovviamente l'asse Z dell'oggetto/gruppo deve seguire il senso d'inclinazione dell'oggetto se cosi non fosse lo devi resettare. Per intenderci l'asse Z deve essere il "perno" perpendicolare all'asse di inclinazione su cui ruota il tuo gruppo.

Quindi vai nel pannello "Motion" sempre con l'oggetto selezionato, quindi clicca bottone "parameters" quindi "rotation" più in basso (fra position e scale), quindi in Euler Parameters seleziona l'ordine XZY avendo cura di premere il bottone Z in rotation axis.

Quindi al frame zero crea una chiave di animazione, vai ad esempio al frame 100 e ruota il tuo oggetto/gruppo sull'asse Z di un valore a caso...

a questo punto dovresti poter vedere tutto ruotare in maniera corretta. 

Con me ha funzionato.

Share this post


Link to post
Share on other sites
5 ore fa, Superokkio ha scritto:

Adesso è tutto chiaro. 

Segui passo passo: seleziona il tuo gruppo/oggetto con il reference coordinate system (in alto) impostato su "Local" , ovviamente l'asse Z dell'oggetto/gruppo deve seguire il senso d'inclinazione dell'oggetto se cosi non fosse lo devi resettare. Per intenderci l'asse Z deve essere il "perno" perpendicolare all'asse di inclinazione su cui ruota il tuo gruppo.

Quindi vai nel pannello "Motion" sempre con l'oggetto selezionato, quindi clicca bottone "parameters" quindi "rotation" più in basso (fra position e scale), quindi in Euler Parameters seleziona l'ordine XZY avendo cura di premere il bottone Z in rotation axis.

Quindi al frame zero crea una chiave di animazione, vai ad esempio al frame 100 e ruota il tuo oggetto/gruppo sull'asse Z di un valore a caso...

a questo punto dovresti poter vedere tutto ruotare in maniera corretta. 

Con me ha funzionato.

Grazie mille Superokkio! Finalmente ho risolto. Non ci sarei mai arrivato da solo. Non pensavo che per ruotare semplicemente un oggetto fosse necessaria una procedura del genere ma non mi era mai successo un caso simile.
Grazie ancora!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...