Napisano 7 Kwiecień 201212 l 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?
Napisano 7 Kwiecień 201212 l 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
Napisano 7 Kwiecień 201212 l Autor 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?
Napisano 7 Kwiecień 201212 l 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
Napisano 7 Kwiecień 201212 l Autor 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.
Napisano 7 Kwiecień 201212 l 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.
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto