第三章 OGRE中的光照,阴影,摄像机和视口
来源:互联网 发布:淘宝小二介入怎么撤销 编辑:程序博客网 时间:2024/05/22 08:08
#include "ExampleApplication.h"class Example3:public ExampleApplication{public:void createScene(){/*//1 beginOgre::Plane plane(Vector3::UNIT_Y,-10);Ogre::MeshManager::getSingleton().createPlane("plane",ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,plane,1500,1500,20,20,true,1,5,5,Vector3::UNIT_Z);Ogre::Entity* ent=mSceneMgr->createEntity("LightPlaneEntity","plane");mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent);ent->setMaterialName("Examples/BeachStones");//1 end//2_1 beginOgre::SceneNode* node1=mSceneMgr->createSceneNode("Node1");mSceneMgr->getRootSceneNode()->addChild(node1);Ogre::Light* light1=mSceneMgr->createLight("MyLight1");light1->setType(Ogre::Light::LT_POINT);light1->setPosition(0,20,0);light1->setDiffuseColour(1.0f,1.0f,1.0f);Ogre::Entity* LightEnt1=mSceneMgr->createEntity("MyEntity1","sphere.mesh");Ogre::SceneNode* node2=node1->createChildSceneNode("Node2");node2->setPosition(0,20,0);node2->setScale(0.1f,0.1f,0.1f);node2->attachObject(LightEnt1);//2_1 end//3_2 beginOgre::Light *light2=mSceneMgr->createLight("MyLight2");light2->setType(Ogre::Light::LT_POINT);light2->setPosition(20,20,20);light2->setDiffuseColour(1.0f,1.0f,1.0f);Ogre::Entity* LightEnt2=mSceneMgr->createEntity("MyEntity2","sphere.mesh");Ogre::SceneNode* node3=node1->createChildSceneNode("Node3");node3->setPosition(20,20,20);node3->setScale(0.1f,0.1f,0.1f);node3->attachObject(LightEnt2);//3_2 end*///4|all beginOgre::Plane plane(Vector3::UNIT_Y,-10);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("LightPlaneEntity","plane");mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent);ent->setMaterialName("Examples/BeachStones");Ogre::SceneNode* node1=mSceneMgr->createSceneNode("Node1");mSceneMgr->getRootSceneNode()->addChild(node1);Ogre::SceneNode* node4=node1->createChildSceneNode("Node4");node4->setPosition(0,100,0);Ogre::Light* pSpotLight1=mSceneMgr->createLight("MySpotLight1");pSpotLight1->setType(Ogre::Light::LT_SPOTLIGHT);pSpotLight1->setDirection(Ogre::Vector3(1,-1,0));pSpotLight1->setSpotlightInnerAngle(Ogre::Degree(5.0f));pSpotLight1->setSpotlightOuterAngle(Ogre::Degree(45.0f));pSpotLight1->setSpotlightFalloff(0.0f);pSpotLight1->setDiffuseColour(Ogre::ColourValue(0.0f,1.0f,0.0f));node4->attachObject(pSpotLight1);//如果不显示附着,则是在RootSceneNode()上附着Ogre::Entity* GreenSpotLightSphere=mSceneMgr->createEntity("GreenSpotLightSphere","sphere.mesh");node4->setScale(0.1f,0.1f,0.1f);node4->attachObject(GreenSpotLightSphere);Ogre::SceneNode* redspotlightnode=node1->createChildSceneNode("RedSpotLightNode");Ogre::Light* redspotlight=mSceneMgr->createLight("RedSpotLight");redspotlight->setType(Ogre::Light::LT_SPOTLIGHT);redspotlight->setDiffuseColour(Ogre::ColourValue(1.0f,0.0f,0.0f));redspotlight->setDirection(-1,-1,0);redspotlight->setSpotlightInnerAngle(Ogre::Degree(5.0f));redspotlight->setSpotlightOuterAngle(Ogre::Degree(45.0f));redspotlight->setSpotlightFalloff(0.0f);redspotlightnode->attachObject(redspotlight);Ogre::Entity* redspotlightsphere=mSceneMgr->createEntity("RedSpotLightSphere","sphere.mesh");redspotlightnode->setScale(0.1f,0.1f,0.1f);redspotlightnode->setPosition(200,100,0);//注意是结点位移,不是灯光位移,否则球体不位移redspotlightnode->attachObject(redspotlightsphere);//4|all end//5_4 beginOgre::Light* directionallight=mSceneMgr->createLight("DirectionLight");directionallight->setType(Ogre::Light::LT_DIRECTIONAL);directionallight->setDirection(1,-1,0);//方向光源无需attachdirectionallight->setDiffuseColour(Ogre::ColourValue(1.0f,1.0f,1.0f));//5_4 end//6_5 beginOgre::Entity* Sinbad=mSceneMgr->createEntity("Sinbad","Sinbad.mesh");Ogre::SceneNode* SinbadNode=mSceneMgr->getRootSceneNode()->createChildSceneNode("SinbadNode");SinbadNode->setPosition(Ogre::Vector3(0.0f,4.0f,0.0f));//平面在-10,-10+14(Sinbad放大3倍后下半身长度为14)=4SinbadNode->setScale(3.0f,3.0f,3.0f);SinbadNode->attachObject(Sinbad);//6_5 end//7_6 beginmSceneMgr->setShadowTechnique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE);//7_6 end}//8_7 beginvoid createCamera(){mCamera=mSceneMgr->createCamera("MyCamera1");mCamera->setPosition(0,100,200);mCamera->lookAt(0,0,0);mCamera->setNearClipDistance(5);//8.1 begin//mCamera->setPolygonMode(Ogre::PM_WIREFRAME);//8.1 end}//8_7 end//9_8|8.1 beginvoid createViewports(){Ogre::Viewport* vp=mWindow->addViewport(mCamera);vp->setBackgroundColour(Ogre::ColourValue(0.0f,0.0f,1.0f));//9.1 begin//mCamera->setAspectRatio(Real(vp->getActualWidth())/Real(vp->getActualHeight()));//9.1 end//10_9|9.1 beginmCamera->setAspectRatio(0.2);//10_9|9.1 end}//9_8|8.1 end};int main(){Example3 app;app.go();return 0;}
--->mSceneMgr -----> mCamera
mRoot
--->mWindow ----------> addViewport(mCamera)
There can only be one camera active at a particular time
Each viewport can only render the view of one camera,so Ogre 3D enforces that one camera is given during creation.Of course,the camera can be changed later using the appropriate getter and setter functions.
- 第三章 OGRE中的光照,阴影,摄像机和视口
- (4) 摄像机、光照和阴影
- 摄像机,光源和阴影 -----OGRE 3D 1.7 Beginner‘s Guide中文版 第三章
- Ogre笔记五:基础教程二—摄像机、阴影和光照处理
- 摄像机,光源和阴影 -----OGRE 3D 1.7 Beginner‘s Guide中文版 第四章
- Ogre学习笔记2(光源摄像机和阴影)
- 【笔记】二、摄像机、视口、光照、阴影
- OGRE 摄像机与光照 地 天空 雾
- ogre中的摄像机
- Ogre中的摄像机
- Ogre中的摄像机
- Ogre光照
- OGRE创建场景、摄像机、视口的基本流程
- OGRE摄像机
- OGRE摄像机
- 基础教程二(摄影机,阴影和光照处理)
- osg 学习 之十五:阴影和光照
- 光照和阴影算法该如何优化?
- C++虚函数
- c++函数返回值与引用
- 职场上,如何做人做事做管理
- hud 3496 Watch The Movie(二维费用背包)
- 定义Fibonacci数列
- 第三章 OGRE中的光照,阴影,摄像机和视口
- 关于“2”这个数字
- 题目1051:数字阶梯求和
- cocos2d-x学习笔记-CCSprite(精灵)
- 【VOIP】Open source
- 系统调用和库函数的关系
- 《深入理解LINUX内存管理》学习笔记
- 第四堂课后作业
- SqlServer中Apply的用法