我希望在A-Frame中使用几何实例化时获得一些帮助。我试图找出我的 Web 应用程序的瓶颈,在为场景中创建的物理对象实现池化后,看到绘制调用的数量随着每个新对象的增加而增加——我曾认为通过使用 A-Frame 中的资产管理系统,我的模型会自动缓存,但我认为我错了。
我想知道,如果我使用 AFRAME.registerGeometry
注册模型的几何形状,我是否能够利用几何实例化?我看到,使用 A-Frame 几何基元从对象池创建不会在每个实体的基础上增加场景的几何体计数。我尝试加载我的 GLTF 并从网格中注册几何体,但我从我不理解的节点收到错误:
<script>
AFRAME.registerGeometry('ramshorn', {
schema: {
depth: {default: 1, min: 0},
height: {default: 1, min: 0},
width: {default: 1, min: 0},
},
init: function(data) {
var model = null;
var geometry = null;
var manager = new THREE.LoadingManager();
manager.onLoad = function () {
console.log(geometry);
this.geometry = geometry;
console.log(this.geometry);
}
var gltfLoader = new THREE.GLTFLoader(manager);
gltfLoader.setCrossOrigin('anonymous');
const src = "./assets/ramsHorn/Ram's Horn 2.gltf";
gltfLoader.load(src, function ( gltf ) {
console.log("Gltf: " + gltf);
model = gltf.scene;
console.log("Model: " + model)
model.children.forEach((child) => {
console.log(child);
});
gltf.scene.traverse(function (o) {
if (o.isMesh) {
geometry = o.geometry;
//console.log(geometry);
//tried assigning "this.geometry" here
}
});
}, undefined, function ( error ) {
console.error(error);
});
//tried assigning "this.geometry" here
}
});
</script>
错误:
core:a-node:error Failure loading node: TypeError: "t is undefined"
aframe-master.min.js:19:658
任何帮助将不胜感激!谢谢
aframe-master.min.js
中 19:658 的代码试图运行带有变量t
但尚未声明的内容。
通过使用aframe-master.js
可能会得到更有意义的错误。