PDA

Visualizza Versione Completa : Crescita non lineare



Moleskine
15-11-07, 11:18
Ho cercato un po' sul forum ma non sono riuscito a trovare una risposta ad una mia esigenza...

E' possibile crearsi una curva X e Y (non legata alla timeline) e usarla per una crescita non lineare di un valore?

Esempio in pratica: ho un controllo slide con un valore che va da 0 a 100, quando sono a 0 e a 100 ho bisogno di avere ZERO e quando la slide è a 50 ho bisogno di avere CENTO...

Magari è una cavolata ma non trovo la soluzione...

gebazzz
15-11-07, 14:58
sicuramente si può fare collegando lo slide ad un canale del null e quel canale del null al canale dell'oggetto che devi modificare mediante espressione..

vashts

Moleskine
15-11-07, 16:56
Ciao Vashts, ho iniziato a fare un po' di prove con le espressioni e in effetti credo di essere arrivato vicino alla soluzione ma ho un problema, ti spiego cosa ho fatto qua sotto:

[Null.Position.X] è il risultato diretto dello Slide

Null.SplineInfluence é la curva con cui controllerei il risultato dello Slide

Frame - Frame + 5 è il meccanismo che mi sono immaginato per poter "staccare" la curva dalla time line controllandola con una variabile che andrebbe messa la posto del 5.

Il problema arriva proprio qua fino a quando nell'espressione c'è un valore definito non mi da errore, se provo a sostituire il 5 con una variabile, ad esempio:

( [Null.SplineInfluence,Frame - Frame + [Null.Position.X]] )

Mi dice Error in time argument.
Forse non ne vuole sapere di addizionarci una variabile oppure il formato del numero che deve addizionarsi a "Frame" non è corretto, ho fatto delle prove di conversione (int, num, ect)ma sono troppo acerbo di Lscript per tiraci fuori qualcosa... uff

gebazzz
15-11-07, 18:59
per l'errore, credo proprio che tu debba aggiungere ",Frame" a "Null.Position.X", visto che quel canale non è una costante ma a sua volta una variabile che cambia sulla timeline (o potrebbe cambiare)..

vashts

Moleskine
15-11-07, 19:38
Dici così?
( [Null.SplineInfluence,Frame - Frame + [Null.Position.X,Frame]] )

No mi da l'errore evidenziando il punto...

( [Null.SplineInfluence,>>>Frame - Frame + [Null.Position.X,Frame<<<]] )

Ormai ho risolto manualmente al problema comunque domani a mente fresca mi ci rimetto, mi è già risuccesso di averne bisogno per animare oggetti in modo non lineare... (oddio non tutti i giorni, però...)

Vashts grazie comunque

Moleskine

loriswave
16-11-07, 11:06
Prova a guardare Cycler, potrebbe fare al caso tuo.
Per l'errore mi sembra che si dovrebbe scrivere così:
( [Null.SplineInfluence,Frame] - Frame + [Null.Position.X,Frame] )

Ma non ho controllato perchè non ho sotto mano LW.

Moleskine
16-11-07, 16:03
Ciao Loriswave, la stringa così in effetti non da errore però fa una altra cosa, al valore che restituisce Null.SplineInfluence,Frame ci toglie il valore di frame e ci aggiunge il valore di Null.Position.X,Frame
io vorrei che Null.Position.X,Frame fosse tolto dal valore del Frame per "fermare il tempo" alla curva Null.SplineInfluence
Appena ho un attimo faccio qualche provetta :D

Grazie comunque a tutti!

Moleskine
17-11-07, 14:09
:confused: Mi sa che io e il Lscript non siamo compatibili... Mi sono studiato un po' LScriptReference.pdf e LScriptUserGuide.pdf, e ho fatto un po' di prove.
Con il modeler qualcosa ci salta fuori, ma nel layout per me è un dramma, anche facendo copia e incolla dal manuale mi da degli errori... non capisco.
uff...

Non vado oltre al "Hello World!"

mikadit
17-11-07, 14:44
Non potresti postare un file di puro riferimento? Lo potremmo usare come base.
Hai provato con Relativity?

Moleskine
17-11-07, 17:32
Ciao mikadit, grazie anche a te per l'interessamento.

Relativity è un plug interno o esterno?

Alla fine vorrei ottenere questa cosa qua:

Avere un slider che restituisca valori frutto di una curva ad esempio:

Slider....Valore
0% ----> 0
25% ---> 30
60% ---> 0
75% ---> 100
100% --> 0

Allego la scena che utilizzo per il test, ci sono due null. Uno collegato ad uno slider e l'altro che dovrebbe essere influenzato dallo slider 'modificato'.

L'espressione è sull'oggetto Null.Position.Y

Grazie mille

PS: Ribadisco che non è più urgente però forse può far comodo una volta che il metodo c'è! :D

Moleskine

Delirium_Fx
21-11-07, 14:11
Avrei una mezza idea... però non sono sicuro di aver ben capito il problema, sai l'età :D !
Well.

