https://jsfiddle.net/erntcob8/4/
When I want to rotate, if the red earth blocks the label label2222
, then the label label2222
doesn’t show .
this.rayObj = function(scene,camera, near,far)
{
this.near = near || 0;
this.far = far || Infinity;
scene.traverse( ( object )=> {
if ( object instanceof CSS2DObject )
{
let visible = "visible";
let posCam = new Vector3().setFromMatrixPosition( camera.matrixWorld );
let posMesh = new Vector3().setFromMatrixPosition( object.parent.matrixWorld );
// 判断是否在距离内
let dis = posCam.clone().distanceTo(posMesh);
if(visible == "visible")
{
if(dis < this.near || dis > this.far)
{
visible = "hidden";
}
}
// 判断是否有遮挡
if(visible == "visible")
{
let dir = posMesh.clone().sub(posCam).normalize();
let raycaster = new Raycaster(posCam, dir,camera.near,camera.far);
let intersects = raycaster.intersectObjects( scene.children );
for(let i = 0; i < intersects.length; i++)
{
if(intersects[i].object instanceof AxesHelper)
{
continue;
}
if(intersects[i].object == object.parent)
{
continue;
}
visible = "hidden";
}
}
object.element.style.visibility = visible;
}
} );
};