我正在创建包含多个Collada对象的Three.js场景。我希望能够从Three.js中设置每个Collada对象的不透明度(以便对象能够在需要时溶解在场景中或从场景中消失)。
我能够在对象中设置单个材料的不透明度,但这会产生相当奇怪和不受欢迎的效果:
loader.options.convertUpAxis = true;
loader.load(src, function(collada) {
collada.scene.traverse(function (child) {
if( child.material ) {
child.material.opacity = 0.5;
child.material.transparent = true;
}
(etc.)
我要寻找的是在整个collada对象上设置不透明度的能力(有效地,呈现它,然后设置不透明度),如所附屏幕截图的底部所示。
通过在包含Three.js场景的画布上设置不透明度,我实现了屏幕截图底部显示的内容,但当有多个collada对象时,这就变得不切实际了,因为每个新对象都需要单独的场景/画布。
发布于 2015-08-04 00:26:10
实际上,这听起来像是你想要的是你的物体的最终渲染图像的不透明度,在背景上(毕竟,你没有看到引擎到机身-它们彼此不透明)。
为此,最好的路径可能是为BG和FG元素使用三个EffectComposer和呈现目标。然后,这些图像可以很容易地混合。看看三个渲染到纹理的样本。
另一种选择是玩弄BG纹理,并在飞机上以不同的透明度呈现出来,但得到排序可能会比它更麻烦。最简单的方法是将不透明的飞机渲染到目标上,然后将天空绘制到常规的框架缓冲区,然后将飞机组合在上面。只要一个画布,如果您需要以不同的透明度呈现多个项目,您可以重用该呈现目标来构建图像。
https://stackoverflow.com/questions/31797871
复制相似问题