跨游戏模型迁移实战:从《原神》提取武器模型到《骑马与砍杀2》Mod制作
2026/8/8 16:15:41 网站建设 项目流程

1. 从“提瓦特”到“卡拉迪亚”:一次跨游戏模型迁移的完整实践

最近在折腾《骑马与砍杀2:霸主》(Mount & Blade II: Bannerlord)的Mod制作,一个挺有意思的想法冒了出来:能不能把《原神》里那些设计感十足的武器,比如“雾切之回光”、“狼的末路”或者“护摩之杖”,搬到卡拉迪亚大陆,让我的角色也耍一耍?这听起来像是天方夜谭,毕竟两款游戏引擎、美术风格、技术规范完全不同。但经过一番摸索,我发现这条路虽然曲折,但并非走不通。整个过程,本质上是一次标准的3D游戏资产逆向、重制与再导入的流程,涉及模型提取、格式转换、骨骼与权重处理、材质适配以及最终的Mod集成。今天,我就把自己从《原神》PC端抓取武器模型,到成功导入《骑砍2》并正常使用的完整过程、踩过的坑以及核心技巧,毫无保留地分享出来。无论你是Mod制作新手,还是对游戏资产管道感兴趣的技术爱好者,这篇长文都能给你提供一个清晰的路线图。

需要明确的是,这个过程仅供学习与研究游戏Mod制作技术之用。所有源自《原神》的模型、贴图等资产,其知识产权均归属于米哈游。我们将其用于非商业性质的个人Mod,是对原作美术的致敬与学习,务必尊重原作者的劳动成果,切勿用于任何商业或侵权用途。整个流程会用到多个专业或社区工具,有些步骤需要一定的3D软件(如Blender)基础和耐心。

2. 前期准备:工具链搭建与《原神》资源初探

工欲善其事,必先利其器。跨游戏模型搬运的第一步,是准备好全套“手术器械”。这个流程的工具链比较长,我们可以将其分为几个阶段:资源提取、模型查看/编辑、格式转换、以及《骑砍2》Mod制作。

### 2.1 资源提取工具的选择与使用

《原神》的模型、贴图、动画等资源都打包在游戏目录下的.pck.blk文件中。要获取它们,我们需要专门的解包工具。经过社区验证,最常用且相对稳定的工具是Genshin Impact GI Model Importer的配套解包工具,或者更通用的AssetStudio。这里我以AssetStudio为例,因为它能处理多种Unity游戏,界面相对友好。

首先,定位你的《原神》游戏安装目录,通常位于...\Genshin Impact\Genshin Impact Game\。我们需要寻找的是YuanShen_Data(国服)或GenshinImpact_Data(国际服)文件夹下的资源文件。使用AssetStudio时,直接“File” -> “Load folder”,加载整个..._Data目录。软件会自动扫描并列出所有可解析的资源,包括模型(Mesh)、纹理(Texture)、动画(AnimationClip)等。

在资源列表中,找到你心仪的武器。由于列表可能非常庞大,可以通过名称关键词过滤,例如“Sword”、“Claymore”、“Pole”(对应单手剑、双手剑、长柄武器)。找到目标模型后,勾选它及其关联的纹理和材质,然后“Export” -> “Selected assets”。导出格式选择FBX,这是后续流程中兼容性最好的中间格式。同时,务必勾选“Export textures”和“Export materials”,确保贴图文件(通常是.png.tga)一并导出。导出的FBX文件可能包含多个模型网格(Mesh)和骨骼(Armature),这是正常现象,我们后续在3D软件中再进行处理。

注意:游戏资源解包涉及对游戏文件的深度读取,务必在单机环境下操作,并仅用于个人学习。在线环境下任何对游戏客户端的修改都有封号风险,切记。

### 2.2 3D编辑与处理核心:Blender及其必备插件

Blender是一款免费开源的3D创作套件,是我们进行模型处理的主力。你需要安装当前稳定的版本(如3.6 LTS)。仅仅有Blender还不够,必须安装几个关键插件来打通工作流:

  1. Cats Blender Plugin:这是《骑砍2》Modder社区的瑞士军刀。它专门用于处理《骑马与砍杀》系列的模型,功能包括自动修复模型、简化骨骼、生成LOD(细节层次)、以及最重要的——将模型导出为《骑砍2》引擎(Vortex)能识别的格式。务必从GitHub或官方论坛下载最新版本。
  2. Blender Source Tools (可选):如果你导出的FBX文件在Blender中打开出现材质错乱或轴向问题,这个插件提供了更多的FBX导入选项,有时能解决疑难杂症。
  3. Rigify (Blender内置):在后续绑定骨骼时可能会用到。

