Javascript 三种js黑色材质,颜色透明

Javascript 三种js黑色材质,颜色透明,javascript,three.js,Javascript,Three.js,如何使用透明黑色纹理制作Lambert材质,而无需alphaMap 我有一个带有云纹理的球体。我需要黑色透明,如果我使用混合,它会影响阴影,我需要保持像Meshfong材质一样的行为,但只使用透明黑色 var cloudsMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, map: THREE.ImageUtils.loadTe

如何使用透明黑色纹理制作Lambert材质,而无需alphaMap

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

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%不透明):


我知道这是可以做到的。将jpg与黑色bg透明混合。马丁,阿尔法地图:地图未定义。这个问题似乎没有答案

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

尝试
混合:2
混合:3。AdditiveBlend
。混合模式常数为加法混合将使纹理。。。添加剂我正在尝试定制混合,没有任何组合能起到效果。我只需要使渲染器的颜色透明(黑色)和其他颜色,因为他们是,如果是在像素灰色(50%黑色)的颜色应该有50%的透明度。我不能使用Alpha贴图,因为它是自定义的动画着色器,而Alpha贴图没有动画。有一些方法可以做到这一点,例如定义自定义着色器,但似乎最简单的方法就是将Alpha通道添加到纹理中。如果您不能修改资源,您可以在runtime.thx中执行。我已经修复了变量nameblack=100%opaque=nottransparent。似乎与预期结果相反。
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,                                                    
})