我写了一个算法,可以通过双击然后爆炸(折叠和展开)机械设置。
但我想在此后向前或向后移动相机以查看fov中的所有物体。 我正在尝试使用视锥体来计算平截头体和物体之间的交点,但我不知道如何使用平面。 我正在使用OrthographicCamera。
我做什么:
在每一帧我重新计算新的视锥体(当相机移动时):
projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );
frustum.setFromMatrix(projScreenMatrix);
然后我在场景中所有对象的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。
你有什么想法吗?
由于