Demo_Terrain

    要弄明白这个例子先让我们来看看 OGRE RaySceneQuery 目的和使用方法。RaySceneQuery继承于SceneQueryListenerSceneQuery。这一系列类是用来在场景中执行查询操作的。例如查找与指定区域相交的world geometry。他们的继承结构图如下:

Demo_Terrain
    这个Demo中使用的RayScenQuery是查找与指定Ray: updateRay;相交的world geometry。它设置Ray的起点为摄像机的位置

updateRay.setOrigin(mCamera->getPosition());

Ray的方向为垂直向下

updateRay.setDirection(Vector3::NEGATIVE_UNIT_Y);

这样就找出了与地面的交点。从而可以确定高度,既而就可以调整摄像机的高度,模拟出颠簸的感觉。

RaySceneQueryResult::iterator i = qryResult.begin();

if (i != qryResult.end() && i->worldFragment)

{

SceneQuery::WorldFragment* wf = i->worldFragment;

    mCamera->setPosition(mCamera->getPosition().x,

           i->worldFragment->singleIntersection.y + 10,

           mCamera->getPosition().z);

 }

  

你可能感兴趣的:(demo)