• Advertisement
Sign in to follow this  

FPS Camera calculations problem

This topic is 1440 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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?

Edited by tom_mai78101

Share this post


Link to post
Share on other sites
Advertisement

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
}

Share this post


Link to post
Share on other sites

You threw me offguard with those boldfaced text. I thought that was the answer.

 

Thanks for your difficult answer, the problem is now fixed, and took a long time to see it.

Share this post


Link to post
Share on other sites
Well, I was highlighting the problem, not trying to confuse you... Maybe I should have written some text describing the problem, instead of just showing it. Edited by Álvaro

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement