首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个框架getObject3D('mesh')通过多次尝试返回未定义的

一个框架getObject3D('mesh')通过多次尝试返回未定义的
EN

Stack Overflow用户
提问于 2018-11-12 09:23:50
回答 1查看 1.5K关注 0票数 1

我正试着在A帧中为一个obj模型找一个边框.在此,我将引用我在堆栈溢出中找到的以下两个有用的链接:如何从aframe中的3D对象中获取包围框信息? 有没有办法从three.js Object3D中得到一个边框?,但是在尝试了下面的代码之后,

代码语言:javascript
复制
AFRAME.registerComponent('bounding-box', {
            init: function(){
                var el = this.el;
                var obj = el.getObject3D('mesh');
                console.log(obj);
                var bbox = new THREE.Box3().setFromObject(obj);
                console.log(bbox.min, bbox.max);    
            }
        })

我从console.log(obj);得到了“未定义”,然后我尝试了上述链接中提到的方法,

代码语言:javascript
复制
AFRAME.registerComponent('bounding-box', {
    init: function(){
        var el = this.el;
        console.log(el);
        el.setAttribute('obj-model', {obj: 'obj5/1026/1026outside.obj'});
        var obj = el.getObject3D('mesh');
        console.log(obj);
        var bbox = new THREE.Box3().setFromObject(obj);
        console.log(bbox.min, bbox.max);    
    }
})

但还是没有运气。只有当我将代码放在结束标记的上方时,它才能正常工作,并记录下边框的正确信息。

代码语言:javascript
复制
<script>
    var el = document.querySelector('#b-model');
    console.log(el);
    var obj = el.getObject3D('mesh');
    console.log(obj);

    var bbox = new THREE.Box3().setFromObject(obj);
    console.log(bbox.min, bbox.max);    
</script>
</body>

我认为这与加载顺序有关,但我不理解这篇文章中的讨论:如何在aframe运行时加载3D对象?就像我在上面尝试过的那样,这个方法不起作用。或者我用错了el.setAttribute?我还注意到,Felix说使用three.objLoader可以解决问题,我也尝试了,但仍然没有运气。理论上,我知道注册组件的原因是因为它只在附加实体初始化之后才执行。所以我在这里很困惑。有人能让我知道如何通过注册一个组件而不是最后一个松散的javascript来做到这一点吗?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-12 12:56:51

如果您的模型加载正确,那么您可能正在尝试在加载模型之前获得mesh (以及边界框)。

如果您等待model-loaded事件:

代码语言:javascript
复制
modelElement.addEventListener('model-loaded', (e) => {
  var obj = modelElement.getObject3D('mesh');
  var bbox = new THREE.Box3().setFromObject(obj);
  console.log(bbox)
})

应该会很好的。在这个小故障这把小提琴上使用gltf模型查看它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53259131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档