我有三个定义如下的网格朗伯材料:
new three.MeshLambertMaterial({
transparent: true,
emissive: 0xffffff,
map: texture,
alphaTest: 0.1
});
我们决定将alphaTest
变为0.1,因为这似乎是实际使材料透明的唯一方法。否则,材料背后的背景颜色最终是清晰的颜色。上述技术的问题在于我们在非透明部分周围得到一条丑陋的灰线。这个纹理代表文字,甚至更糟。
是否有更好的方法来制作透明材料,只显示背后的物体?
答案 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>