- Tu vuoi una curva, con andamento qualsiasi, nel range -ipotizziamo- da 0 a 20 frame;

- Mediante uno slider da 0% a 100% , dove 0% coincide con l'inizio della curva e il 100% alla sua fine, per leggere il valore della curva alla percentuale X dello slider, giusto?

- Il valore ricavato dalla curva, lo vuoi usare per aumentare, diminuire, moltiplicare, dividere il valore di un canale di un oggetto durante l'animazione? Oppure deve sostituire in toto il valore presente in un canale?

Se puoi, allega la scena con la soluzione "manuale" al problema, così mi chiarisco le idee :D.
Bye!
Mark.

Moleskine
21-11-07, 17:43
Ciao Mark, esatto hai capito in pieno, vorrei un valore di una curva da moltiplicare o addizionare o dividere o sottrarre al valore di un canale con l'andamento dello slider.

Devo essere sincero, siccome mi appassiono alle cose più del necessario, ho scaricato tutto la documentazione di Lscript (che mi è poco chiara...) e mi sono anche scaricato un manuale di "C", annesso compilatore e sto leggendo l'SDK di LW però in questo caso credo che una espressione corretta sia più che sufficente! :D

La scena di test è già scaricabile dal post #10.

Grazie per l'interessamento!!
Moleskine

loriswave
21-11-07, 18:29
Mi sono scaricato la scena e appena posso ci do un occhiata, diciamo però che in linea generale scrivere un espression che dato un valore ( posizione di un null o valore di uno slider ) restituisca una curva con variazioni sia in alto che in basso rispetto ad un valore iniziale richiede oltre ad una conoscenza degli script, anche una conoscenza di matematica che a volte mi manca.
Un conto è dire dato un valore iniziale moltiplicalo per due e sottrai 5 ( che ha una corrispondenza lineare ) un conto è intervenire con seni e coseni in modo da costruire curve. Detto questo ti consiglio nuovamente di dare un occhiata a cycler ( motion modifier ) o ikbooster link ( channel modifier ) che ti permettono di dare una serie di kay frame al null che vuoi controllare ( e perciò costruire una curva liberamente ) e poi applicare questa curva in base alla posizione/rotazione/scala di un altro elemento.
é piu o meno quello che faresti con una espressione con la differenza che non devi costruire uuna espressione che descriva la curva, ma la costruisci con i key frame dell' oggetto. con cycler i key frame li puoi anche mettere in posizione negativa in modo che non compaiono nello scene editor.

Moleskine
21-11-07, 18:40
Ciao Loris, infatti io non vorrei utilizzare una curva tipo seno o coseno per influenfare l'andamento dei volori dello slider, ma una curva disegnata nel graphic-editor.
Il cycler (se non sbaglio) mi ripete una curva legata alla timeline, cioè se ho una sinusoide lunga 10 frames collegata con un canale questo varierà continuamente seguendo la curva e ripetuta per il tempo deciso nel cycler.

L'ikbooster non l'ho provato è da un po' che non lo apro e mi ricordo poco, do subito una occhiata al tuo tutorial!! è un sacco che lo voglio fare e non trovo il tempo! :g1:

loriswave
22-11-07, 10:13
cycler ti permette di più:
diciamo che hai un null che controlla che chiameremo controller. poi hai un null che viene controllato che chiameremo DF.
prendi DF e imposti un animazione dal frame -100 al frame -1. Dopo di che gli applichi cycler vai dentro le impostazioni e dici che l'animazione che vuoi utilizzare va dal frame -100 al frame -1, poi decidi quale canale del Controller deve guidare l'animazione e quale range di valore deve prendere in considerazione. Per esempio potresti decidere che il canale è la X e il valore va da 0 a 1 (come uno slider ). a questo punto puoi decidere se oltre quel valore voui andare in loop, stoppare, o andare ai valori di reset. In questo modo DF si muove, ruota e scala in base al valore che assume X del controller. L'ikboost lavora in maniera simile ma linka un canale ad un altro, non tutti i canali ad un solo canale come cycler.

O io non ho capito esattamente quello che vuoi o mi sembra che questi due strumenti facciano al caso tuo.

