透明材料与三JS
Transparent material with ThreeJS
我在 threejs 中有一个网格朗伯材料,定义如下:
new three.MeshLambertMaterial({
transparent: true,
emissive: 0xffffff,
map: texture,
alphaTest: 0.1
});
我们决定将alphaTest
调到0.1,因为这似乎是使材料真正透明的唯一方法。否则,材料背后的背景色最终会成为透明色。上述技术的问题在于,我们在不透明的部分周围得到了一条丑陋的灰色线。这种纹理表示文本,这更糟。
有没有更好的方法来制作一种透明的材料,只显示它背后的物体?
听起来你有一个具有一定透明度的纹理,你希望纹理的透明度来决定材质的透明度。我说得对吗?如果是这样,这个小片段着色器应该可以工作:
<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/
相关文章:
- 无法读取属性'材料'未定义的Three.js
- 从 JS 更新角度材料输入值
- 三.js 使用按钮更改 .obj 文件的材料
- 三个JS透明与着色器材料
- 阴影捕手在三个.js/阴影在透明材料上
- 透明材料与三JS
- node.js & mongo schema,寻找一些介绍材料,也许是教程
- 在 Ember.js 应用程序中初始化引导材料设计
- 如何在js中创建材料设计对话框
- 自定义材料设计CSS&JS组件
- 试图在A-Frame中通过three.js编辑材料的侧面属性会导致不正确的渲染
- Three.js合并网格,但保留单独的材料
- js -材料不加载对象
- 我想加载一个.obj文件,并在运行时通过按钮点击使用three.js改变它的纹理/材料
- js使用背景材料
- three.js:如何为一个网格获得多个材料
- 在three.js中合并模型和材料的问题
- js:是否有一种方法可以从子模板中访问材料前端内容?
- js无法加载材料(无法读取属性'length'未定义)
- JS中材料设计应用程序中的空屏幕