Skocz do zawartości

Rekomendowane odpowiedzi

Napisano

Dlaczego jak daję "Copy Rotation" to brany jest pod uwagę znak skali obiektu, z którego kopiuję?

 

W załączniku przykład. Na początku obiekt, z którego brane są dane ma skalę w jednej osi -3. Drugi obiekt to jego kopia z takimi samymi parametrami. Drugi obiekt ma "Copy Rotation" z obiektu pierwszego. Już na początku widać, że jest on odwrócony, choć w 1 klatce oba powinny być tak samo zorientowane. Dalej w animacji jest specjalnie zrobione przejście skali obiektu pierwszego z ujemnej na dodatnią. I w momencie przejścia zmienia się także drugi obiekt. Co jedno z drugim ma wspólnego i jak zrobić, żeby pozbyć się tego problemu? Czyli jak zrobić, żeby oba obiekty wyglądały i obracały się tak samo przy skali ujemnej jednego i drugiego.

 

PS. Wolałbym żeby skala ujemna pozostała, bo w zasadzie dlaczego nie może być ujemna, jak to przecież normalna skala.

  • Odpowiedzi 12
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Napisano

Na ambicję wyjeżdżasz żeby ktoś się pofatygował. Pytanie jest trudne bo wszystko działa jak powinno a nie piszesz jak chciałbyś żeby działało. Skalowanie jest w koordynatach obiektu. Dla geometrii obiektu transformacje w Blenderze są prawdopodobnie liczone tak jak w większości aplikacji 3D czyli lrs, czyli przesunięcie, rotacja, skala. Masz więc obiekt dla którego najpierw jest obliczona pozycja, potem rotacja zmodyfukowana constrainem a potem skalowanie w lokalnych koordynatach obiektu czyli tak jak powinno być jak chcesz żeby było inaczej to użyj innego constraina który pozwala przemapować transformacje.

Nikt wcześniej nie odpowiedział bo pytanie jest błache i nie stanowi generalnie większego problemu w życiu fanatyków 3D.

Napisano

Nie wiem skąd zarzut, że to wjazd na ambicję. W końcu nikt nikogo nie zmusza do odpowiedzi. Równie dobrze nie zadawajmy w ogóle pytań, bo po co, jak prawie zawsze zadający pytanie chciałby poznać odpowiedź.

 

Druga sprawa to napisałem przecież jaki efekt chciałem uzyskać. Mam dwa obiekty identyczne. Chcę aby jeden i drugi obracał się dokładnie tak samo niezależnie od skali i pozycji, więc zrobiłem copy rotation. Okazało się jednak, że copy rotation jakimś cudem wykorzystuje skalę z obiektu, z którego bierze obrót. Nie wiem więc czy jest to takie proste i oczywiste, bo niby jakim cudem to co nie jest kopiowane ma wpływ na obiekt? Zwrócę ci jeszcze uwagę, że ten obiekt, który ma copy rotation nie jest tylko odwrócony np. o 180st. On jest odbiciem lustrzanym. Pomóż więc i powiedz mi jak to zrobić, żeby oba obiekty odwracały się jednocześnie przy ujemnej i dodatniej skali, bo dla mnie kopiowanie obrotu to kopiowanie obrotu, a nie skali i obrotu.

Napisano

No jak przeskalujesz na drugą stronę to oś się zmienia więc obrót jest już inaczej liczony. W takich sytuacjach stosuje się parenting do pustego obiektu i animuje się osobno skalowanie i osobno rotację, a constraina się robi do pustego.

Napisano

Problem jest ciężki,

podejrzewam że ma to związek ze środkiem transformacji obiektu i tym, że blender w constrainach takich jak copy scale i transformation, a także parentowaniu, nie pozwala na wartości scale które są ujemne (dlaczego? tego nie wiem). Nie wiem jak go rozwiązać, jeżeli nie masz potrzeby przeskalowania obiektu z - na + to przed nadaniem constrainta wciśnij ctrl + A i wybierz scale to obdata na obu kostkach

 

edit: dac77 pewnie nie przetestowałeś, ale jak już napisałem blender nie daje możliwości kopiowania ujemnych skali czy to przez parenting czy copy constrainty

Napisano

No tym razem szczuro mnie popiera i ma rację. Metoda z rozdzielaniem transformacji jest znana od dawna w 3D i zawsze działa. Testowałem to wielokrotnie w przypaku głównie gimbal locka również w Blenderze. Z tego co rozumiem człowiek potrzebuje tak przeskalować z - na + gdyż inaczej dlaczego by tak robił?

Napisano

No, czyli jedyny sposób to dodatkowy obiekt. Tak samo zrobiłem, ale liczyłem, że coś źle robiłem i dlatego mi nie działało. Szkoda tylko, że ktoś jakoś dziwnie zorganizował sprawę skali.

Napisano

odpowiedz jest prosta, przeksztalcenia sa przechowywane w postaci macierzowej

jest to macierz 4x4, w ktorej czesc odpowiadajaca obrotom zajmuje niestety to

samo miejsce co skala, skala lezy na przekatnej a odpowiednie skladowe x,y,z obrotow

nakladaja sie czesciowo na przekatna macierzy

tutaj mozesz sobie poczytac jak to jest skladowane:

http://www.fastgraph.com/makegames/3drotation/

 

rozlozenie przeksztalcenia na kilka oddzielnych macierzy pozwala wyciagnac

same obroty tak zeby uniezaleznic je od znakow skali na przekatnej macierzy bazowej

... i stad twoje klopoty

Napisano

Tak myślałem, że problemem mogą być te macierze transformacji. Tylko nie wiedziałem, że copy rotation kopiuje tę macierz, a nie same dane o obrocie.

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