http://www.ogre3d.org/tikiwiki/Basic+Tutorial+1&structure=Tutorials
下载项目框架:
BaseApplication.h BaseApplication.cpp TutorialApplication.h TutorialApplication.cpp
只需要修改TutorialApplication里的createScene方法就行了
1. SceneManager:管理scene里的一切东西。可分为很多类型,管理不同类东西。
2. Entity:能够用3d mesh描述的任何东西,如机器人、鱼等,但Lights、camera等这些不用3d mesh构建的不算。
Entity::setVisible, Entity::isVisible //设置Entity是否可见
Entity::getName //获得Entity的名字
Entity::getParentSceneNode //获得该Entity被附加到的SceneNode
3. SceneNode:管理物体的location和orientation属性,可附加Entity或SceneNode或其他object。
SceneNode::getPosition / SceneNode::setPosition //设置它相对于父SceneNode节点的位置
SceneNode::translate //相对于本身位置的移动
物体的旋转:pitch,yaw,roll
重置做过的旋转:resetOrientation
单有Entity或但单有SceneNode都不能在scene上显示,即在屏幕上看不到,只有两者结合才能在scene上显示。
明显地,Entity只有物体本身属性,没有屏幕定位信息,屏幕不知道要把它放哪里,所以不能显示。
SceneNode只有定位,没有物体,不知道要显示什么,因此更不能在屏幕上显示。
=============================================================
大概步骤:
(mSceneMgr是在BaseApplication上创建的SceneManager变量)
1.设置周围环境的灯光
mSceneMgr->setAmbientLight(Ogre::ColourValue(1.0, 1.0, 1.0));
经过更改参数运行发现:
setAmbientLight是设置环境的光,如果没有设置这个属性,物体就没有阴影。
Ogre::Light* l = mSceneMgr->createLight("MainLight");这个是设置物体本身的光,
如果没有设置这个属性,物体的颜色就呈一整块,没有3D效果。
2.创建Entity
Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
3.在SceneManager的根节点下创建SceneNode子节点
Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode");
4.附加Entity到SceneNode,在屏幕上显示
headNode->attachObject(ogreHead);
======================================================================
Ogre坐标系
屏幕左下角为原点,向右X正方向,向上Y正方向,像屏幕外Z正方向
Ogre环境
有3个库:主库、插件、第三方库
配置文件
plugins.cfg ---> 插件应用的配置
resources.cfg ---> 配置Ogre寻找资源的路径
media.cfg ---> Ogre一些资源更详细的信息
ogre.cfg ---> 屏幕的配置
quake3settings.cfg ---> 被用于BSPSceneManager