Three.js: Геометрия без граней по-прежнему отображается в сетке

Созданный на 7 авг. 2017  ·  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

Это причина, по которой вы видите эти зеленые треугольники в демонстрации. Mesh и Line используют один и тот же внутренний 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

Это причина, по которой вы видите эти зеленые треугольники в демонстрации. Mesh и Line используют один и тот же внутренний BufferGeometry и интерпретируют его по-разному. Я думаю, что мы можем решить эту проблему, если попытаемся уважать тип объекта при кешировании BufferGeometry .

Или мы просто рекомендуем в первую очередь использовать BufferGeometry : sweat_smile:

@mrdoob Предлагаю ввести новый ярлык Wont't fix , присвоить его задаче и закрыть. Я не думаю, что имеет смысл добавлять исправление в рендерер, если проект все равно перестанет рендерить Geometry . Решением этой проблемы является использование BufferGeometry .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги