[osg-users] osg::Matrixd --> How to remove rotation for acertainaxis?
Thrall, Bryan
bryan.thrall at flightsafety.com
Mon Feb 4 11:09:33 PST 2008
Tobias Münch wrote on Monday, February 04, 2008 1:01 PM:
> This works, but only partially.
>
> All Object that are near the coordinate axes where fixed in rotation.
> But everything with a certain height above the axis zero level will
> be rotated. So the final images gets ugly distorted (Looks like it is
> sheared). I played a little bit with the values and indces, but
> couldn't improve it.
It isn't clear exactly what you mean, but it sounds like the issue is now just how to get the right rotation in the matrix; you can look up matrix math and rotations on Wikipedia or in a good graphics textbook.
Sorry I can't be more help.
> On Feb 4, 2008 7:23 PM, Thrall, Bryan <bryan.thrall at flightsafety.com>
> wrote:
>
>
>
> Sorry, hit send too soon, updated below...
>
> Thrall, Bryan wrote on Monday, February 04, 2008 12:21 PM:
>
> > Tobias Münch wrote on Monday, February 04, 2008 11:29 AM:
>
> >> Hello at all,
> >>
> >> I have osg::Matrixd view matrix and want to remove the rotation
> >> around x- and y-axis. Only rotation around z-axis should stay in
> the >> matrix. I try a lot of possibilties but couldn't find a
> solution. >>
> >> When I make the following steps, the rotation around all axis is
> >> removed, not only the two specified axis. The same with
> >> osg::Matrixd::makeRotate(..);
> >>
> >> matrix = osg::Matrixd::rotate(osg::DegreesToRadians(0.0),
> >> osg::Vec3(0,1,0));
> >>
> >> matrix = osg::Matrixd::rotate(osg::DegreesToRadians(0.0),
> >> osg::Vec3(1,0,0));
> >>
> >>
> >> I also tried to set the matrix with complete new values and to
> take >> given value for z-rotation, but therefore I miss a function
> to read >> the one rotation part (around the z-axis).
> >>
> >> How can help me?
> >
>
> > Both of those lines *set* matrix to a non-rotating matrix; what you
> > want is to *modify* the matrix to remove the X and Y rotations.
> >
> > The easiest way is to modify the matrix directly:
> >
>
> matrix(0,0) = 1;
>
> matrix(0,1) = 0;
> matrix(0,2) = 0;
> matrix(1,0) = 0;
> matrix(1,1) = 1;
> matrix(1,2) = 0;
>
> If I didn't mess up my indices, this zeroes out the X and Y
> rotations while leaving the Z intact.
-
Bryan Thrall
FlightSafety International
Bryan.Thrall at flightsafety.com
More information about the osg-users
mailing list