查看: 2371|回复: 5

关于OSG点选(PICK)绘制的POINTS,LINES,LINE_STRIP 等对象

[复制链接]

该用户从未签到

发表于 2015-12-16 19:25:20 | 显示全部楼层 |阅读模式

最近研究osg遇到一些问题,在此请教各位大牛,希望能给小弟一些指导和启发,小弟在此先谢谢大家了!
描述:
我最近要在项目中做一些类似于cad绘制的功能,具体就是绘制和编辑  点,线,多边形,但是我在进行过程中需要实现鼠标的点选功能,我采用的是osg的pick的点选,但是会之后发现一些类型如:
osg:rimitiveSet:INE_LOOP ,
osg:rimitiveSet:OINTS,
osg:rimitiveSet:INES,
osg:rimitiveSet:INE_STRIP
等一些类型不能做到点选,
如osg:rimitiveSet:INE_LOOP
1.png

鼠标放到三角形中但是pick不到,而同样的代码只是将绘制类型变为osg:rimitiveSet::TRIANGLES就可以pick选择了

TRIANGLES

TRIANGLES


现在我绘制的都是一些空心的图形,希望知道可以点选,这个问题困扰了好几天了,网上也没找到合适的资料,诚心请教论坛中各位高手能够给小弟帮助和指导如果有现成的例子就更好了,再次感谢!!

该用户从未签到

发表于 2015-12-18 11:34:49 | 显示全部楼层
osg只对可以三角化的图元做了相交检测,可以参考osgEarth中的Pick,用线宽做buffer,然后再做相交检测

该用户从未签到

发表于 2015-12-20 20:58:42 | 显示全部楼层
zzugis 发表于 2015-12-18 11:34
osg只对可以三角化的图元做了相交检测,可以参考osgEarth中的Pick,用线宽做buffer,然后再做相交检测

我也在卡在这里了,请问能说具体一些吗,能发一些源代码或者相关帖子的文章吗?谢谢 大神!

该用户从未签到

发表于 2015-12-29 15:04:51 | 显示全部楼层
我使用osgUtil:olytopeIntersector* picker  = new osgUtil::PolytopeIntersector( osgUtil::Intersector::PROJECTION, fX-0.05f,fY-0.05f,fX+0.05f,fY+0.05f);
扩大选择区域来选择线段,点,但是一个区域有多个物体时候不清楚如何将所有的选择遍历出来。

该用户从未签到

发表于 2015-12-30 14:04:57 | 显示全部楼层
osg用的射线求交,点,线,线框,都无法求到焦点。你可以试一下基于纹理的拾取。

该用户从未签到

发表于 2016-1-21 09:57:18 | 显示全部楼层
sxcblh 发表于 2015-12-29 15:04
我使用osgUtil:olytopeIntersector* picker  = new osgUtil:olytopeIntersector( osgUtil::Intersector ...

请问你问题解决了吗?我也遇到同样的问题~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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