的笔记

随时随地编辑

SNIPPET:射线查询、固定terrain中相机高度

创建查询器
mRaySceneQuery = mSceneMgr->createRayQuery(Ray());

销毁查询器
mSceneMgr->destroyQuery(mRaySceneQuery);

 1// The ray scene query pointer
 2Ogre::RaySceneQuery *mRaySceneQuery;
 3// Setup the scene query
 4Ogre::Vector3 camPos = mCamera->getPosition();
 5Ogre::Ray cameraRay(Ogre::Vector3(camPos.x, 5000.0f, camPos.z), Ogre::Vector3::NEGATIVE_UNIT_Y);
 6mRaySceneQuery->setRay(cameraRay);
 7
 8// Perform the scene query
 9Ogre::RaySceneQueryResult &result = mRaySceneQuery->execute();
10Ogre::RaySceneQueryResult::iterator itr = result.begin();
11// Get the results, set the camera height
12if (itr != result.end() && itr->worldFragment)
13{
14    Ogre::Real terrainHeight = itr->worldFragment->singleIntersection.y;
15    //if ((terrainHeight + 10.0f) > camPos.y)
16        mCamera->setPosition( camPos.x, terrainHeight + 10.0f, camPos.z );
17}

posted on 2011-06-09 14:56 的笔记 阅读(204) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理