Thanks for the reassurance and the explanation. My code is working
well now and I'm very happy with it. I hardly had to change
anything, so that makes me think I got it right.
I do kind of wish I could always have my orbits be around the center
of my scene rather than the center of the view. I typically only
have one blob of stuff in my entire scene and it would be nice to
make it look like my blob of stuff is being rotated rather than I'm
orbiting the camera around some arbitrary center point (which starts
at the center of my blob but can be moved by a pan).
Cory
On 10/20/2010 2:24 AM, Tim Moore wrote:
On Mon, Oct 18, 2010 at 10:23 PM, Cory Riddell <[email protected]>
wrote:
I've been plowing
through this and I can almost get what I need, I just don't
entirely understand a couple of things.
Is it safe to think of the view matrix as the camera
position and orientation? By doing so, I think I understand
SphericalManipulator::getMatrix() method. It returns:
As was mentioned recently, the view matrix is actually the
inverse of camera position and orientation in the world. You
can also think of it as the position and orientation of the
world in eye space. The "matrix" returned by the manipulator
classes is the camera pose; the matrix returned by
getInverseMatrix() is the view matrix.
This manipulator has two parameters - heading and elevation.
Heading is the angle from the x-axis in the x-y plane and
elevation is the angle from the x-y plane (pi/2 would give
you the z-axis).
If I want the x-axis to be up rather than the z-axis, I add
an additional rotation:
Am I tinkering with the right stuff here? (I've also made
the appropriate change to my getInverseMatrix() method.)
Yes, that looks fine.
Tim
It's feeling ok, but I do need to make more changes to the
manipulators code that handles pans.
Cory
On 10/15/2010 5:03 PM, Cory Riddell wrote:
I have been using the
SphericalManipulator and it works really well for my
application.
One thing I would like to do is change which direction
is up. The default is Z == up. Sometimes I want X to
be up. If I understand the code, I need to make fairly
extensive modifications to the existing manipulator.
Before I start down that road, I just wanted to ask if
that sounds right. I'm hoping I'm not missing some
place where I obviously just need to apply some
transformation matrix.
I actually want my entire scene to go sideways, not
just orbit up and down on my screen rather than right
and left. For example, if I were modeling a pencil
(coaxial the z axis), I sometimes want it standing on
end, and sometimes lying on its side on my screen.