三js黑色材质,透明

Three js black color of material to transparent

本文关键字:透明 js 黑色      更新时间:2023-09-26

如何在没有alphaMap的情况下从具有透明黑色的纹理中制作Lambert材质。

我有一个有云纹理的球体。我需要黑色透明,如果我使用混合,它会影响阴影,我需要像MeshPhong材质一样保持行为,但只能使用透明的黑色。

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透明混合。Martin,alphaMap:地图未定义。这个问题似乎没有得到回答。

如果我没记错的话,它的glBlendFunc(GL_SRC_ALPHA,GL_ONE);我确信Threejs没有忽略它。