在 Godot 4 里更换 3D 模型材质:覆盖槽、GDScript 替换与共享资源的坑
从编辑器里的 Surface Material Override 到运行时的 GDScript 替换,再到会让同款模型集体变色的共享资源问题,顺带把 PBR 取值与贴图导入设置讲清楚。
Cry of Fear 跑在 GoldSrc 上,Simon 这个角色就是一份编译好的 .mdl,配上固定骨架和索引 BMP 贴图。本文讲清两种换法、十二套服装的解锁条件,以及模型模组到底替换了什么。
在 Cry of Fear 里换 Simon 的模型,本质上只需要先回答一个问题:你是想换成游戏本身已经带了的另一套衣服,还是想换成一个完全不同的角色。前者是在秘密房间里点几下衣柜,后者则是替换 Cry of Fear 目录下 Half-Life 格式的模型文件,并且接受以后每次游戏更新都可能把成果冲掉。
Cry of Fear 跑在 GoldSrc 引擎上,也就是 Half-Life 1 的那套代码,因此角色都是 .mdl 文件:骨架很小,蒙皮是每个顶点只绑一根骨骼的刚性蒙皮,贴图是索引色位图。正是这个老格式让两条路都可行,也正是它让两条路都很脆——在查看器里看着正常的模型,进了游戏照样可能出问题,只要序列、判定盒或贴图格式和引擎的预期对不上。
这篇教程按读者提问的顺序展开:该走哪条路,Cry of Fear 的角色文件里有什么,怎么做出一个能编译通过的替换模型,十二套服装各自怎么解锁,Sick Simon 与 Former Simon 这类包怎么装怎么卸,以及 Simon 变成 T 字姿势时该查哪里。
如果你只是想让 Simon 换身衣服,用游戏里的衣柜就够了,不必动任何文件。社区攻略给出的位置是:通关一次之后,在游戏最开头那条走廊里,黑色剪影走开之前左手边的第一扇门;另一个秘密房间在第六章火车事故之后,从撞毁的轿车旁那块铁板下去的地堡里。两个房间里的布置一样:衣柜、隐藏武器,以及说明解锁规则的书页。
代价是范围有限:衣柜只能在你的安装里已经存在的服装资源之间切换。游戏从来没做过的角色,只能从别处来,这也正是替换文件这条路的起点。
Cry of Fear 的内容放在可执行文件旁边的 cryoffear 目录里。随游戏发售的服装按套存放,每一套是 cryoffear/models/costumes/ 下的一个文件夹,文件夹名就是服装名,里面是该套装的 .mdl 和配套贴图。玩家模型的命名沿用 Half-Life 的习惯,而引擎只加载编译好的 GoldSrc MDL。往那个目录里丢一个 OBJ 或者 GLB,不会起任何作用。
替换玩家模型意味着覆盖或顶掉 MDL 文件,所以第一步是备份。把打算改动的文件夹复制到游戏目录之外,记下当前游戏版本;还要记住 Steam 的验证文件完整性会把原始文件装回来,顺手抹掉你的成果。每次只装一处改动,装完就测,否则出问题时你无法判断是哪个文件造成的。
| 服装 | 解锁方式 | 需要知道的细节 |
|---|---|---|
| Half-Life Creations 连帽衫 | 第一章公寓房间内拾取 | 首轮游戏就能拿到 |
| Sick Simon 连帽衫 | 以结局 4 通关 | 多数模型包借用的就是这个名字 |
| Hello Kitty 连帽衫 | 在第四章通风管里对死猫按五次使用键 | 最容易走过去没看见 |
| David Leatherhoff 连帽衫 | 以结局 5 通关 | 与 Afraid of Monsters 的联动内容 |
| Twitcher 连帽衫 | 在 Heaven 关卡用斧头击杀一只 twitcher | 要先拿到那把斧头 |
| Mod DB 连帽衫 | 第三章公寓厨房台面上,那间要爬窗上楼顶 | 在通往屋顶的路线上 |
| Afraid of Monsters 连帽衫 | 第四章 Harbor College 校内 | 固定位置拾取 |
| Camo 连帽衫 | 以结局 2 通关 | 条件:不杀 Carcass,把枪交给医生 |
| Black Metal 连帽衫 | 以结局 1 通关 | 条件:不杀 Carcass,自己留着枪 |
| Awesome 连帽衫 | 五个结局各看至少一次 | 实际等于把最后一段打满五遍 |
| Team Psykskallar 连帽衫 | 以结局 3 通关 | 条件:杀掉 Carcass,自己留着枪 |
| Custom 连帽衫 | 解锁其余全部服装后再通关一次 | 衣柜里最后出现的一格 |
Cry of Fear 的角色模组大多是资源包,而不是改代码的补丁:里面装的是替换用的 MDL 和贴图,占用游戏已有的服装位置。把 2009 年测试版里没用上的 Simon 模型恢复出来的那类包就是典型例子——几何本身是老素材,只是重新打包,让引擎把它当成 Simon 的某个模型来加载。这也意味着这类包很容易过时:一次更新改了文件夹名或者新增一套服装,模型就可能不显示,退回默认的 Simon。
GoldSrc 换模型的失败方式就那么几种,每一种都指向流程里的某个具体环节。按下面的顺序逐条排查,通常不必从头重做。
先用生成工具做出基础网格、再手工收尾,是 Cry of Fear 服装流程里完全成立的一半。Open3DAI 覆盖的正是这一半:文生 3D 与图生 3D、多视图输入、AI 贴图、把你接上的引擎放在一起并排比较,以及导出 GLB、glTF、OBJ、STL、PLY、3MF,另外还有 48 个格式转换器、12 个浏览器工具和一套 REST API。它不做的是 GoldSrc 真正要求的另一半:不绑定骨骼、不做权重、不重拓扑、不展开 UV、不做动画,也不编译 Half-Life 的 MDL,更不会承诺导出即封闭、无需清理就能直接用。要把一个网格变成 Cry of Fear 里的角色,仍然得靠 Blender、Milkshape 3D 和 studiomdl。
引擎可用性、积分价格和第三方条款都会变,游戏更新和模组页面也一样。无论是花预算还是花一个周末去换角色模型,动手之前都请到厂商页面和模组自己的下载页确认一遍,并且无论如何都留一份原始文件的副本。
可以,前提是你要的那套服装游戏本身就有。通关一次打开秘密房间,用里面的衣柜在已解锁的连帽衫之间切换即可。游戏目录里的文件不会有任何改动,想换回来就是再进一次衣柜。
内容都在可执行文件旁边的 cryoffear 目录里,随游戏发售的服装则按套放在 cryoffear/models/costumes/ 下的各个文件夹中,每个文件夹里是一份编译好的 .mdl 和对应的索引 BMP 贴图。不同版本之间目录名和模型名可能不同,动手前先把要替换的那个文件夹里的确切名字记下来。
引擎要播放的序列在模型里没有声明,于是退回参考姿势。把自己的 QC 序列与 activity 列表和原模型逐条对照,同时确认 MDL 内部记录的模型名与游戏要查找的文件名一致。
GoldSrc 这边,把 QC 脚本和 SMD 网格编译成 MDL 的工具是 studiomdl,它随 Half-Life SDK 提供。建模和导出 SMD 可以用 Blender 或 Milkshape 3D,放回游戏目录之前再用 GoldSrc 的模型查看器检查一遍。
不能直接用。生成的网格和贴图只是起点,GoldSrc 要求这个网格以刚性蒙皮绑到原骨架上,并连同匹配的序列和判定盒一起编译成 MDL。Open3DAI 负责生成网格、贴图,并导出 GLB、glTF、OBJ、STL、PLY、3MF;它不做绑定、不做重拓扑,也不编译 Half-Life 模型,所以 Blender 和 studiomdl 仍在流程里。
算上 Custom 连帽衫一共十二套。多数绑定某个结局或章节里的固定拾取点,Awesome 连帽衫要求五个结局各看至少一次,Custom 连帽衫则要在解锁其余全部服装之后再通关一次。这个难度排序是基于社区解锁列表的编辑判断,不是实测统计。
存档不受影响,因为改动在游戏目录里,而不在存档数据里。联机合作要另说:其他玩家仍然用自己安装里的文件,除非他们也装了同一套包;命中判定用的是服务器加载的模型,所以判定盒定义要和原模型保持一致。
删掉自己复制进去的文件,然后对 Cry of Fear 跑一次 Steam 的验证文件完整性,随游戏发售的资源会回来,存档也不受影响。不过还是建议保留自己那份原始文件备份:验证是重新下载,而不是从你可控的快照恢复。
把同一份提示词或图片交给多个引擎,并排对比网格,然后导出 GLB、glTF、OBJ、STL、PLY 或 3MF。注册即赠免费积分,无需信用卡。
从编辑器里的 Surface Material Override 到运行时的 GDScript 替换,再到会让同款模型集体变色的共享资源问题,顺带把 PBR 取值与贴图导入设置讲清楚。
Toggle 指的是直播中能用快捷键打开、关闭或替换的模型部件:配饰、服装变体、瞳色贴图或面部形变。本文说明四种常见开关的底层原理,以及在不让绑定崩掉的前提下如何把它接好。
Unity 是 Y 轴向上的左手坐标系,Blender 是 Z 轴向上的右手坐标系,中间那个文件必须同时活过这两端。两条导出路线、导入面板里真正该改的字段,以及第一次导入的修复对照表。