我正在使用深度排序进行基本物体透明效果。我使用距离(平方)作为深度值,计算方法是从相机到模型三角形中心的距离,计算公式为{(x1+x2+x3)/3, (y1+y2+y3)/3, (z1+z2+z3)/3}。虽然结果几乎正确,但仍存在一些错误。
未经过排序的猴头
经过排序
对于这些错误,我能做些什么吗?
我正在使用深度排序进行基本物体透明效果。我使用距离(平方)作为深度值,计算方法是从相机到模型三角形中心的距离,计算公式为{(x1+x2+x3)/3, (y1+y2+y3)/3, (z1+z2+z3)/3}。虽然结果几乎正确,但仍存在一些错误。
未经过排序的猴头
经过排序
对于这些错误,我能做些什么吗?
无法完美地对三角形进行排序。请查看opengl.org wiki上的透明度排序文章末尾的示例。
@kos: 请查看双深度剥离实现无序透明度和Alpha to Coverage。
从数学角度来说,如果你知道某个物体的一些信息,它可以帮助排序。
例如,立方体的面可以仅通过重心(面中心)进行深度排序。如果正方形面 A 的中心比 B 的中心更靠近,B 将永远没有任何部分在 A 的前面(同样适用于立方体)。
事实上,对于凸体而言,面可以仅通过定向进行排序。