剛剛寫了1,馬上就寫2,有點(diǎn)騙人的嫌疑 o(∩_∩)o...
做完了1的步驟之后,我們的代碼應(yīng)該是
#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 );
}
};
講了半天結(jié)果只有createScene中的四行是剛剛加進(jìn)去的。。。汗
還是這個(gè)例子,剛剛我們并沒有指定要把Robot放到哪里,但是OGRE“擅作主張”的把它放在了“一個(gè)位置”,這是為什么呢?
接著看這段代碼
Entity *ent2 = mSceneMgr->createEntity( "Robot2", "robot.mesh" );
SceneNode *node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode2", Vector3( 50, 0, 0 ) );
node2->attachObject( ent2 );
這里的createChildSceneNode函數(shù)有兩個(gè)參數(shù),第二個(gè)參數(shù)明確的指定了這個(gè)節(jié)點(diǎn)"RobotNode2"對于根節(jié)點(diǎn)的
相對位置,順便提一下,這個(gè)組織場景的方法貌似叫做節(jié)點(diǎn)樹,以后會(huì)提到。
這個(gè)node相對于根節(jié)點(diǎn)的位置是(50,0,0),也就是說它的位置要由根節(jié)點(diǎn)移動(dòng)(50,0,0)的距離
如果把第二行改為直接由node1創(chuàng)建子節(jié)點(diǎn)"RobotNode2",即
SceneNode *node2 = node1->createChildSceneNode( "RobotNode2", Vector3( 50, 0, 0 ) );
這時(shí)node2是相對于node1移動(dòng)(50,0,0)的距離而不是根節(jié)點(diǎn),這點(diǎn)要注意。
如果這個(gè)節(jié)點(diǎn)樹為rootNode->node1->node2,這個(gè)時(shí)候父節(jié)點(diǎn)變化則子節(jié)點(diǎn)跟著變化,而子節(jié)點(diǎn)變化的時(shí)候則對父節(jié)點(diǎn)無影響
OK,暫且說這些,還有些函數(shù),等第三次筆記補(bǔ)齊