Kayla Napisano 7 Kwiecień 2012 Napisano 7 Kwiecień 2012 Mam nadzieje, że dobry dział wybrałem na ten temat. Stworzyłem motionPath dla paru obiektów. uValue opisane jest w expressions i wygląda to mniej więcej tak: motionPath1.uValue = $pozycjaObiektuNaKrzywej; motionPath2.uValue = $pozycjaObiektuNaKrzywej + $odstepPomiedzyObiektami; motionPath3.uValue = $pozycjaObiektuNaKrzywej + $odstepPomiedzyObiektami *2 ; Wszystko ma tworzyć coś na zasadzie gąsienicy. Oczywiście tych obiektów jest więcej, a co za tym idzie więcej linijek. Zastanawiam się, czy da się z tego zrobić pętlę na zasadzie: for ($i=1; $i $motionPath + $i + ".uValue" = $pozycjaObiektuNaKrzywej + $odstepPomiedzyObiektami * $i; $motionPath + $i + ".uValue"= $pozycjaObiektuNaKrzywej + $odstepPomiedzyObiektami * $i; $motionPath + $i + ".uValue"= $pozycjaObiektuNaKrzywej + $odstepPomiedzyObiektami * $i; } Problem w tym, że Majka nie czyta $motionPath, bo w MELu ścieżka ma komendę PathAnimation i chyba nie czyta się to wszystko prawidłowo, a przynajmniej ja nie wiem jak to poprawnie zrobić ;) Jakieś pomysły albo wskazówki?
ca mel Napisano 7 Kwiecień 2012 Napisano 7 Kwiecień 2012 coś takiego wrzuć w expression, powinno pomóc :) $pozycjaObiektuNaKrzywej = frame * 0.01; $odstepPomiedzyObiektami = 0.1; $iloscObiektow = 3; for ($i = 1; $i setAttr ("motionPath" + $i + ".uValue") ($pozycjaObiektuNaKrzywej + $odstepPomiedzyObiektami * ($i-1) ); // przy okazji drobne poprawki kodu: // jeśli zaczynasz indeksować obiekty od 1 pierwszy odstęp pierwszego elementu musi być 0, stad $i-1, // pętla musi zatoczyć się zamkniętą ilość razy, więc
Kayla Napisano 7 Kwiecień 2012 Autor Napisano 7 Kwiecień 2012 Dzięki za odpowiedź. Ustawiając $pozycjaObiektuNaKrzywej pod frame działa, ale jak podpinam to pod ruch kontrolki, to Majka nie wyrzuca żadnego błędu, ale nie działa. Wygląda u mnie to tak: $pozycjaObiektuNaKrzywej = kontrolka.translateZ; $predkosc = kontrolka.predkosc; $odstepPomiedzyObiektami = 0.1; $iloscObiektow = 3; for ($i = 1; $i setAttr ("motionPath" + $i + ".uValue") ((($pozycjaObiektuNaKrzywej + $odstepPomiedzyObiektami * ($i-1)) % $predkosc) / $predkosc ); Co robię źle?
ca mel Napisano 7 Kwiecień 2012 Napisano 7 Kwiecień 2012 Nie wiem, programistycznie wszystko jest ok. Zakładam, że kontrolka to jakiś locator albo inny obiekt z dodanym atrybutem prędkość, więc może tu masz coś nie tak. Albo nie zmieniasz wartości translateZ tejże kontrolki, a od niej teraz zależy ruch kubików. Dołączam scenę w zipie maya2012, najlepiej rozkmiń to sobie na przykładzie ;] _tst.zip 1
Kayla Napisano 7 Kwiecień 2012 Autor Napisano 7 Kwiecień 2012 Już rozumiem. Kiedy wartość każdego motionPath była zdefiniowana osobno, można było ręcznie przesuwać kontrolkę w scenie bez konieczności robienia kluczy. Nie wiem czemu przy setAttr trzeba animować ruch kontrolki, ale ważne że działa ;) Dziękuję za pomoc. //edit Chyba już jednak rozumiem, nie może tego pewnie liczyć na bierząco, bo by się zapchała Majka.
ca mel Napisano 7 Kwiecień 2012 Napisano 7 Kwiecień 2012 To nie tak, expression działa tylko przy zmianie klatki, więc żeby zaczęła wykonywać kod w nich zawarty musisz wcisnąć play. Kiedy jednak wciśniesz, znikną manipulatory którymi mógłbyś przesuwać kontrolkę. Tak więc w przykładowym pliku wstawiłem klucze, po to żeby zapewnić ruch po osi Z. Jeśli nie chcesz wstawiać kluczy, tylko sprawdzić expression z ręcznym ruchem, możesz przestawić mayę w tryb pracy interactive playback, jest takie polecenie gdzieś w menu, chyba dynamic / solvers Ewentualnie przesuwaj kontrolkę i od razu zmieniaj ręcznie timeline o jedną klatkę. Wygodnie zrobić sobie skróty dla frame up/down.
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ę