0

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

これについての助けをいただければ幸いです!ありがとう

4

1 に答える 1