2013-12-11 54 views
1

我想根據使用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

我發現了什麼是錯的: 應該是p.applyMatrix4()

+0

刪除的問題。 – WestLangley