ogre屏幕拾取
ogre的屏幕拾取,主要通过发射一条射线,然后检测碰撞来完成。
CEGUI::GUIContext& context = CEGUI::System::getSingleton().getDefaultGUIContext();
context.injectMouseButtonDown(convertButton(id));
if (id == OIS::MB_Left)
{
CEGUI::Vector2f mousePos = context.getMouseCursor().getPosition();
Ogre::Ray mouseRay =
mCamera->getCameraToViewportRay(
mousePos.d_x / float(arg.state.width),
mousePos.d_y / float(arg.state.height));
Ogre::TerrainGroup::RayResult result = mTerrainGroup->rayIntersects(mouseRay);
if (result.terrain)
{
Ogre::Entity* ent = mSceneMgr->createEntity("robot.mesh");
mCurObject = mSceneMgr->getRootSceneNode()->createChildSceneNode();
mCurObject->setPosition(result.position);
mCurObject->setScale(0.1, 0.1, 0.1);
mCurObject->attachObject(ent);
}
}