Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Canvas three.js overdraw=true在透明几何体上创建线框瑕疵_Canvas_Three.js_Renderer - Fatal编程技术网

Canvas three.js overdraw=true在透明几何体上创建线框瑕疵

Canvas three.js overdraw=true在透明几何体上创建线框瑕疵,canvas,three.js,renderer,Canvas,Three.js,Renderer,看起来,当overdraw设置为true时,画布渲染器实际上会将填充扩展到面边缘之外,以便它们稍微重叠。这通常很好,但当材质透明时,这些重叠边会创建不需要的线框类型瑕疵 请参见示例中的粉红色箭头: 有没有一种方法可以计算填充实际扩展了多少?恐怕我对源代码一无所知,但如果有人能指出在哪里处理(源代码中的哪一行),我将不胜感激。如果做不到这一点,希望有人知道另一种解决方案或解决方法 我意识到在使用WebGL渲染器时问题会消失,但如果可能的话,我被要求在画布上工作。是的。恐怕使用CanvasRende

看起来,当overdraw设置为true时,画布渲染器实际上会将填充扩展到面边缘之外,以便它们稍微重叠。这通常很好,但当材质透明时,这些重叠边会创建不需要的线框类型瑕疵

请参见示例中的粉红色箭头:

有没有一种方法可以计算填充实际扩展了多少?恐怕我对源代码一无所知,但如果有人能指出在哪里处理(源代码中的哪一行),我将不胜感激。如果做不到这一点,希望有人知道另一种解决方案或解决方法


我意识到在使用WebGL渲染器时问题会消失,但如果可能的话,我被要求在画布上工作。

是的。恐怕使用
CanvasRenderer
无法解决这个问题

但是如果你想尝试一些价值观。。。这是实现以下功能的函数:

你可以试试这个

idet = ( 1 / Math.sqrt( det ) ) * 0.5;
然后,在系统中安装python后,转到/utils并运行此命令以生成新的Three.js:

python build.py --common
这是为了在完成后缩小它:

python build.py --common --minified
但我认为在不同的浏览器中可能会得到不同的结果


很想知道你是否解决了这个问题。

谢谢你的快速回复。这确实起了作用——有点像。当几何体旋转离开摄影机时,重叠似乎变得更严重,因此即使像.4或.5这样的值起初看起来正常,但随着动画的进行,它会再次开始重叠。显然,如果该值太低,则该方法要修复的接缝将再次显示。几何体太复杂,无法进行排序,因此我将该值保留为.5,并决定满足于它稍微缓解了问题,即使它没有修复。再次谢谢你。有趣的是,Chrome、Firefox和SafariAh的结果似乎是一致的。也许我应该把它放进去。