博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ogre 2011-11-27
阅读量:6457 次
发布时间:2019-06-23

本文共 6295 字,大约阅读时间需要 20 分钟。

创建平面,点光源

class MyApplication :public ExampleApplication{public:	void createScene()	{		// 定义一个平面		// 参数1 平面的单位法线		// 参数2 平面距离原点的距离		Ogre::Plane plane(Ogre::Vector3::UNIT_Y, -200);		// 利用定义的平面创建一个平面网格		// 参数1 平面的名字;网格资源的名字		// 参数2 资源组,如同c++中的命名空间		// 参数3 平面的定义		// 参数4,5 平面的大小		// 参数6,7 平面的x,y轴上由多少个三角形组成		// param8 normals If true, normals are created perpendicular to the plane		// param9 numTexCoordSets The number of 2D texture coordinate sets created - 		//        by default the corners are created to be the corner of the texture.		Ogre::MeshManager::getSingleton().createPlane("plane", 			ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,			plane, 1500, 1500, 20, 20,			true, 1, 5, 5, Vector3::UNIT_Z			);		// 参数1 实体的名字		// 参数2 创建实体用的网格的名字		Ogre::Entity* ent = mSceneMgr->createEntity("lightpalneentity", "plane");		mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent);		ent->setMaterialName("Examples/BeachStones");		Ogre::SceneNode* node = mSceneMgr->createSceneNode("node1");		mSceneMgr->getRootSceneNode()->addChild(node);		// 创建点光源		Ogre::Light* light1 = mSceneMgr->createLight("light1");		light1->setType(Ogre::Light::LT_POINT);		light1->setPosition(0, 20, 0);		light1->setDiffuseColour(1.0f, 1.0f, 1.0f);		// 将创建的实体设置在点光源的位置		Ogre::Entity* lightEnt = mSceneMgr->createEntity("myentity", "sphere.mesh");		Ogre::SceneNode* node3 = node->createChildSceneNode("node3");		node3->setScale(0.1f, 0.1f, 0.1f);		node3->setPosition(0, 20, 0);		node3->attachObject(lightEnt);		// 创建点光源2		Ogre::Light* light2 = mSceneMgr->createLight("light2");		light2->setType(Ogre::Light::LT_POINT);		light2->setPosition(20, 20,20);		light2->setDiffuseColour(1.0f, 0.0f, 0.0f);		// 将创建的实体设置在点光源2的位置		Ogre::Entity* lightEnt2 = mSceneMgr->createEntity("myentity2", "sphere.mesh");		Ogre::SceneNode* node4 = node->createChildSceneNode("node4");		node4->setScale(0.1f, 0.1f, 0.1f);		node4->setPosition(20, 20, 20);		node4->attachObject(lightEnt2);	}private:};

  

spotlight

class MyApplication :public ExampleApplication{public:	void createScene()	{		Ogre::Plane plane(Ogre::Vector3::UNIT_Y, -200);		Ogre::MeshManager::getSingleton().createPlane("plane", 			ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,			plane, 1500, 1500, 200, 200,			true, 1, 5, 5, Vector3::UNIT_Z			);		Ogre::Entity* ent = mSceneMgr->createEntity("lightpalneentity", "plane");		mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent);		ent->setMaterialName("Examples/BeachStones");		Ogre::SceneNode* node = mSceneMgr->createSceneNode("node1");		mSceneMgr->getRootSceneNode()->addChild(node);		Ogre::SceneNode* node2 = node->createChildSceneNode("node2");		node2->setPosition(0, 100, 0);		Ogre::Light* light2 = mSceneMgr->createLight("light2");		light2->setType(Ogre::Light::LT_SPOTLIGHT);		light2->setDirection(Ogre::Vector3(1, -1, 0));		light2->setSpotlightInnerAngle(Ogre::Degree(5.0f));		light2->setSpotlightOuterAngle(Ogre::Degree(45.0f));		light2->setSpotlightFalloff(0.0f);		light2->setDiffuseColour(Ogre::ColourValue(0.0f, 1.0f, 0.0f));		node2->attachObject(light2);		Ogre::SceneNode* node3 = node2->createChildSceneNode("node3");		node3->setPosition(0, 100, 0);		Ogre::Entity* sphere = mSceneMgr->createEntity("sphereentity", "sphere.mesh");		node3->attachObject(sphere);	}private:};

  

directionallight + shadow

class MyApplication :public ExampleApplication{public:	void createScene()	{		// 先用定义的平面创建一个网格,再用创建的网格构造一个实体		Ogre::Plane plane(Ogre::Vector3::UNIT_Y, -200);		Ogre::MeshManager::getSingleton().createPlane("plane",			ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,			plane, 1500, 1500, 200, 200,			true, 1, 5, 5, Vector3::UNIT_Z			);		Ogre::Entity* ent = mSceneMgr->createEntity("lightpalneentity", "plane");		Ogre::SceneNode* node = mSceneMgr->createSceneNode("node");		mSceneMgr->getRootSceneNode()->addChild(node);		node->attachObject(ent);		ent->setMaterialName("Examples/BeachStones");		// 方向光不用设置位置		Ogre::Light* light = mSceneMgr->createLight("light");		light->setType(Ogre::Light::LT_DIRECTIONAL);		light->setDiffuseColour(Ogre::ColourValue(1.0f, 1.0f, 1.0f));		light->setDirection(Ogre::Vector3(1, -1, 0));		Ogre::Entity* ent2 = mSceneMgr->createEntity("sinbad2", "Sinbad.mesh");		Ogre::SceneNode* node2 = mSceneMgr->createSceneNode("scenenode2");		node->addChild(node2);		node2->setScale(3.0f, 3.0f, 3.0f);		node2->setPosition(Ogre::Vector3(0.0f, 1.0f, 0.0f));		node2->attachObject(ent2);		// 设置阴影		mSceneMgr->setShadowTechnique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE);	}private:};

  

创建摄像机,视口

class MyApplication :public ExampleApplication{public:	void createCamera()	{		mCamera = mSceneMgr->createCamera("mycamera");		mCamera->setPosition(0, 100, 200);		mCamera->lookAt(0, 0, 0);		mCamera->setNearClipDistance(50);		//mCamera->setFarClipDistance(2000);		// the same effect as press R		mCamera->setPolygonMode(Ogre::PM_WIREFRAME);	}	void createViewports()	{		// create a viewport		Ogre::Viewport* vp = mWindow->addViewport(mCamera);		// set viewport's background color		vp->setBackgroundColour(Ogre::ColourValue(0.0f, 0.0f, 1.0f));		// set aspect ratio		mCamera->setAspectRatio(Real(vp->getActualWidth() / vp->getActualHeight()));	}	void createScene()	{		// 先用定义的平面创建一个网格,再用创建的网格构造一个实体		Ogre::Plane plane(Ogre::Vector3::UNIT_Y, -200);		Ogre::MeshManager::getSingleton().createPlane("plane",			ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,			plane, 1500, 1500, 200, 200,			true, 1, 5, 5, Vector3::UNIT_Z			);		Ogre::Entity* ent = mSceneMgr->createEntity("lightpalneentity", "plane");		Ogre::SceneNode* node = mSceneMgr->createSceneNode("node");		mSceneMgr->getRootSceneNode()->addChild(node);		node->attachObject(ent);		ent->setMaterialName("Examples/BeachStones");		// 方向光不用设置位置		Ogre::Light* light = mSceneMgr->createLight("light");		light->setType(Ogre::Light::LT_DIRECTIONAL);		light->setDiffuseColour(Ogre::ColourValue(1.0f, 1.0f, 1.0f));		light->setDirection(Ogre::Vector3(1, -1, 0));		Ogre::Entity* ent2 = mSceneMgr->createEntity("sinbad2", "Sinbad.mesh");		Ogre::SceneNode* node2 = mSceneMgr->createSceneNode("scenenode2");		node->addChild(node2);		node2->setScale(3.0f, 3.0f, 3.0f);		node2->setPosition(Ogre::Vector3(0.0f, 4.0f, 0.0f));		node2->attachObject(ent2);		// 设置阴影		mSceneMgr->setShadowTechnique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE);	}private:};

  

  

 

转载地址:http://fgnzo.baihongyu.com/

你可能感兴趣的文章
Vector(同步)和ArrayList(异步)异同
查看>>
python基础和进阶思维导图(转)
查看>>
Axure XMind整理交互思路
查看>>
三维模型等大长方体剖分算法实现
查看>>
命令对象SqlCommand(四)执行语句
查看>>
qTip Style
查看>>
windows下如何编译 leveldb 1.5最新版
查看>>
TFS2010物理迁移workspace恢复
查看>>
jquery中的trigger和triggerHandler区别
查看>>
C 风格字符串,C++string类,MFC,CString类的区别。
查看>>
ARM裸机开发(三)SDRAM编程
查看>>
Windows系统下各浏览器常用CSS hack汇总表图
查看>>
SQL:基本知识
查看>>
GIFLIB 5.0.1 发布,C语言的GIF处理库
查看>>
[C] 跨平台使用Intrinsic函数范例2——使用SSE2、AVX指令集 处理 双精度浮点数组求和...
查看>>
Windows Phone开发(27):隔离存储A
查看>>
JSTL(c标签)与Struts2(s标签)标签的常用功能对比
查看>>
Drupal 7.17 发布,专业的 CMS 内容管理系统
查看>>
MySQL Replication 常用架构
查看>>
2012-11-26 → 2012-12-02 周总结:项目又有新需求了,很兴奋
查看>>