如何在ThreeJS中获取3D对象尺寸?

时间:2016-05-13 17:09:12

标签: json 3d three.js maya dimension

我正在使用WebRTC(网络摄像头访问),JSARToolKit(标记检测)和threeJS(3D库)开发AR应用程序。

我想在检测到的标记的中心放置3D对象(使用threejs maya exporter从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 个答案:

答案 0 :(得分:4)

对象大小将放在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;

答案 1 :(得分:0)

Geometry有一个.center()方法。如果您需要基于相同的几何体来居中许多网格,那么这可能会更有效,更简单。它还会为您调用computeBoundingBox。