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);
}












OGRE(O-O Graphics Rendering Engine) 使用指南________________________________________________________________1 作者_________________________________________________________________________ 6 序____________________________________________________________________________7 教程的目的_________________________________________________________________ 7 读者要求___________________________________________________________________ 7 教程的由来_________________________________________________________________ 7 OGRE简介___________________________________________________________________ 8 OGRE特点_________________________________________________________________ 8 效率特性__________________________________________________________________8 平台和3D API 支持________________________________________________________ 8 网格Meshes_______________________________________________________________ 8 场景特性__________________________________________________________________9 特效______________________________________________________________________9 其它特性__________________________________________________________________9 OGRE中的模块_____________________________________________________________ 9 OgreMain 模块____________________________________________________________ 10 SDL 平台管理模块________________________________________________________ 11 Win32 平台管理模块_______________________________________________________11 BSP 场景管理_____________________________________________________________11 文件系统插件_____________________________________________________________11 GuiElement 插件__________________________________________________________ 11 OctreeSceneManager 插件___________________________________________________ 11 ParticleFX 插件___________________________________________________________ 12 Direct3D7 渲染系统插件____________________________________________________12 Direct3D8 渲染系统插件____________________________________________________12 SDL 渲染系统插件________________________________________________________ 12 3ds2oof 工具______________________________________________________________12 3Dstudio Max 导出器_______________________________________________________12 位图字体创建工具_________________________________________________________12 Milkshape3D 导出器_______________________________________________________ 12 Python 接口______________________________________________________________ 13 XML 转换器______________________________________________________________13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值