查看: 2131|回复: 5

如何用osg实现隐藏线消除

[复制链接]

该用户从未签到

发表于 2011-6-2 09:20:44 | 显示全部楼层 |阅读模式
我想实现一般三维图形平台的隐藏线消除显示模式,不知道osg中如何实现?如图就是后面的三根虚线被遮挡了不要显示出来 未命名.JPG

该用户从未签到

发表于 2011-6-2 09:40:10 | 显示全部楼层
我知道LineStipple可以实现虚线的绘制,但我想不到传统的方法能否计算和判断哪些线在背面需要被消隐;如果是我的话可能会想到用geometry shader来实现(不过效率一定不高)

该用户从未签到

发表于 2011-6-2 10:11:20 | 显示全部楼层
要不就得自己计算线的前后关系了,也麻烦,呵呵

该用户从未签到

发表于 2011-6-3 12:23:39 | 显示全部楼层
这跟阴影算法是一个样的吧,先用实体渲染,然后线框渲染使用实体渲染的深度来剔除

该用户从未签到

 楼主| 发表于 2011-11-24 13:13:43 | 显示全部楼层
fenma3422 发表于 2011-6-3 12:23
这跟阴影算法是一个样的吧,先用实体渲染,然后线框渲染使用实体渲染的深度来剔除

这个可以使用offset来实现,关键这只能实现自身消隐,如果是两个物体遮挡,除了自身消隐,后面挡住的一部分也要消掉,这就不知道osg能不能实现了?

该用户从未签到

发表于 2011-11-24 17:12:45 | 显示全部楼层
本帖最后由 fenma3422 于 2011-11-24 17:14 编辑

深度是全局的,因此具有物体之间的遮挡信息,你可以在shader中对于每个物体的片元判断是否在阴影中,如果在就discard,最终结果就是隐藏线不会显示
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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