Проблема противоположная здесь - мы не видим лица , где они определены. Возможно, это связано с тем, что геометрия разделяется между линией и сеткой.
Сегодня я отладил эту проблему. 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: