长不大的小不 2023-01-04 20:26 采纳率: 0%
浏览 29
已结题

Three.js加载本地.gltf文件无法显示模型

最近在学习Three.js,就练习写了个基于Three.js的本地模型读取器,目前出现了本地.gltf文件无法显示模型的问题,glb格式和fbx模型就可以顺利读取。
/*
**函数名:User_Loader() 
**作用:加载用户模型,并预览
*************************************
scene:场景
file:使用el—upload上传的文件
*************************************
*/
export function User_Loader(scene, file) {
  
  let fileName = file.raw.name;
  let fileType = file.raw.name.split('.').pop().toLowerCase();
  let fileUrl = URL.createObjectURL(file.raw); 
  var manager = new THREE.LoadingManager();
  var objectURLs = [];
  manager.setURLModifier((url) => {
    url = fileUrl;
    objectURLs.push(url);
    return url;
  });

  function glbL(){
    var loader = new GLTFLoader(manager);
    const dracoLoader = new DRACOLoader();
    dracoLoader.setDecoderPath("./draco/");
    loader.setDRACOLoader(dracoLoader);
    loader.load(fileName, (gltf) => {
      scene.add(gltf.scene);
      objectURLs.forEach((url) => URL.revokeObjectURL(url));
    });
  }
  switch (fileType) {
    case "glb":
      glbL()
      break;
    case "gltf":
        glbL()
      break;
    case "fbx":
      var loader = new FBXLoader(manager);
      loader.load(fileName, function (object) {
        scene.add(object);
        objectURLs.forEach((url) => URL.revokeObjectURL(url));
      });
    break;
  }
}

程序未报错,本地用于测试的模型都是使用blender保存的相同内容的不同格式的模型文件,都可以使用blender与three的loader打开。
通过F12能看到gltf.scene中存在模型文件

img

也能看到scene中也存在对应的group

img

但是就是场景中看不到模型,换了好几个gltf文件都看不到。而且不知道为什么这段程序在加载gltf模型程序时会运行两次,其他格式模型就只运行一次,正常不是应该只运行一次的吗?
 manager.setURLModifier((url) => {
    url = fileUrl;
    objectURLs.push(url);
    return url;
  });

img

希望知道为啥仅不能加载gltf模型的文件,fbx和glb格式没有问题。
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-01-04 22:27
    关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月17日
  • 修改了问题 1月4日
  • 创建了问题 1月4日

悬赏问题

  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 游戏盾如何溯源服务器真实ip?
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。
  • ¥50 win10链接MySQL
  • ¥15 抖音看过的视频,缓存在哪个文件
  • ¥15 自定义损失函数报输入参数的数目不足
  • ¥15 如果我想学习C大家有是的的资料吗
  • ¥15 根据文件名称对文件进行排序