Three.js: 无面的几何体仍在网格中渲染

创建于 2017-08-07  ·  3评论  ·  资料来源: mrdoob/three.js

这个想法是我的几何图形总是具有相同的顶点,但是可以选择添加面。 但是,它会随机决定是否绘画东西。 演示在这里

Bug Won't fix

最有用的评论

我今天调试了这个问题。 Geometry在内部转换为BufferGeometry 。 转换的结果取决于对象的类型(网格,线等)。 因此,在@makc的示例中,几何被转换为Line对象的几何。 这将创建一个位置和颜色属性。 当的实例Mesh与相同呈现Geometry对象,渲染器将返回的相同缓存实例BufferGeometry

https://github.com/mrdoob/three.js/blob/ec67749b0767e2727deebd52da2dbd3a4e7ab6a2/src/renderers/webgl/WebGLGeometries.js#L63 -L65

这就是为什么您在演示中看到这些绿色三角形的原因。 MeshLine共享相同的内部BufferGeometry并以不同的方式解释它。 我认为,如果在缓存BufferGeometry时尝试尊重对象的类型,则可以解决此问题。

或者我们只建议首先使用BufferGeometry :sweat_smile:

所有3条评论

这里相反的问题-我们看不到定义面孔的面孔。 也许是因为几何是在“线”和“网格”之间共享的。

我今天调试了这个问题。 Geometry在内部转换为BufferGeometry 。 转换的结果取决于对象的类型(网格,线等)。 因此,在@makc的示例中,几何被转换为Line对象的几何。 这将创建一个位置和颜色属性。 当的实例Mesh与相同呈现Geometry对象,渲染器将返回的相同缓存实例BufferGeometry

https://github.com/mrdoob/three.js/blob/ec67749b0767e2727deebd52da2dbd3a4e7ab6a2/src/renderers/webgl/WebGLGeometries.js#L63 -L65

这就是为什么您在演示中看到这些绿色三角形的原因。 MeshLine共享相同的内部BufferGeometry并以不同的方式解释它。 我认为,如果在缓存BufferGeometry时尝试尊重对象的类型,则可以解决此问题。

或者我们只建议首先使用BufferGeometry :sweat_smile:

@mrdoob我建议引入一个新标签Wont't fix ,将其分配给该问题并关闭它。 如果项目要停止渲染Geometry ,我认为向渲染器添加修复程序是没有意义的。 此问题的解决方案是BufferGeometry的用法。

此页面是否有帮助?
0 / 5 - 0 等级