Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过重叠颜色在javascript中进行隐藏和可见的表面渲染_Javascript_3d_Html5 Canvas_Rendering_Zbuffer - Fatal编程技术网

通过重叠颜色在javascript中进行隐藏和可见的表面渲染

通过重叠颜色在javascript中进行隐藏和可见的表面渲染,javascript,3d,html5-canvas,rendering,zbuffer,Javascript,3d,Html5 Canvas,Rendering,Zbuffer,我正在尝试在我的3D渲染器中实现一个隐藏曲面确定算法。我发现了非常好的方法,比如Z-Buffer或Warnock算法。然而,它们非常消耗资源。因此,我想知道,为什么不使用不透明的重叠颜色,我可以得到相同的视觉效果?。在继续之前,我希望收到一些反馈和意见,如果这是一个很好的解决方案,当然,可以将此帖子作为一种与社区分享的方式。该方法基本上可以归结为:1)按Z坐标对场景中的所有多边形排序2)使用不透明颜色按顺序渲染所有多边形。图像/视图/视觉效果将是相同的,而不必求助于昂贵的逐像素计算过程。 (例如

我正在尝试在我的3D渲染器中实现一个隐藏曲面确定算法。我发现了非常好的方法,比如Z-Buffer或Warnock算法。然而,它们非常消耗资源。因此,我想知道,为什么不使用不透明的重叠颜色,我可以得到相同的视觉效果?。在继续之前,我希望收到一些反馈和意见,如果这是一个很好的解决方案,当然,可以将此帖子作为一种与社区分享的方式。该方法基本上可以归结为:1)按Z坐标对场景中的所有多边形排序2)使用不透明颜色按顺序渲染所有多边形。图像/视图/视觉效果将是相同的,而不必求助于昂贵的逐像素计算过程。 (例如:假设我有两个相交的多边形(P1,P2)。假设观察者最近的Z坐标为0,如果P1z=10和P2z=3,则渲染顺序为:P2>P1。绘制时,P2的颜色将覆盖P1的边和放置在两个多边形之间的2D XY相交处的颜色)您认为这有什么缺点?你认为这足以解决这个问题吗?
PS:我不使用多边形网格,要处理的3D对象是简单的凹凸图形

多边形可以相交(甚至部分相交),并确定一个多边形的哪个部分在另一个多边形的前面。这是一个非常昂贵的计算。

多边形可以相交(甚至部分相交)然后确定一个多边形的哪个部分在另一个前面这是一个非常昂贵的计算。

但在我的程序环境中,这并不是一个真正的问题。无论如何,它仍然比z缓冲快得多。我在谷歌上发现,“我的”想法实际上已经存在了。它被称为“画家算法”。我现在唯一关心的是“循环重叠”的问题,这会影响我的程序,只有当这种现象发生在同一个非自相交的3D object.z-buffer上时,它通常在GPU上执行,因为正如你所说,它确实很麻烦。据我所知,解决问题的唯一方法是将每个多边形与其他多边形分开,并仅将剩余部分靠近观察者。可能有助于从计算中跳过复杂的隐藏对象。但在我的程序中,这并不是一个真正的问题。无论如何,它仍然比z缓冲快得多。我在谷歌上发现,“我的”想法实际上已经存在了。它被称为“画家算法”。我现在唯一关心的是“循环重叠”的问题,这会影响我的程序,只有当这种现象发生在同一个非自相交的3D object.z-buffer上时,它通常在GPU上执行,因为正如你所说,它确实很麻烦。据我所知,解决问题的唯一方法是将每个多边形与其他多边形分开,并仅将剩余部分靠近观察者。可能有助于从计算中跳过复杂的隐藏对象。