Blender与Unreal引擎PSK/PSA格式转换全流程指南

📅 2026/7/11 9:14:17
Blender与Unreal引擎PSK/PSA格式转换全流程指南
1. 项目概述为什么你需要掌握PSK/PSA转换如果你正在Blender和Unreal引擎之间来回折腾3D模型和动画尤其是处理一些老项目、特定游戏资产或者从虚幻引擎中提取的资源那你大概率已经和PSK、PSA这两个格式打过照面了。这俩格式说白了就是Unreal引擎特别是早期版本用来存储静态网格体Static Mesh和骨骼动画Skeletal Animation的“原生”文件。它们不像FBX那样是行业通用交换格式更像是Unreal自家后院里的“方言”。我见过太多朋友在Blender里精心雕琢了一个角色模型绑好了骨骼调好了动画结果一导出FBX扔进Unreal发现骨骼名字乱了、动画对不上、甚至整个模型比例都出了问题。反过来从Unreal里导出一个角色想拿到Blender里修改用常规方法也常常碰壁。这时候直接使用PSK模型骨骼和PSA动画序列进行交换往往能绕过很多中间格式转换带来的“信息损耗”和兼容性问题实现更精准的数据传递。这个教程要解决的就是让你能在这两个软件间用它们彼此最“懂”的语言进行对话。整个过程我把它提炼成了五个核心步骤从环境准备到最终验证每一步都有明确的实操目标和避坑指南。无论你是想将Blender制作的动画角色完美导入Unreal还是想把Unreal游戏里的模型扒出来在Blender里二次创作这套流程都能帮你搞定。2. 核心工具准备安装与配置Blender插件工欲善其事必先利其器。整个转换流程的核心是一个名为io_scene_psk_psa的Blender插件。它并非Blender内置功能需要你手动安装。别担心这个过程很简单。2.1 插件获取与版本选择目前获取这个插件最主流、最推荐的方式是通过Blender内置的扩展平台Blender Extensions Platform。这是Blender 4.2及以上版本引入的新机制类似于一个官方的插件商店能自动处理依赖和更新。操作步骤打开Blender在顶部菜单栏找到Edit编辑 -Preferences偏好设置。在弹出的窗口左侧点击Extensions扩展选项卡。确保右上角的Online Access在线访问是开启状态。在右上角的搜索框中输入PSK或Unreal PSK。你应该能很快找到名为“Unreal PSK/PSA format”的扩展作者是DarklightGames。点击旁边的Install安装按钮。注意如果你使用的是Blender 4.1或更旧的版本扩展平台可能不可用。这时你需要去GitHub仓库就是资料里提到的DarklightGames/io_scene_psk_psa手动下载对应版本的.zip文件。在仓库的Releases发布页面找到与你Blender版本号匹配的插件版本进行下载。例如Blender 4.1对应插件v7.0.0Blender 3.6对应v5.0.6。下载错误版本会导致安装失败或运行异常。2.2 插件安装与启用通过扩展平台安装几乎是自动完成的。安装成功后该扩展的状态会变为“Installed Enabled”已安装并启用。你不需要像旧版那样手动勾选插件。对于手动下载.zip安装包的情况同样进入Edit-Preferences-Add-ons插件注意不是Extensions。点击右上角的Install...安装...按钮。找到你下载的.zip文件选择并打开。安装后在插件列表里搜索“psk”找到“Import-Export: Unreal PSK/PSA format”勾选它左侧的复选框以启用。验证安装成功安装并启用后最直接的验证方法是查看Blender的导入/导出菜单。点击顶部菜单栏的File文件将鼠标悬停在Import导入或Export导出上。如果能在列表中看到“Unreal PSK (.psk/.pskx)”和“Unreal PSA (.psa)”这两个选项恭喜你插件已经准备就绪。2.3 重要前置概念理解PSK与PSA在动手之前花一分钟搞清楚你操作的对象是什么能避免后续很多混乱。PSK文件 你可以把它理解为“静态网格体骨骼架子”。它主要包含三样东西顶点数据构成模型的点、面数据这些点如何连接成三角面、以及骨骼的层级结构和初始姿势T-Pose或A-Pose。它不包含动画一个角色模型的裸模和骨骼绑定通常就存在PSK里。PSA文件 这是纯粹的“动画数据容器”。它里面存储的是一个或多个动画序列Sequence比如“走路”、“跑步”、“攻击”。每个序列包含了骨骼在每一帧的变换数据旋转、位移有时包含缩放。PSA文件本身不包含任何网格模型它必须作用于一个拥有相同骨骼结构的Armature骨架上。一个常见的误区是试图用一个文件搞定所有。正确的理解是你需要一个PSK来定义“谁在动”模型和骨骼以及一个或多个PSA来定义“怎么动”动画。在Unreal引擎中它们共同协作组成一个可播放的骨骼网格体Skeletal Mesh。3. 第一步从Unreal引擎导出PSK/PSA文件我们的旅程从Unreal引擎端开始。目标是将你需要的内容正确地导出为PSK和PSA文件。这里我们假设你已经有了一些基础一个在Unreal里可用的骨骼网格体资源。3.1 导出静态模型与骨骼PSK定位资源 在Unreal编辑器的内容浏览器Content Browser中找到你的目标骨骼网格体Skeletal Mesh。右键点击它。选择导出 在右键菜单中选择Asset Actions资源操作 -Export...导出...。选择格式 在弹出的文件保存对话框中关键的一步来了。在保存类型或Format下拉菜单中选择“PSK File (*.psk)”。如果下拉列表里没有可能需要检查编辑器版本或确认该网格体确实是骨骼网格体而非静态网格体。命名与保存 为文件取一个清晰的名字例如Character_Body.psk然后选择保存位置。实操心得导出比例问题Unreal引擎默认使用厘米cm作为单位而Blender的默认单位是米m。但PSK格式本身并不携带单位信息。这导致了一个经典问题从Unreal导出的模型导入Blender后尺寸看起来缩小了100倍因为1米100厘米。不要慌这通常是正常现象。我们有两种处理策略策略A推荐非破坏性在Blender导入时或导入后统一进行缩放处理。或者在Blender的Scene Properties场景属性里将Units单位下的Scale缩放设置为0.01这相当于告诉Blender“把1个单位当作1厘米来理解”。这样后续的所有操作都会基于这个比例。策略B在Unreal端处理在导出PSK前在Unreal中临时将骨骼网格体的缩放调整100倍导出后再调回来。这种方法比较麻烦且容易出错一般不推荐。我的建议是采用策略A在Blender端处理比例问题这样对原始资产无影响流程更清晰。3.2 导出动画序列PSA定位动画资源 在内容浏览器中找到你的动画序列Animation Sequence或动画蒙太奇Animation Montage。右键导出 同样右键点击该动画资源选择Asset Actions-Export...。选择格式 在保存对话框中选择“PSA File (*.psa)”。理解导出内容 一个PSA文件可以包含多个动画序列。如果你导出的动画资源本身是一个序列那就只包含一个。如果你选择的是一个包含多个动画的合成资源导出时会包含所有序列。在Blender导入时你可以选择只导入其中需要的部分非常灵活。注意事项骨骼名称一致性这是整个流程中最关键的要点之一务必牢记从Unreal导出的PSK模型骨骼和PSA动画数据所基于的骨骼名称必须完全一致。举个例子如果你的角色盆骨骨骼在PSK里叫pelvis那么在PSA里所有动画数据里针对盆骨的变换其目标骨骼也必须叫pelvis。如果名称不匹配哪怕大小写不同动画将无法正确应用到模型上导致角色“僵住”或扭曲。 因此在Unreal中制作或获取资源时尽量保持骨骼命名的规范性和一致性。如果是从不同来源拼凑的资源可能需要在Unreal或Blender中先行进行骨骼的重命名工作。4. 第二步在Blender中导入并处理PSK模型拿到PSK文件后我们进入Blender将其还原为可编辑的模型和骨骼。4.1 执行导入操作打开Blender建议从一个全新的默认场景开始File-New-General。点击顶部菜单File-Import-Unreal PSK (.psk/.pskx)。在弹出的文件浏览器中找到你从Unreal导出的.psk文件选中它。不要急着点Import PSK先看看右侧弹出的导入选项面板通常位于文件浏览器窗口的右下角。4.2 关键导入参数解析导入面板里有几个选项理解它们能帮你避免后续麻烦Scale缩放 这就是应对前面提到的“单位比例”问题的第一道关卡。如果Unreal导出时是厘米单位而你想在Blender中以米为单位操作可以尝试在这里输入0.01。不过我更倾向于先保持默认值1.0导入观察模型大小。如果导入的模型在Blender视图中显得非常小像一个微缩模型那么再考虑按比例放大或者在场景属性里调整单位比例。先导入再看更稳妥。Bone Length骨骼长度 这个值决定了生成的Armature骨架中骨骼的显示长度。它不会影响骨骼的实际变换数据或动画只影响在Blender视图里的可视化效果。如果导入后骨骼太短看不清可以适当调大这个值比如从默认的1.0调到5.0或10.0。Use Vertex Colors使用顶点颜色 如果PSK文件包含顶点颜色信息例如一些游戏用于存储光照贴图UV或颜色遮罩勾选此项可以将其导入。这取决于你的源文件是否包含此类数据。Smooth Groups平滑组务必勾选PSK格式使用“平滑组”Smoothing Groups来控制模型表面的着色平滑程度这相当于Blender中的“自动光滑”Auto Smooth或“锐利边”Sharp Edges。勾选此选项插件会尝试根据PSK中的平滑组信息在Blender中为网格设置正确的边线标记从而在着色时获得与Unreal中相似的硬边/软边效果。如果不勾选整个模型可能会呈现不正确的全平滑着色丢失原有的硬朗结构。点击Import PSK后你的模型和骨骼就应该出现在Blender场景中了。通常会生成一个或多个网格物体Mesh和一个骨架物体Armature。4.3 导入后的检查与整理检查层级 在右侧的Outliner大纲视图中检查导入的对象。理想情况下网格物体应该是骨架物体的子级Parented并且应用了Armature修改器。这样移动骨架时网格会跟随变形。如果发现网格和骨架是独立的你需要手动将网格设为骨架的子级选中网格然后Shift选中骨架按CtrlP选择With Automatic Weights或With Empty Groups后者需要你后续自己刷权重。检查形态键Shape Keys 如果PSK文件包含变形目标Morph Target在Unreal中常叫Blend Shapes它们会被导入为网格的形态键。你可以在网格物体的Object Data Properties物体数据属性选项卡下的Shape Keys面板中查看。重命名与整理 导入的物体名称可能带有引擎前缀或不太直观。建议立即将它们重命名为有意义的名称如Armature_Character,Mesh_Body并放入一个专门的集合Collection中保持场景整洁。5. 第三步将PSA动画数据导入Blender模型就位后接下来就是把“灵魂”——动画注入进去。5.1 导入前的准备工作一个必须的前置操作选中你的骨架Armature在点击导入PSA之前务必在3D视图或大纲视图中先选中你已经导入的、带有骨骼的那个Armature物体。这是因为PSA文件只是一堆动画数据它需要知道应该把这些数据“附加”到场景中的哪个骨架上。如果什么都没选或者选错了对象导入会失败或者创建出无用的空动作。5.2 执行动画导入确保目标骨架被选中轮廓呈橙色。点击File-Import-Unreal PSA (.psa)。选择你从Unreal导出的.psa文件。此时会弹出一个新的选择窗口这是此插件一个非常棒的功能序列选择器。5.3 序列选择与导入设置这个序列选择器窗口会列出该PSA文件中包含的所有动画序列Sequence。例如你可能看到Idle,Walk,Run,Attack等。选择所需序列 你可以通过点击单个序列或者按住Shift进行多选甚至CtrlA全选所有序列。只导入你当前需要的动画可以避免Blender动作列表变得臃肿。比如你先导入Idle和Walk进行测试。帧率FPS 通常插件会自动读取PSA文件中存储的原始帧率并应用。建议保持默认以确保动画速度和原始一致。导入为NLA片段 这个选项如果勾选插件会将每个动画序列直接创建为非线性动画NLA轨道上的一个片段Strip。对于简单的查看和回放可以不勾选它会创建独立的Action动作资源。对于复杂的动画混合编辑可以勾选以利用NLA编辑器。点击Import PSA完成导入。5.4 验证动画导入成功导入成功后动画并不会自动播放。这是插件的设计因为它创建了独立的Action资源需要你手动关联或激活。打开Dope Sheet摄影表编辑器并将其模式从Dope Sheet切换到Action Editor动作编辑器。在Action Editor中你应该能看到一个下拉菜单里面出现了你刚刚导入的动画序列名称如Idle。选择其中一个。确保时间轴上的播放范围覆盖了该动作的帧范围可以在Action Editor中看到动作的起始帧和结束帧。将时间轴上的当前帧指示器拖动到动作范围内然后在3D视图中将骨架物体的Pose Mode姿态模式切换回Object Mode物体模式再切回Pose Mode或者按一下I键插入一个关键帧随便什么属性通常就能看到角色动起来了。你也可以在Action Editor中点击播放按钮或按空格键来预览动作。为什么动画不自动应用这是为了避免插件“自作主张”地修改你的场景。一个PSA可能包含几十个动画全给你应用到骨架上可能会覆盖你已有的姿态或动画数据。这种“惰性导入”的方式给了你最大的控制权让你可以决定何时、以何种方式使用这些动作资源。6. 第四步在Blender中编辑与修改资产现在模型和动画都在Blender里了你可以发挥Blender强大的编辑功能进行任何修改。这是流程中最具创造性的部分。6.1 模型网格的修改你可以像编辑任何Blender网格一样修改导入的模型编辑模式Edit Mode 调整顶点、边、面的位置修改拓扑结构。雕刻模式Sculpt Mode 进行细节雕刻。修改器Modifiers 添加细分表面、镜像、阵列等修改器。但需注意在最终导回PSK前如果添加了修改器通常需要先应用Apply它们因为PSK格式只理解最终的网格数据。材质与UV 你可以重新展开UV编辑材质节点。不过PSK格式只存储顶点颜色和最多4套UV通道取决于插件版本和导出设置复杂的Blender材质网络在导出时无法被保留只会保留基础的图像纹理链接信息。6.2 骨骼与权重的调整骨骼编辑 在Edit Mode下编辑骨架可以添加、删除骨骼调整骨骼位置、朝向。但请极度谨慎任何对骨骼层级、名称、头部/尾部位置的修改都会导致已有的动画数据失效或产生严重变形。如果必须修改骨骼结构通常需要重新绑定或重新制作动画。权重绘制Weight Painting 这是最常进行的操作。如果导入的蒙皮权重不理想如关节处变形撕裂你可以进入Weight Paint Mode直接在上面绘制和修正权重。Blender的权重绘制工具非常直观强大。6.3 动画的编辑与创作动作编辑器Action Editor 在这里你可以精细编辑每一帧的关键帧。调整骨骼的旋转、位置让动画更符合你的需求。非线性动画NLA Editor 这是管理多个动画片段的利器。你可以将导入的Walk、Run等Action拖入NLA轨道对它们进行剪辑、混合、淡入淡出组合成复杂的动画状态。例如创建一个从Walk平滑过渡到Run的混合区域。创建新动画 当然你也可以完全在Blender中为这个角色制作全新的动画。只需在Action Editor中创建一个新的Action然后开始在姿态模式下为骨骼设置关键帧即可。7. 第五步从Blender导回PSK/PSA至Unreal资产在Blender中打磨完毕后最后一步就是将它们打包回Unreal能识别的PSK/PSA格式。7.1 导出模型与骨骼PSK选择对象 在Blender中选择你想要导出的网格物体Mesh。如果你有多个部分如身体、头发、武器可以多选。通常不需要选中骨架Armature因为网格的Armature修改器中已经包含了骨架信息插件在导出时会自动处理关联的骨骼数据。执行导出File-Export-Unreal PSK (.psk)。关键导出设置Scale缩放 这是最重要的参数必须与你的场景单位设置匹配。如果你在导入时或场景设置中将单位比例调整为0.01以适应Unreal的厘米单位那么在这里导出时Scale应该设置为100.0。这样Blender中1米1个单位的模型乘以100后在PSK里就变成了100个单位Unreal会将其解读为100厘米即1米完美匹配。原则是导入缩放因子 * 导出缩放因子 1。如果你导入时用了0.01导出就用100如果你导入时是1.0模型很小导出时也用1.0但需要在Unreal导入后手动缩放100倍。Apply Modifiers应用修改器 如果网格上有多细分、实体化等修改器务必勾选此项以确保导出的是修改器应用后的最终几何体。Smoothing平滑 选择如何导出着色信息。通常选择“From Smoothing Groups”来自平滑组它会根据网格的锐利边Sharp Edges信息来生成PSK的平滑组。确保你的模型在编辑模式下已经正确标记了需要硬边的边线选中边按CtrlE-Mark Sharp。Include Armature包含骨架 通常保持勾选以确保骨骼信息被写入PSK文件。点击Export PSK完成。7.2 导出动画序列PSA选择对象 这次你必须选中包含动画的骨架Armature物体。可以多选多个骨架但通常一次导出一个角色的动画。执行导出File-Export-Unreal PSA (.psa)。关键导出设置Export Mode导出模式 这是核心选项。Active Actions活动动作导出当前在骨架的Object Data Properties-Animation部分中分配的活动动作。All Actions所有动作导出Blender文件中所有与该骨架关联的动作资源。NLA StripsNLA片段导出非线性动画编辑器中所选轨道上的片段。这是最灵活的方式允许你通过NLA来精确界定要导出的动画范围。Frame Range帧范围 定义导出动画的起始帧和结束帧。如果你使用NLA Strips模式通常会忽略此项直接使用NLA片段自身的范围。Sampling Rate采样率 保持默认的Scene场景即可使用Blender场景设置的帧率。Scale缩放必须与PSK导出设置保持一致如果PSK导出用了100这里也必须用100。动画中的位移数据也需要用相同的比例缩放否则动画播放时角色会“飘走”或“缩地”。Root Bone Motion根骨骼运动 如果动画包含角色的整体位移如向前行走确保根骨骼通常是骨盆或根骨骼的位移动画被正确包含。点击Export PSA完成。7.3 在Unreal引擎中重新导入回到Unreal引擎导入过程相对简单导入PSK 在内容浏览器中右键 -Import to /Game/...选择导出的.psk文件。Unreal会自动识别并创建骨骼网格体资源。注意检查导入选项中的Import Uniform Scale如果Blender导出时正确缩放这里通常保持1.0即可。导入PSA 右键点击刚刚导入的骨骼网格体资源选择导入动画然后选择你的.psa文件。Unreal会从中提取动画序列并自动关联到该骨骼网格体上。验证 创建一个动画蓝图或直接在角色中使用新导入的动画序列在预览窗口中检查模型和动画是否完美结合比例是否正确动作有无异常。8. 常见问题与排查技巧实录即使按照步骤操作实践中也难免会遇到各种“坑”。这里记录了我踩过的一些典型问题及解决方法。8.1 模型导入后尺寸异常巨大或微小问题现象 在Blender中导入的PSK模型要么像个巨人塞满了整个3D视图要么小得像蚂蚁。根本原因 PSK格式无单位Unreal和Blender默认单位不同厘米 vs 米。解决方案统一策略 确定你在整个流程中采用的比例处理策略。我推荐“Blender端缩放法”。操作 导入PSK时如果模型太小先不要动导入缩放值。导入后在Blender场景属性Scene Properties中将Units-Scale设置为0.01。这意味着Blender的1个单位现在代表1厘米。后续所有建模、动画都在此设定下进行。导出 导出PSK和PSA时将Scale参数设置为100.0。这样就把Blender中1单位1厘米的数据放大100倍变成100单位Unreal会将其读作100厘米即1米比例就正确了。8.2 动画导入后角色“僵住”或扭曲问题现象 导入了PSA也关联了动作但角色要么完全不动要么做出诡异的、不受控制的扭曲姿势。排查步骤检查骨骼名称 这是最常见的原因。在Blender中进入骨架的Edit Mode打开Object Data Properties下的Bones面板查看骨骼名称。与原始Unreal引擎中的骨骼名称或PSK导出时的名称进行比对。必须完全一致包括大小写。如果不一致需要在Blender中批量重命名骨骼在骨骼列表中选择多个按F2重命名支持通配符替换。检查骨骼层级 确保骨骼的父子层级关系与原始一致。一个骨骼的父级错误会导致整个动画链错位。检查动作关联 确保你在Action Editor中为当前选中的骨架选择了正确的动作。有时需要先取消关联点击X清空动作再重新选择。检查帧范围 确保时间轴当前帧位于该动作的有效帧范围内。8.3 模型表面着色出现异常黑斑或不平滑问题现象 导入的模型表面有奇怪的明暗交界线或者该硬朗的边缘变圆滑了。根本原因 PSK的平滑组Smoothing Groups信息在导入或导出时处理不当。解决方案导入时 务必勾选Smooth Groups选项。导入后修复 如果仍有问题在Blender中进入网格的Edit Mode选中所有应该硬朗的边如衣服接缝、角色轮廓按CtrlE-Mark Sharp。然后在Object Data Properties-Normals下勾选Auto Smooth并调整一个角度通常30-60度。这能模拟平滑组效果。导出前准备 在导出PSK前确保模型的硬边已正确标记为Sharp。导出设置中Smoothing选项选择“From Smoothing Groups”。8.4 导出PSK时提示错误或失败问题现象 点击导出PSK后Blender弹出错误提示或者导出的文件在Unreal中无法识别。排查步骤检查选择 确保你选择的是网格物体Mesh而不是骨架或其他类型物体。检查修改器 如果网格有Subdivision Surface细分等修改器尝试先应用Apply它再导出或者确保导出设置中Apply Modifiers已勾选。检查UV 某些复杂或非标准的UV布局可能导致问题。尝试简化UV或确保所有面都有有效的UV映射。检查插件版本 确保你使用的插件版本与当前Blender版本兼容。回退到更稳定的版本有时能解决问题。检查骨骼数量 某些旧版Unreal引擎或游戏对单个PSK文件的骨骼数量有限制如255根。如果骨骼数量超限考虑拆分模型。8.5 动画导出后速度变快或变慢问题现象 在Blender中播放正常的动画导入Unreal后播放速度明显不对。根本原因 帧率FPS设置不匹配。解决方案核对帧率 在Blender中检查Scene Properties-Frame Rate是多少通常是24或30。在Unreal中检查项目设置或动画序列的帧率设置。统一帧率 确保两者一致。最简单的方法是在Blender中将场景帧率设置为Unreal项目使用的帧率如30 FPS然后重新烘焙或制作动画。导出检查 在导出PSA时确认Sampling Rate设置正确。通常使用Scene设置即可。我个人在实际操作中最大的体会是保持流程的“一致性”和“可追溯性”至关重要。为每个项目建立一个清晰的文件夹结构记录下你使用的Blender单位比例、导入/导出缩放值、以及关键的骨骼命名规范。当几个月后需要回头修改时这些记录能节省你大量重新摸索的时间。另外对于复杂的角色不要试图一次性导入所有动画。先导入一个Idle动画进行测试确保模型、骨骼、基础动画都工作正常后再批量导入其他动画这样可以有效隔离问题快速定位故障点。