claude Napisano 30 Czerwiec 2010 Napisano 30 Czerwiec 2010 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.
Plugawiciel Napisano 30 Czerwiec 2010 Napisano 30 Czerwiec 2010 prawy klawisz myszy /klik na listiwe , a potem mozesz tym suwakien na doel skalowac ( niewiem czemu to oppcja domysle jest showana :/)
claude Napisano 30 Czerwiec 2010 Autor Napisano 30 Czerwiec 2010 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.
Kris_R Napisano 30 Czerwiec 2010 Napisano 30 Czerwiec 2010 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 1
claude Napisano 30 Czerwiec 2010 Autor Napisano 30 Czerwiec 2010 Kris_R - dzięki za ten skrypcik, zaraz go wypróbuje, aż dziwie się że nie ma takiego cuda wbudowanego w maxa wydawało by się bardzo logiczna rzecz. łap repa
Kris_R Napisano 30 Czerwiec 2010 Napisano 30 Czerwiec 2010 Za szybko się ucieszyliśmy... na nie znam się na skryptach ale gdzieś jakiś błąd po drodze mi wywala. Musiałby tu ktoś zajrzeć i zdebugować dziada.
claude Napisano 30 Czerwiec 2010 Autor Napisano 30 Czerwiec 2010 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.
Kris_R Napisano 30 Czerwiec 2010 Napisano 30 Czerwiec 2010 (edytowane) 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 30 Czerwiec 2010 przez Kris_R
Kris_R Napisano 30 Czerwiec 2010 Napisano 30 Czerwiec 2010 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
Rekomendowane odpowiedzi
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ę