This time, we are going to rotate using different spaces, as follows:
createScene()
function, so delete all code inside this function.Ogre::Entity* ent = mSceneMgr->createEntity("MyEntity","sinbad.mesh"); Ogre::SceneNode* node = mSceneMgr->createSceneNode("Node1"); mSceneMgr->getRootSceneNode()->addChild(node); node->attachObject(ent);
Ogre::Entity* ent2 = mSceneMgr->createEntity("MyEntity2","sinbad.mesh"); Ogre::SceneNode* node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode("Node2"); node2->setPosition(10,0,0); node2->yaw(Ogre::Degree(90)); node2->roll(Ogre::Degree(90)); node2->attachObject(ent2);
Ogre::Entity* ent3 = mSceneMgr->createEntity("MyEntity3","Sinbad.mesh"); Ogre::SceneNode* node3 = node->createChildSceneNode("node3"); node3->setPosition(20,0,0); node3->yaw(Ogre::Degree(90),Ogre::Node::TS_WORLD); node3->roll(Ogre::Degree(90),Ogre::Node::TS_WORLD); node3->attachObject(ent3);
Like always, we created our reference model, which is the left one in the picture. We rotated the second model first around the y-axis and then around the z-axis. Rotation uses the default space as the local space. This implies that after we rotated the first model 90 degrees around the y-axis, the orientation of z-axis is changed. The second model used the world coordination system and there the orientation of the z-axis stays the same, even when we rotated a scene node.
The model under number 1 is the original coordination system we had. Under number 2, we see the coordination system after we rotated 90 degrees around the y-axis. Under number 3, we rotated 90 degrees around the z-axis. Now let's look at the same rotations when we use world space instead of local space.
Here we are doing the same rotations, but because we always used world space, we didn't use the changed coordination system, and therefore we got a different result.
3.15.12.124