安装好Blender和Cats插件后,首先导入从《原神》提取的FBX文件。在导入设置中,注意调整轴向和缩放。《原神》和《骑砍2》可能使用不同的坐标系(Y-up vs. Z-up),一个常见的设置是:导入时勾选“自动变换轴向”,并将缩放设置为0.01或0.1(因为游戏模型单位与Blender默认单位不同)。如果导入后模型变得巨大或微小,不要慌,调整缩放值重新导入即可。

### 2.3 《骑砍2》Mod开发环境配置

要让模型最终在游戏里生效,我们需要将其打包成一个Mod。这需要《骑砍2》的官方Mod开发工具——Bannerlord Modding Kit,它可以通过Steam库中的“工具”部分下载。安装后,其目录下包含了游戏资源的结构、XML定义文件模板等。

更重要的是,我们需要一个基础的Mod项目结构。最简单的方法是复制一个现有的简单物品Mod,或者使用社区提供的Mod模板。一个典型的武器Mod文件夹结构如下:

MyCustomWeaponMod/ ├── SubModule.xml (Mod声明文件) ├── bin/ ├── ModuleData/ │ ├── Items/ │ │ └── my_weapons.xml (武器定义文件) │ └── [其他数据文件] └── SceneObj/ └── my_weapon_brf (编译后的模型文件)

我们的核心工作,就是生成那个.brf模型文件,并在my_weapons.xml中正确引用它。

3. 模型手术:从“原神风格”到“骑砍可用”

直接从《原神》提取的模型就像一块未经雕琢的璞玉,无法直接放入《骑砍2》。我们需要进行一系列“手术”,使其符合《骑砍2》引擎的规范。

### 3.1 模型清理与网格优化

导入Blender后,你可能会看到模型附带了很多不需要的东西:比如角色握持武器的骨骼(Armature)、可能存在的多个LOD网格、甚至是一些看不见的内部面片。首先在“场景集合”中梳理层级,找到代表武器本体的网格(Mesh)对象。通常,武器的刀刃、护手、握柄是分开的网格。

选中武器网格,进入编辑模式(Tab键)。进行以下清理操作:

  • 删除内部面和冗余顶点:在编辑模式下,选择所有顶点(A),然后M->按距离合并,可以合并重叠的顶点。查看是否有完全在模型内部的面,这些面在游戏中不可见却消耗性能,可以删除。
  • 三角面化:《骑砍2》的引擎主要处理三角面。确保你的模型是三角网格。在物体模式下,选中武器网格,右键 ->转换->网格,或者使用修改器Triangulate
  • 检查法线:确保所有面法线朝外。在编辑模式下,选中所有面,按Shift+N(重新计算外侧法线)。如果发现有些面是黑的,可能就是法线反了。

### 3.2 骨骼与权重的处理:静态与动态模型的抉择

这是最关键也最易出错的一步。《原神》的武器通常是绑定在角色骨骼上的,这意味着FBX文件里会包含一套复杂的骨骼系统和顶点权重信息。而《骑砍2》中的武器,99%是静态网格物体,即没有骨骼动画,只是在角色手中做一个固定的附着。

因此,我们的目标是将模型从“带骨骼绑定的动态模型”转变为“纯净的静态网格”。操作如下:

  1. 在物体模式下,先选中武器的网格,然后按住Shift加选骨骼(Armature)对象。
  2. Ctrl+P,选择分离。这样就将网格与骨骼的父子关系解除了。
  3. 现在可以安全地删除那个骨骼对象了。选中骨骼,按X->删除
  4. 此时,网格上可能还残留着旧的顶点组(Vertex Groups,即权重信息)。在物体数据属性(绿色三角形图标)中,找到“顶点组”列表,逐一选中并点击“-”号移除所有顶点组。

完成这些后,你的武器模型应该是一个没有任何骨骼、没有任何顶点组的“干净”网格。你可以通过添加一个“空物体”作为父级,来整体控制武器的位置、旋转和缩放,方便后续调整。

### 3.3 材质与贴图的重新链接

