迈克老狼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2009年11月19日

摘要: 当使用场景查询时还有一件事要考虑。假设你在场景里加入了一个公告板或者粒子系统,并且想要移动它。你会发现查询不会返回你点击的公告板。这是因为SceneQuery还存在另外一个Mask,查询类型Mask(QueryTypeMask),它限制了你只能选择这个标记指定的类型。默认情况是,当你作一个查询时,它只返回实体类型的物体。 在你的代码里,如果想要查询返回公告板或者粒子系统,则你要在执行查询之前这么... 阅读全文
posted @ 2009-11-19 16:14 迈克老狼 阅读(477) 评论(0) 推荐(0) 编辑

摘要: CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--CEGUI::PointmousePos=CEGUI::MouseCursor::getSingleton().getPosition();RaymouseRay=mCamera->getC... 阅读全文
posted @ 2009-11-19 15:36 迈克老狼 阅读(517) 评论(0) 推荐(0) 编辑

摘要: 相交查询,就是遍历所有的对象,找到一对一对的相交物体,不过感觉不太实用。下面是网上找出来的相关代码:[代码] 阅读全文
posted @ 2009-11-19 14:22 迈克老狼 阅读(153) 评论(0) 推荐(0) 编辑

摘要: 通过设置不同的掩码,可以实现有选择的碰撞检测,下面的代码中,ogre头能被查询器检测到,而机器人由于掩码不同,不能被检测到。[代码] 阅读全文
posted @ 2009-11-19 14:18 迈克老狼 阅读(242) 评论(0) 推荐(0) 编辑

摘要: 在Ogre中,可以创建一个查询器,比如球体查询器,AABB查询器,面查询器等。下面我们以最常用的球形查询器为例来说明:如下面的代码,我们首先创建一个球形查询器,它需要定义一个球体,我们把它的位置,设置为摄像机的位置,半径为10,掩码为第二个参数,默认为-1,通过掩码,可以把碰撞的物体分成不同的组,比如我们设置球形场景查询器的掩码为0x1,则它只检测和它掩码相同物体的碰撞。该摄像机检测到entity... 阅读全文
posted @ 2009-11-19 14:03 迈克老狼 阅读(935) 评论(0) 推荐(0) 编辑

摘要: Ogre 中,每个节点有AABB(轴对齐包围盒),通过包围盒,可以实现碰撞检测判断。具体实现过程如下: 通过Ogre::SceneNode::_getWorldAABB()可以取得这个叶子节点的AABB(Ogre::AxisAlignedBox),Ogre::AxisAlignedBox封装了对AABB的支持,该类的成员函数Ogre::AxisAlignedBox::intersects()可以判... 阅读全文
posted @ 2009-11-19 13:44 迈克老狼 阅读(781) 评论(0) 推荐(0) 编辑

摘要: 基于射线查询的方式,实现摄像机和地形的碰撞检测,防止摄像机穿透地面,这也是ogre demo中Terrian例子中的方法。首先定义 RaySceneQuery* raySceneQuery = 0;在CreateScene时候,创建场景查询[代码]然后在frameRenderingQueued事件中,进行射线查询,设定摄像机位置[代码]这样就把摄像机设在离地形高10个单位的地方。 阅读全文
posted @ 2009-11-19 10:15 迈克老狼 阅读(1123) 评论(0) 推荐(0) 编辑