2016-05-13 4 views
1

Ich entwickle eine AR-Anwendung mit WebRTC (Webcam-Zugriff), JSARToolKit (Marker-Erkennung) und threeJS (3D-Bibliothek).Wie kann ich dreidimensionale Objektdimensionen in ThreeJS erhalten?

Ich möchte 3D-Objekte (exportiert von Maya mit Threejs Maya-Exporteur) in der Mitte des erkannten Markers platzieren.

Dies ist der Code, wo ich das 3D-Objekt laden JSONLoader mit:

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

Ich brauche Breite, Höhe und Tiefe des Objekts zu erhalten, seine Position zu ändern (siehe 3DobjectWidth ecc).

Irgendwelche Vorschläge?

Antwort

2

Die Objektgröße wird auf geometry.boundingBox gesetzt. Aber es muss einmal erzeugt werden.

versuchen Sie dies.

+0

Ich muss eigentlich nur y Position mit bb.min.y für meinen Zweck übersetzen. Vielen Dank! – Vig

0

Geometrie hat eine .center() -Methode. Dies ist möglicherweise effizienter und einfacher, wenn Sie viele Netze basierend auf derselben Geometrie zentrieren müssen. Es ruft auch computeBoundingBox für Sie auf.

+0

Ich benutze verschiedene 3D-Modelle, verschiedene Produkte. – Vig