在《Garry's Mod》(以下简称GMod)的世界里,玩家最热衷的事情之一就是“折腾”各种模型——把其他游戏的模型塞进GMod,然后摆出各种沙雕姿势、制作电影或玩物理破坏,而《穿越火线》(CrossFire,简称CF)作为一款经典FPS,其角色和武器模型风格硬朗、辨识度高,自然成了不少GMod玩家的“目标”。
CF模型并不能直接拖进GMod的models文件夹里使用,因为GMod使用的是Source引擎,而CF基于Unity(或早期自研引擎),两者模型格式、骨骼绑定、贴图路径都完全不同,我们就来手把手教你如何将CF模型成功导入GMod,并让它们正常显示、绑骨、甚至播放动画。
准备工作:你需要哪些工具?
在开始之前,请确保你拥有以下软件和文件:
- GMod本体(Steam版,建议开启
sv_allowcslua等测试功能,但非必需) - Crowbar(Source引擎模型编译/反编译工具,用于转换MDL)
- Blender(推荐2.8+版本,用于处理模型和骨骼)
- GCFScape 或 VTFEdit(用于提取CF游戏文件或查看贴图)
- CF模型源文件(通常为
.obj、.fbx或.dae格式,可从游戏资源中提取,或从模型站下载) - Notepad++(用于编辑QC文件,即模型编译脚本)
注意:提取游戏资源可能涉及版权问题,请仅用于个人学习与娱乐,勿用于商业用途。
核心思路:为什么不能直接导入?
GMod的模型格式是Source引擎的.mdl,它由模型网格(.vtx)、物理碰撞(.phy)、动画(.vta)和材质(.vmt)等文件组成,并且需要一个.qc文件来告诉编译器如何组合这些资源,而CF模型通常是.fbx或.obj,只有网格和骨骼,没有Source引擎的“外壳”。
我们的工作流程是:
- 从CF模型中提取网格和骨骼数据。
- 在Blender中清理模型、调整比例、重命名骨骼,使其符合GMod的“人类骨骼”或“武器骨骼”规范。
- 导出为Source引擎支持的SMD或DMX格式。
- 编写QC文件,用Crowbar编译成MDL。
- 将生成的MDL及贴图放入GMod的对应文件夹。
详细步骤:从CF模型到GMod可用的MDL
第一步:获取CF模型并导出为通用格式
如果你有CF的客户端文件,可以用GCFScape打开.pack或.rez文件,找到角色模型(通常在char或models目录下),但更简单的方式是直接从模型网站下载玩家自制的CF模型(如GameBanana、模型中国等),这些通常已经是.fbx或.obj格式。
假设你得到了一个.fbx文件,里面包含角色网格和骨骼,先用Blender打开它。
第二步:在Blender中处理模型
- 导入FBX:打开Blender,
File > Import > FBX,选择你的CF模型。 - 调整比例:CF模型通常以厘米为单位,而Source引擎以英寸为单位,你需要将模型缩放至合适大小(一般人类角色高度约1.8米,在Blender中对应约72英寸),可以选中模型,按
S缩放,或者直接在导入时设置缩放比例(通常设为0.01或0.3937,视情况而定)。 - 清理网格:删除多余的顶点、面,合并重叠的顶点(
M> By Distance),确保模型是单层网格,没有内部面。 - 检查骨骼:进入
Pose Mode或Edit Mode查看骨骼,CF模型的骨骼命名可能与Source引擎不同,你需要将骨骼重命名为GMod标准的人形骨骼名称(如Bip01_Head、Bip01_Spine等),如果你不想重新绑骨,可以使用Blender的“自动绑骨”插件(如Auto-Rig Pro),但更稳妥的方法是手动调整骨骼层级,使其匹配Source引擎的citizen骨骼结构。如果你只是想要一个静态道具(比如武器),则不需要绑骨,直接导出为静态SMD即可。
- 应用变换:按
Ctrl+A,选择“All Transforms”,确保模型的位置、旋转、缩放被重置。
第三步:导出为SMD文件
SMD是Source引擎的模型交换格式,有两种:网格SMD和骨骼动画SMD,我们需要导出网格SMD(包含参考姿势和骨骼权重)。
在Blender中,安装“Blender Source Tools”插件(从Valve官方或GitHub下载),启用后,在File > Export中会出现Source Engine (.smd)选项。
- 选择导出类型为“Mesh SMD”。
- 在导出选项中,勾选“Export Skeleton”和“Export UVs”。
- 确保“Reference Pose”选项正确(通常选“Current Pose”或“Rest Pose”)。
- 导出到一个临时文件夹,比如
cf_model。
第四步:编写QC文件并编译
QC文件是Source引擎的“配方”,你需要创建一个文本文件,命名为cf_model.qc大致如下:
// 模型编译配置
$modelname "models/cf/cf_character.mdl"
$body "cf_character.smd"
$sequence "idle" "cf_character.smd" loop
$sequence "walk" "cf_walk.smd" loop
$texturegroup "skinfamilies"
{
{ "cf_character" }
}
$surfaceprop "flesh"
$contents "solid"
$illumposition 0 0 0
$lod 0
$modelname:模型在GMod中的路径,需放在models文件夹下。$body:网格SMD文件名。$sequence:动画序列,如果你有多个SMD动画文件,可以添加多个,如果没有动画,至少需要一个idle序列(可以用静态SMD代替)。$texturegroup:贴图组,这里需要你提前将贴图转换为VTF格式,并放在materials/cf/下。
贴图转换:用VTFEdit将CF模型的贴图(通常是 将 编译:用Crowbar打开你的 将编译好的 如果模型显示为紫色/黑色,说明贴图路径错误;如果模型不显示,可能是QC文件或SMD导出有问题,常见错误及解决方法见下文。 你需要另外导出一个简化的碰撞网格SMD(可以用Blender的“Decimate”修改器生成低模)。 如果你导入的是CF角色,并且希望它像GMod默认的“玩家”模型一样可以持枪、摆姿势,那么你需要将骨骼绑定到GMod的“玩家骨骼”上,这意味着你不仅要重命名骨骼,还要确保骨骼的层级关系与 一种简单的方法是使用Blender的“Source Tools”插件自带的“Import/Export”功能,先导入一个GMod原版角色模型(如 如果你不想这么麻烦,也可以将CF模型作为“NPC”或“布娃娃”使用,只需保证骨骼名称与 GMod导入CF模型并不是一件“傻瓜式”的操作,它需要你熟悉Blender、Source引擎编译流程和一点耐心,但当你看到自己心仪的CF角色在GMod里活蹦乱跳,甚至能用武器摆出各种姿势时,那种成就感是无与伦比的。 模型导入的核心在于“骨骼匹配”和“贴图路径”,只要这两个环节不出错,剩下的都是细节,希望这篇教程能帮你打开GMod模型制作的大门,快去试试吧! (注:本文仅用于技术交流,请勿将提取的模型用于任何商业或公开传播用途,尊重游戏开发商版权。).dds或.png)转换为.vtf,并生成对应的.vmt材质文件。cf_character.vmt
"VertexLitGeneric"
{
"$basetexture" "cf/cf_character"
"$model" "1"
}.vmt和.vtf放入GarrysMod/garrysmod/materials/cf/目录。.qc文件,点击“Compile”,如果一切顺利,会生成.mdl文件。第五步:放入GMod并测试
.mdl文件放入GarrysMod/garrysmod/models/cf/目录,启动GMod,在控制台输入spawn menu,刷新模型列表,或者直接用gmod_spawn命令生成。常见问题与解决技巧
模型显示为“ERROR”或紫色棋盘格
.vmt文件中的贴图路径是否与.vtf实际位置一致(注意大小写)。.vtf是否包含正确的alpha通道(如果模型需要透明)。$texturegroup引用的贴图名称与.vmt文件名匹配。模型比例不对,太大或太小
骨骼错位或模型扭曲
Bip01命名,如果你的CF模型骨骼是Bone_Head之类,需要重命名,最快捷的方法是使用Blender的“Rename Bones”功能,手动将对应骨骼改为Bip01_Head、Bip01_Spine1等。$sequence为单个静态帧即可。没有物理碰撞(穿墙)
$collisionmodel指令,指定一个简单的碰撞盒。$collisionmodel "cf_character_physics.smd"
{
$concave
}动画无法播放
idle序列,让模型站立不动,如果想导入CF的跑步、跳跃动画,需要从CF游戏中提取动画资源(通常为.psk或.psa格式),再通过Blender转换,过程较为复杂,建议先学习基础静态模型导入。进阶:让模型支持持枪和表情
citizen模型一致。player/kleiner.mdl),将其骨骼作为参考,然后手动将CF模型的骨骼匹配到对应位置,这需要一定的耐心,但完成后效果极佳——你可以用GMod的“Physics Gun”抓取模型,甚至用“Bone Menu”调整关节。Bip01兼容即可。

