Blender贴图导出UE/Unity全指南:告别灰模与材质丢失 📅 发布时间:2026/9/17 7:10:33 👁 浏览次数: 先聊点实在的。很多朋友在Blender里把模型做得漂漂亮亮材质节点连得满满当当一导出到UE或者Unity当场傻眼模型变灰了贴图丢了颜色跟Blender里完全不对法线凹凸方向也反了。这不是你操作失误而是Blender、UE、Unity三兄弟对“材质”和“贴图”的理解本来就不是一回事。这篇文章就是要把这条链路彻底打通从Blender侧的导出设置、贴图路径处理到UE和Unity各自的导入与材质连接一步一步带你把贴图稳稳地带过去。我自己从建模到引擎美术踩了大几年坑总结了这套最不容易出错的工作流适合正在做游戏资产、产品可视化或者场景搭建的朋友。不管你是刚从Blender转引擎的新手还是已经被材质问题折磨过几次的熟手按这套流程走至少能避开80%的贴图丢失和颜色差异问题。1. 为什么导出会丢贴图先搞懂两边的“语言”1.1 Blender材质只是“视觉假象”引擎要的是“数据”Blender里的Principled BSDF节点本质上是Cycles和Eevee渲染器用来计算颜色的一个“视觉方案”。你在Blender里看到木头有木纹、金属有反光那是渲染器实时跑出来的结果。但FBX、glTF这类通用模型格式本质上只是一个“几何容器”主要记录顶点、UV、法线、动画这些几何信息材质信息只有少得可怜的描述字段。打个比方Blender里的材质像是一份写在便签纸上的“菜谱”字迹潦草只有你自己看得懂。引擎拿到这份菜谱只认得“用面粉、鸡蛋、糖”这种标准表述你写“加点灵魂”它就彻底懵了。所以导出时要么把菜谱翻译成引擎看得懂的通用格式glTF的PBR描述要么把菜谱本身塞进FBX的附加数据里Embed Textures要么就干脆把菜品照片贴图和原材料清单贴图路径一起交给引擎让它自己拼装。理解了这一点你就明白为什么模型在Blender里好好的一到引擎就灰了引擎根本不认识Blender那套节点网络它只认“这张图对应BaseColor这张图对应Roughness”。你没有在导出时把对应关系写清楚引擎就只能给你一个默认灰模。1.2 FBX与glTF两种格式的取舍FBX是目前游戏行业用得最广的中转格式Ue和Unity都原生支持导入。FBX好就好在兼容性极强角色动画、骨骼绑定、多物体层级都能保留缺点是材质系统太老了它在设计的时候压根没考虑PBR工作流所以贴图跟材质的对应关系基本靠“路径引用”和“命名约定”来传递很容易断。glTF则是近几年越来越主流的格式被称作“3D界的JPEG”它天生就是为PBR材质设计的材质描述字段清晰metal-rough流程直接对应Blender的Principled BSDF。Blender 4.x版本内置的glTF导出器已经非常成熟导出后引擎能自动认出BaseColor、Roughness、Metallic、Normal这些贴图并自动生成正确的材质节点省掉大部分手动连接工作。我个人经验是静态模型、道具、小场景用glTF更省心带有复杂动画、多材质、物理模拟烘焙的资产用FBX更稳。下面的实操部分我会把两套流程都讲清楚你自己按项目情况选。2. 导出前在Blender里必须做对的几件事2.1 展UV与纹理文件命名规范不管用哪种格式导出UV是贴图能否正确显示的地基。Blender里按Tab进入编辑模式选择所有面按U展开用Smart UV Project或者手动Unwrap都行。关键是UV岛与岛之间不要重叠除非你故意做UDIM或重复纹理否则引擎采样贴图时会出现奇怪的接缝和穿插。还有一个经常被忽略的点贴图文件的命名。因为FBX和大多数引擎都是通过文件名来识别贴图角色的我建议统一用“模型名_贴图类型”的格式比如WoodTable_BaseColor.pngWoodTable_Normal.pngWoodTable_Roughness.pngWoodTable_Metallic.pngWoodTable_AO.png命名越规范后面在UE和Unity里找对应关系就越轻松。如果你用英文命名别用中文引擎对中文路径的兼容性时好时坏容易出幺蛾子。2.2 材质节点树的“导出兼容”接法Blender的材质节点可以连得非常花哨但导出到引擎时引擎只认标准PBR那几条通道。最稳妥的做法是模型使用Principled BSDF作为主节点并且把它上面的关键输入对应到图片纹理节点Base Color → 贴图连到Base Color输入Metallic → 贴图连到Metallic输入Roughness → 贴图连到Roughness输入Normal → 贴图通过Normal Map节点连到Normal输入Alpha → 贴图的Alpha通道连到Alpha输入如果要做透明额外加一些乘法节点、颜色渐变来调色导出时引擎大概率不认识它会忽略你的调色逻辑只读取纹理的原始数值。所以如果纹理需要调亮度、对比度、色相建议在PS或Krita里改好再导入或者等导入引擎后再用材质编辑器调别指望Blender里的节点能原封不动搬过去。2.3 法线贴图方向的坑Blender是YUE和Unity是-Y法线贴图几乎是跨引擎最经典的坑没有之一。Blender和Maya一样使用的是OpenGL风格的法线贴图绿色通道方向是Y或者说Up轴朝向正方向而UE和Unity默认使用DirectX风格绿色通道方向是-Y向下。直接导出的法线贴图在引擎里往往会出现凹凸方向反了的问题该凹的地方凸该凸的地方凹光影看起来像被“内外翻转”了。解决办法有两种在Blender导出前给法线贴图加一个“反绿通道”的修正在图像编辑器里把Green通道反相CtrlG或者用节点Convert→ColorRamp调但这会同时影响Blender里的显示效果。更推荐做法导出后在引擎导入设置里勾选“Flip Green Channel”UE的纹理导入设置或确保Unity的法线贴图纹理类型设为“Normal Map”引擎会帮你自动处理这个朝向问题。所以我在Blender里通常不折腾法线图本身保持默认等进了引擎再处理。这样两边看都是正常的效果。3. 实操FBX与glTF导出设置详解3.1 FBX导出面板关键参数在Blender中选中模型File → Export → FBX右侧导出面板有一堆选项别慌核心就几个Path Mode选“Copy”这样Blender会把贴图文件复制一份到导出目录保证引擎能找到贴图。Embed Textures这个选项建议勾上它会直接把贴图打包进FBX文件内部。这样你发文件给别人的时候不会出现“FBX过去了贴图没过去”的尴尬情况。缺点是文件体积会大不少但省心。Apply Scalings这里我一般选“FBX Units Scale”这样模型导出的缩放比例不会乱套。Apply Transform这个按钮在新版本里有时藏得比较深它的作用是烘焙模型的旋转和缩放变换防止模型在引擎里被旋转90度或者缩放乱套。建议导出前先CtrlA应用全部变换再导出。提示FBX的“Embed Textures”虽然能把贴图嵌进去但引擎导入时仍然不一定自动建好材质特别是FBX带来的材质定义非常“脏”。很多情况下你导入UE或Unity后还是要手动连接一次材质。3.2 glTF导出面板关键参数Blender 4.x版本导出glTF时File → Export → glTF 2.0参数相对简单Format选“glTF Separate”.gltf .bin textures还是“glTF Embedded”全部打包成一个.glb文件如果你要在UE里用我个人建议导成.glb因为UE导入时可以直接识别贴图也内嵌在里面如果你要在Unity里用Unity对glb的支持依赖导入器插件通常用Separate格式放到Assets文件夹下会更直观。Include勾选“Materials”是必须的这样导出器才会把Blender的Principled BSDF材质描述写进glTF文件。Images选择“Copy Images”这样纹理文件会跟着一起导出。Texture Format默认“Automatic”就好它会根据情况选择JPEG或PNG。如果你需要保留透明通道确保是PNG。glTF导出机制我个人用下来最爽的一点是它会把Blender里Base Color、Metallic、Roughness、Normal这几个接口的对应关系清晰地写进glTF的材质描述里。等到引擎导入时引擎读取到“metallicRoughnessMaterial”就能自动创建对应材质节点贴图自动连上比FBX省事太多。3.3 轴方向、单位与缩放的那些事Blender默认单位是米1个Blender单位1米UE默认单位是厘米1个单位1厘米Unity默认单位是米1个单位1米。所以同一个模型在Blender里如果是一个1x1x1的立方体导入UE会变成100x100x100厘米也就是1米没问题。导入Unity会变成1x1x1米也没问题。真正容易出问题的是轴方向。Blender使用Z轴向上而很多3D软件如3ds Max使用Y轴向上。FBX里通常带一个轴转换矩阵导入引擎时引擎会按自己的规则转换。如果你发现模型在引擎里躺倒了一般不是贴图问题而是轴方向设置问题。解决办法导出FBX时在“Object Type”里确认勾选“Mesh”且轴设置保持“Y Up”这是UE和Unity认可的通用方向导入时引擎会自动把Z轴向上转成Y轴向上。如果还是躺倒就在引擎导入设置的旋转里手动补个-90度。这种事我建议直接在引擎侧调导入设置的旋转别在Blender里硬转否则改模型时容易乱。4. UE侧导入与材质连接实战4.1 导入FBX/glTF到UEUE导入FBXContent Browser里右键 → Import选择FBX文件。弹出FBX导入选项时需要注意几个Import Mesh勾选Import Materials如果你已经用Embed Textures可以勾选但大概率它只会生成一个带默认纹理的材质还是得手动调。Import Textures建议勾选尤其你在Blender里选了Copy模式UE会尝试把所有关联的贴图文件一起导入。Normal Import Method如果没有特殊需求保持默认UE会自动处理法线方向。UE导入glTF/glb在UE 5.x里面是支持直接拖进Content Browser的选择.glb或.gltf后UE会自动生成模型、材质和纹理相当省心。如果你用的版本比较旧可能需要启用“glTF Importer”插件Edit → Plugins → GLTF。4.2 在UE材质编辑器里手动连接贴图推荐方案不管导入时有没有自动生成材质我还是建议你手动建一个材质因为自动生成的往往粗糙。操作流程Content Browser右键 → Material命名StandardBase。双击打开材质编辑器。把你的贴图拖进编辑器依次连接到对应节点BaseColor贴图 → BaseColorRoughness贴图 → RoughnessMetallic贴图 → MetallicNormal贴图 → Normal记得在纹理的Texture Settings里把“Texture Group”设为“NormalMap”并勾选“sRGB”关掉法线贴图不需要sRGB校正保存并应用把材质拖到模型网格体上。这里有个细节UE里纹理的sRGB选项非常容易搞错。BaseColor、Emissive、Opacity这些颜色类贴图要勾选sRGBCompression设置为“Default”而Roughness、Metallic、Normal、AO这些数据类贴图必须取消sRGB压缩格式选“Mask”或“Normal map”。如果不改颜色会整体变灰或变得奇怪这是新手最常踩的大坑。4.3 纹理压缩与色彩空间UE导入纹理后你在贴图资产设置里会看到Compression和Texture Group。一般我喜欢这样设置贴图类型sRGBCompression说明BaseColor勾选Default (BC7)颜色信息保留细节更重要Normal取消Normal map引擎自动切换为适合法线的压缩格式Roughness取消Mask (BC4)单通道数据占用小Metallic取消Mask (BC4)同上AO取消Mask (BC4)同上如果发现场景里模型偏暗除了光照问题很可能是BaseColor的sRGB没勾对导致颜色数值被当作线性数据来解读看起来就“发脏”。这一点在材质预览里看不太明显放到实际光照下才暴露。我通常导入后第一时间检查纹理资产面板把sRGB和压缩格式一次调到对再连材质。5. Unity侧导入与材质连接实战5.1 导入FBX/glTF和Unity的模型设置Unity导入FBX也是直接拖进Project窗口。选中导入的FBX模型在Inspector面板里重点看几个设置Scale Factor默认1如果模型导入后大小不对可以先检查这个值。Read/Write Enabled如果模型需要在运行时动态修改Mesh比如骨骼动画建议勾上否则不用管。Generate Colliders静态场景物体可以不开角色和需要碰撞的物体再开。Normals保持Import如果需要调整就把法线重算。Unity对glTF的支持没有内置需要到Package Manager安装“glTFast”插件。装了之后可以直接把.gltf/.glb文件拖进场景它会自动生成材质和贴图。不过glTFast生成的材质默认用的是URP或内置管线的Standard Shader具体看你项目用的渲染管线。5.2 材质球参数连接Unity里最常用的材质工作流是金属/粗糙度流程对应Standard Shader内置管线或Lit ShaderURP。在Project窗口右键 → Create → Material命名与模型对应。选中材质球把贴图拖进各参数位贴图类型Standard Shader参数URP Lit Shader参数BaseColorAlbedoBase MapMetallicMetallicMetallic MapRoughnessSmoothness注意Unity用Smoothness数值1-RoughnessSmoothnessNormalNormal MapNormal MapAOOcclusionOcclusion注意Unity里没有直接的Roughness输入它用的是Smoothness数值正好相反。如果你的Roughness贴图是纯数据比如木头粗糙度0.8那么Unity里Smoothness就是0.2。解决办法是导入Roughness贴图后在素材导入设置里勾选“Invert”如果你把Roughness贴图放进Smoothness槽并且设置Smoothness Source为“Alpha”或“Metallic Alpha”或者干脆在Photoshop里反相一次另存为Smoothness贴图。我个人的习惯是在建模阶段就按引擎的需求输出贴图。如果是给Unity做我直接生成Smoothness贴图反相Roughness省得每次都要在Inspector里调。如果是给UE做我则输出Roughness贴图。虽然有点麻烦但每次导入都免去对参数的理解偏差。5.3 法线贴图必须在导入设置里设为“Normal Map”Unity导入法线贴图时有个关键步骤选中贴图资产在Inspector底部把Texture Type从“Default”改成“Normal Map”然后在材质球上把这张图拖到Normal Map槽。如果没做这一步法线贴图在Unity里会被当成普通颜色贴图来压缩和采样显示效果会非常奇怪通常看起来像蓝色紫色混杂的“油污”效果而且光照完全不对。如果你发现Unity里的法线方向反了跟UE一样在纹理导入设置的“Normal Map”区域有个“Flip Green Channel”或类似选项不同Unity版本位置略有差异勾上试试一般就能解决。5.4 URP/HDRP下的注意事项如果你用的是URP或HDRP渲染管线原则上材质属性的对接还是一样的但要注意URP的Lit Shader比Standard Shader简化了不少有些辅助贴图比如Height Map、Detail Mask可能没有对应的接口。HDRP和URP的orm贴图AO-Roughness-Metallic打包成一张图在材质里有专门的接口如果你习惯用纹理打包工具需要按它要求的通道顺序摆放。Unity里如果出现模型全粉红色基本就是Shader缺失或者材质里引用的Shader被移除常见于从老项目迁移、或者使用内置管线材质放进URP项目。这种情况不是贴图问题是材质球掉了着色器直接在材质球上换成URP/Lit就行了。6. 常见问题速查表贴图丢失、颜色发灰、模型躺倒6.1 贴图丢失与灰模现象原因解决办法FBX导入引擎只有灰模无贴图FBX不包含材质数据每张贴图是独立文件导入前把贴图放进Content/Assets手动创建材质连接或使用glTF格式自动生成材质贴图路径失效贴图被移动或删除导出时选“Copy”“Embed Textures”或把贴图与模型放在同一目录再导入引擎里显示紫色UE/粉红色Unity材质丢失或Shader丢失检查材质资产指定正确的Shader/材质类型模型透明部分变实心Blender的Alpha设置没正确导出确认贴图带Alpha通道导入后材质勾选Transparent并把Opacity模式设为Mask/Blend依赖Blender节点调色导致丢色引擎不识别Blender里的节点调色逻辑在外部修图软件处理好贴图再导入引擎6.2 颜色不对与发灰现象原因解决办法颜色发灰变暗sRGB设置错误BaseColor勾选sRGBRoughness/Metallic/Normal取消sRGB颜色过曝色彩管理或光照强度问题引擎里降低定向光强度或者检查贴图本身是否过亮颜色偏蓝偏紫法线贴图被当作颜色贴图在UE纹理设置里设Normal在Unity里Texture Type设为Normal Map粗糙度效果不对UE用RoughnessUnity用SmoothnessUE直接用Roughness贴图Unity用Smoothness1-Roughness或反相贴图6.3 模型缩放、轴方向与光照问题现象原因解决办法模型在引擎里躺倒轴方向设置不一致导出时保持Y Up导入引擎后调整旋转-90度模型大小差100倍Blender用米UE用厘米UE导入时Scale Factor设为0.01或接受100倍缩放后手动调整法线凹凸反了Blender OpenGL法线 vs 引擎DirectX法线UE/Unity导入时勾选Flip Green Channel模型黑乎乎一片缺光照/材质为纯黑检查场景光照检查材质是否连了Metallic、AO等黑色贴图模型有接缝但Blender里正常UV未完全展开或有重叠回到Blender重新展UV检查重叠面7. 我的实战心得与进阶技巧7.1 打通命名约定让引擎自动认路由不管你在UE还是Unity里工作贴图命名统一性强是能减少大量手动操作的。我用得最多的命名分类是模型名_BaseColor、模型名_Normal、模型名_Roughness、模型名_Metallic、模型名_AO、模型名_Emissive。这样哪怕引擎自动导入时有偏差我在材质编辑器里一眼就能找到对应贴图不需要点开资源列表挨个猜。另一个技巧是把贴图放在与模型同层级的Textures子文件夹里比如Assets/Models/WoodTable/Model.fbx Assets/Models/WoodTable/Textures/WoodTable_BaseColor.png这种组织方式在UE和Unity里都一目了然后续多人协作也不容易乱。7.2 能用glTF尽量用glTF尤其是静态资产前面说过UE 5.x和Unity配合glTFast插件对glTF的支持已经非常成熟了。对于静态道具、建筑、地形装饰这类没有骨骼动画的资产我现在基本都导glB直接把材质数据带过去自动生成材质省掉手动连线的步骤而且贴图路径出错的概率极低。如果你做的资产是给多个项目用的通用资产glB作为“预览和交接”格式也非常方便。我在项目里给美术同事演示模型效果时直接拖glB进引擎几秒钟看到最终近似效果比在Blender里截图方便太多。7.3 贴图打包省显存的ORM压缩思路如果你的项目对性能敏感比如做手游或VR建议把AO、Roughness、Metallic这三张单通道贴图打包进一张RGB图的三个通道也就是常说的ORMOcclusion-Roughness-Metallic贴图。Blender里可以用Shader节点分别取R、G、B通道合并输出导出前先烘焙成一张图。这样引擎只需要采样一张纹理节省显存和带宽。具体Blender操作在Cycles渲染器里新增一个Image Texture节点尺寸设成与模型一致一般2048x2048类型选“Color”新建一张空白图。然后把模型待烘焙材质的所有表面换成一张由“分离RGB→分别连AO、Roughness、Metallic→合并RGB→输出”的节点网络组成。烘焙类型选Emit就能把打包结果烘到新建的贴图上。这个技巧能显著降低移动端项目的运行压力。7.4 导出前最后自查清单每次导出前我习惯过一遍这个清单别笑真的能省很多来回模型是不是应用了全部变换CtrlA → All TransformsUV有没有重叠有没有超出0-1范围贴图文件是不是都在本地命名规范吗材质节点是不是都是Principled BSDF没有一堆花哨节点需要透明的地方有没有设置Alpha法线贴图确认了朝向吗引擎导入时要翻转吗导出格式选对了吗静态资产用glB带动画用FBX引擎导入后sRGB和压缩格式调对了吗这八条我基本每次都要过一遍虽然听起来机械但基本能保证“一条龙不出事”。说到最后的个人体会Blender、UE、Unity这三者之间本质上不是“能不能导出贴图”的问题而是“你愿不愿意在导出前把材质语义整理干净”的问题。引擎之间有很多差异但只要你理解了PBR材质在不同软件中的表达方式把贴图当作基础数据而非“渲染效果”来对待这套流程在任何引擎里都能复现。我刚开始也觉得很烦但习惯了这套规范之后真正到了引擎里反而可以更专注在灯光、构图和营造氛围这些更上层的事情上。