解包出来的贴图文件(如Texture2D_xxxx.png)需要重新赋予给模型。《原神》的材质系统(基于Unity的Standard或URP Shader)与《骑砍2》的材质系统不兼容。我们需要在Blender中创建一套符合《骑砍2》预期的简单材质。

  1. 创建材质:在材质属性中,为武器网格新建一个材质。名称可以起得直观些,如weapon_metal
  2. 连接贴图:在着色器编辑器(Shader Editor)中,将工作区切换到Shader Editor。删除默认的原理化BSDF节点,我们需要一个更简单的设置。
  3. 添加一个Image Texture节点,打开从《原神》提取的主纹理贴图(通常是Albedo/Diffuse贴图,负责颜色)。将其颜色输出连接到Principled BSDF节点的Base Color。如果你有法线贴图(Normal Map),再添加一个Image Texture节点载入,并将其颜色输出连接到一个Normal Map节点,再将Normal Map节点的输出连接到Principled BSDFNormal输入。
  4. 简化材质:《骑砍2》的引擎材质相对古老。实际上,在通过Cats插件导出时,它会处理材质转换。因此,在Blender中,我们只需确保漫反射贴图(颜色)和法线贴图正确连接即可。高光、金属度等复杂PBR属性,在导入《骑砍2》后可能需要通过引擎内的材质参数再次调整。一个务实的做法是,在Blender中只使用漫反射贴图,确保模型有基本颜色即可。

实操心得:很多时候,《原神》的武器贴图是包含颜色、金属度、粗糙度等信息的PBR贴图集。如果找不到单独的法线贴图,可以尝试在AssetStudio中导出时留意贴图类型,或者使用图像处理软件(如Materialize)从颜色贴图生成一个简单的法线贴图,这能极大增强模型在《骑砍2》中的体积感。

4. 格式转换与导出:生成骑砍2引擎的.brf文件

模型处理干净后,下一步就是将其转换成《骑砍2》的专有格式。这里的主角是之前安装的Cats Blender Plugin

### 4.1 使用Cats插件进行模型检查与修复

在Blender的侧边栏(按N键)找到Cats插件面板。它有一系列功能标签页。首先点击“模型检查”,Cats会自动扫描当前场景中的模型,报告可能的问题,如非法形状、重复顶点、缺失材质等。根据报告逐一修复(Cats通常提供一键修复按钮)。确保没有严重错误,否则导出后可能在游戏中崩溃或隐形。

### 4.2 设置导出参数与生成BRF/BRF

这是通往成功的临门一脚。在Cats插件的“导出”标签页中,进行如下关键设置:

  • 导出路径:选择一个清晰的文件夹,最好就在你的Mod项目文件夹内(如MyCustomWeaponMod/SceneObj/)。
  • 文件格式:选择BRF/BRF。这是《骑砍2》引擎(Vortex)使用的模型容器格式,一个.brf文件可以包含多个模型、材质和骨骼(虽然我们这里只用静态网格)。
  • 模型名称:给你的武器模型起一个唯一的、易于识别的名字,例如my_mistsplitter。这个名字将在后续的XML定义文件中引用。
  • 导出选项
    • 勾选“导出选中的物体”。确保在3D视图中只选中了你的武器网格(及其父级空物体,如果有的话)。
    • LOD(细节层次)设置:对于武器这种小物件,通常只需要一个LOD(LOD0)即可。你可以在Cats的“LOD”标签页中生成简单的LOD,但非必须。
    • 材质导出:确保Cats能识别到你赋予模型的材质。它会在.brf文件中创建对应的材质定义。

点击“导出”按钮。如果一切顺利,你会在目标文件夹下得到一个.brf文件和一个同名的.brf文件(有时只有.brf)。.brf是文本格式的定义文件,.brf是二进制模型数据。两者都需要。

### 4.3 常见导出失败问题排查

如果导出失败或导出的模型在游戏中无法加载,请按以下步骤排查:

  1. 模型尺度:确保模型大小符合《骑砍2》的常识。一个单手剑的长度在Blender中大概在1.0到1.5个单位(米)之间。如果模型太小(如0.01),在游戏中会看不见。在导出前,在物体模式下选中模型,按Ctrl+A->应用缩放,确保缩放比例是1:1:1。
  2. 原点位置:模型的原点(那个橙色小点)决定了它在游戏中被持握时的旋转中心。对于武器,原点通常应该位于握柄的末端(即角色手部握住的位置)。你可以选中模型,按Shift+S->游标到选中项,将3D游标移动到握柄末端,然后右键模型 ->设置原点->原点到3D游标
  3. 面数过高:《原神》的模型面数对于手机/PC游戏是优化的,但对于《骑砍2》的战场千人同屏环境可能仍然偏高。如果面数超过2万三角面,考虑使用Blender的Decimate(精简)修改器适当降低面数,特别是对看不到的细节部分。
  4. 材质路径:Cats导出时,贴图路径可能是绝对路径。最好将使用的贴图文件(.png)复制到你的Mod项目文件夹内(如Textures/子目录),并在Blender材质中使用相对路径重新链接,避免因路径丢失导致模型在别人电脑上显示为紫色(缺失贴图)。

