我想使一个球体的一半透明,另一半着色。 我该怎么办?
我尝试设置一种透明的颜色,但是看来这种方式行不通。
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
答案 0 :(得分:0)
查看three.js中的GLSL着色器,Three.js不支持顶点颜色的alpha。它仅使用红色,绿色和蓝色,而不使用Alpha。
要使用顶点颜色使某些东西透明,您需要编写自定义着色器或修改three.js的着色器