2016-05-13 71 views
1

我正在開發一個使用WebRTC(網絡攝像頭訪問),JSARToolKit(標記檢測)和threeJS(3D庫)的AR應用程序。如何在ThreeJS中獲得3D對象尺寸?

我想在檢測到的標記的中心放置3D對象(從Maya使用threejs maya導出器導出)。

這是我加載使用JSONLoader 3D對象的代碼:

// load the model 
var loader = new THREE.JSONLoader; 
var object; 
//var geometry = new THREE.BoxGeometry(1, 1, 1); 
loader.load('js/cube.js', function(geometry, materials){ 
var material = new THREE.MeshFaceMaterial(materials); 
object = new THREE.Mesh(geometry, material); 

object.position.x -= ***3DobjectWidth/2***; 
object.position.y -= ***3DobjectHeight/2***; 
object.position.z -= ***3DobjectDepth/2***; 

scene.add(object); 
}); 

我需要得到寬度,高度和改變他的位置的對象的深度(參見3DobjectWidth ECC)。

有什麼建議嗎?

回答

2

對象大小將被放置在geometry.boundingBox。但它必須生成一次。

試試這個。

geometry.computeBoundingBox(); 
var bb = geometry.boundingBox; 
var object3DWidth = bb.max.x - bb.min.x; 
var object3DHeight = bb.max.y - bb.min.y; 
var object3DDepth = bb.max.z - bb.min.z; 
+0

我實際上只需要使用bb.min.y爲我的purpouse翻譯y位置。謝謝! – Vig

0

幾何有一個.center()方法。如果您需要基於相同的幾何體對許多網格進行居中,那麼這可能會更高效和更簡單。它也爲你調用computeBoundingBox。

+0

我使用不同的3D模型,各種產品。 – Vig