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,我的POI已经从使用THREE.Sprite转换为使用THREE.Points,但现在我面临两个问题。正如您在屏幕截图上看到的,每个点都有一个独特的png图像作为纹理,但现在点的透明部分覆盖了其他点。通过这些点可以看到主要物体,但其他点被遮挡。另一个问题是,鼠标上方(绿色点)的光线投射工作异常。加载场景且未移动摄影机时,该场景工作正常。但当我放大或缩小相机时,光线投射捕捉到的是比它应该捕捉到的更小甚至更大的点区域 以下是我创建单点的代码: var spriteMap = new THREE.Te

我的POI已经从使用THREE.Sprite转换为使用THREE.Points,但现在我面临两个问题。正如您在屏幕截图上看到的,每个点都有一个独特的png图像作为纹理,但现在点的透明部分覆盖了其他点。通过这些点可以看到主要物体,但其他点被遮挡。另一个问题是,鼠标上方(绿色点)的光线投射工作异常。加载场景且未移动摄影机时,该场景工作正常。但当我放大或缩小相机时,光线投射捕捉到的是比它应该捕捉到的更小甚至更大的点区域

以下是我创建单点的代码:

var spriteMap = new THREE.TextureLoader().load(`imgs/sprites/spr${index+1}.png`);

var spriteMaterial = new THREE.PointsMaterial({
        map: spriteMap
});

spriteMaterial.sizeAttenuation = false;
spriteMaterial.size = 60;
spriteMaterial.transparent = true;

var dotGeometry = new THREE.Geometry();
dotGeometry.vertices.push(new THREE.Vector3(item.x, item.y, item.z));

var sprite = new THREE.Points(dotGeometry , spriteMaterial);

尝试将sprite材质的
depthTest
设置为
false
,类似于下面的示例。这将提高遮挡点的可见性。尝试将sprite材质的
depthTest
设置为
false
,如下例所示。这将提高遮挡点的可见性。