Есть ли способ установить ‘gltf-model’ или ‘obj-model’ в A-Frame во время выполнения с помощью селектора в схеме?

#javascript #aframe #webvr

#javascript #aframe #webvr

Вопрос:

Я создаю проект 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!');
   }
});
  

Установив его с помощью идентификатора элемента, он не работает, но если я введу идентификатор вручную в HTML-документе, он будет работать отлично.

Комментарии:

1. Я чувствую, что нам все еще не хватает некоторой информации

2. Если вы поделитесь полным работоспособным примером, вам будет легче помочь. Сбой отличный glitch.com /~рамка

3. Конечно! Я создал простой пример сбоя, чтобы показать компонент. Вот ссылка на него: glitch.com /~модель-компонент-пример

Ответ №1:

Компоненты gltf-model и obj-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'}
}
  

Исправленный сбой