5. 在《骑砍2》中创建与测试新武器

模型文件准备就绪后,最后一步是在游戏中“声明”这件新武器,并把它放到世界里。

### 5.1 编写物品XML定义文件

在你的Mod项目的ModuleData/Items/目录下,创建一个XML文件,例如my_weapons.xml。内容结构如下:

<Items> <Item> <Id>my_mistsplitter</Id> <Name>雾切之回光</Name> <MeshName>my_mistsplitter</MeshName> <!-- 必须与.brf文件中的模型名一致 --> <ItemFlags> <ItemFlag>ForceAttachOffHandPrimaryItemBone</ItemFlag> <!-- 强制附着在副手(左手)的主物品骨骼上,对于单手剑是必要的 --> <ItemFlag>Civilian</ItemFlag> <!-- 非战斗时也可显示 --> </ItemFlags> <ItemCategory>Sword</ItemCategory> <!-- 物品类别:剑 --> <Culture>Empire</Culture> <!-- 文化,影响商店出现概率 --> <Weight>1.5</Weight> <!-- 重量 --> <Difficulty>0</Difficulty> <!-- 难度 --> <Appearance> <MeshName>my_mistsplitter</MeshName> <MaterialName>my_mistsplitter_mat</MaterialName> <!-- 材质名,与.brf中定义一致 --> <BodyName>my_mistsplitter</BodyName> </Appearance> <WeaponDescription> <WeaponFlags> <WeaponFlag>MeleeWeapon</WeaponFlag> <WeaponFlag>HasHitPoints</WeaponFlag> </WeaponFlags> <WeaponClass>OneHandedSword</WeaponClass> <!-- 武器类:单手剑 --> <ItemLength>100</ItemLength> <!-- 长度 --> <SwingDamage>80</SwingDamage> <!-- 挥砍伤害 --> <SwingDamageType>Cut</SwingDamageType> <ThrustDamage>40</ThrustDamage> <!-- 刺击伤害 --> <ThrustDamageType>Pierce</ThrustDamageType> <HandPosition>5</HandPosition> <!-- 手持位置偏移 --> <WeaponBladeData> <WeaponBladeLength>80</WeaponBladeLength> <!-- 刃长 --> </WeaponBladeData> </WeaponDescription> </Item> </Items>

这是一个最基础的单手剑定义。你需要根据武器类型(双手剑、长杆等)修改<WeaponClass>和对应的<WeaponFlags>。所有数值(伤害、长度、重量)都需要你根据《骑砍2》的平衡性进行合理设定,可以参考游戏原版武器文件(位于官方Mod开发工具的Native模块内)。

### 5.2 修改SubModule.xml并构建Mod

回到Mod根目录,编辑SubModule.xml文件,确保它引用了你新建的物品XML文件。在<Xmls>节点下添加:

<XmlNode> <XmlName>Items</XmlName> <XmlPath>ModuleData/Items/my_weapons.xml</XmlPath> </XmlNode>

同时,在<Scenes>节点下(如果没有就创建),添加你的模型文件:

<Scene> <SceneName>my_weapon_brf</SceneName> <ScenePath>SceneObj/my_weapon.brf</ScenePath> <!-- 注意是.brf文件 --> </Scene>

现在,你的Mod文件夹应该包含了所有必要文件。使用《骑砍2》启动器,在“Mods”页面确保你的Mod被勾选,并注意加载顺序(你的Mod应放在依赖的模块如Native,SandBoxCore等之后)。

### 5.3 游戏内测试与调试

启动游戏,进入自定义战斗或战役模式。要获取你的新武器,有几种方式:

  1. 控制台:在战场上按Ctrl+~打开控制台,输入campaign.add_item my_mistsplitter 1给你的角色添加一把。
  2. Mod菜单:一些第三方Mod(如Developer ConsoleMy Little Warband)提供了更友好的物品添加界面。
  3. 商店购买:如果你正确设置了<Culture><Price>,它可能会随机出现在对应文化的商店中。

