Three.js 网格材质在精灵的透明背景中不可见
我有一个场景,其中有一个网格(MeshPhongMaterial)、该网格周围的长方体辅助对象、绿色球形点标记(MeshLambertMaterial)和精灵(带有透明背景的“pins”的png图像)。我遇到了这个问题:Three.js 网格材质在精灵的透明背景中不可见,three.js,Three.js,我有一个场景,其中有一个网格(MeshPhongMaterial)、该网格周围的长方体辅助对象、绿色球形点标记(MeshLambertMaterial)和精灵(带有透明背景的“pins”的png图像)。我遇到了这个问题: 绿色标记和长方体辅助线都可以通过“pin”精灵的透明背景看到,但我的主要网格材质却不可见。事实上,在绿色标记上方的第二个图像中,通过png背景可见的标记位于青铜网格对象内部,否则将不可见 以下是我的资料: 1) 主要网格材质: 'Bronze': { emi
绿色标记和长方体辅助线都可以通过“pin”精灵的透明背景看到,但我的主要网格材质却不可见。事实上,在绿色标记上方的第二个图像中,通过png背景可见的标记位于青铜网格对象内部,否则将不可见 以下是我的资料:
1) 主要网格材质: '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 } “青铜”:{ 发射:'#000000', 颜色:“cd7f32”, 镜面反射:0x83776B, 光泽度:100, 反射率:1, 着色:3.SmoothShading, 金属:没错, envMap:textureEquirec,//我们自己的hdri反射图像 透明:是的, 深度测试:正确 } 2) 绿色标记的材质: THREE.MeshLambertMaterial({ color: 0x00ff00 }) 3.MeshLambertMaterial({color:0x00ff00}) 3) 长方体辅助对象的材质: THREE.LineBasicMaterial({ color: 0xdddddd }) 三.LineBasicMaterial({color:0xDDDD}) 4) 精灵的材质/纹理: var textures = { ... selectedPin: 'images/sprites/selected.png' }; this.selectedPinTexture = THREE.ImageUtils.loadTexture( textures.selectedPin); this.selectedPinMaterial = new THREE.SpriteMaterial( { map: this.selectedPinTexture } ); var纹理={ ... selectedPin:“图像/精灵/选定的.png” }; this.selectedPinTexture=THREE.ImageUtils.loadTexture(textures.selectedPin); this.selectedPinMaterial=new THREE.SpriteMaterial({map:this.selectedPinTexture}); 请告知,
谢谢你,
安东。在材质中添加一个
alphaTest
,如0.5。有关说明,请查看如果您的针精灵在网格之前绘制,并且写入深度(depthrite:true),则网格将不会显示
设置精灵的渲染器,使其始终在网格后绘制,如果您希望网格透明,则可以通过网格看到它。谢谢@gaitat,非常感谢您的帮助!这为我带来了窍门:This.selectedPinMaterial=new THREE.SpriteMaterial({map:This.selectedPinTexture,alphaTest:0.5});设置“renderOrder”并不总是有效,例如,如果您的模型是可移动的,并且可以从多个方向看到。关闭材料的
depthrite
对我来说很有效。