ogre 入门教程

ogre 入门教程
先来看第一个ogre程序。
void TutorialApplication::createScene(void)
{
<span style="white-space:pre">	</span>// Create your scene here :)
<span style="white-space:pre">	</span>mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));<span style="white-space:pre">	</span>


<span style="white-space:pre">	</span>Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");
<span style="white-space:pre">	</span>Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();
<span style="white-space:pre">	</span>headNode->attachObject(ogreHead);


<span style="white-space:pre">	</span>Ogre::Light* light = mSceneMgr->createLight("MainLight");
<span style="white-space:pre">	</span>light->setPosition(20, 80, 50);
}

第一步设置环境光。
第二步载入模型。
第三步打灯光。

我们还可以通过设置摄像机来使显示不同。
void TutorialApplication::createScene(void)
{
	// Create your scene here :)
	mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));	

	mCamera->setPosition(0, 47, 222);

	Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");
	Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();
	headNode->attachObject(ogreHead);

	Ogre::Light* light = mSceneMgr->createLight("MainLight");
	light->setPosition(20, 80, 50);
}
对于entity我们可以对它附加到的节点进行缩放。
void TutorialApplication::createScene(void)
{
	// Create your scene here :)
	mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));	

	mCamera->setPosition(0, 47, 222);

	Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");
	Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();
	headNode->setScale(2,1.2,1);
	headNode->attachObject(ogreHead);

	Ogre::Light* light = mSceneMgr->createLight("MainLight");
	light->setPosition(20, 80, 50);
}
ogre的所有操作都是针对节点的,entity必须attachObject到节点上才能渲染。
cocos2dx 的sprite却是从node派生。感觉ogre的这种写法比较干净,但是实际使用上却必须冗余。
再来看旋转。
void TutorialApplication::createScene(void)
{
	// Create your scene here :)
	mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));	

	mCamera->setPosition(0, 47, 222);

	Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");
	Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();
	headNode->roll(Ogre::Degree(-90));//z轴
	headNode->yaw(Ogre::Degree(-90));//y轴
	headNode->pitch(Ogre::Degree(-90));//x轴
	headNode->attachObject(ogreHead);

	Ogre::Light* light = mSceneMgr->createLight("MainLight");
	light->setPosition(20, 80, 50);
}
最后,我们多放几个模型到屏幕上。
void TutorialApplication::createScene(void)
{
    // Create your scene here :)
	mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));

	mCamera->setPosition(0, 47, 222);

	Ogre::Entity*ogreHead =mSceneMgr->createEntity("OgreHead","ogreHead.mesh");
	Ogre::SceneNode*headNode =mSceneMgr->getRootSceneNode()->createChildSceneNode();
	headNode->attachObject(ogreHead);

	Ogre::Entity* ogreEntity2 = mSceneMgr->createEntity("ogrehead.mesh");
	Ogre::SceneNode* ogreNode2 = mSceneMgr->getRootSceneNode()->createChildSceneNode(
		Ogre::Vector3(84, 48, 0));
	ogreNode2->attachObject(ogreEntity2);

	Ogre::Entity* ogreEnity3 = mSceneMgr->createEntity("ogrehead.mesh");
	Ogre::SceneNode* ogreNode3 = mSceneMgr->getRootSceneNode()->createChildSceneNode();
	ogreNode3->setPosition(0,104,0);
	ogreNode3->setScale(2,1.2,1);
	ogreNode3->attachObject(ogreEnity3);

	Ogre::Entity* ogreEnity4 = mSceneMgr->createEntity("ogrehead.mesh");
	Ogre::SceneNode* ogreNode4 = mSceneMgr->getRootSceneNode()->createChildSceneNode();
	ogreNode4->setPosition(-84,48,0);
	ogreNode4->roll(Ogre::Degree(-90));
	ogreNode4->attachObject(ogreEnity4);

	Ogre::Light* light = mSceneMgr->createLight("MainLight");
	light->setPosition(20, 80, 50);
}












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值