【问题标题】:How to get bounding box information from a 3D object in aframe?如何从框架中的 3D 对象获取边界框信息?
【发布时间】:2018-08-23 19:30:49
【问题描述】:

我正在处理一个 aframe 项目,该项目涉及将未知大小的 3D 对象加载到我的场景中。自然,我想在将对象放入场景之前将其调整为特定大小(如固定高度)。但是如何从对象的边界框中提取宽度、高度和深度等信息?

【问题讨论】:

    标签: javascript three.js aframe webvr


    【解决方案1】:

    您需要在此处使用 A-Frame 的底层 three.js API。那个答案有been posted for three.js before,但这是一个A-Frame版本:

    // get three.js object from aframe entity
    var el = document.querySelector('#my-element');
    var object = el.getObject3D('mesh');
    
    // compute bounding box
    var bbox = new THREE.Box3().setFromObject(obj);
    console.log(bbox.min, bbox.max)
    

    【讨论】:

    • 我在预加载的 3D 模型上尝试了这种方法,效果很好。但不知何故,当我尝试 .getObject3D('mesh') 然后 .setFromObject 从运行时加载的 3D 模型中,我不断收到此错误消息: Uncaught TypeError: Cannot read property 'updateMatrixWorld' of undefined at et.expandByObject (three.js :8020) at et.setFromObject (three.js:7932) 抱怨 .getObject3D('mesh') 返回未定义。
    • 啊!使用 THREE.OBJLoader() 可以获得可以构造边界框的正确对象。尽管如此,仍然不知道为什么在 aframe 中运行时加载的 obj 模型无法提供正确的 Object3D。
    猜你喜欢
    • 2015-03-14
    • 2021-04-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    相关资源
    最近更新 更多