2017-08-09 149 views
0

我正在测试一些glTF分析器修改,以便根据glTF场景的三维对象层次结构构建一个实体层次结构。根据glTF模型层次结构构建器构建实体层次

它工作的很好,但是我无法从A-Frame检查器小部件中更改a实体儿童的位置/方向/比例。只有a实体根可以被移动。

你知道缺什么吗?

GLTFParser.prototype.loadScenes = function() { 

    var json = this.json; 
    var extensions = this.extensions; 


    // scene node hierachy builder 
    // Geff 
    function buildNodeHierachy(nodeId, parentObject, allNodes) { 

     var _node = allNodes[ nodeId ]; 
     parentObject.add(_node); 

     if (_node.type == 'Object3D' && _node != undefined) { 
      var entityChild = AFRAME.INSPECTOR.createNewEntity({element: 'a-entity', components: {}}); 

      entityChild.setAttribute('visible', _node.visible); 
      entityChild.setAttribute('position', _node.position); 
      entityChild.setAttribute('rotation', _node.rotation); 
      entityChild.setAttribute('scale', _node.scale); 

      if(parentObject.type == 'Scene')parentObject.sceneRoot = _node; 
      entityChild.setObject3D('mesh', _node); 
      entityChild.id = _node.name; 

      //} 

      if(parentObject.el != undefined){ 
       parentObject.el.insertBefore(entityChild, null); 
       parentObject.el.emit('child-attached', entityChild); 
      } 
      _node.parent = parentObject; 
      entityChild.emit('object3dset', {object: _node, type: 'mesh'}); 
      entityChild.emit('model-loaded', {format: 'gltf', model: _node}); 
     } 


     var node = json.nodes[ nodeId ]; 

     if (node.children) { 

      var children = node.children; 

      for (var i = 0, l = children.length; i < l; i ++) { 

       var child = children[ i ]; 
       buildNodeHierachy(child, _node, allNodes); 

      } 

     } 

    } 

    return this._withDependencies 

回答

0

检查员根本不应该参与代码。要创建一个实体:

document.createElement('a-entity'); 

https://aframe.io/docs/0.6.0/introduction/javascript-events-dom-apis.html#creating-an-entity-with-createelement

+0

感谢,它的速度更快使用,而不是AFRAME.INSPECTOR.createNewEntity使用document.createElement时加载的模型。 – Hypergeff

+0

然后为了让孩子在翻译/ roation工作,我不得不删除行:“_node.parent = parentObject;” – Hypergeff