利用射线判断物体旋转时是否被遮挡,此物体被遮挡时隐藏css2DObject的文字标签,出现计算遮挡关系错误,且文字标签闪烁,
function getScreenPos(meshObj) {
let pos = meshObj.position.clone();
camera.updateProjectionMatrix();
pos.project(camera);
return new THREE.Vector2(pos.x, pos.y);
}
//
function isOccluded(mesh) {
const obj = getScreenPos(mesh);
const raycaster = new THREE.Raycaster();
raycaster.setFromCamera(obj, camera); //通过物体的位置和相机更新射线
const intersects = raycaster.intersectObjects( scene.children );//计算物体与射线的焦点
if (intersects[0] && intersects[0].object === mesh) {
return false;
} else {
return true;
}
}
哈哈,感谢在平台上追加回复。刚看到对社区做的共享。另外我刚才又想了一下,还有一个更简单的办法就是根据角度去判断旋转的位置,因为旋转路径实际上是一个旋转矩阵,几何上面就是一个圆形。圆形的角度范围是[0,360],可以根据旋转过得角度判断所在的方向。