对球体几何的某些面设置透明(不透明度:0)

时间:2019-03-29 12:41:13

标签: three.js geometry face

我想使一个球体的一半透明,另一半着色。 我该怎么办?

我尝试设置一种透明的颜色,但是看来这种方式行不通。

            geometry = new THREE.SphereGeometry(1.0, 17, 17);

            for (var i = 0; i < geometry.faces.length; i++) {

                let x = Math.random();

              //Here I'm trying to set a transparent color to half the faces of the sphere.

                let color = 0
                if (x < 0.5) {
                    color = '0x000000';
                } else {
                    color = '0xffffff';
                }
                geometry.faces[i].color.setHex(color);

            }

            var material = new THREE.MeshPhongMaterial({ vertexColors: THREE.VertexColors });

            sphere = new THREE.Mesh(geometry, material);

如果我按照上述方式进行操作,则球体的所有面都将着色。

我希望随机选择一半的面孔并使其透明,以使球体内部的光线像上帝射线效果一样散射其光线,就像下面视频中的那种一样。 https://www.youtube.com/watch?v=suqFV7VGsL4

1 个答案:

答案 0 :(得分:0)

查看three.js中的GLSL着色器,Three.js不支持顶点颜色的alpha。它仅使用红色,绿色和蓝色,而不使用Alpha。

要使用顶点颜色使某些东西透明,您需要编写自定义着色器或修改three.js的着色器