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
を感謝、それは代わりにAFRAME.INSPECTOR.createNewEntityののdocument.createElementを使用した場合のモデルをロードするためにはるかに高速です。 – Hypergeff
子供の翻訳/ローテーションを行うために、 "_node.parent = parentObject;"という行を削除しなければなりませんでした。 – Hypergeff