查看: 4140|回复: 5

如何让鼠标选中TranslateAxisDragger 的被物体遮挡的 移动杆?

[复制链接]

该用户从未签到

发表于 2015-1-9 11:33:24 | 显示全部楼层 |阅读模式
如下图:现在只能用鼠标选中露出来的TranslateAxisDragger  的杆子,但是被物体包在里面的部分鼠标不能选中拖动(如图中俩鼠标位置,就不能拖动移动杆)。

不知道如何使得鼠标能选中拖动被方块包含的杆?这样可以使得拖动选择范围更大,不一定选露出来的杆子部分。

QQ Photo20150108222317.jpg

该用户从未签到

发表于 2016-1-17 13:48:46 | 显示全部楼层
可以更拖拽器坐标轴的渲染顺序,保证在最前面不被遮挡,很多软件都是这么做的。

该用户从未签到

发表于 2017-4-18 09:16:22 | 显示全部楼层
射线求交,手动调用pickhandle。
  • TA的每日心情
    开心
    2020-8-21 16:12
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2021-1-7 13:36:03 | 显示全部楼层
    把dragger的intersectionmask设为1,把物体的nodemask设为0x4,与操作就是0,这样就ok了!

    该用户从未签到

    发表于 2021-5-21 11:39:29 | 显示全部楼层
    SUN_OSG 发表于 2021-1-7 13:36
    把dragger的intersectionmask设为1,把物体的nodemask设为0x4,与操作就是0,这样就ok了!

    这样是可以,  但是 dragger 会拖动到任何可能的node,  总不能将所有node都设置某个mask值 ?  还有其他方案吗?

    该用户从未签到

    发表于 2022-6-10 08:48:17 | 显示全部楼层
    smdl 发表于 2021-5-21 11:39
    这样是可以,  但是 dragger 会拖动到任何可能的node,  总不能将所有node都设置某个mask值 ?  还有其他方 ...

    在这个位置OpenSceneGraph->src->osgManipulator->Dragger.cpp,里边有一个函数bool Dragger::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa),
    这个里边有一个求交器,求交器求交之后会有一个nodePath,默认取第一个作为点击选中的模型;可以遍历这个nodePath拿到拖拽器对应的node
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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