Вы должны поместить свой код создания в компонент, а не просто в глобально ограниченную функцию.Помещение его в компонент гарантирует, что сначала загружается все (включая инспектор), затем выполняется ваш код, и объекты будут зарегистрированы инспектором.
AFRAME.registerComponent('treeman', {
init: function(){
let el = this.el;
let sceneEl = document.querySelector('a-scene');
let trees = sceneEl.querySelector('#trees');
el.addEventListener("model-loaded", e =>{
//trees.emit('modelisloaded');
let tree3D = el.getObject3D('mesh');
if (!tree3D){return;}
tree3D.traverse(function(node){
if (node.isMesh){
node.renderOrder = 2;
console.log(node.name, node.renderOrder, node.material);
node.material.color=new THREE.Color(0xaa5522);
node.material.map = null;
}
});
let countX = 10;
let cubes = [];
let size = 0.125, spacing = 0.05, x;
for (let i=0; i<countX; i++){
cubes[i] = document.createElement('a-entity'); // create the element
// create components, id, geometry, position
cubes[i].setAttribute('id', 'tree_'+i.toString());
cubes[i].setAttribute('gltf-model', '#tree');
x = (size + spacing) * countX * (-0.5) + i * (size + spacing) ;
y = Math.random() * 0.25;
z = Math.random() * 1;
cubes[i].setAttribute('position', x.toString()+ ' '+y.toString()+' '+z.toString() );
// you can add event listeners here for interaction, such as mouse events.
sceneEl.appendChild(cubes[i]);// Append the element to the scene, so it becomes part of the DOM.
}
});
}
});
<a-entity id="treemodel" visible="false" gltf-model="#tree" scale="5 5 5" treeman></a-entity>
Я только что запустил это, подтвердив, что динамическисозданные объекты отображаются в инспекторе.
сбой здесь