2016-09-09 6 views
0

В сцене у меня есть только прозрачные объекты, поэтому при включенном глубинном тестировании это заставляет объекты скрывать друг друга. Я знаю, что тестирование глубины не рассматривает никакой прозрачности, оно просто записывает в буфер глубины, глядя на значения z. Затем, как правильно отобразить два прозрачных объекта?Временное решение по отключению тестирования глубины для прозрачных объектов?

Я сделал это renderer.context.disable(renderer.context.DEPTH_TEST);, но ничего не изменилось

иллюстрации моей конкретной задачи: enter image description here

куб MeshLambertMaterial({color: ..., transparent: true, opacity: 0.6})

и самолет MeshLambertMaterial({color: ..., transparent: true, opacity: 0.4})

куб визуализируется после того, как самолет, но если куб непрозрачен, то вся его будет отображаться правильно без отбрасывания (также посмотрите на точки t они также непрозрачны, следовательно, видны).

Итак, как его воспринимать как прозрачность и не заботятся о порядке рендеринга, так что два прозрачных объекта не скрывают друг друга?

ответ

2

В three.js, вы можете отключить проверку глубины, установив

material.depthTest = false; 

Не удивляйтесь, если у вас есть артефакты, когда положение камеры изменяется.

Возможно, вы также захотите прочитать this answer.

Three.js R.80

+0

ооо да, я также имел некоторые артефакты при повороте камеры, но только в хроме и с любыми светильниками в сцене. – ampawd