🙄

Nuxt3 x babylon.jsで.glbファイルをロードする

2023/03/29に公開

概要

Nuxt3 x babylon.jsにおいて、.glbファイルのロードを試みた際にエラーが発生しましたので、その備忘録です。

エラーの内容

以下のエラーが発生しました。

Unable to load from ./models/test.glb: importScene of undefined from undefined version: undefined, exporter version: undefinedimportScene has failed JSON parse

対応内容

以下を追加でインストールすることで対応できました。

npm install @babylonjs/loaders

結果、以下のようなjsファイルで表示することができました。

scene.js
import {
  Engine,
  Scene,
  FreeCamera,
  Vector3,
  HemisphericLight,
  SceneLoader,
} from "@babylonjs/core";
import "@babylonjs/loaders/glTF";

const myScene = {
  engine: null,
  scene: null,

  // シーンを作成する関数
  createScene: function (canvas) {
    // エンジンとシーンの初期化
    const engine = new Engine(canvas);
    const scene = new Scene(engine);
    myScene.engine = engine;
    myScene.scene = scene;

    // カメラの設定
    const camera = new FreeCamera("camera1", new Vector3(0, 5, -10), scene);
    camera.setTarget(Vector3.Zero());
    camera.attachControl(canvas, true);

    // 光源の設定
    new HemisphericLight("light", Vector3.Up(), scene);

    // GLBモデルの読み込み
    SceneLoader.Append(
      "./models/",
      "test.glb",
      scene,
      function (/*newMeshes*/) {
        // const mesh = scene.meshes[0];
        // シーン内のカメラとライトを作成または更新
        scene.activeCamera = null;
        scene.createDefaultCameraOrLight(true);
        scene.activeCamera.attachControl(canvas, false);
      }
    );

    // レンダリングループ
    engine.runRenderLoop(() => {
      scene.render();
    });
  },
};

export default myScene;

まとめ

同様のエラーでお困りの方の参考になりましたら幸いです。

Discussion