【问题标题】:How can I get 3D object dimensions in ThreeJS?如何在 ThreeJS 中获取 3D 对象尺寸?
【发布时间】:2016-09-09 23:41:33
【问题描述】:

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

我想将 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)。

有什么建议吗?

【问题讨论】:

    标签: json 3d three.js maya dimension


    【解决方案1】:

    Geometry 有一个 .center() 方法。如果您需要基于相同几何图形对许多网格进行居中,这可能会更有效和更简单。它还会为您调用 computeBoundingBox。

    【讨论】:

    • 我使用不同的 3D 模型,各种产品。
    【解决方案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;
    

    【讨论】:

    • 我实际上只需要使用 bb.min.y 翻译 y 位置就可以了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-11-28
    • 2015-03-27
    • 1970-01-01
    • 2011-12-29
    • 2019-03-09
    • 2018-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多