Javascript Three.js为纹理贴图启用使用非透明图像的混合

Javascript Three.js为纹理贴图启用使用非透明图像的混合,javascript,opengl-es,three.js,alphablending,color-blending,Javascript,Opengl Es,Three.js,Alphablending,Color Blending,正在试用three.js并完成NeHe演示。数字9加载一个不透明的JPG。JPEG主要是黑色的,用作遮罩。一系列重叠对象应仅与渲染对象的白色区域混合在一起。在OpenGL旧式中,Java中的代码是: Texture t = TextureIO.newTexture(getResource(filename), mipmap, null); t.setTexParameteri(GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR); t.setTe

正在试用three.js并完成NeHe演示。数字9加载一个不透明的JPG。JPEG主要是黑色的,用作遮罩。一系列重叠对象应仅与渲染对象的白色区域混合在一起。在OpenGL旧式中,Java中的代码是:

    Texture t = TextureIO.newTexture(getResource(filename), mipmap, null);
    t.setTexParameteri(GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR);
    t.setTexParameteri(GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR);
在three.js中,我尝试过

    var material = new THREE.MeshBasicMaterial({
                    map:starTexture,
                        depthWrite: false,
                    side:THREE.DoubleSide,
                        blending: THREE.NormalBlending
                                    });

和一些变体。但我得到了几乎但相当正确的结果。我得到了遮罩效果,但JPG的矩形剪辑了重叠的一系列图像。

看一看,谢谢gaitat。我确实找到了。我快到了。答案是AdditiveBlending和settig transparent to True。然而,我仍然无法获得100%的正确答案。如果在创建网格时使用MixOperation设置颜色,则可以。如果我稍后使用material.setRGB更改颜色,网格将主要更改为白色,并且光的面积要大得多。我可能错过了一些更新电话…哦。最后一个问题是我没有仔细阅读彩色文档。NeHe的示例代码生成的rgb值为0.255,但Color.setRGB需要0..1范围内的值。如果你给它的值超出了范围,它显然会把所有的颜色都设置为白色。我很高兴你自己找到了答案。