ogre 查询平面地图中鼠标所在位置的高度

 //查询鼠标高度 mMouse-

  CEGUI::Point mousePos = CEGUI::MouseCursor::getSingleton().getPosition();
  Ray mouseRay = mCamera->getCameraToViewportRay(mousePos.d_x/float(mMouse->getMouseState().width), mousePos.d_y/float(mMouse->getMouseState().height));
  mRaySceneQuery->setRay(mouseRay);
  mRaySceneQuery->setSortByDistance(true);
  //Execute query
  RaySceneQueryResult &result = mRaySceneQuery->execute();
  RaySceneQueryResult::iterator itr;

  for ( itr = result.begin(); itr != result.end(); itr++ )
  {
   //计算鼠标当前像素的高度值
   Vector3 RayDirection = mouseRay.getDirection();//鼠标射线方向
   float CamDistance = itr->distance;//鼠标射线从起点到平面上点的两点距离
   Vector3 MouseBeginPosition = mouseRay.getOrigin();//鼠标起点坐标
   Vector3 CurrnetPix = MouseBeginPosition + CamDistance*RayDirection;//起点+方向*距离=终点坐标
   CursorMapX = -(int)CurrnetPix.x + PixsWidth/2;
   CursorMapY = -(int)CurrnetPix.z + PixsHeight/2;
   if (CursorMapX<=0||CursorMapX>=PixsWidth||CursorMapY<=0||CursorMapY>=PixsHeight)
   {
    break;
   }
   CursorHeight = pwHeight[CursorMapY*PixsWidth + CursorMapX];
   return mContinue;
  }
  //出界
  CursorMapX = 0;
  CursorMapY = 0;
  CursorHeight = 0;
  return mContinue;
 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值