查看: 920|回复: 4

如何判断视线范围内的两个模型谁遮挡住了谁?

[复制链接]

该用户从未签到

发表于 2017-12-7 10:33:52 | 显示全部楼层 |阅读模式
请问各位大神,在拣选过程中,如果视景体内一个模型挡着另一个模型 怎么确定这两个模型是谁挡谁呢?目前感觉是通过两个模型的视距来区分,但是感觉有点不太对,有没有对应的接口或者方法可以判断区分出来?跪求大神帮忙解答,感激不尽

该用户从未签到

发表于 2017-12-7 14:48:41 | 显示全部楼层
试试射线求交?

该用户从未签到

发表于 2017-12-7 15:37:51 | 显示全部楼层
你做射线法拾取的时候不是的了一个求交列表,你遍历下列表获取关联的node名字就可以了。。。

该用户从未签到

 楼主| 发表于 2017-12-8 13:52:31 | 显示全部楼层
liujing7256 发表于 2017-12-7 15:37
你做射线法拾取的时候不是的了一个求交列表,你遍历下列表获取关联的node名字就可以了。。。

如果两个模型的大小不一致,在前的模型只是挡了后面模型的一部分,射线求交的话得设定好射线的方向向量,保证两个模型都能有交集才行吧?我现在有一个想法,计算视距到两个模型中心点的距离向量,然后计算在y轴上的长度。哪个长度小就表示哪个在前。

该用户从未签到

发表于 2017-12-11 09:49:56 | 显示全部楼层
ilypp21 发表于 2017-12-8 13:52
如果两个模型的大小不一致,在前的模型只是挡了后面模型的一部分,射线求交的话得设定好射线的方向向量, ...

你是想判断鼠标位置下遮挡关系,还是观察方向上全局遮挡关系?两个物体,还是多个物体?你说的这个方法显然不正确,连你自己先前都说了。鼠标位置下遮挡关系射线法就可以解决了。评估全局遮挡关系的话,最快速高效的还只能是利用缓冲区内取色(有的叫GPU 拾取),写些shader去判断。无论用数学计算,还是缓冲区内取色,全局遮挡关系的判断最麻烦。数学计算的话,需要计算实体投影到投影平面上的相交区域(利用boundingbox),在区域内再去计算谁前谁后。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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