【问题标题】:Three.js - Algorithm to set the camera so the whole scene shows?Three.js - 设置相机以显示整个场景的算法?
【发布时间】:2012-11-14 08:48:44
【问题描述】:

当我设置场景、添加几何图形等时,如何设置相机以便可以看到整个场景?我正在尝试使用边界框实现算法,但我有点卡住了。

【问题讨论】:

  • 请在 jsfiddle 上发布一些示例。下次再具体一点。
  • 如果我有一些代码,它会被发布,但我不知道如何继续......我还在想:(。我的场景将有 n 个网格,具有不同的宽度,高度和深度。我想找到“最适合”的相机位置,它可以显示所有网格。
  • 请先尝试。然后,如果您有问题,请发布您的代码并提出具体问题。
  • 确实知道如何开始。你只是不知道如何完成。 :-)

标签: javascript 3d three.js


【解决方案1】:

您实际上只需要使用Math.abs(number) 找到所有变量之间的最大绝对值,一旦找到最大的绝对值,您就可以将相机的深度(位置.z)设置为该数字。我做了一个简单的函数,它接收 2 个数字并返回最大的。

function findGreatestAbsolute( firstNumber, secondNumber ) {
    if( Math.abs( firstNumber ) > Math.abs( secondNumber )) {
        return Math.abs( firstNumber );
    } else { return Math.abs( secondNumber ); }
}

如果数字太多,您也可以使用数组。 找到号码后,您可以:

    camera = new THREE.PerspectiveCamera( cameraFov, windowHalfX / windowHalfY , 1, someDepth );
    camera.position.z(greatestNumber);

    camera.position.set(yourX, yourY, greatestNumber);

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-11-05
    • 2015-10-03
    • 1970-01-01
    • 2016-06-24
    • 2013-01-22
    相关资源
    最近更新 更多