最近好几位做方案的朋友在问我同一个问题:手头这堆skp文件,到底怎么才能干净利落地弄进UE4?说实话,SketchUp和UE4之间不存在单击拖拽就完成的神奇操作——skp是SketchUp的私有格式,UE4原生不认识它。但把它转进去这件事,也远没有大家想的那么玄乎。我用这套流程处理过大量从概念模型到落地场景的项目,踩过的坑差不多能写成一本小册子。这篇文章会从格式管线的选型、模型的前期整理,到FBX手工导入和Datasmith Direct Link实时同步,再到导入后的材质、碰撞和排错,把整个链路完整走一遍。不管你是做建筑表现、室内设计还是景观规划,只要手上有skp模型想进UE4,这篇文章都能当一份实际操作手册来翻。
1. 为什么skp不能直接拖进UE4:先想清楚走哪条管线
1.1 私有格式和引擎原生格式之间,隔着一层“翻译”
SketchUp的skp是个私有二进制格式,里面不只是几何体,还包括组件层级、材质、图层、场景相机等信息。UE4没有内置skp解析器,就像Word不能直接打开Pages文件一样,必须通过中间格式或官方桥接工具来做转换。
这里有个容易被忽略的点:转换不光是“换个后缀”,更重要的是把SketchUp的坐标系、单位、单面几何特性、组件层级,映射到UE4能理解的静态网格、碰撞体、光照UV和材质体系里。如果只图快,随便导个OBJ,进引擎后经常会出现比例不对、面片发黑、组件全散成碎片的问题。
还有一个现实问题:SketchUp Free网页版基本没办法导出FBX,至少需要SketchUp Pro的桌面版。这个前提最好一开始就确认好,免得流程走一半卡住。很多人装了免费版上网找了半天导出按钮,最后发现功能锁死,白白浪费一整个下午。
1.2 三条主流管线怎么选:FBX、OBJ、Datasmith Direct Link
目前我常用的就是三种方案,各有各的适用场景,直接列个表看得更清楚:
| 方案 | 实时性 | 材质/层级保留 | 适用场景 |
|---|---|---|---|
| FBX导出 | 手动,改一次导一次 | 材质名称和基础材质可保留,层级需要额外注意 | 绝大多数项目,可控性强 |
| OBJ导出 | 手动 | 只能带顶点、UV和基本材质,组件层级几乎丢失 | 应急或非常简单的模型 |
| Datasmith Direct Link | 实时同步 | 组件层级、材质、元数据保留效果好 | 方案频繁调整、需要快速迭代 |
个人建议:绝大多数情况下优先试FBX;如果是SketchUp 2021以上配合UE4 4.24+,而且项目还在反复调方案的阶段,直接用Datasmith Direct Link会省很多事;OBJ只适合做保底方案,不要在正规项目里当主力路径。
2. 导出前的模型整理:用半小时省下后面一整天的调试时间
2.1 单位、原点和坐标轴:最先要定的三件事
单位不一致是所有转模事故里最易发的一个。打开SketchUp的“窗口 > 模型信息 > 单位”,确认导出时使用的是毫米、厘米还是米。UE4内部的默认单位是厘米,如果你的skp模型用米建模,导入时不注意缩放,出来的模型会小100倍。
原点问题同样重要。SketchUp的模型哪怕离原点很远,UE4也会把这个绝对坐标带进去,结果就是导入后的Actor被放在很远很远的地方,你重置相机半天都找不到模型。我习惯在整理阶段把整套模型做成一个组,用移动工具勾选Ctrl,把组原点移动到模型底部的中心位置。这样进UE4后,Actor的坐标原点基本就在地面中心,后续对齐场景会很舒服。
关于坐标轴,SketchUp本身是Z轴朝上,和UE4一致,理论上不会出现Blender那种躺倒问题。但因为SketchUp里没有严格的“正方向”概念,导出的模型在FBX里可能绕某个轴有微小的旋转偏差。这个不急着在SketchUp里纠结,导入后如果发现偏了,在UE4里直接对根组件旋转0度或90度即可。
2.2 组件、图层和冗余几何体:SketchUp里越乱,UE4里越惨
SketchUp建出来的模型很容易堆满辅助线、辅助面、隐藏组件和没有任何用的边线。这些东西导出后会变成多余的顶点和碎片,在UE4里表现为性能骤降或物件列表爆炸。我的习惯是:
- 全选模型,右键“转换为组”,保证是一个根级对象;
- 用组件属性清理工具或TT插件,跑一遍“清理未使用组件”“删除隐藏几何体”;
- 在图层面板里把辅助线、标注、参考图所在的图层关掉,再导出;
- 如果模型里有大量重复的桌椅、植物,尽量做成组件,而不是直接复制成个体,这样FBX和Datasmith都能保留实例化信息,引擎端负担会小很多。
这些操作看上去简单,但实际效果非常明显。我自己做过一次对比:同一个室内模型,整理前导出FBX有280万面,整理后只剩90万面,而视觉上几乎没有区别。正所谓SketchUp里的“看不见”,到UE4里全都会变成“卡顿”和“爆内存”。
2.3 材质命名和UV检查:想在UE4里认出各部位,现在就改好名
SketchUp里的材质如果叫“材质-1”“默认1”,进UE4后完全没法辨认。我一般在建模阶段就把主要材质重命名为英文,比如Floor_Wood、Wall_White、Glass_Clear。这样导入后UE4会根据名称生成对应的材质资产,并自动建立关联,省去重命名和重新指定的时间。
UV的问题在SketchUp里容易被忽略。SketchUp的纹理贴图有自己的“格子”逻辑,导出FBX时,这些UV会尽量保留,但如果你在SketchUp里用了大量投影贴图或非平面贴图,UV可能重叠。进UE4后可以在导入设置中勾选“生成光照UV”,通常能解决大部分烘焙问题。
还有一个细节:SketchUp里的材质路径如果带了中文或空格,UE4在导入纹理时偶尔会抽风。我的做法是把模型和贴图放在同一个英文目录下,文件名也改成英文,从根源上避开这个坑。
3. 最稳手写路径:SketchUp导出FBX再导入UE4的详细参数
3.1 SketchUp侧导出时要勾选哪些选项
在SketchUp Pro中,点击“文件 > 导出 > 三维模型”,文件类型选择FBX。导出前需要调整右侧的“选项”面板,这里每一项都直接影响UE4端导入结果。
- 单位:选择与模型实际单位一致。如果你模型用毫米建的,导出时选毫米,不要选“模型单位”之外的选项,避免二次缩放;
- 纹理/材质:勾选导出纹理贴图,贴图路径最好放在模型目录下的textures文件夹里,不要用中文路径;
- 导出仅当被选择:如果场景里还有辅助模型,只导出当前选择,减少多余数据;
- 版本:FBX版本建议选7.4以上,UE4兼容性更好。
如果在导出选项里能看到“向上轴”或“轴转换”项,保持默认Z-up即可,不要轻易改成Y-up,否则导入UE4后会侧躺。这个选项在SketchUp自带导出器里通常不是默认暴露的,但部分版本或第三方插件会带。总之记住一条原则:UE4是Z-up,所有轴转换都朝着这个方向对齐。
3.2 UE4导入面板关键设置:缩放、旋转和法线处理
在UE4内容浏览器中拖入FBX文件,会弹出导入选项。需要注意的字段如下:
| 字段 | 推荐设置 | 原因 |
|---|---|---|
| Import Uniform Scale | 1.0 | 如果SketchUp和UE4单位一致,保持默认;若导入后比例不对再根据情况换算 |
| Convert Scene | 勾选 | 让UE4自动将坐标系转换到引擎标准 |
| Import Mesh | 勾选 | 作为静态网格体导入 |
| Import Materials | 勾选 | 让UE4根据材质名称生成材质资产 |
| Normal Import Method | 保留或计算法线 | 若SketchUp模型面法线正确,选择保留;若出现黑面,可改为计算法线 |
| Generate Lightmap UVs | 勾选 | 保证静态光照烘焙时UV不会重叠 |
导入后双击静态网格体,在“网格体”选项卡里检查一下包围盒和三角面数。如果模型比例看着不对,不要急着调缩放,先看导入设置的“Uniform Scale”是否是1.0,再回SketchUp确认单位。90%的问题都出在单位不一致上,而不是UE4默认缩放设错了。
3.3 导入后快速验证:相机、光照和碰撞三步
把网格体拖进关卡后,我习惯按G键在Game模式下转一圈,确认材质不是黑的、碰撞不是错位的。随后放一个定向光和一个天光,把场景颜色整体看一遍。如果模型表面有奇怪的条纹或闪烁,多半是UV重叠或面片重合。此时重新导入并勾选“生成Lightmap UV”,通常能缓解。
还有一个容易忽略的点:如果模型在UE4里无法点选面、无法放置,检查一下根组件的“Mobility”是否设为Static。SketchUp导入的模型应该作为Static Mesh使用,设置成Movable反而没法烘焙光照,也容易出现阴影闪烁。
4. Datasmith Direct Link:方案还在改的时候,实时同步比手动导出香太多
4.1 环境准备:插件安装和版本匹配
如果你受够了“改一版SketchUp,导一版FBX”的循环,可以用UE4自带的Datasmith。UE4.24之后Datasmith已经集成到引擎中,你只需要在插件面板中启用“Datasmith Importer”,并从官网下载对应版本的“Datasmith SketchUp Exporter”插件。
安装完成后,SketchUp菜单栏会出现Datasmith相关扩展项。需要特别留意:不同年份的SketchUp对应不同版本的Datasmith插件,装错版本通常表现为插件面板不显示或同步无反应。我见过最尴尬的局面是群里有人说“Datasmith不好用”,远程一看才发现把SketchUp 2021的插件装到了SketchUp 2023上,面板压根就没加载出来。
4.2 从SketchUp推到UE4:完整操作流程
我实际用的流程是这样:
- 在UE4中打开你的项目,进入菜单“编辑 > 插件”,搜索Datasmith,确保“Datasmith Importer”已启用;
- 在SketchUp中打开模型,进入“扩展程序 > Datasmith”,点击“Direct Link”;
- 回到UE4,打开菜单“窗口 > Datasmith Direct Link”,面板会显示连接状态;
- 在SketchUp中点击“Sync”或“Push to Unreal”,UE4端会自动创建一个Datasmith Actor;
- 之后每次改了模型,在SketchUp里重新Sync,UE4端会保留之前的材质命名和位置,进行增量更新。
值得单独讲的是:Datasmith虽然帮你省了“导出文件再导入文件”这一步,但它导入进来的并不是普通静态网格层级,而是一个Datasmith Actor,里面的网格体仍在内容浏览器中。如果你需要在基础上做LOD、做独立材质替换,还是得先把需要的部件单独选中,右键转为静态网格体,或者直接用内容浏览器中的资源进行引用。
4.3 Direct Link的适用边界:不是所有场景都该用
Datasmith Direct Link真正擅长的是方案推敲、跨专业协同,以及和SketchUp频繁互导的阶段。但如果你的模型已经冻结,需要进入烘焙、优化和发布阶段,我更推荐回到FBX管线。因为FBX导入可以精确控制每一个网格的命名、碰撞、LOD,而Datasmith在复杂场景中有时会把SketchUp组件层级全部拆开,后期整理量反而更大。
另外,如果skp文件里有大量曲线曲面、圆面、复杂弧线,Datasmith导入后容易产生超高面数,不做好平滑组处理的话,性能会非常难看。这些情况用FBX导出并在导出时调整分段数,反而更可控。
5. 材质、光照、碰撞:模型进来之后才是真正干活的开始
5.1 材质全黑或半透明,先查法线和双面设置
SketchUp模型是单面几何,导出的面只有正面有材质,背面要么是反面材质,要么是空的。进入UE4后,如果只看到黑面或看到半透明面,大都是这两个原因:
- 模型法线方向不一致,SketchUp里的面被翻转成了反面;
- 导入后材质没有开启Two-Sided。
在SketchUp里处理法线很简单:选中所有面,右键“反转平面”,让正面朝外。在UE4中处理则是把材质细节面板中的“Two Sided”打开。不过要提醒一句,开启双面会牺牲一些性能,一两个材质无所谓,整栋楼都用双面,DrawCall和着色压力会明显上涨。更干净的做法是在SketchUp里就把正面方向理清楚,别把修复工作全部甩给UE4。
还有一个隐蔽问题:SketchUp中材质透明度的默认背景是白色或半透明,导入到UE4里如果发现玻璃变成了磨砂白,通常是因为原始贴图的Alpha通道没有被正确导出。你可以选择在材质编辑器里把Blend Mode调整为Translucent或Masked,并根据需要把Opacity参数接到纹理Alpha上。
5.2 光照和光影:SketchUp模型进引擎后要重新给一套“世界观”
SketchUp里的默认阳光和UE4的定向光完全是两码事。模型导入后,哪怕材质都对,如果不开正确的光照设置,出图效果还是很难看。我的经验是从这个组合起步:
- 定向光模拟太阳,角度按实际地理位置调整,强度根据场景尺寸微调;
- 天光作为环境照明,把Lighting Intensity设置在2~5之间;
- 在World Settings中设置适当的Distance Field Ambient Occlusion和Contact Shadow,增加立体感;
- 如果是室内场景,给窗户位置放一个Lightmass Portal,烘焙静态光照时会有明显改善。
如果你用的是实时光照(动态光),要注意半透明面和反弹光照非常有限,材质会显得“脏”。对于建筑可视化项目,我更推荐先调好材质,再把Static Lighting烘焙跑一遍。哪怕只是白模,烘焙和没烘焙的视觉效果都天差地别。
5.3 碰撞体、物理模拟与交互测试:看不见的那层东西决定体验
导入的skp模型默认只有一个简单盒体或凸包碰撞体,这在做漫游时会让人哭笑不得:门框和楼梯根本穿不过去,或者走两步就卡住。处理方式是在静态网格体的碰撞设置里选择“Use Complex Collision as Simple”,或者用引擎的Collision工具手动生成凸包碰撞。楼梯、坡道、窗户这类需要精确交互的结构,建议单独编辑碰撞体。
顺便说一个经常有人问的问题:查询和物理模拟器有什么区别?简单说,碰撞查询(Collision Query)是“只读”操作,比如用射线检测当前位置前面有没有墙,不产生任何物理反应;物理模拟器则是在有些东西需要下坠、碰撞、反弹时进行的完整模拟。skp导入的静态网格如果想被射线正确捕捉到,必须有一层正确的碰撞体;如果想在上面做打碎、倒塌等物理模拟,还要额外设置物理材质和模拟选项。
外接设备映射也常在这个阶段被提出来:在展厅、沙盘、大屏互动项目里,外部设备(手柄、体感、雷达)的输入会映射到UE4的相机或控制器上,这时候你按下按键或挥动手势,本质上也是在触发碰撞查询或角色控制器,最终能不能命中模型,还是看碰撞体在不在。所以别觉得碰撞设置是“理工男才关心的事”,做交互展示的一样绕不开。
6. 最容易翻车的几个具体问题与排查链路
6.1 模型大得离谱或小到看不见:先看单位,别看缩放
很多用户发现导入后模型是“一个像素”,第一反应是放大1000倍。这个思路错了。正确顺序是:去SketchUp里确认模型信息中的单位是毫米还是米,再看导入FBX时选择的单位和UE4默认的厘米单位是否匹配。如果SketchUp里是1m的方块,UE4的StaticMesh应该显示100cm边长。不匹配时,在导入选项里调整“Import Uniform Scale”,而不是拖入场景后整体放大。否则碰撞、光照贴图精度都会出问题。
6.2 模型丢失或出现在奇怪位置:不要忽略SketchUp原点
SketchUp场景里如果模型在世界坐标非常远的位置,导出FBX时会把这个绝对位移一并带上。UE4中找回模型的方法是:在World Outliner里选中对应的Actor,在Details面板把Transform位置归零。如果归零后还是不对,回到SketchUp,用移动工具把模型组移动到原点附近再导一次。
这个坑在大型场地模型里尤其常见。有人导入一个城市地块,场景里死活找不到建筑,最后发现模型中心在坐标几万米开外,相机一过去直接掉进虚空。
6.3 模型发黑、面片闪烁、透明:法线和重叠面的排查顺序
室内模型最常见的黑面,往往是因为SketchUp把面翻转了。排查顺序:
- 在SketchUp里打开“单色显示”,看灰色的背面是不是朝外;
- 全选面,右键“反转平面”,确保正面统一朝外;
- 重新导出,在UE4导入设置中把Normal Import Method改为“计算法线”;
- 如果还是黑,检查材质是否带透明度,SketchUp里透明的贴图导入后会在UE4里变成镂空或半透明效果。
面片闪烁通常来自重合面。SketchUp里如果有两个面贴合在一起,UE4渲染时深度冲突,就会出现剧烈闪烁。解决方式是回到SketchUp删掉多余的面,不要想着在UE4里靠调Polygon Offset解决,治标不治本。
6.4 组件全散开或层级丢了:导出前根组和命名决定一切
如果你看到导入后的模型在内容浏览器里拆成几百个小组件,这不是UE4的问题,是SketchUp导出时没有做根组件归并。在SketchUp里把整套模型做成一个根组,导出时勾选“仅导出当前选择”,能有效减少散件。Datasmith导入则更依赖组件命名,提前给组件起好英文名,导入后的层级会清楚很多。
7. 我在实际项目里的选择顺序
严格来说这不算教程的一部分,但却是最常被问的“到底该用哪条路”。
如果还在方案阶段,SketchUp模型天天变,我选Datasmith Direct Link,改完一键同步,实时看效果,效率拉满。如果方案已经冻结,进入出图或交互节点,我会把模型在SketchUp里好好清一遍,然后导出FBX进UE4,手动整理材质和碰撞,做LOD,再烘焙光照。如果只是要在UE4里快速看个白模,那么拿SketchUp自带的模型清理工具整理后,导出OBJ也够用,但前提是模型不能太复杂,否则顶点和UV会让你后面怀疑人生。
最后分享一个连很多老手都会漏掉的细节:SketchUp里的场景命名和组件命名会通过Datasmith一起带进UE4,如果你一开始就规范命名,后续在UE4里组织建筑部件、替换材质、给运维人员做延伸应用,都会省很多力气。不要等模型进引擎了才想改名字,到那时候真就无力回天了。