Sign in to follow this  
Joey P

[Open GL ES 2.0] Set camera position with SetLookAtM() giving goofy results

Recommended Posts

Hi all,

First post here.In my Renderer class I have these vars:

[source lang="java"]
// Direction of camera
private float lookX = 0.0f;
private float lookY = 1.0f;
private float lookZ = 0.0f;

// Camera tilt
private float upX = 0.0f;
private float upY = 0.0f;
private float upZ = 1.0f;

// Position of camera
private float eyeX = 0.0f;
private float eyeY = 0.0f;
private float eyeZ = 0.0f;[/source]
Then to set the view matrix I use:

[source lang="java"]
Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, lookX, lookY, lookZ, upX, upY, upZ);[/source]

This all works perfectly well if eyeX, eyeY, and eyeZ are all set to 0. I can change the look vector and up vector when I want to rotate the camera position around and view the world. Works beautiful.

The problem is once I change the eyeX, eyeY, and eyeZ to some other arbitrary values so I can view my meshes from some place other than the origin, the rotations no longer work as expected. When I rotate the camera, all the meshes stay in view in front of me and just follow me.

What is it I need to do differently?

Thanks for any insights. Edited by Joey P

Share this post


Link to post
Share on other sites
Sounds like you expect the look vector to be the direction you want to view in but it is in fact the point you want to look at. I don't know if that's the case or not since I don't know the particular function you use, but that is how gluLookAt, and most other look at-functions i have seen, works.

Share this post


Link to post
Share on other sites
[quote name='Brother Bob' timestamp='1341092443' post='4954381']
Sounds like you expect the look vector to be the direction you want to view in but it is in fact the point you want to look at. I don't know if that's the case or not since I don't know the particular function you use, but that is how gluLookAt, and most other look at-functions i have seen, works.
[/quote]

Oh snap, you are right, I am passing in my direction vector into the values of lookX, lookY, and lookZ. And I'm passing in my position vector to the values eyeX, eyeY and eyeZ.

So I just changed it to
[source lang="java"]Matrix.setLookAtM(mViewMatrix, 0, eyeX, eyeY, eyeZ, eyeX + lookX, eyeY + lookY, eyeZ + lookZ, upX, upY, upZ);[/source]

And it works now :D Edited by Joey P

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this