material的三个js黑色变透明
Three js black color of material to transparent
如何在没有 alphaMap 的情况下从具有透明黑色的纹理制作 Lambert material。
我有带云纹理的球体。我需要黑色透明,如果我使用混合,它会影响阴影,我需要保持像 MeshPhong material 的行为,但只能使用透明黑色。
var cloudsMaterial = new THREE.MeshLambertMaterial( {
color: 0xffffff,
map: THREE.ImageUtils.loadTexture( "img/planets/clouds.jpg" ),
specular : new THREE.Color("rgb(255,255,255)"),
shininess : 0.1,
depthTest : 0,
blending : 1,
transparent: true,
bumpScale : 1, //0.8
bumpMap : THREE.ImageUtils.loadTexture( "img/planets/bump.jpg" ),
} );
设置混合或其他属性的正确方法是什么?
我的解决方案是使用 alpha 贴图(BW 纹理,其中白色 = 不透明度较低,黑色 = 100% 不透明):
var t = THREE.ImageUtils.loadTexture( "clouds.jpg" );
var map = THREE.ImageUtils.loadTexture( "clouds_alpha.jpg" );
var cloudsMaterial = new THREE.MeshLambertMaterial( {
map : t,
alphaMap : map,
blending : 1,
transparent: true,
})
我知道可以做到。将 jpg 与黑色 bg 透明混合。马丁,alphaMap:map 未定义。这个问题好像没有答案。
如果我没记错的话,它是 glBlendFunc(GL_SRC_ALPHA, GL_ONE);
我相信 Threejs 没有忽略它。
如何在没有 alphaMap 的情况下从具有透明黑色的纹理制作 Lambert material。
我有带云纹理的球体。我需要黑色透明,如果我使用混合,它会影响阴影,我需要保持像 MeshPhong material 的行为,但只能使用透明黑色。
var cloudsMaterial = new THREE.MeshLambertMaterial( {
color: 0xffffff,
map: THREE.ImageUtils.loadTexture( "img/planets/clouds.jpg" ),
specular : new THREE.Color("rgb(255,255,255)"),
shininess : 0.1,
depthTest : 0,
blending : 1,
transparent: true,
bumpScale : 1, //0.8
bumpMap : THREE.ImageUtils.loadTexture( "img/planets/bump.jpg" ),
} );
设置混合或其他属性的正确方法是什么?
我的解决方案是使用 alpha 贴图(BW 纹理,其中白色 = 不透明度较低,黑色 = 100% 不透明):
var t = THREE.ImageUtils.loadTexture( "clouds.jpg" );
var map = THREE.ImageUtils.loadTexture( "clouds_alpha.jpg" );
var cloudsMaterial = new THREE.MeshLambertMaterial( {
map : t,
alphaMap : map,
blending : 1,
transparent: true,
})
我知道可以做到。将 jpg 与黑色 bg 透明混合。马丁,alphaMap:map 未定义。这个问题好像没有答案。
如果我没记错的话,它是 glBlendFunc(GL_SRC_ALPHA, GL_ONE); 我相信 Threejs 没有忽略它。