首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Three.jsα在整个对象上

Three.jsα在整个对象上
EN

Stack Overflow用户
提问于 2015-08-03 22:37:08
回答 1查看 1.5K关注 0票数 2

我正在创建包含多个Collada对象的Three.js场景。我希望能够从Three.js中设置每个Collada对象的不透明度(以便对象能够在需要时溶解在场景中或从场景中消失)。

我能够在对象中设置单个材料的不透明度,但这会产生相当奇怪和不受欢迎的效果:

代码语言:javascript
运行
复制
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对象时,这就变得不切实际了,因为每个新对象都需要单独的场景/画布。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-04 00:26:10

实际上,这听起来像是你想要的是你的物体的最终渲染图像的不透明度,在背景上(毕竟,你没有看到引擎到机身-它们彼此不透明)。

为此,最好的路径可能是为BG和FG元素使用三个EffectComposer和呈现目标。然后,这些图像可以很容易地混合。看看三个渲染到纹理的样本。

另一种选择是玩弄BG纹理,并在飞机上以不同的透明度呈现出来,但得到排序可能会比它更麻烦。最简单的方法是将不透明的飞机渲染到目标上,然后将天空绘制到常规的框架缓冲区,然后将飞机组合在上面。只要一个画布,如果您需要以不同的透明度呈现多个项目,您可以重用该呈现目标来构建图像。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31797871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档