2015-01-07 77 views
0

我有這樣的定義threejs網狀蘭伯特材料透明材料:與ThreeJS

new three.MeshLambertMaterial({ 
    transparent: true, 
    emissive: 0xffffff, 
    map: texture, 
    alphaTest: 0.1 
}); 

我們決定把alphaTest到0.1,因爲這似乎是真正使材料透明的唯一途徑。否則,材質背後的背景顏色就會變成清晰的顏色。上述技術的問題在於,我們在非透明部分周圍出現難看的灰線。這個紋理表示文字,更糟糕。

是否有更好的方法來製作透明材質,只顯示背後的物體?

+0

你設置不透明度? –

+0

@BobWoodley我試過了。不透明度使整個紋理更透明(即使是不透明的部分)。 – Parris

+0

我的回答有助於解決您的問題嗎? –

回答

0

聽起來好像你有一些透明的紋理,你想要紋理的透明度來決定材質的透明度。我有這個權利嗎?如果是的話這個小片段着色器應該工作:

<script id="fs" type="x-shader/x-fragment"> 
    uniform sampler2D iChannel0; 

    varying vec2 vUv; 
    varying vec4 vColor; 
    void main() { 
     vec2 uv = vUv; 
     vec4 tex1 = texture2D(iChannel0, vec2(uv.x, uv.y)); 
     gl_FragColor = vec4(tex1.r,tex1.g,tex1.b,tex1.a); 
    } 

</script> 

工作示例這裏:http://rwoodley.org/MyContent/SO/02/