Just noticed my commenting hadn't been updated while I was playing
around too! Some of it doesn't make sense :-/

On Apr 30, 12:11 pm, vangojames <[email protected]> wrote:
> By the way here is the clearQuat method:
>
> /**
>  * Clears all quaternions values
>  */
> private function clearQuat(q:Quaternion):void
> {
>         q.w = 1;
>         q.x = 0;
>         q.y = 0;
>         q.z = 0;
>
> }
>
> On Apr 30, 12:09 pm, vangojames <[email protected]> wrote:
>
>
>
>
>
>
>
> > Thanks for the quick response Michael. Here is my update method:
>
> > /**
> >  * Handles renders
> >  */
> > private function update(dt:Number):void
> > {
> >         // recalculate the movement (this just takes inputs and populates)
> >         // the _tempRot Vector with dt * _angularSpeed
> >         updateMovementRotation(dt);
>
> >         // reset quaternions
> >         clearQuat(_tempRotQuat);
> >         clearQuat(_tempYawQuat);
> >         clearQuat(_tempPitchQuat);
> >         clearQuat(_tempRollQuat);
>
> >         // recalculate temp quaternions
> >         _tempPitchQuat.fromAxisAngle(Vector3D.X_AXIS, _tempRot.x);
> >         _tempYawQuat.fromAxisAngle(Vector3D.Y_AXIS, _tempRot.y);
> >         _tempRollQuat.fromAxisAngle(Vector3D.Z_AXIS, _tempRot.z);
>
> >         // apply quaternion rotations
> >         _tempRotQuat.multiply(_tempRotQuat, _tempPitchQuat);
> >         _tempRotQuat.multiply(_tempRotQuat, _tempYawQuat);
> >         _tempRotQuat.multiply(_tempRotQuat, _tempRollQuat);
>
> >         // apply to current rotation
> >         _camRot.multiply(_camRot, _tempRotQuat);
>
> >         // clear cam mat and update with the new rotation
> >         _target = _camRot.rotatePoint(Vector3D.Z_AXIS);
> >         _up =_camRot.rotatePoint(Vector3D.Y_AXIS);
>
> >         // apply look at to new target and up
> >         lookAt(_target, _up);
>
> > }
>
> > I'm sure I'm doing lots wrong, I haven't looked at Quaternions since
> > University and I can't remember how they work!! I just know they will
> > get rid of the dreaded Gimbal Lock,
>
> > Thanks,
>
> > James
>
> > On Apr 30, 12:00 pm, Michael Iv <[email protected]> wrote:
>
> > > If you can post the full code of your quaternion operation may be I can 
> > > help then .
>
> > > Sent from my iPhone
>
> > > On Apr 30, 2011, at 1:52 PM, vangojames <[email protected]> wrote:
>
> > > > Hi guys,
>
> > > > Please help me. I'm really stuck at trying to implement a Quaternion
> > > > based free camera. My current approach is this:
>
> > > > ON EACH UPDATE::
>
> > > > - Get yaw pitch and roll increase
> > > > - Create quaternions for yaw, pitch and roll (for example
> > > > Quaternion.fromAxisAngle(Vector3D.X_AXIS, pitch))
> > > > - Multiply together in order pitch * yaw * roll to get new temp
> > > > quaternion
> > > > - Multiply cameraRotation quaternion by this new temp quaternion
> > > > - Calculate target by doing
> > > > cameraRotation.rotatePoint(Vector3D.Z_AXIS);
> > > > - Calculate up by doing cameraRotation.rotatePoint(Vector3D.Y_AXIS);
> > > > - lookAt(trget, up)
>
> > > > Needless to say this doesn't work. I just get the tiniest amount of
> > > > movement and it isn't what is expected at all. Would someone be able
> > > > to explain the correct approach?
>
> > > > Thanks!!
>
> > > > James

Reply via email to