我编写了一个算法,可以通过双击然后爆炸(折叠和展开)机械组。
但是我想在那之后向后或向前移动相机以查看我所有的对象。我正在尝试使用截锥体来计算截锥体和对象之间的交集,但我不明白如何使用平面。我正在使用 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)总是错误的。
你有什么想法 ?
谢谢