我正在使用three.js和WebGl。我想让场景中的某些对象透明,只显示透明对象后面的不透明对象,而不是其他透明对象。
目前,当我使对象透明时,我可以看到其后面的其他透明物体,我不想要。
这就是现在发生的事情:
这就是我想要的:
这种透明度渲染是否有术语?看起来我可以用多个渲染过程完成这个任务。
我正在使用three.js和WebGl,但我还没有找到任何语言的解决方案,所以我愿意接受任何通用提示。
答案 0 :(得分:1)
如果你要找的只是渲染最前面的透明物体层,你可以试试这个:
gl.enable(gl.DEPTH_TEST);
// dont write to color buffer, only to depth
gl.depthFunc(gl.LEQUAL);
gl.colorMask(false, false, false, false);
drawTransparentObjects();
// only draw to front most layer
gl.depthFunc(gl.EQUAL);
gl.colorMask(true, true, true, true);
drawTransparentObjects();
// switch back to normal depth testing
gl.depthFunc(gl.LEQUAL);
答案 1 :(得分:0)
只是猜测,但我认为这会起作用
// at init time
renderer.autoClear = false;
// at render time
renderer.clear(true, true, true);
renderer.render( sceneOfObjectsYouWantInBack, camera)
renderer.clear(false, true, true);
renderer.render( sceneOfObjectsYouWantInMiddle, camera)
renderer.clear(false, true, true);
renderer.render( sceneOfObjectsYouWantInFront, camera)
renderer.clear(false, true, true);