下面这个代码,假设box直接放在3d场景上。
private checkBoxInScreen(box: Laya.MeshSprite3D): boolean {
let m = box.transform.worldMatrix;
let v = this.camera.viewMatrix;
let p = this.camera.projectionMatrix;
let vp = new Matrix4x4();
Matrix4x4.multiply(p, v, vp);
let mvp = new Matrix4x4();
Matrix4x4.multiply(vp, m, mvp);
let out = new Vector4();
Vector3.transformV3ToV4(new Vector3(0, 0, 0), mvp, out);
console.log(out.elements);
if (out.x >= -out.w && out.x <= out.w && out.y >= -out.w && out.y <= out.w && out.z >= -out.w && out.z <= out.w) {
return true;
} else {
return false;
}
}