在这里相反的问题-我们看不到定义面孔的面孔。 也许是因为几何是在“线”和“网格”之间共享的。
我今天调试了这个问题。 Geometry
在内部转换为BufferGeometry
。 转换的结果取决于对象的类型(网格,线等)。 因此,在@makc的示例中,几何被转换为Line
对象的几何。 这将创建一个位置和颜色属性。 当的实例Mesh
与相同呈现Geometry
对象,渲染器将返回的相同缓存实例BufferGeometry
。
这就是为什么您在演示中看到这些绿色三角形的原因。 Mesh
和Line
共享相同的内部BufferGeometry
并以不同的方式解释它。 我认为,如果在缓存BufferGeometry
时尝试尊重对象的类型,则可以解决此问题。
或者我们只建议首先使用BufferGeometry
:sweat_smile:
@mrdoob我建议引入一个新标签Wont't fix
,将其分配给该问题并关闭它。 如果项目要停止渲染Geometry
,我认为向渲染器添加修复程序是没有意义的。 此问题的解决方案是BufferGeometry
的用法。
最有用的评论
我今天调试了这个问题。
Geometry
在内部转换为BufferGeometry
。 转换的结果取决于对象的类型(网格,线等)。 因此,在@makc的示例中,几何被转换为Line
对象的几何。 这将创建一个位置和颜色属性。 当的实例Mesh
与相同呈现Geometry
对象,渲染器将返回的相同缓存实例BufferGeometry
。https://github.com/mrdoob/three.js/blob/ec67749b0767e2727deebd52da2dbd3a4e7ab6a2/src/renderers/webgl/WebGLGeometries.js#L63 -L65
这就是为什么您在演示中看到这些绿色三角形的原因。
Mesh
和Line
共享相同的内部BufferGeometry
并以不同的方式解释它。 我认为,如果在缓存BufferGeometry
时尝试尊重对象的类型,则可以解决此问题。或者我们只建议首先使用
BufferGeometry
:sweat_smile: