Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!


1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


#Actualtom_mai78101

Posted 13 February 2014 - 06:26 AM

I got this information below from a blog that explains the view matrix and its properties.

 

To make a FPS camera, I can use one view matrix, the pitch, and the yaw.

 

By obtaining the eye coordinate in the 3D world, I can use the following pseudocode to create the view matrix:

yaw.toRadians()
pitch.toRadians()
 
Vec3 xAxis = {cos(yaw), -sin(pitch)*sin(yaw), -cos(pitch)*sin(yaw)}
Vec3 yAxis = {0, cos(pitch), -sin(pitch)}
Vec3 zAxis = {sin(yaw), sin(pitch)*cos(yaw), cos(pitch)*cos(yaw)}
 
viewMatrix = {
    xAxis.x, yAxis.y, zAxis.x, 0,
    xAxis.y, yAxis.y, zAxis.y, 0,
    xAxis.z, yAxis.y, zAxis.z, 0,
    -dot(xAxis, eye), -dot(yAxis, eye), -dot(zAxis, eye), 1
}
 

However, when I try to implement this in my code, I get weird results:

 

calnseo.png

brNrOxI.png

 

I can't turn left and right correctly to see the entire green rectangle box. I can look up and down, but the view would get distorted and revolves around my head like a planet revolving around a star. My view is stuck facing at a specific field of view, and I don't know why.

 

My eye vector is {0, 0, 40f}.

The green rectangular box is 112 wide, 16 high. When looked upon from the eye position, I should be able to see all of the box.

 

I don't really know how to fix this. How do I turn and look up/down properly?


#1tom_mai78101

Posted 13 February 2014 - 06:23 AM

I got this information below from a blog that explains the view matrix and its properties.

 

To make a FPS camera, I can use one view matrix, the pitch, and the yaw.

 

By obtaining the eye coordinate in the 3D world, I can use the following pseudocode to create the view matrix:

 

yaw.toRadians()
pitch.toRadians()
 
Vec3 xAxis = {cos(yaw), -sin(pitch)*sin(yaw), -cos(pitch)*sin(yaw)}
Vec3 yAxis = {0, cos(pitch), -sin(pitch)}
Vec3 zAxis = {sin(yaw), sin(pitch)*cos(yaw), cos(pitch)*cos(yaw)}
 
viewMatrix = {
    xAxis.x, yAxis.y, zAxis.x, 0,
    xAxis.y, yAxis.y, zAxis.y, 0,
    xAxis.z, yAxis.y, zAxis.z, 0,
    -dot(xAxis, eye), -dot(yAxis, eye), -dot(zAxis, eye), 1
}
 

 

 

However, when I try to implement this in my code, I get weird results:

 

calnseo.png

brNrOxI.png

 

I can't turn left and right correctly to see the entire green rectangle box. I also can't look up and down. My view is stuck facing at a specific direction, and I don't know why.

 

My eye vector is {0, 0, 40f}.

The green rectangular box is 112 wide, 16 high. When looked upon from the eye position, I should be able to see all of the box.

 

I don't really know how to fix this. How do I turn and look up/down properly?


PARTNERS