2

我正在绘制两个相对简单的形状,它们的几何形状不重叠。

这是代码示例:http: //jsfiddle.net/pGD4n/9/

Three.js 轨迹球就在其中,因此您可以单击并拖动以在 3d 空间中旋转对象。问题是随着物体的旋转,一些面会消失,露出下面的物体。稍微旋转一下,丢失的脸又回来了,但其他人已经失踪了。

我尝试了 BasicMaterial、Normal Material 和 LambertMaterial 以及 SmoothShading 和 Flat Shading。我已经尝试过有灯光和没有灯光的场景。将对象移得更远似乎可以解决问题,但在给定的示例代码中,网格不重叠,不应该有这个问题。Chrome 和 Firefox 都会出现问题。

我想切换到 OpenGL 渲染器可以解决这个问题,但是为了兼容性,我们需要使用 Canvas 渲染器。

任何帮助或想法表示赞赏。

4

1 回答 1

6

这是一个限制CanvasRenderer。不幸的是,每像素 z 排序不可用,CanvasRenderer因此它基本上尝试对整个多边形进行排序。根据您从一个多边形的中心看的位置,它可能比侧面的多边形更近,因此它会“跳跃”。

目前唯一的解决方案是使用WebGLRenderer. 我正在为 context2d 开发一个新的渲染器,希望它可以在不需要 webgl 的情况下解决这个问题,但它仍然需要一些时间。

于 2012-06-26T20:56:11.070 回答