Skocz do zawartości

Maya motionPath expressions


Kayla

Rekomendowane odpowiedzi

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?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 5
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Popular Days

Top Posters In This Topic

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

Odnośnik do komentarza
Udostępnij na innych stronach

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?

Odnośnik do komentarza
Udostępnij na innych stronach

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

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

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.

Odnośnik do komentarza
Udostępnij na innych stronach

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.

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