Coody Napisano 10 Sierpień 2010 Napisano 10 Sierpień 2010 Witajcie. Mym proglemem jest to: Posiadam w animacji 3 plane'y. Czy jest możliwość jakaś, żeby "przesuwając" jeden plane w górę i w dół, kolejne dwa będą automatycznie podnościć opadać. Głębjej: Obiekty: plane1, plane2 oraz plane3. Wyjaśnienia: - plane1 - Najwyżej usadowiony. - plane2 - Niżej od plane1, dalej usadowiony. - plane3 - Niżej od plane2, dalej usadowiony.(najniżej) Dodatkowe info: Podobne jak byśmy przelewali wodę z jednaj szklanki do drugiej. Czyli, jak podniesiemy poziom plane1, "przelewa się" do plane2. Załóżmy że plane1 ma granicę do podniesienia o 1 cm, plane2 o 0.5 cm, plane3 o 0.2 cm. Działanie: plane1 chcemy podnieść o 2 cm (ale wlać możemy tylko o 1, ponieważ się wyleje). To co się wylewa, czyli brakujący centymetr podnosi wysokość plane2 o 1 cm, ale znowu powtarza się sytuacja. Dlaczego? Nie wiesz? No to tłumaczę: Plane2 może podnieść tylko wysokość o 0.5 cm, więc co się dzieje z pozostałym 0.5 cm? Odziałowuję na plane3 i podnosi się wtedy o 0.2 cm... 0.3 cm które zostało do podniesienia "znika". Problem: Czy jest możliwość napisania takiego algorytmu? Jak to będzie działać? Czy na live, czy potrzeba będzie renderować? Jak na żywo to jak to będzie działać? Chodzi mi o to czy trzeba by renderować to, czy da się na żywo to mieszać? Rozwiązanie łopatologiczne: Bazując na moim doświadczeniu z programowaniem (błehehehe) mogę napisać jak to widzę ;) int ile,resztki=0; poziom_plane1=0; poziom_plane2=0; poziom_plane3=0; granica_plane1=2; granica_plane2=1; granica_plane3=0.5; wpisz(ile); if ile>granica_plane1 { ile=ile-granica_plane1; poziom_plane1=granica_plane1; { if ile>granica_plane2 { ile=ilei-granica_plane2; poziom_plane2=granica_plane2; { if ile>granica_plane3 { ile=ile-granica_plane3; poziom_plane3=granica_plane3; }}}}}; No coś takiego, ale nie wiem jak przekładać to na język w blenderze (hehe to jest kombinacja wszystkich języków jakie znam ;) Sorki za ortografię. Proszę o rozpatrzenie tego problemu, oraz podesłania swoich włąsnych pomysłów, prostrzych, bądź bardziej rozbudowanych. Dziękuję i czekam na wiadomości...
szczuro Napisano 10 Sierpień 2010 Napisano 10 Sierpień 2010 (edytowane) nie chce mi sie zagłębiać w algorytm :P ale spróbuj constrainami copy location i limit location ewentualnie transformation ;) to bedzie dzialac w realtime http://wiki.blender.org/index.php/Doc:Manual/Constraints w pythonie raczej da sie napisać przesuwanie na kolejnych klatkach czyli będzie działać pod alt+a albo renderze Edytowane 10 Sierpień 2010 przez szczuro
ArturM Napisano 10 Sierpień 2010 Napisano 10 Sierpień 2010 Nie wiem czy Cię dobrze zrozumiałem i nie bardzo mam czas tak w środku dnia - ale może o coś takiego chodzi? Wciskasz 'P' i potem 'W' i 'S' dodajesz i ujmujesz 0.1 z 'ile' - po 'przelaniu' plane1 napełnia się 'plane2' itd. Starałem się maksymalnie łopatologicznie to napisać - w razie czego wal - pomogę ile dam radę. Założyłem, że 'na live' znaczy, że chcesz to w Blender Game Engine mieć. Tak?
dac77 Napisano 10 Sierpień 2010 Napisano 10 Sierpień 2010 Poczytaj o constrainach. Jak się czyta manuale to wszystko jest proste.
ArturM Napisano 10 Sierpień 2010 Napisano 10 Sierpień 2010 (edytowane) @dac77: Hmm, a możesz coś więcej napisać? Myślałem trochę, ale nie mam pojęcia jak to zrobić 'normalnymi' constrainami. @Coody: Ruszaj Emptym w załączonym pliku. W 'Options' można sobie ustawić pozycje początkowe plejnów i ich limity ruchu. @all: Proszę się nie śmiać - to mój pierwszy PyConstrain i pewnie wszystko jest dookoła głowy robione - ale chiba działa :D Komentarze i wytknięcie większych błędów mile widziane. EDIT: Aaa, bo zapomniałem: Ruszanie jest Emptym, bo nie umiem w constrainie wyłapać ruchu dalej - dopóki plane1 jedzie w górę to mam jego pozycję, a jak się plane1 'wypełni' i zatrzyma to nie wiem skąd wziąć dane o dalszym przesunięciu mychy. Anyone? Edytowane 10 Sierpień 2010 przez ArturM
dac77 Napisano 11 Sierpień 2010 Napisano 11 Sierpień 2010 Dla prostych rzeczy wystarczy Transformation. Dla skomplikowanych Script.
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ę