2016-05-13 35 views
1

WebRTC(ウェブカメラアクセス)、JSARToolKit(マーカー検出)、threeJS(3Dライブラリ)を使用してARアプリケーションを開発しています。ThreeJSで3Dオブジェクトの寸法を取得するにはどうすればよいですか?

検出されたマーカーの中央に3Dオブジェクト(threejs mayaエクスポータを使用して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

実際に私のpurpouseのためにbb.min.yを使ってyの位置だけを翻訳する必要があります。ありがとう! – Vig

0

ジオメトリには.center()メソッドがあります。同じジオメトリに基づいて多数のメッシュを集中させる必要がある場合は、より効率的で簡単です。また、computeBoundingBoxが呼び出されます。

+0

私はさまざまな3Dモデル、さまざまな製品を使用します。 – Vig

関連する問題