查看: 2315|回复: 2

选择和高亮问题

[复制链接]

该用户从未签到

发表于 2011-3-23 20:47:35 | 显示全部楼层 |阅读模式
有两个问题需要大家的帮助:
1.如何实现橡皮筋效果?比如说框选
2.如何将选择的物体高亮?我是将选中的物体颜色设置为黄色,但是选中其它物体或没有选中物体时,之前选中的物体恢复原来的颜色?

该用户从未签到

发表于 2011-3-23 21:12:10 | 显示全部楼层
对于您说的橡皮筋,我认为可以先确定几个控制点,然后插值生成一个封闭线框;
第2个问题:您在选中某模型时,应将其节点记录下来(如果是多个,则可以使用vector、array进行记录),这个节点状态是高亮之前的状态,并设置线框颜色,然后设置一个信号量来表示当前已经完成高亮标记操作;当您再一次选择模型时,先对信号量判断,若已高亮标记了,则需要将原高亮模型对象进行标记恢复,然后再重复上面的操作即可。
大致就是这几个调用及判断:
                osgFX::Scribe* parentAsScribe = dynamic_cast<osgFX::Scribe*>(parent);
                                                        if (!parentAsScribe)
                                                        {
                                                                //如果对象选择到,高亮显示
                                                                osgFX::Scribe* scribe = new osgFX::Scribe();
                                                                scribe->setWireframeColor(osg::Vec4(1.0,1.0,0.0,1.0));
                                                                scribe->addChild(node);
                                                                parent->replaceChild(node,scribe);
                                                         ……
                                                        //判断交集,查找您要标记的节点,并进行记录
                                              }else{
                                                         ……
                                              }

该用户从未签到

发表于 2011-3-23 23:52:47 | 显示全部楼层
选中的程序您可以参考osg自带的例子osgpicke,至于恢复原色您可以把加入的osgFX::Scribe特效节点从根列表中删掉来实现
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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