最近我想在ogre里面实现这样的功能:指向一个物体,显示一张二维图片,介绍该物体的相关信息。
在ogre社区找到了解决办法,
如下:
创建一个2D长方形:Rectangle2D *rect = new Rectangle2D(true);
设置长方形大小: rect->setCorners(-0.5f,0.5f,0.5f,-0.5f);
设置材质、渲染队列等:
rect->setMaterial("Examples/Test");
rect->setRenderQueueGroup(Ogre::RENDER_QUEUE_OVERLAY);
(这里设的OVERLAY层,当然你可以设为BACKGROUD等其它层)
这里需要创建一个包围盒:
AxisAlignedBox *aabb = new AxisAlignedBox();
aabb->setInfinite();
( Ogre是一个3D引擎,它会把2D物体当作在3D空间里对待。这意味着,如果我们创建这个物体,并把它绑在场景节点上,当我们远一点观看时会消失。为了修正这个问题,我们将把这个物体的包围盒设置成无限大,这样摄像机就永远在它里面 )
将二者联合起来,并绑定在一个节点上:
rect->setBoundingBox(*aabb);
SceneNode* backNode=mSceneMgr->getRootSceneNode()->createChildSceneNode("BackgroundNode");
backNode->attachObject(rect);
呵呵,这样就实现了。