Skocz do zawartości

śledzenie spline'a - path constraint się nie sprawdza... może jakaś alternatywa


MRK

Rekomendowane odpowiedzi

Witam,

Męczę się z tym już od kilku dni i już kompletnie nie wiem co więcej mógłbym wymyślić.

chodzi o sytuację gdzie w 360 klatkach dokonujemy obrotu NGon sześciokąta w kierunku zgodnym z ruchem wskazówek zegara. Jest to sześciokątne lustro. Następnie tworzę dummy który ma być punktem padania promienia lasera(zwykły spline) na lustro i również początkiem promienia odbitego. Chciałbym osiągnąć coś takiego że dummy będzie się poruszać jedynie w lini promienia padającego wydłużając go lub skracając w zależności od ułożenia lusterka, a jego pivot będzie ciągle przylegał do którejś ze ścianek lusterka. tj. pivot dummy będzie ciągle pokrywał się z linią boku Ngon'a

 

kiedy zrobiłem to za pomocą path constraint dla dummy leżącego na osi X- (najłatwiejszy przypadek) okazało się że niestety ale ma on też ruch w kierunku osi Y co powoduje że promień padający na lusterko za pomocą look at "pływa" i nie jest on skupiony w jednym punkcie tylko porusza się na boki tak jak dummy.

 

Za to jak napisałem dla tego samego warunku że dummy porusza się tylko lewo prawo po osi X funkcję w wire parameter to się okazało że tangens kąta obrotu lusterka * promień (prostopadły do boku lustra) jakby wynikało z wzorów też jest niedokładny bo nawet nie trzyma pivota dokładnie w lini choć porusza się wtedy tak jak założyłem tylko po osi X.

 

Za pomocą auto key wychodzi to mniej więcej ale może jest na to jakieś inne rozwiązanie, bo promień odbity w lusterku już udało mi się napisać w wire parameters i działa prawidłowo.

 

Kolejny problem to taki, iż docelowo promień padający ma być pod dowolnym kątem względem lusterka a w dodatku nie będzie on skierowany w pivot lusterka tylko powyżej tak jak jest to pokazane niżej.

laserscanning.gif

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 3
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Obawiam się, że jakkolwiek pierwszy i drugi odcinek promienia lasera, aż do styku z ngonem możesz zrobić ze zwykłych cylindrów, to już wyznaczenie styku ngona z promieniem lasera musisz zrobić ręcznie. Proponuję w miejscu styku umieścić dummy, którego jedna z osi będzie pokrywała się z osią z cylindra robiącego za laser. Tą metodą masz do animacji ruch dummy tylko w jednej osi. Ten dummy późnej posłuży jako look at target dla dalszego odcinka promienia lasera. Natomiast dalsza trajektoria odbicia lasera to już manualna animacja na kluczach z wykorzystaniem parametru look at. Innymi słowy pivot lasera jest na wysokości powierzchni fotoprzewodnika i się po niej porusza. Na razie zajmijmy się prawidłowym odbiciem, bez przepuszczania przez soczewkę skanującą. Otóż na początek zrób punkt startowy A i końcowy B na powierzchni fotoprzewodnika tak, jak prawidłowo wskazuje odbicie lasera, kierując look at constraint na dummy wskazującym miejsce styku z ngonem. Otrzymasz prawidłowy ruch promienia lasera. Następnie ulokuj soczewkę skanującą, tak, by prawidłowa trajektoria lasera pokrywała się na całej długości z podstawą soczewki (tą niewypukłą stroną). Następnie zrób kolejny promień lasera z wykorzystaniem nowego dummy i nowych punktów A1 i B1, jako początku i końca. Animując pivot i dummy ustal początkowe i końcowe położenie promienia lasera po jego załamaniu w soczewce. Jako punkt wyjścia proponuję sprawienie, by obie pozycje A1 i B1 lasera były równoległe do lasera bazowego, ale nieco przesunięte. Ważne, by oba lasery w momencie przechodzenia przez soczewkę prostopadle do jej powierzchni pokrywały się.

Reszta zabawy to już postprodukcja. Renderujesz animację obu promieni i resztę układu indywidualnie do warstw, po czym w Afterze lub innym sofcie do postprodukcji maskujesz promienie tam, gdzie jest ich niepotrzebne przedłużenie. odcinek lasera biegnący przez soczewkę tworzysz za pomocą animowanej maski w oparciu o krawędzie styku promienia wchodzącego i wychodzącego z soczewką.

 

Voila. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Odpowiedź jak śledzić przecięcie się dwóch prostych wygląda nieco inaczej,w kążdym razie dziękuję za podpowiedź ale jednak zrobiłem to po swojemu:

 

znalazłem równanie liniowe padającego lasera, następnie mając dwa punkty (dummy ) na wierzchołkach sześciokąta napisałem oto taki prosty wzorek dla dummy styku lasera padającego i początku odbitego z przypisanym parametrem position expression:

 

A=sqrt(3)/3 współczynnik nachylenia promienia padającego

 

b=57.73548654/25.4 parametr b promienia padającego wyliczony i zamieniony na cale bo tak program potrzebuje

 

d=((pos2.y-(pos1.y*pos2.x/pos1.x))/(1-(pos2.x/pos1.x))) parametr b funkcji liniowej opisującej krzywiznę jednego boku lusterka

 

C=(pos1.y-((pos2.y-(pos1.y*pos2.x/pos1.x))/(1-(pos2.x/pos1.x))))/(pos1.x) wsółczynnik kierunkowy funkcji liniowej opisującej krzywiznę jednego boku lusterka

a oto wzór postaci

[X, Y, Z]

 

[ (-(57.73548654/25.4)+(((pos2.y-(pos1.y*pos2.x/pos1.x))/(1-(pos2.x/pos1.x)))))/((sqrt(3)/3)-((pos1.y-((pos2.y-(pos1.y*pos2.x/pos1.x))/(1-(pos2.x/pos1.x))))/(pos1.x))), (sqrt(3)/3)*((-(57.73548654/25.4)+(((pos2.y-(pos1.y*pos2.x/pos1.x))/(1-(pos2.x/pos1.x)))))/((sqrt(3)/3)-((pos1.y-((pos2.y-(pos1.y*pos2.x/pos1.x))/(1-(pos2.x/pos1.x))))/(pos1.x))))+(57.73548654/25.4), 0]

 

co Ciekawe rozpisując w taki sposób swoje zjawisko możemy znaleźć punkt przecięcia w większości przypadków, jeśli tylko jesteśmy w stanie opisać krzywiznę przedmiotu wzorami matematycznymi;)

 

Prawda że proste ;)

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