You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从单个GLB文件中加载并显示指定的人体模型?

解决GLB多模型按需显示问题

不用非得用Blender分割GLB文件,在ThreeJS里直接处理就行,给你几个实用步骤:

  • 先搞清楚GLB的层级结构:你看到o.scene.length=1是因为所有模型都嵌套在这个唯一的场景子对象里,不是直接在scene的表层children里。加载完成后立刻用console.log(o.scene)打印整个结构,展开就能看到8个人体模型的具体位置——大概率是在某个Group或者Object3D的子级里。
  • 按需控制显示:找到目标模型所在的层级后,通过设置visible属性来切换显示状态。举个例子,假设打印后发现8个模型都在o.scene.children[0].children里:
    // 获取所有模型的数组
    const allHumanModels = o.scene.children[0].children;
    // 只显示第2个模型(索引从0开始)
    allHumanModels.forEach((model, idx) => {
      model.visible = idx === 1;
    });
    
  • 优化切换体验:如果需要频繁切换,可以把每个模型单独存到一个映射对象里,后续直接调用就行:
    const modelStore = {};
    allHumanModels.forEach((model, idx) => {
      modelStore[`human${idx + 1}`] = model;
      model.visible = false; // 先全部隐藏
    });
    // 切换显示第3个人体
    modelStore.human3.visible = true;
    

提醒下:千万别只看表层的children,一定要通过控制台展开整个scene对象,找到真正的模型节点——Sketchfab导出的GLB经常会有一层或多层嵌套的容器。

内容的提问来源于stack exchange,提问作者Tamer Hosgör

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 02:57:40