2016-05-13 3 views
1

Je développe une application AR utilisant WebRTC (accès webcam), JSARToolKit (détection de marqueurs) et threeJS (bibliothèque 3D).Comment puis-je obtenir les dimensions de l'objet 3D dans ThreeJS?

Je souhaite placer des objets 3D (exportés de Maya à l'aide de l'exportateur maya threejs) au centre du marqueur détecté.

C'est le code où je charge l'objet 3D à l'aide JSONLoader:

// 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); 
}); 

Je dois obtenir la largeur, la hauteur et la profondeur de l'objet à changer sa position (voir 3DobjectWidth ecc).

Des suggestions?

Répondre

2

La taille de l'objet sera placée à geometry.boundingBox. Mais il doit être généré une fois.

essayez ceci.

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

J'ai réellement besoin de traduire seulement la position y en utilisant bb.min.y pour mon purpouse. Merci! – Vig

0

La géométrie a une méthode .center(). Cela pourrait être plus efficace et plus simple si vous avez besoin de centrer plusieurs maillages basés sur la même géométrie. Il appelle également computeBoundingBox pour vous.

+0

J'utilise différents modèles 3D, divers produits. – Vig