防止摄像机穿透地面
来源:互联网 发布:ubuntu不允许root ssh 编辑:程序博客网 时间:2024/04/26 17:54
基于射线查询的方式,实现摄像机和地形的碰撞检测,防止摄像机穿透地面,这也是ogre demo中Terrian例子中的方法。
首先定义 RaySceneQuery* raySceneQuery = 0;
在CreateScene时候,创建场景查询
frameRenderingQueued事件中,进行射线查询,设定摄像机位置
raySceneQuery = mSceneMgr->createRayQuery(
Ray(mCamera->getPosition(), Vector3::NEGATIVE_UNIT_Y));//光线的位置和方向,垂直向下
然后在
bool frameRenderingQueued(const FrameEvent& evt)
{
if( ExampleFrameListener::frameRenderingQueued(evt) == false )
return false;
// clamp to terrain
static Ray updateRay;
updateRay.setOrigin(mCamera->getPosition());
updateRay.setDirection(Vector3::NEGATIVE_UNIT_Y);
raySceneQuery->setRay(updateRay);
RaySceneQueryResult& qryResult = raySceneQuery->execute();
RaySceneQueryResult::iterator i = qryResult.begin();
if (i != qryResult.end() && i->worldFragment)//把摄像机定在地形个单位高的地方。
{
mCamera->setPosition(mCamera->getPosition().x,
i->worldFragment->singleIntersection.y + 10,
mCamera->getPosition().z);
}
return true;
}
这样就把摄像机设在离地形高10个单位的地方。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pizi0475/archive/2010/03/12/5374585.aspx
- 防止摄像机穿透地面
- Ogre——防止摄像机穿透地面
- Unity--简单的摄像机跟随和地面的坐标获取
- Ogre——地面与摄像机的射线查询
- qt qml 鼠标穿透与防止穿透
- Ogre 让摄像机不能穿透物体
- Ogre 让摄像机不能穿透物体
- Div嵌套防止穿透事件
- 【UGUI】UGUI 防止UI穿透
- 【NGUI】 NGUI 防止UI穿透物体事件
- fragment 动态添加,以及防止穿透
- UGUI点击按钮穿透、UI跟随摄像机旋转
- 缓存失效时防止穿透DB的策略
- 摄像机
- 摄像机
- 摄像机
- 摄像机
- 摄像机
- excel 导入数据
- Microsoft 2003 AD技术扩展
- 常用正则表达式大全
- 脚本语言
- HDOJ 1134: Game of Connections
- 防止摄像机穿透地面
- Gdi+ DrawImage OutOfMemory 问题原因分析
- Plexus,Spring之外的IoC容器
- 一步一学Linux与Windows 共享文件Samba
- Symbian使用TTime类获取系统时间并转换为描述符
- 常用js验证
- Flash 平台技术的优化(十六) 将应用程序分为多个 SWF 文件
- 命令行参数解析: getopt()和getopt_long()
- 常用的正则表达式