2016-04-17 12 views
0

Следуя за previous question, я имею дело со строительными моделями в BufferGeometry и понимаю, что флага transparent влияет на порядок визуализации: объекты с прозрачными материалами будут отображаться после непрозрачных.Render Order of BufferGeometry in Thee.js

Кроме того, я прочитал от этого thread, сделал эксперимент по JSFiddle и понял, что делает порядок граней в BufferGeometry таким же, как и порядок они указаны в буферах, но не расстояние от камер. (В приведенном выше эксперименте я указываю более близкий треугольник первым в буфере, и он закрывает другие за ним.)

Итак, мой вопрос: возможно ли вручную задать порядок граней вручную в BufferGeometry? В моем случае мне может потребоваться динамическое изменение прозрачности элементов здания. (Я читал thread, говоря, что мы можем установить renderOrder объекта Object3D.)

Спасибо.

ответ

0

Лица отображаются в том порядке, в котором они отображаются в BufferGeometry.

Если вам нужно динамически изменять прозрачность элементов сцены, я предлагаю вам поддерживать отдельные геометрии, каждый из которых связан с собственным материалом.

Средство визуализации визуализирует объекты, имеющие transparent = false. Затем он будет отображать объекты, имеющие transparent = true.

Вы, вероятно, найти у вас есть меньше артефактов, если вы используете следующие настройки для прозрачных материалов:

material.transparent = true; 
material.opacity = 0.5; // or as desired 
material.depthTest = true; // the default 
material.depthWrite = false; // use for transparent materials only 

Кроме того, самопрозрачность особенно сложно. Примером может служить полупрозрачный куб (или здание). Одним из способов уменьшения артефактов в таких ситуациях является рендеринг объекта дважды: сначала с material.side = THREE.BackSide, а затем снова с material.side = THREE.FrontSide. Вы можете использовать object.renderOrder для принудительного выполнения определенного порядка визуализации между объектами.

three.js r.75