2013-07-21 23 views
0

不知道這是否可能,但在three.js中使用ShaderToon.js,是否有uBaseColor值透明?並保持uLineColor值不透明?無論如何要使uBaseColor值透明? Three.js && ShaderToon.js

function createShaderMaterial(id, light, ambientLight) { 
     var shader = THREE.ShaderToon[ id ]; 
     var u = THREE.UniformsUtils.clone(shader.uniforms); 
     var vs = shader.vertexShader; 
     var fs = shader.fragmentShader; 
     var material = new THREE.ShaderMaterial({ uniforms: u, vertexShader: vs, fragmentShader: fs }); 
     material.uniforms.uDirLightPos.value = light.position; 
     material.uniforms.uDirLightColor.value = light.color; 
     material.uniforms.uAmbientLightColor.value = ambientLight.color; 
     return material; 
} 

geometry = new THREE.TorusKnotGeometry(106.68, 200, 12, 2, 8.44, 5.4, 1); 
material = createShaderMaterial("dotted", directionalLight, ambientLight); 
material.uniforms.uBaseColor.value.setHex(0xffffff); // want this to be transparent 
material.uniforms.uLineColor1.value.setHex(0x0000); 
mesh = new THREE.Mesh(geometry, material); 
scene.add(mesh); 

回答

1

ShaderToon是示例的一部分,因此您可以自由修改它以滿足您的喜好。

例如,你可以這樣做:

"gl_FragColor = vec4(uBaseColor, 0.5);", 

在你createShaderMaterial()功能,你也必須設置

material.transparent = true; 

three.js所r.59

+0

我看,完美,thnx這麼多:) – Nick