THREE.js中材料的不透明度

shi*_*zou 0 javascript shader three.js autodesk-forge

我正在使用兰伯特着色器,例如,它设置材料如下:

  this.material.uniforms.emissive.value = new THREE.Color(
  Math.random(),
  Math.random(),
  Math.random());
Run Code Online (Sandbox Code Playgroud)

在我拥有一个简单的着色器之前,我需要像这样设置材质来控制Alpha:

this.material.uniforms.color.value = new THREE.Vector4(
  Math.random(),
  Math.random(),
  Math.random(),
  0.3)
Run Code Online (Sandbox Code Playgroud)

但是看起来朗伯着色器没有颜色vector4。

关于如何控制Alpha的任何想法?

我从这里对lambert着色器使用相同的示例:https : //forge.autodesk.com/blog/forge-viewer-custom-shaders-part-2

而且简单的着色器来自:http : //adndevblog.typepad.com/cloud_and_mobile/2017/01/forge-viewer-custom-shaders-part-1.html

Tho*_*asn 5

您将不得不使用材质的不透明度。请务必先将其标记为透明:

this.material.uniforms.transparent = true;
Run Code Online (Sandbox Code Playgroud)

然后设置不透明度:

this.material.uniforms.opacity = 0.3;
Run Code Online (Sandbox Code Playgroud)

如果已经渲染了场景,则可能需要对其进行标记以进行更新:

this.material.uniforms.needsUpdate = true;
Run Code Online (Sandbox Code Playgroud)

用于纹理使用.alphaMap