如何在 Three.js 中使用带有 ShaderMaterial 的 alpha 贴图纹理?
How to use alpha map textures with ShaderMaterial in Three.js?
我有一个 png 图像 (16x16),我想在自定义材质中用作 alpha 贴图纹理 THREE.ShaderMaterial
。这是图像:
这是我预加载的纹理对象的设置:
alphaMap.magFilter = THREE.NearestFilter
alphaMap.wrapT = THREE.RepeatWrapping
alphaMap.repeat.y = 10
alphaMap.needsUpdate = true
在我添加的ShaderMaterial的属性中:
transparent: true
然后添加defines
:
USE_ALPHAMAP: true,
ALPHATEST: 0.5
最后 uniform
:
alphaMap: { type: 't', value: alphaMap }
我没有收到任何错误,但网格不可见。如果我将它设置为 diffuseColor.rgb
网格是全黑的。缺少什么或错了什么?
此问题的解决方案(未记录)是:
uniforms['alphaMap'].value.needsUpdate = true
这样做是行不通的:
alphaMap.needsUpdate = true
这里应该可以补充一下:How to update things(贴图需要needsUpdate
flag其实是有的,但是不清楚ShaderMaterial和uniform怎么处理)
我有一个 png 图像 (16x16),我想在自定义材质中用作 alpha 贴图纹理 THREE.ShaderMaterial
。这是图像:
这是我预加载的纹理对象的设置:
alphaMap.magFilter = THREE.NearestFilter
alphaMap.wrapT = THREE.RepeatWrapping
alphaMap.repeat.y = 10
alphaMap.needsUpdate = true
在我添加的ShaderMaterial的属性中:
transparent: true
然后添加defines
:
USE_ALPHAMAP: true,
ALPHATEST: 0.5
最后 uniform
:
alphaMap: { type: 't', value: alphaMap }
我没有收到任何错误,但网格不可见。如果我将它设置为 diffuseColor.rgb
网格是全黑的。缺少什么或错了什么?
此问题的解决方案(未记录)是:
uniforms['alphaMap'].value.needsUpdate = true
这样做是行不通的:
alphaMap.needsUpdate = true
这里应该可以补充一下:How to update things(贴图需要needsUpdate
flag其实是有的,但是不清楚ShaderMaterial和uniform怎么处理)