我希望能够通过其颜色(在vertColors数组中定义)设置给定顶点透明度,以便在单个网格上我可以具有不同不透明度的区域。
是否有一种简单的方法可以将定义为特定颜色的所有顶点透明化?
我有一个想法;是否可以扩展/更改MeshBasicMaterial的着色器以将所有黑色区域定义为透明?
或者,我可以将此材质的输出传递给第二个着色器来执行此操作吗?
const geometry = new THREE.BufferGeometry();
const vertPositions = createVertPositions(); //Float32Array of positions
const vertColors = createVertColors(); //Float32Array of colors
geometry.addAttribute('position', new THREE.BufferAttribute(vertPositions, 3));
geometry.addAttribute('color', new THREE.BufferAttribute(vertColors, 3));
const material = new THREE.MeshBasicMaterial({
transparent: true,
opacity: 0.5,
side: THREE.BackSide,
vertexColors: THREE.VertexColors
});
const mesh = new THREE.Mesh(geometry, material);
感谢您的帮助。