开发环境:
winxp,mingw,codeblock,OgreSDK_mingw_v1-7-2,字符编码为utf8
ogre官方的例子非常绚丽,非常实用,但不适合初学者,为了让广大和我一样的菜鸟少走弯路和以后方便重用其中的代码,这学期开始分析ogre官方demo,将复杂的demo细分为重用性更高的例子,并提供能独立编译运行的工程文件,例子程序坚决摒弃继承和设计模式,直接读源程序就能摸清例子的工作流程和算法细节,其中部分代码加入中文注释
其他的ogre学习资源推荐:so3Dtools,《OGRE 3D 1.7 Beginner's Guide》,谷歌一下就行
本人QQ:343763274,欢迎交流,欢迎合作,欢迎拍砖,如有错误,纯属巧合
demo1-草地的制作:
http://www.pudn.com/downloads328/sourcecode/windows/system/detail1443176.html
demo2-灯光轨迹动画:
注意:
mSceneMgr->setAmbientLight(ColourValue::Black);//关闭环境光,才能显示模型材质的效果
http://www.pudn.com/downloads328/sourcecode/game/detail1443147.html
demo3:
简单第一人称射击,Ogre::Ray的使用
注意:
传给getCameraToViewportRay()的必须是0~1的两个浮点型数值,由于ScreenX/screenWidth为int/int,
结果也为int,获得的射线将不准确,int/float为float,所以必须强制类型转换
Ogre::Ray ray=mCamera->getCameraToViewportRay(mX/(float)arg.state.width,mY/(float)arg.state.height);
显示系统光标
pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_FOREGROUND")));
pl.insert(std::make_pair(std::string("w32_mouse"), std::string("DISCL_NONEXCLUSIVE")));
http://www.pudn.com/downloads328/sourcecode/windows/network/detail1445768.html
demo4:简单的aabb盒碰撞:
http://www.pudn.com/downloads332/sourcecode/game/detail1460588.html
demo5:ManualObject的绘制
可用于导入自定义格式的模型文件,bullet中的debugdraw
http://www.pudn.com/downloads338/sourcecode/game/detail1479266.html
demo6
比较复杂的例子,ogrebullet的一次封装。可以通过鼠标单击选择物体,然后移除物体,需要先编译bullet,注意:
库的链接顺序
phyObject->setSleepingThresholds(0,0);//禁止物体休眠,不然移除物体的时候不能唤醒新的模拟,需要外力驱动