0

Assume eye position e, gaze direction g, view-up vector t, right-handed base. As the graphs shows: enter image description here enter image description here

$w=-\frac{g}{||g||}$
$u=\frac{t\times w}{||t\times w||}$
$v=w\times u$

I am really confused about the 2nd equation $u=\frac{t\times w}{||t\times w||}$.
What if the camera rotate around its gaze direction? The v rotates while the t stays the same.
Then the vector t will not in the plane that w and v lies in which means the second equation is wrong.

I know I have something misunderstood.
Could someone please give me some clues?

AlexWei
  • 237
  • 2
  • 7
  • @NicolBolas Sorry. I have made a mistake. I have edited my question. "Then the vector t will not in the plane that w and u" should be "Then the vector t will not in the plane that w and v" – AlexWei Oct 05 '18 at 02:01
  • It isn't supposed to be in that plane. W is the direction of the view. V is supposed to be to the right of the view. If T is up, you can't have the right of the view in the same plane as up. – Nicol Bolas Oct 05 '18 at 02:04
  • @NicolBolas I have added two pictures. The v here is top of the view. – AlexWei Oct 05 '18 at 02:16

1 Answers1

1

What if the camera rotate around its gaze direction? The v rotates while the t stays the same.

The camera's orientation is defined by two directions: g and t. If the camera "rotates around its gaze direction", g will not be changing; that is what it means to "rotate around its gaze direction". If g isn't changing, and the camera's orientation is defined by two directions, then you can only get a different orientation if t is changing.

Therefore, your second statement is a contradiction of the first. Changing t is precisely how you cause the camera to "rotate around its gaze direction".

To put it a different way, there are changes to t which will not affect the values of u, v, or w. However, none of those changes will cause the camera to "rotate around its gaze direction".

Nicol Bolas
  • 9,762
  • 18
  • 25
  • I have seen many tutorials set t as Vector.up(0,1,0) in world space. So that only means the camera is put straight. The Vector.up(0,1,0) can't set up a camera with rotation around gaze direction. Have I understood your idea properly? – AlexWei Oct 05 '18 at 03:06
  • "If g isn't changing, and the camera's orientation is defined by two directions, then you can only get a different orientation if t is changing." So if I want to set up a camera with rotation around gaze direction, the t should be set other than Vector.up(0,1,0)? – AlexWei Oct 05 '18 at 03:08