根据边界框计算相机的近距离和远距离

时间:2013-12-11 04:18:16

标签: three.js

我想基于使用three.js的轴对齐边界框计算相机的近距离和远距离。 我试过这种方式:

getNearFar = function(camera, box) {
    var view_matrix = new THREE.Matrix4();
    view_matrix.copy( camera.matrixWorldInverse.getInverse( camera.matrixWorld ) );
    var minz = +Infinity; var maxz = -Infinity;

    for (var i = 0; i < 8; i++) {
        var x = i & 1 ? box.min.x : box.max.x;
        var y = i & 2 ? box.min.y : box.max.y;
        var z = i & 4 ? box.min.z : box.max.z;
        var p =  new THREE.Vector3(x, y, z);
        p.applyMatrix3(view_matrix);
        z = -p.z;
        if (z > maxz) maxz = z;
        if (z < minz) minz = z;
    }

    return {'near':minz, 'far':maxz};
};      

我所做的是获取相机视图矩阵,并将盒子的8个角点转换为相机空间。近距离和远距离应该是最小和最大z。但它没有给出正确的答案。我哪里出错了?

1 个答案:

答案 0 :(得分:1)

我发现了什么是错的: 它应该是p.applyMatrix4()