场景管理的一个重要的功能就是场景查询,而ogre支持的场景查询方法包括:
1、光线查询(Ray Queries);
2、球体查询(Sphere Queries);
3、边界盒查询(Bounding-Box Queries);
4、边界平面查询(Bounding-Plane Queries);
5、相交查询(Intersection Queries)。
光线查询:
RaySceneQuery* query = sceneMgr->createRayQuery( pickRay );
query->setSortByDistance( true/*, 1 */);
RaySceneQueryResult& result = query->execute();
如果射线是从起点发射的,射线的获取可以用下面的一句代码:
Ray pickRay = mCamera->getCameraToViewportRay( screenX, screenY );
球体查询:
// 10是球体半径
SphereSceneQuery * pQuery = m_SceneMgr->createSphereQuery(Sphere(m_SphereNode->getPosition(),10));
SceneQueryResult QResult = pQuery->execute();
相交查询:
IntersectionSceneQuery * query = sceneMgr->createIntersectionQuery();
IntersectionSceneQueryResult& query->execute();
其中,边界盒查询AxisAlignedBoxSceneQuery和边界平面查询PlaneBoundedVolumeListSceneQuery,与球体查询SphereSceneQuery都属于区域查询RegionSceneQuery,使用方式与球体查询一样。