首页 > 解决方案 > 有没有办法在运行时通过使用模式中的选择器在 A-Frame 中设置“gltf-model”或“obj-model”?

问题描述

我正在制作一个 A-Frame 项目,在该项目中,我必须在运行时根据用户输入将 3D 对象设置为实体。有没有办法使用选择器类型来设置它?

例子:

AFRAME.registerComponent('model',{
schema:{
   ext: {type: 'string', default:'gltf'},
   scene:{type: 'selector'},
   material:{type: 'selector'},
   scale:{type: 'string', default: '1 1 1'}
},
init: function (){
   var el = this.el;
   var data = this.data;
   if(data.ext == 'obj')
   {
     el.setAttribute('obj-model','obj',data.scene);
     el.setAttribute('obj-model','mtl',data.material);
   }
   else
     el.setAttribute('gltf-model',data.scene);
   el.setAttribute('scale',data.scale);
   console.log(this.el.toString() + ': Model component registered successfully!');
   }
});

通过使用元素 ID 设置它不起作用,但是如果我在 HTML 文档中手动输入 ID,它可以完美地工作。

标签: javascriptaframewebvr

解决方案


gltf -modelobj-model组件不采用 DOM 元素,而是采用 URL 或选择器。将选择器权传递给模型

AFRAME.registerComponent('model',{
 schema:{
  ext: {type: 'string', default:'gltf'},
  scene:{type: 'string' },
  material:{type: 'string'},
  scale:{type: 'string', default: '1 1 1'}
}

修正故障


推荐阅读