Jump to content
Flavio Masi

Spring E Coordinate Locali

Recommended Posts

Salve treddiani,

mi sono imbattuto nelle indicazioni contenute in questa pag. Sembrerebbe che, con una riga di codice, si possa risolvere l'annoso problema di gestire lo spring controller sulla base delle coordinate locali, senza passare per l'uso, alquanto noiso, di ExposeTM e wire parameters. Nonostante mi affascini e stia tentando di imparare qualcosa in merito, le mie competenze di maxscript sono meno che embrionali, e non mi riesce di immaginare come si possa usare lo script in questione, posto che funzioni. Accetto anche risposte seccate tipo "datti una mossa e studiati la materia". In ogni caso, sempre se funziona, lo script potrebbe forse essere utile a qualcuno in questo forum - se ne parla in un vecchio thread...

Ciao

Flavio

Share this post


Link to post
Share on other sites

ma come lo devi usare?

Io non sono molto esperto di animazioni e quindi posso darti una mano solo se mi spieghi per bene il tuo problema.

Comunque credo che il post che ti interessa è questo:

Just capture its transform space relative to a target:

($spring.transform * inverse $base.transform).pos[1]

pos[1] being x value

giusto?

Non capisci la riga di codice o non sai applicarla al tuo caso?

La devi usare come expression?

ciao

Share this post


Link to post
Share on other sites
ma come lo devi usare?

Io non sono molto esperto di animazioni e quindi posso darti una mano solo se mi spieghi per bene il tuo problema.

Innanzi tutto grazie per l'interessamento.

Gli effetti dello Spring Position Controller - a parte i parametri generali di base - sono controllabili tramite i valori X Y e Z effect. Il problema è che tali valori hanno effetto sulle coordinate globali e non su quelle locali dell'oggetto a cui viene assegnato il controller. Il breve video che, volendo, puoi scaricare da qui potrebbe chiarire la faccenda; entrambi i Box hanno gli effetti dello Spring limitati al solo asse X: quello blue, però, esegue sulla base delle coordinate globali. Si vorrebbe ottenere un Spring che lavori come sul box rosso.

Non capisci la riga di codice o non sai applicarla al tuo caso?

La devi usare come expression?

Entrambe le cose. Come già detto sono un neofita completo di maxscript, oltre che di programmazione in generale e comunque non pretendo di capire, per ora, la riga di codice - fra qualche tempo, forse, la sintassi non mi sembrerà più così astrusa. Sarebbe già interessante, oltre che utile, sapere come applicarla. Comunque, se le mie spiegazioni sono tali per cui la soluzione ti salti agli occhi, bene, diversamente ti ringrazio lo stesso. Non posso certo chiederti di risolvere per me un problema che non a a che fare con i tuoi interessi.

Ciao

Flavio

Share this post


Link to post
Share on other sites

e se tu assegnassi a questi valori dei controller script che variano il loro valore in base all'orientamento dell'oggetto?

comunque la riga di codice si legge così:

($spring.transform * inverse $base.transform).pos[1]

'$spring' è un riferimento ad un oggetto, la parte '.transform' sta a significare la sua matrice di trasformazione.

poi quello che c'è a destra del * è analogo a quello che c'è a sinistra, solo che 'inverse' fa si che venga calcolato il suo inverso.

Tutto quello che è fra tonde è da considerarsi come un unico risultato.

Poi con '.pos[1]' prende in considerazione solo la parte di posizione della matrice e in particolare '[1]' guarda la X.

scusa il ritardo della risposta.

ciao

Share this post


Link to post
Share on other sites
e se tu assegnassi a questi valori dei controller script che variano il loro valore in base all'orientamento dell'oggetto?

Immagino sia un bellissimo suggerimento ma, allo stato, vorrebbe dire chiedere a qualcuno di programmare degli script controller per me.

comunque la riga di codice si legge così:

($spring.transform * inverse $base.transform).pos[1]

'$spring' è un riferimento ad un oggetto, la parte '.transform' sta a significare la sua matrice di trasformazione.

poi quello che c'è a destra del * è analogo a quello che c'è a sinistra, solo che 'inverse' fa si che venga calcolato il suo inverso.

Tutto quello che è fra tonde è da considerarsi come un unico risultato.

Poi con '.pos[1]' prende in considerazione solo la parte di posizione della matrice e in particolare '[1]' guarda la X.

E c'era anche scritto! E pensare che io avevo confusamente capito che quel [1] fosse arbitrario.

Comunque la tua descrizione del codice ha messo in moto i miei 3 neuroni e ho capito come lavora, al lato pratico. Chiarisco per i duri di comprendonio come me che stessero seguendo il thread. Si prendono in esame due oggetti imparentati che condividono le medesima coordinate: l'oggetto "base" ha delle chiavi di animazione per quanto riguarda la posizione; l'oggetto "spring" è linkato all'oggetto base e - va da se - munito di spring controller. Eseguendo il codice otteniamo le coordinate X di "spring" relativamente a "base", il che è come dire che abbiamo le coordinate locali di X. Il bello è che il codice funziona perfettamente come script controller, rendendo inutili ExposeTM e wire parameters. Strabiliante e deprimente al tempo stesso.

Grazie infinite per il tuo indispensabile aiuto, autonomamente chissà se e quando ci sarei arrivato...

Ciao

Flavio


Edited by Flavio Masi

Share this post


Link to post
Share on other sites

Se non ci fosse coren! Bisognerebbe inventarlo :D

Unico piccolo appunto: se le mie nozioni di mxs non mi hanno del tutto abbandonato potrebbe essere preferibile usare wire parameters (se possibile) al posto di script controller perché questi ultimi tendono ad appesantire il sistema quando cominciano ad essere tanti e magari lunghi. Giusto un consiglietto ecco :D

Share this post


Link to post
Share on other sites
Unico piccolo appunto: se le mie nozioni di mxs non mi hanno del tutto abbandonato potrebbe essere preferibile usare wire parameters (se possibile) al posto di script controller perché questi ultimi tendono ad appesantire il sistema quando cominciano ad essere tanti e magari lunghi.

L'avevo già letto da qualche parte - magari da queste parti. Non mi riesce però di utilizzare la riga di codice decifrato da coren come espressione in un wire parameters. Se noterò rallentamenti supplementari con gli script controller tornerò ad ExposetM, annessi e connessi...

Ciao e grazie anche a te per l'interessamento

Flavio

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...