基于 three.js 加载器分别加载模型

点击查看代码
/**
 * 参数:模型文件路径,成功回调函数
 * 
 * 基于 three.js 加载器分别加载模型
 * 
 * 全部加载后通过回调函数传出打印
 */
import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader.js'
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'
import * as THREE from 'three'
export function loadManager (pathList, successFn) {
  let model = []
  // Instantiate a loader
  const gltfLoader = new GLTFLoader()
  const fbxLoader = new FBXLoader()
  // Load a glTF resource
  const loadModel = (path) => {
    return new Promise((resolve) => {
      if (path.indexOf('fbx') > -1) {
        fbxLoader.load(path, (obj) => {
          resolve({
            model: obj,
            url: path
          });
        });
      } else if (path.indexOf('gltf') > -1) {
        gltfLoader.load(path, (gltf) => {
          resolve({
            model: gltf.scene,
            url: path
          });
        });
      }
    });
  };
  
  (async () => {
    const modelPromises = pathList.map((path) => loadModel(path));
    const model = await Promise.all(modelPromises);
    successFn(model);
  })();
  
}
posted @   jialiangzai  阅读(129)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示