Napisano 10 Sierpień 201014 l 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...
Napisano 10 Sierpień 201014 l 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ń 201014 l przez szczuro
Napisano 10 Sierpień 201014 l 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?
Napisano 10 Sierpień 201014 l Poczytaj o constrainach. Jak się czyta manuale to wszystko jest proste.
Napisano 10 Sierpień 201014 l @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ń 201014 l przez ArturM
Napisano 11 Sierpień 201014 l Dla prostych rzeczy wystarczy Transformation. Dla skomplikowanych Script.
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto