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 ) );