Moleskine
22-11-07, 11:50
Ho provato il cycler, ma mi sembra che non faccia al caso mio (oppure con buona probabilità sono un po' come le pine verdi.. Duro :D

Facciamo che spiego l'applicazione così capite meglio:

Ho un personaggio piatto come un foglio di carta colorato che verrà sempre inquadrato frontalmente che deve parlare.
La bocca disegnata è quella col sorriso al riposo, dietro al viso ci sono 3 layers, di 3 bocche in posizione differenti e l'effetto che voglio realizzare è quello dello stop motion con le bocche che vengono manualmente sostituite per le espressioni e per quando parla.
I tre layers delle bocche vorrei che da dietro avanzassero davanti al viso con un unico controllo così:

Slider --- Layer davanti al viso

0% ----- Niente
30% ---- Bocca A
60% ---- Bocca B
90% ---- Bocca C

A chiacchiere mi spiego male provate a vedere lo schizzo allegato

loriswave
22-11-07, 12:05
ok.
ci sono vari possibilità, la più veloce che vedo sono tre espressioni applicati agli oggetti bocca A, B,C.
non ho lw a lavoro ma dovrebbe essere più o meno una cosa del genere
lo slider restituisce valori che vanno da 0 a 1. perciò
Bocca A, canale posizione Z: (se slider maggiore di 0.3, ( se slider minore di 60 , nuova posizione , altrimenti vecchia), altrimenti vecchia)
Ovviamente la sintassi è sbagliata, ma il concetto è giusto. ripeti la stessa cosa per bocca B e bocca C variando i valori. si tratta di due if uno dentro l'altro.

In questo caso sono megli le espressioni perchè non c'è da costruire una condizione intemedia, la bocca o è presente o non lo è. con l'IF è facilmente realizzabile.
se riesco stasera ti facci un .LWS di esempio.

Delirium_Fx
22-11-07, 12:27
Penso di aver trovato la soluzione al problema grazie al tuo ultimo chiarimento.
Unico problema: sono al lavoro è potrò preparare una scena esplicativa solo questa sera... Ma se ci sono arrivato io, vedrai che ad arrivare a fine pomeriggio qualcuno posta la soluzione :yt:
Bye.
Mark.

--- che ti avevo detto? :D:D

Moleskine
22-11-07, 13:01
:eek: E' vero loriswave! In effetti quella della condizione non l'avevo presa in considerazione ma è quella più veloce senza dubbio.

Credo che sarà la soluzione che adotterò!

Grazie di nuovo a tutti!!

PS: Comunque se qualcuno trova la soluzione al problema di prima ben venga, credo che possa avere varie applicazioni !! :D :D :D

Delirium_Fx
23-11-07, 07:56
Ciao,
in allegato al post la scena con una proposta di risoluzione al tuo problema.
Le espressioni sono collegate ai canali Z dei Nulls che controllano le rispettive bocche. L'espressione è molto semplice, i valori che trovi in testa sono frutto di una mia pistolata :D nel senso che non ho pianificato per bene il setup degli oggetti e son saltati fuori 'sti numeri un po' a caso...
L'espressione è concepita in modo da funzionare su 4 intervalli dello slider, e cioè:

- Da 0 a 0.25 compreso, nessuna bocca visibile;
- Da 0.25 escluso a 0.50 incluso, bocca A visibile;
- Da 0.50 escluso a 0.75 incluso, bocca B visibile;
- Da 0.75 escluso a 1.00 incluso, bocca C visibile;

in questo modo non devi preoccuparti di arrivare con lo slider giusto sul valore che mostra la bocca desiderata,puoi guardare l'oggetto e far scorrere lo slider sino a quando non appare la bocca desiderata.

Spero di essere stato chiaro, in caso di dubbi scrivi :D

Al tuo primo quesito sto affinando la soluzione.

Bye.
Mark.

Moleskine
23-11-07, 13:25
:eek:... :D ... :clap:

Cavolo, hai fatto esattamente quello che mi serve e l'espressione è "U Gioiello!"

Complimenti Mark!
Mi accorgo di essere un po' in dietro con la parte di espressioni e Lscript :p , ma mi sto applicando :mmgh:!
Lo prendo come esempio e lo tengo lì, come l'espressione che qualche mese fa mi ha fatto Mikadit per l'auto-focus e che ogni tanto utilizzo!

Grazie mille!!!

Delirium_Fx
23-11-07, 13:41
Troppo buono.
Thanks.
:yoo:

Delirium_Fx
26-11-07, 09:03
Ciao,
in allegato al post troverai una proposta di soluzione al tuo primo quesito.
Non sono sicuro sia questo ciò che desideri ottenere, ma è quanto mi è venuto
in mente utilizzando solo le espressioni senza scomodare LScript :)
Bye. :yoo:

Mark.

Moleskine
26-11-07, 16:25
Cacchio, sono commosso!
Mi hai fatto esattamente quello che intendevo fare, FUNZIONA! :eek:

Sei un grande, ti sei anche sbattuto a fare un pdf per spiegare come funziona!
Non ho parole! Ora non posso perchè devo terminare un lavoro un pochino urgente, però appena ho un secondo me lo studio :mmgh:.
Così ho pure un esempio pratico di come funziona il channel expression, e io che mi ero anche scaricato il C da imparare... tu l'hai fatto senza scomodare il Lscript...
Veramente bravo!

Di nuovo grazissime (si dice grazissime? è uguale...) :D

Moleskine

Delirium_Fx
26-11-07, 19:49
E' stato un piacere.
Buon lavoro e buon studio.
Bye :yoo:

Mark.