Three.js: La geometría sin caras todavía se renderiza en malla

Creado en 7 ago. 2017  ·  3Comentarios  ·  Fuente: mrdoob/three.js

La idea es que mi Geometría siempre tenga los mismos vértices, pero opcionalmente se agregan caras. Sin embargo, decide dibujar cosas al azar independientemente. Demo aquí .

Bug Won't fix

Comentario más útil

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 .

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 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:

Todos 3 comentarios

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 .

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 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 .

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

makc picture makc  ·  3Comentarios

filharvey picture filharvey  ·  3Comentarios

Horray picture Horray  ·  3Comentarios

donmccurdy picture donmccurdy  ·  3Comentarios

yqrashawn picture yqrashawn  ·  3Comentarios