Skocz do zawartości

contlorer bezier czasu animacji, skalowanie prędkości całej animacji


claude

Rekomendowane odpowiedzi

Trochę nie wiem jak to napisać, jest tak banalne że nawet tego nie wiem.

 

 

Mam już zrobioną animacje wielu obiektów i chcę ja razo przyśpieszyć raz zwonlnić. Trudno jest wchodzić w track view kiedy sie ma 400 obiektów i skalować czas kluczy.

 

Jaki dodać kontroler który w łatwy sposób skalował by mi czas animacji określonych obiektów lub całej aniamcji.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 8
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Dzięki za odkrycie fajnej opcji ale nie o to mi chodzi.

 

Chcę mieć krzywą skalującą czas/prędkość animacji określonych obiektów. Chcę to robićprecyzyjnie. Chcę robić swego rodzaju slow motion w maxie ale mam za dużo obiektów aby skalować klucze kazdego z osobna.

 

Znalazłem tutorail gdzie pokazują Motion Mixer i tam jest taka opcja. Może jednaj jest jakieś prostsze rozwiązanie.

Odnośnik do komentarza
Udostępnij na innych stronach

Normalnie w maxie się nie da tak spod palca. Na CGtalk wygrzebałem działający skrypt, który powinien Ci przypasować:

tu cały wątek:

http://forums.cgsociety.org/archive/index.php/t-849093.html

 

A tu sam post o którym wspomniałem:

 

I did it a bit diferent and works perfect:

Short description:

 

create a point named $WarpNullthePoint=Point name:"WarpNull" with this script:

 

 

thePoint=Point name:"WarpNull"

xxx = attributes Custom_Attributes

(

parameters main rollout:params

(

WarpAmount type:#float ui:WarpAmount default:0.0

)

rollout params "Custom_Attributes"

(

spinner WarpAmount "WarpAmount" type:#float )

)

CustAttributes.add thePoint xxx

 

 

 

 

Select All objects that you want to be affected by Time Warp and run this script:

 

 

for obj in $ do (

 

ts=position_script()

theScript=("dependson $WarpNull.pos.controller \nat time (($WarpNull.position.x) as time) $"+obj.name+".pos.controller.Position_XYZ.controller.value")

obj.pos.controller = position_list ()

obj.pos.controller.Available.controller = ts

ts.script=theScript

ts=float_script()

obj.pos.controller.weight[2].controller=ts

ts.script="$WarpNull.Custom_Attributes.WarpAmount/100"

ts=float_script()

obj.pos.controller.weight[1] .controller=ts

ts.script="1-($WarpNull.Custom_Attributes.WarpAmount/100)"

 

ts=rotation_script()

theScript=("dependson $WarpNull.pos.controller \nat time (($WarpNull.position.x) as time) $"+obj.name+".rotation.controller.Euler_XYZ.controller.value")

obj.rotation.controller = rotation_list ()

obj.rotation.controller.Available.controller = ts

ts.script=theScript

ts=float_script()

obj.rotation.controller.weight[2].controller=ts

ts.script="$WarpNull.Custom_Attributes.WarpAmount/100"

ts=float_script()

obj.rotation.controller.weight[1] .controller=ts

ts.script="1-($WarpNull.Custom_Attributes.WarpAmount/100)"

 

ts=scale_script()

theScript=("dependson $WarpNull.pos.controller \nat time (($WarpNull.position.x) as time) $"+obj.name+".scale.controller.Bezier_Scale.controller.value")

obj.scale.controller = scale_list ()

obj.scale.controller.Available.controller = ts

ts.script=theScript

ts=float_script()

obj.scale.controller.weight[2].controller=ts

ts.script="$WarpNull.Custom_Attributes.WarpAmount/100"

ts=float_script()

obj.scale.controller.weight[1] .controller=ts

ts.script="1-($WarpNull.Custom_Attributes.WarpAmount/100)"

)

 

 

 

By animating POSITION X of the WARP point you get speed change

By animating WARP AMOUNT CUSTOM ATTRIBUTE you can controll hou much warp affects original animation

 

Check Attached scene to see the results and CHANGE TIME UNITS TO FRAMES:TICKS ! to get smooth motion

  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

jeszcze go nie sprawdziłem zajęty jestem czymś innym...

 

Próbowałem zapisywać animacje do pliku żeby póxniej bawić się w Motion Mixer ale kilka razy komputer już zawiesił się na zapisywaniu.

 

Ten skrypt to moja szansa. Na pewno są mądrzy skrypciarze na tym forum.

Odnośnik do komentarza
Udostępnij na innych stronach

Coś musiało się stać gdy przeklejałem skrypt tutaj na nasze forum.

Ze skryptem tworzącym nulla nie było problemu.. z tym podpinającym kontrolery animacji coś się kaszaniło.

Skopiowałem z oryginalnego wątku z CGtalk i wkleiłem do maxa.. ŚMIGA JAK MARZENIE :)

 

