Hi,

I'm back again! I have been looking at the ogre example code, and I've noticed 
that initializes the bones with a specific angle...

Code:
void setupBone(const String& name,const Ogre::Quaternion& q)
        {
                Ogre::Bone* bone = mBodyEnt->getSkeleton()->getBone(name);
                bone->setManuallyControlled(true);
                bone->setInheritOrientation(false);
                
                bone->resetOrientation();
                bone->setOrientation(q);
        
                bone->setInitialState();
        }

        void setupAnimations()
        {
                // this is very important due to the nature of the exported 
animations
                mBodyEnt->getSkeleton()->setBlendMode(ANIMBLEND_CUMULATIVE);    

                String animNames[] =
                {"IdleBase", "IdleTop", "RunBase", "RunTop", "HandsClosed", 
"HandsRelaxed", "DrawSwords",
                "SliceVertical", "SliceHorizontal", "Dance", "JumpStart", 
"JumpLoop", "JumpEnd"};

                //set all to manualy controlled
                //Ogre::Bone* handleLeft = 
mBodyEnt->getSkeleton()->getBone("Hand.L");
                //handleLeft->setManuallyControlled(true);
                
                //Ogre::Matrix3 mat;
                Ogre::Quaternion q = Quaternion::IDENTITY;
                Quaternion q2,q3;
                Vector3 xAxis,yAxis,zAxis;
                q.FromAngleAxis(Ogre::Degree(90),Vector3(0,0,-1));
                q.ToAxes(xAxis,yAxis,zAxis);
                q2.FromAngleAxis(Ogre::Degree(90),xAxis);
                setupBone("Humerus.L",q*q2);
                q.FromAngleAxis(Ogre::Degree(90),Vector3(0,0,1));
                q.ToAxes(xAxis,yAxis,zAxis);
                q2.FromAngleAxis(Ogre::Degree(90),xAxis);
                setupBone("Humerus.R",q*q2);
                
                q.FromAngleAxis(Ogre::Degree(90),Vector3(0,0,-1));       
                q2.FromAngleAxis(Ogre::Degree(45),Vector3(0,-1,0));
                
                setupBone("Ulna.L",q*q2);

                q.FromAngleAxis(Ogre::Degree(90),Vector3(0,0,1));               
                setupBone("Ulna.R",q*q2.Inverse());
                
                q.FromAngleAxis(Ogre::Degree(180),Vector3(0,1,0));
                setupBone("Chest",q);
                setupBone("Stomach",q);
                q.FromAngleAxis(Ogre::Degree(180),Vector3(1,0,0));              
                q2.FromAngleAxis(Ogre::Degree(180),Vector3(0,1,0));
                setupBone("Thigh.L",q*q2);
                setupBone("Thigh.R",q*q2);
                setupBone("Calf.L",q*q2);
                setupBone("Calf.R",q*q2);
                setupBone("Root",Degree(0),Degree(0),Degree(0));


In principle, I dont understand it... This is done to redirect the bones? If we 
orient correctly from a model editor(maya,blender), we wouldnt need to do this, 
right? In the model of sinbad for example, the Root bone is oriented with X up. 
Doing this, setupBone("Root",Degree(0),Degree(0),Degree(0)); will change 
anything?
[Image: http://img577.imageshack.us/img577/2/sinbadn.jpg ]

First I will review the orientation of the bones of my models ... and I will 
publish results ...

Thank you!

Cheers,
Aitor

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=38200#38200





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to