测试时,重点关注:

  • 模型显示:武器是否正常出现在角色手上、背上或腰间?大小比例是否协调?
  • 贴图与材质:颜色、光泽是否正常?有没有出现亮紫色(缺失贴图)或纯黑(法线/材质错误)?
  • 碰撞与攻击:挥砍时,武器的视觉模型与实际的攻击判定框(由XML中的<ItemLength><WeaponBladeLength>部分定义)是否匹配?会不会出现“空气剑”或“剑未到人已飞”的情况?
  • 性能:在大量单位出现的场景中,帧数是否有明显下降?如果下降严重,可能需要返回Blender进一步优化模型面数。

这个过程可能需要多次“修改-导出-测试”的循环。每次修改XML后,可能需要重启游戏或重新加载存档才能生效。而修改模型(.brf)后,通常需要重启游戏。

6. 进阶技巧与深度优化

当你成功导入第一把武器后,可能会追求更好的效果和更高效的流程。这里分享一些进阶经验。

### 6.1 多部件武器的处理与装配

有些《原神》武器,比如“弓”,是由弓身和弓弦等多个部分组成的。在Blender中,你可以将这些部分保持为独立的网格对象,但将它们设为同一个父级空物体的子项。在导出时,选中父级空物体,Cats插件会将其下的所有网格一并导出为一个完整的模型。在XML中,仍然只引用这个父级模型的名字即可。游戏引擎会将其作为一个整体来渲染和计算。

### 6.2 法线贴图与高光效果的增强

《骑砍2》的渲染引擎虽然不支持完整的PBR,但对法线贴图和简单的高光贴图(Specular Map)有很好的支持。为了让你导入的武器更有质感:

  • 法线贴图:如前所述,务必使用或生成一张法线贴图。在Blender材质中正确连接,并在Cats导出时确保材质设置包含了法线信息。
  • 高光贴图:你可以利用《原神》提取的贴图中可能包含的“粗糙度贴图”或“高光贴图”通道。在Photoshop或类似软件中,将其处理成一张灰度图,作为高光贴图。在《骑砍2》的材质系统(通过<MaterialName>在更复杂的材质定义文件中配置)中,可以引用这张贴图来控制武器不同部位的反光强度,让金属刃口更亮,木质握柄更暗哑。

### 6.3 批量处理与自动化脚本思路

如果你计划导入多把武器,手动重复上述流程非常耗时。可以考虑以下自动化方法:

  1. Blender批量处理:为清理模型、应用缩放、设置原点等操作录制宏(Macro)或编写简单的Python脚本,对一批导入的FBX文件自动执行。
  2. XML生成:使用Python或Excel模板,根据一个武器属性列表(名称、伤害、长度等)批量生成my_weapons.xml文件内容,避免手动编写容易出错。
  3. 材质模板:在Blender中创建一个预设的材质节点组,包含漫反射、法线、高光贴图的输入接口。每导入一个新武器模型,只需替换这个节点组中的贴图即可,无需重新连接所有节点。

### 6.4 从模型到完整Mod的扩展

一把武器只是一个开始。一个完整的武器Mod可能包含:

  • 多级锻造:通过修改SmithingTemplate相关的XML,让你的武器可以在铁匠铺被锻造和升级。
  • 独特技能或效果:这需要更深入的Modding知识,可能涉及修改Mission脚本或使用Bannerlord's TaleWorlds' scripting system,为武器添加特殊的被动效果或战斗技能。
  • 添加到特定兵种或商店:修改NPCCharactersMerchants的XML文件,让某些兵种默认装备你的武器,或让它在特定地区的商店有更高出现概率。

整个从《原神》抓取模型到《骑砍2》可用的过程,是一次对3D游戏资产管道、模型处理规范和特定游戏引擎集成方式的深度实践。它要求你兼具“黑客”般的探索精神(解包、逆向)、“工匠”般的细致耐心(模型清理、调试)和“设计师”般的平衡感(游戏内参数调整)。最大的成就感,莫过于在卡拉迪亚的战场上,看到自己亲手移植的、带着异世界风格的武器熠生辉。这个过程学到的技能,远不止于这两款游戏,它为你打开了一扇通往3D游戏Mod制作乃至自制游戏内容的大门。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询