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

Three.js加载3ds Max导出的带UVW展开的FBX对象时如何保留UVW映射

3ds Max导出FBX到Three.js保留UVW映射的解决方案

第一步:3ds Max导出阶段配置(最常见的问题来源)

  • 确认目标模型的UVW展开修改器已经塌陷到基础可编辑网格/可编辑多边形,不要保留修改器堆栈,动态修改器的UV数据导出时不会被FBX序列化
  • 打开FBX导出面板,在「几何体」分类下勾选UV选项;如果使用多套UV通道,额外勾选「UV集」分组下的「全部导出」
  • FBX导出版本选择2020及以下兼容版本,过高版本的FBX规范FBXLoader无法完全解析,会导致UV属性丢失

第二步:Three.js加载阶段配置

  • 加载纹理时必须显式关闭纹理的Y轴翻转属性,3ds Max的UV坐标原点和Three.js默认规则不匹配,代码如下:
const texture = new THREE.TextureLoader().load('你的纹理文件路径');
texture.flipY = false;
  • 加载FBX时遍历子网格确认UV属性存在,再给材质应用纹理,代码如下:
import { FBXLoader } from 'three/addons/loaders/FBXLoader.js';

const fbxLoader = new FBXLoader();
fbxLoader.load('你的模型文件路径.fbx', (loadedFbx) => {
  loadedFbx.traverse((item) => {
    if (item.isMesh) {
      // 可在控制台打印确认UV属性存在,不存在则回到导出阶段检查
      console.log(item.geometry.attributes.uv);
      item.material.map = texture;
      item.material.needsUpdate = true;
    }
  });
  scene.add(loadedFbx);
});

问题排查补充

  • 确认使用的材质支持UV映射,MeshBasicMaterial、MeshLambertMaterial、MeshStandardMaterial等内置材质均默认支持,自定义ShaderMaterial需要自行实现UV采样逻辑
  • 如果模型包含多材质ID,需为每个子材质单独关联对应纹理,UV数据会自动匹配到对应材质ID的分组面

内容的提问来源于stack exchange,提问作者bhnh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 04:24:08