Determina se una mesh è visibile sulla vista in base alla telecamera corrente

Ho sviluppato un’app con three.js ma ho riscontrato questo problema e non riesco a trovare alcuna soluzione. Voglio determinare quali mesh sono visibili in questo momento in base a dove sta puntando la fotocamera, quindi posso aggiornare i miei oggetti (i dati provengono da un servizio) o meno a seconda che vengano mostrati nella vista.

Sto usando THREE.js in modalità CANVAS (ho trovato una soluzione usando WebGL che dice se gli oggetti sono renderizzati o meno, ma ho bisogno di CANVAS per questo progetto).

Ho cercato di scoprire se three.js imposta in qualche modo una proprietà per indicare se l’object è visibile o meno (attualmente sullo schermo, non sull’intero mondo 3D), ma non riesco a trovarlo. Le mesh hanno una proprietà visibile: ma è sempre triggers anche se la fotocamera non mira a quell’object.

Questo è il codice che stai cercando:

 var frustum = new THREE.Frustum(); var cameraViewProjectionMatrix = new THREE.Matrix4(); // every time the camera or objects change position (or every frame) camera.updateMatrixWorld(); // make sure the camera matrix is updated camera.matrixWorldInverse.getInverse( camera.matrixWorld ); cameraViewProjectionMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse ); frustum.setFromMatrix( cameraViewProjectionMatrix ); // frustum is now ready to check all the objects you need console.log( frustum.intersectsObject( object ) );