码迷,mamicode.com
首页 > 移动开发 > 详细

osg for android 操作器

时间:2014-12-04 15:46:04      阅读:387      评论:0      收藏:0      [点我收藏+]

标签:osg android 操作器 三维

   很短的文章解决一个实用的问题
   osg for android默认操作器,用起来是不是不能动,一触屏模型就飞了?

   是的,原因是由于在相机操作的时候的一个计算引起的.

   引擎代码段中,会看到许多下面的处理.

    float dx = _ga_t0->getXnormalized()-_ga_t1->getXnormalized();

    float dy = _ga_t0->getYnormalized()-_ga_t1->getYnormalized();

    这个计算本身没有问题,问题就出在android中,getXnormalized()函数中的取值出了问题
   inline float getXnormalized() const { return 2.0f*(getX()-getXmin())/(getXmax()-getXmin())-1.0f; }

  其中getXmax()/getYmax()取到的值是错误的
  所以整个计算都出了问题(具体为什么没取到正确的值,目前没有深入去跟)
  解决方法就很简单了,重写整个函数
  给出getXnormalized()的代码段,Y同理(android中Y需要取反)

 float MyTrackballManipulator::getXnormalized(const osg::ref_ptr<const osgGA::GUIEventAdapter> ea){
if(!ea)
{
return 0;
}
float w = ea->getWindowWidth();
float xOrigin = ea->getWindowX();
return 2.0f*((ea->getX()-xOrigin)/w)-1.0f;
}


至此您的操作器就没有问题了
附截图一张

bubuko.com,布布扣


bubuko.com,布布扣

osg for android 操作器

标签:osg android 操作器 三维

原文地址:http://blog.csdn.net/gis_wudi/article/details/41723245

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!