NAPISZĘ JAK TO UGRYŹĆ PO NASZEMU

 

1. odpalamy skrypt tworzący nulla w scenie w pozycji 0,0,0

 

thePoint=Point name:"WarpNull"

xxx = attributes Custom_Attributes

(

parameters main rollout:params

(

WarpAmount type:#float ui:WarpAmount default:0.0

)

rollout params "Custom_Attributes"

(

spinner WarpAmount "WarpAmount" type:#float )

)

CustAttributes.add thePoint xxx

 

 

2. zaznaczamy wszystkie obiekty, które chcemy timewrapować i odpalamy dla nich drugi skrypt:

 

for obj in $ do (

 

ts=position_script()

theScript=("dependson $WarpNull.pos.controller \nat time (($WarpNull.position.x) as time) $"+obj.name+".pos.controller.Position_XYZ.controller.value")

obj.pos.controller = position_list ()

obj.pos.controller.Available.controller = ts

ts.script=theScript

ts=float_script()

obj.pos.controller.weight[2].controller=ts

ts.script="$WarpNull.Custom_Attributes.WarpAmount/100"

ts=float_script()

obj.pos.controller.weight[1] .controller=ts

ts.script="1-($WarpNull.Custom_Attributes.WarpAmount/100)"

 

ts=rotation_script()

theScript=("dependson $WarpNull.pos.controller \nat time (($WarpNull.position.x) as time) $"+obj.name+".rotation.controller.Euler_XYZ.controller.value")

obj.rotation.controller = rotation_list ()

obj.rotation.controller.Available.controller = ts

ts.script=theScript

ts=float_script()

obj.rotation.controller.weight[2].controller=ts

ts.script="$WarpNull.Custom_Attributes.WarpAmount/100"

ts=float_script()

obj.rotation.controller.weight[1] .controller=ts

ts.script="1-($WarpNull.Custom_Attributes.WarpAmount/100)"

 

ts=scale_script()

theScript=("dependson $WarpNull.pos.controller \nat time (($WarpNull.position.x) as time) $"+obj.name+".scale.controller.Bezier_Scale.controller.value")

obj.scale.controller = scale_list ()

obj.scale.controller.Available.controller = ts

ts.script=theScript

ts=float_script()

obj.scale.controller.weight[2].controller=ts

ts.script="$WarpNull.Custom_Attributes.WarpAmount/100"

ts=float_script()

obj.scale.controller.weight[1] .controller=ts

ts.script="1-($WarpNull.Custom_Attributes.WarpAmount/100)"

)

 

 

3. W naszym helperku zmieniamy atrybut 'WrapAmaunt' na 100 .. to siła oddziaływania TimeWrapa na oryginalną animację.

 

4. Animując helperek w osi X kontrolujemy szybkość playbacku oryginalnej animacji. I to tyle :)

 

POWODZENIA i w razie czego śmiało pisz bo u mnie działa więc damy radę.

Edytowane przez Kris_R
Odnośnik do komentarza
Udostępnij na innych stronach

Oki.. wiem gdzie boli w razie czego.

Jak wkleję oryginalny skrypt do notatnika to jest oki. Ale jak wkleję tutaj na forum to formatowanie tekstu tworzy dodatkową spację w jakiś magiczny sposób.

 

w skrypcie są trzy długie linijki zaczynające przypisywanie kontrolerów dla poszczególnych składowych transformacji.. Position, Rotation, Scale. I w każdej z tych długich linijek na końcu jest niepotrzebna spacja w słowie controller... na forum widnieje CONTRO LLER. A musi być razem. Wtedy śmiga.

Jak póbuję edytować posta to jest razem.. nie ma tam spacji. Ale jak zapiszę, to wyświetla się ze spacją.. więc... zonk :)

 

No ale jest na to rada i powinno już wszystko być oki.

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności