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

Started by
1 comment, last by Joey P 11 years, 9 months ago
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.
Advertisement
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.

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.


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

This topic is closed to new replies.

Advertisement