我有一个空间点在三个 js 查看器中表达一个向量。附在这一点上有一个“HTML注释”
当点不可见时我想隐藏(在同一网格的其他表面后面或被其他网格隐藏)。例如在下图中它应该被隐藏:
我正在使用一些代码来检查注释是否在另一个问题中建议的截锥体中,但这并不完全有效,因为注释仅在我非常剧烈地旋转对象时才会消失。见下图:
你能帮我解决我的问题吗?
到目前为止,这是我的代码:
const vector = new THREE.Vector3(x, y, z);
this.aCamera.updateMatrix();
this.aCamera.updateMatrixWorld(true);
let frustum = new THREE.Frustum();
frustum.setFromMatrix(new THREE.Matrix4().multiplyMatrices(this.aCamera.projectionMatrix, this.aCamera.matrixWorldInverse));
// check if annotation is in view
if (frustum.containsPoint(vector)) {
anAnnotation.css({opacity: 0});
} else {
anAnnotation.css({opacity: 1});
}