通过精灵的透明背景看不到网格材质

时间:2015-10-28 18:44:04

标签: three.js

我有一个带有网格(MeshPhongMaterial)的场景,这个网格周围的盒子帮助器,绿色球形点标记(MeshLambertMaterial)和精灵("针脚#34; png图像;透明背景)。我遇到了这个问题:
http://imgur.com/nDQ3VRk
http://imgur.com/53NJhpK 我的绿色标记和盒子帮助线都可以通过我的" pin"的透明背景看到。精灵,但我的主要网状材料不是。事实上,在上面的第二张图片中,通过png背景可见的绿色标记位于青铜网格物体内部,否则将无法看到。

这是我的材料:
1)主要网格材料JSON:

'Bronze': {
        emissive: '#000000',
        color: "#cd7f32",
        specular: 0x83776B,
        shininess: 100,
        reflectivity: 1,
        shading: THREE.SmoothShading,
        metal: true,
        envMap: textureEquirec,  // our own hdri reflection image
        transparent:true,
        depthTest: true
}

2)绿色标记的材料:

THREE.MeshLambertMaterial({ color: 0x00ff00 })

3)盒子帮手的材料:

THREE.LineBasicMaterial({ color: 0xdddddd })

4)Sprite的材质/纹理:

var textures = {
      ...
      selectedPin: 'images/sprites/selected.png'
};
this.selectedPinTexture = THREE.ImageUtils.loadTexture( textures.selectedPin);
this.selectedPinMaterial = new THREE.SpriteMaterial( { map: this.selectedPinTexture } );

请告知,
谢谢,
安东。

2 个答案:

答案 0 :(得分:1)

如果您的图钉精灵在网格之前绘制,并且写入深度(depthWrite:true),那么网格将不会出现。

将精灵的.renderOrder设置为始终在网格后绘制,如果您希望它是透明的,则可以通过它看到网格。

答案 1 :(得分:0)

为您的材料添加alphaTest,例如0.5。有关解释,请查看http://threejs.org/docs/#Reference/Materials/Material