2017-08-09 2 views
0

glTFシーンの3Dオブジェクト階層に従ってaエンティティ階層を構築するために、いくつかのglTFパーサーの変更をテストしています。glTFモデル階層ビルダーに従ってa-entity hierachyを構築する

これはうまくいきますが、Aフレームのインスペクタウィジェットから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

子供の翻訳/ローテーションを行うために、 "_node.parent = parentObject;"という行を削除しなければなりませんでした。 – Hypergeff

関連する問題