1

次に、機械セットをダブルクリックして展開 (折り畳みと展開) できるアルゴリズムを作成します。

しかし、その後カメラを前後に動かして、視野内のすべてのオブジェクトを表示したいと考えています。フラスタムを使用してフラスタムとオブジェクトの交差を計算しようとしていますが、平面の使用方法がわかりません。OrthographicCamera を使用しています。

私がやること :

  1. すべてのフレームで、新しいフラスタムを再計算します (カメラの移動時):

    projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
    frustum.setFromMatrix(projScreenMatrix);
    
  2. 次に、シーン内のすべてのオブジェクトの 6 つの平面とバウンディング ボックスをループします。

    for (var i = 0; i < planes.length; i++) {
            var plane = planes[i];
            for (var j = 0; j < boxs.length; j++) {
                var box = boxs[j];
                var line = new THREE.Line3(box.min, nox.max);
                //console.log({'plane': plane, 'line': line});
                if (plane.isIntersectionLine(line))
                    // move camera
            };
    };
    

しかし、plane.isIntersectionLine(line)は常に false です。

あなたはなにか考えはありますか ?

ありがとう

4

0 に答える 0