剛剛寫了1,馬上就寫2,有點騙人的嫌疑 o(∩_∩)o...
做完了1的步驟之后,我們的代碼應該是
#include "ExampleApplication.h"

class TutorialApplication : public ExampleApplication


{
protected:
public:
TutorialApplication()

{
}

~TutorialApplication()

{
}
protected:
void createScene(void)

{
mSceneMgr->setAmbientLight( ColourValue( 1, 1, 1 ) );
Entity *ent1 = mSceneMgr->createEntity( "Robot", "robot.mesh" );
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" );
node1->attachObject( ent1 );
}
};
講了半天結果只有createScene中的四行是剛剛加進去的。。。汗
還是這個例子,剛剛我們并沒有指定要把Robot放到哪里,但是OGRE“擅作主張”的把它放在了“一個位置”,這是為什么呢?
接著看這段代碼
Entity *ent2 = mSceneMgr->createEntity( "Robot2", "robot.mesh" );
SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode2", Vector3( 50, 0, 0 ) );
node2->attachObject( ent2 );
這里的createChildSceneNode函數有兩個參數,第二個參數明確的指定了這個節點"RobotNode2"對于根節點的
相對位置,順便提一下,這個組織場景的方法貌似叫做節點樹,以后會提到。
這個node相對于根節點的位置是(50,0,0),也就是說它的位置要由根節點移動(50,0,0)的距離
如果把第二行改為直接由node1創建子節點"RobotNode2",即
SceneNode *node2 = node1->createChildSceneNode( "RobotNode2", Vector3( 50, 0, 0 ) );
這時node2是相對于node1移動(50,0,0)的距離而不是根節點,這點要注意。
如果這個節點樹為rootNode->node1->node2,這個時候父節點變化則子節點跟著變化,而子節點變化的時候則對父節點無影響
OK,暫且說這些,還有些函數,等第三次筆記補齊