我目前正在尝试在我的项目中实现一个轮廓算法(使用Open GLES,它目前主要用于移动设备,主要是iPhone )。其中一个要求是绘制一组3D线条。默认OpenGL线路的问题是,当它们很粗时,它们不能很好地连接成一个角度(出现间隙)。其他微妙的伪影也很明显,它们削弱了线条的视觉吸引力。
现在,我已经考虑使用某种类型的四元组作为替代。但是,在屏幕空间中绘制四元组需要某种可见性检测-在实际3D世界中遮挡的线条应该不可见。
有许多方法可以解决这个问题-即定量不可见性。但是,考虑到需要使用光线投射,这种方法,特别是在处理能力有限的移动设备上,很难有效地实现。再看一看,我发现了this paper,它描述了几种使用z-buffer采样来实现这种效果的方法。然而,我不是这个领域的专家,虽然我在一定程度上了解这些技术背后的理论,但我不确定如何进行实际实现。我想知道是否有人可以在这里指导我更多的技术层面-在OpenGLES方面的事情。我也对任何关于3D线条可见性的建议持开放态度。
发布于 2012-10-04 12:12:17
我已经想出了一个在iPhone 4S上运行良好的解决方案(没有在任何其他设备上测试过)。它建立在渲染世界空间四边形的想法上,并在GPU上进行轮廓检测。它的工作方式是这样的(不是双关语):
这不会直接解决相邻边缘之间可能出现的差距,但在解决这一问题时要灵活得多。一种解决方案可能涉及将大角度线与另一个四边形之间的顶点连接起来,这是我目前正在探索的。
https://stackoverflow.com/questions/11200593
复制相似问题