osg for 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;
}


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




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值