Three.js CanvasRender问题:面孔闪烁进出

问题描述 投票:2回答:2

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

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

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

我已经尝试过将BasicMaterial,Normal Material和LambertMaterial一起使用SmoothShading和Flat Shading。我尝试了有无照明的场景。将对象移得更远似乎可以解决此问题,但是在给定的示例代码中,网格不会重叠,也不应该出现此问题。 Chrome和Firefox均出现问题。

我想切换到OpenGL渲染器将解决此问题,但是为了兼容,我们需要使用Canvas渲染器。

任何帮助或想法得到赞赏。

javascript canvas 3d three.js
2个回答
6
投票

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

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


0
投票

material.overdraw已被删除。还有其他选择吗? @mrdoob

© www.soinside.com 2019 - 2024. All rights reserved.