12

を使用してアプリを開発していますが、three.jsこの問題に遭遇し、解決策が見つからないようです。カメラが現在狙っている場所に応じて、現在どのメッシュが表示されているかを判断したいので、ビューポートに表示されているかどうかに応じて、オブジェクトを更新できます (データはサービスからのものです)。

私はTHREE.jsCANVASモードで使用しています(オブジェクトがレンダリングされているかどうかを示すWebGLを使用したソリューションを見つけましたが、このプロジェクトにはCANVASが必要です)。

three.jsオブジェクトが表示されているかどうかを示すプロパティを何らかの方法で設定するかどうかを見つけようとしています(現在、3D ワールド全体ではなく画面上にあります) が、見つかりません。メッシュには visible: プロパティがありますが、カメラがそのオブジェクトに向けられていない場合でも常に true です。

4

1 に答える 1

23

これはあなたが求めているコードです:

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 ) );
于 2013-07-13T11:09:39.683 に答える