Un problema opuesto aquí : no vemos caras donde están definidas. Entonces, tal vez esto se deba a que la geometría se comparte entre la línea y la malla.
He depurado este problema hoy. Geometry
se convierte internamente en BufferGeometry
. El resultado de esta conversión depende del tipo de objeto (malla, línea, etc.). Entonces, en el ejemplo de @makc , la geometría se convierte como la geometría de un objeto Line
. Esto creará una posición y un atributo de color. Cuando la instancia de Mesh
se renderiza con el mismo objeto Geometry
, el renderizador devuelve la misma instancia en caché de BufferGeometry
.
Esta es la razón por la que ves estos triángulos verdes en la demostración. Mesh
y Line
comparten el mismo BufferGeometry
interno y lo interpretan de manera diferente. Creo que podemos resolver este problema si tratamos de respetar el tipo de objeto al almacenar en caché BufferGeometry
.
O simplemente recomendamos usar BufferGeometry
en primer lugar: sweat_smile:
@mrdoob Sugiero introducir una nueva etiqueta Wont't fix
, asignarla al problema y cerrarla. No creo que tenga sentido agregar una corrección al renderizador si el proyecto va a dejar de renderizar Geometry
todos modos. La solución para este problema es el uso de BufferGeometry
.
Comentario más útil
He depurado este problema hoy.
Geometry
se convierte internamente enBufferGeometry
. El resultado de esta conversión depende del tipo de objeto (malla, línea, etc.). Entonces, en el ejemplo de @makc , la geometría se convierte como la geometría de un objetoLine
. Esto creará una posición y un atributo de color. Cuando la instancia deMesh
se renderiza con el mismo objetoGeometry
, el renderizador devuelve la misma instancia en caché deBufferGeometry
.https://github.com/mrdoob/three.js/blob/ec67749b0767e2727deebd52da2dbd3a4e7ab6a2/src/renderers/webgl/WebGLGeometries.js#L63 -L65
Esta es la razón por la que ves estos triángulos verdes en la demostración.
Mesh
yLine
comparten el mismoBufferGeometry
interno y lo interpretan de manera diferente. Creo que podemos resolver este problema si tratamos de respetar el tipo de objeto al almacenar en cachéBufferGeometry
.O simplemente recomendamos usar
BufferGeometry
en primer lugar: sweat_smile: