查看: 1180|回复: 1

跪求:重写TabPlaneTrackballDragger不能精确控制模型

[复制链接]

该用户从未签到

发表于 2013-10-22 17:11:24 | 显示全部楼层 |阅读模式
本帖最后由 267270476 于 2013-10-22 17:13 编辑

跪求帮助:TabPlaneTrackballDragger默认在XOZ平台下,现在项目需要在XOY平台下实现跟TabPlaneTrackballDragger一样的功能,因此重写了TabPlaneTrackballDragger类,投为C。自己写的类A模拟TrackballDragger类,但只保留了类TrackballDragger的_zDragger,其他跟TrackballDragger类的代码一致。自己写的类B模拟TabPlaneDragger类,重写了
setupDefaultGeometry方法,代码如下:
osg::ref_ptr<osg::Node> handleNode = createHandleNode(_cornerScaleDragger.get(), _handleScaleFactor, twoSidedHandle);

    createCornerScaleDraggerGeometry(_cornerScaleDragger.get(), handleNode.get(), _handleScaleFactor);
    createEdgeScaleDraggerGeometry(_horzEdgeScaleDragger.get(), _vertEdgeScaleDragger.get(), handleNode.get(), _handleScaleFactor);
    createTranslateDraggerGeometry(_cornerScaleDragger.get(), _translateDragger.get());
//自己添加的
    osg::Quat rotation0;
    rotation0.makeRotate(osg::Vec3(0.0f, 0.0f, 1.0f), osg::Vec3(0.0f, 1.0f, 0.0f));
    _vertEdgeScaleDragger->setMatrix(osg::Matrix(rotation0));

    osg::Quat rotation1;
    rotation1.makeRotate(osg::Vec3(0.0f, 0.0f, 1.0f), osg::Vec3(0.0f, 1.0f, 0.0f));
    _horzEdgeScaleDragger->setMatrix(osg::Matrix(rotation1));

    osg::Quat rotation2;
    rotation2.makeRotate(osg::Vec3(0.0f, 0.0f, 1.0f), osg::Vec3(0.0f, 1.0f, 0.0f));
    _translateDragger->setMatrix(osg::Matrix(rotation2));

    osg::Quat rotation3;
    rotation3.makeRotate(osg::Vec3(0.0f, 0.0f, 1.0f), osg::Vec3(0.0f, 1.0f, 0.0f));
    _cornerScaleDragger->setMatrix(osg::Matrix(rotation3));
最后,把自己写的这两个类A,B的对象作为类C的成员变量,类似TabPlaneTrackballDragger类与TrackballDragger、TabPlaneDragger的关系,现在有三个问题:
1、把类C生成的dragger(坐标为-12.68,-3.75,0)作为一个MatrixTransform类对象(坐标355090,2769699,0)的Child时, 1.png ,有两个用于拖拽的点没有出现
2、其他拖拽的点特别难以点到
3、选中中间的拖拽球进行拖拽时有时会转得特别快,无法控制。
但是把该类用于控制cow.osg时,问题1仍然存在,2、3却没有了。
这三个问题困扰一天了,求各种大神帮帮忙,给点意见,不胜感激了!

该用户从未签到

发表于 2014-11-11 11:08:14 | 显示全部楼层
我也是,根部不听使唤。只有用鼠标拽动在 box前面的弧线的时候是对的。如果圆弧是在物体上下左右,那就是lz说的情况,反着转
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表