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)总是错误的。

你有什么想法 ?

谢谢

4

0 回答 0