Autor Wątek: Obrót obiektu na podstawie wartosci UV.  (Przeczytany 758 razy)

Offline problematyk

  • Użytkownik

# Marzec 09, 2012, 19:54:23
Witam.
mam obiekt (kule) z nałożoną textura..
podczas klikniecia na ow obiekt potrafie pobrac wartosci UV miejsca kliknietego(0-1x, 0-1y)..
na podstawie tego chcialbym obracac owa kule zeby punkt z uv byl prostopadły do kamery..
dla przykłady jesli orientacja obiektu rowna sie rotX = 0, rotY = 0, rotZ = 0(choc ta plaszcyzzna i tak nie bedzie sie obracac) a wartosc uv to np {u:0.5, v:0.5} to obrocic ow obiekt o 180st wokół osi Y..  obrotu wokół osi X w tym przypadku byc nie powinno gdyz v0.5 to dokladnie srodek.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Avaj

  • Użytkownik

# Marzec 09, 2012, 20:07:05
potrzebujesz dwa wektory:

front - tam gdzie patrzy kamera, znormalizowany
wektor od środka kuli do klikniętego punktu, też znormalizowany

liczysz cross(-front, promien) - otrzymujesz wektor będący osią obrotu
liczysz acos(dot(-front, promien)) - otrzymujesz kąt obrotu

Offline problematyk

  • Użytkownik

# Marzec 09, 2012, 20:53:28
dzwoni, ale w ktorym kosciele...


p = punkt 0,0 calego układu..
kamera zaczpiona(skierowana) jest lookAt na punkt 0, 0
zielona linia od kamery do kuli to prosta ktora potrafie przeprowadzic.. malo tego wyliczenie punktu "a" czyli punktu docelowego nie jest trudne..
punkt b to punkt uv "znaleziony" na UV(ale ciagle to koordynaty od 0-1 dla u i V)
aczkolwiek odpowiednia modyfikacja (przemnozenie punktow z kuli) do koordynatow swiata daje mi dane "wlasciwe" wiec mam dwa punkty na kuli (wlasciwosci X, Y, Z) pozostaje kwestia "zblizenia" czyli odpowiedni obrot kuli zeby punkt z UV znalazl sie w miejscu przeciecia rownoleglego promienia z kamery do punktu 0, 0.