Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 网格材质在精灵的透明背景中不可见_Three.js - Fatal编程技术网

Three.js 网格材质在精灵的透明背景中不可见

Three.js 网格材质在精灵的透明背景中不可见,three.js,Three.js,我有一个场景,其中有一个网格(MeshPhongMaterial)、该网格周围的长方体辅助对象、绿色球形点标记(MeshLambertMaterial)和精灵(带有透明背景的“pins”的png图像)。我遇到了这个问题: 绿色标记和长方体辅助线都可以通过“pin”精灵的透明背景看到,但我的主要网格材质却不可见。事实上,在绿色标记上方的第二个图像中,通过png背景可见的标记位于青铜网格对象内部,否则将不可见 以下是我的资料: 1) 主要网格材质: 'Bronze': { emi

我有一个场景,其中有一个网格(MeshPhongMaterial)、该网格周围的长方体辅助对象、绿色球形点标记(MeshLambertMaterial)和精灵(带有透明背景的“pins”的png图像)。我遇到了这个问题:


绿色标记和长方体辅助线都可以通过“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
对我来说很有效。