如何在 THREEJS 级别添加 GLTF 模型?

How to add GLTF Model in THREEJS level?

我想创建一个可以在调用方法后加载 gltf 的扩展。我正在根据这个 blog 使用最新的 threejs 模块。但是得到一个错误。

这是我的代码。

   const gltfLoader = new GLTFLoader();
  let example = new THREE.Object3D();
  gltfLoader.load(
    "https://threejsfundamentals.org/threejs/resources/models/cartoon_lowpoly_small_city_free_pack/scene.gltf",
    (gltf) => {
      example = gltf.scene;
      console.log(example);
      if (!this.viewer.overlays.hasScene("gltf")) {
        this.viewer.overlays.addScene("gltf");
      }
      this.viewer.overlays.addMesh(example, "gltf");
    }
  );

关于 glTF,您可以查看此博客 post 并考虑使用 Autodesk.glTF 分机:https://forge.autodesk.com/blog/gltf-20-support-forge-viewer

viewer.loadExtension('Autodesk.glTF').then(() => {
    viewer.loadModel('address/of/your/model.gltf');
});

代码示例请参见此处:https://github.com/petrbroz/forge-basic-app/tree/experiment/gltf2

在 Forge Viewer 中处理 glTF 文件时,请记住以下几点:

  • 查看器扩展并不旨在完全符合 glTF 2.0 规范
    • 例如,Forge Viewer 中的 material/shader 系统不同于 glTF 中使用的 PBR(基于物理的渲染)材质,因此查看器将无法完整地呈现所有 glTF 材质
    • 不支持文件格式的某些功能,例如动画
  • 如果 glTF 文件在树结构中定义了多个对象,则单个对象将在查看器中可选择,树结构将出现在模型浏览器对话框中;但是请注意,许多 glTF 文件将整个场景存储为单个对象
  • glTF 规范不使用任何附加到单个元素的元数据概念;因此,查看器中的“属性”对话框将不会提供有关所选元素的任何其他信息