原文描述

Blockhead
没错,就是Blockhead!
版本 11.1

需要安装《湮灭》脚本扩展器
说明

Blockhead是一个年近半百的OBSE插件,它早已受够了《上古卷轴4:湮灭》引擎的种种限制。诞生于一个防盗按钮里,由一只名叫科林的腊肠犬抚养长大,它很早就认清了现实的残酷。但它偏要当面嘲笑现实,揪现实的鼻子,再往现实的法袍里塞冰块。

在它那冗长又乏味得毫无必要的一生中,它办成了不少荒唐事,比如:
– 强制规定早餐必须供应芦笋。
– 解除种族编辑菜单里的相机移动限制。
– 实现对物品栏菜单待机动画的自定义覆盖。
– 把“contrafibularities”这个词收进了《牛津英语词典》。
– 支持按单个NPC/单一种族分别覆盖NPC的头部和身体资源。
– 支持按单个NPC/单一种族分别覆盖NPC的动画。
– 搞定了蒂德曼地毯的相关问题。

细则说明

种族/性别菜单里的相机可以用方向键(箭头键和WSAD键)控制,也可以按住Shift键同时拖动鼠标控制。按住鼠标左键拖动可以将相机重置到初始位置。移动速度和旋转速度可以在插件的INI文件中配置。

物品栏待机动画覆盖功能无需替换现有资源,就能把自定义待机动画应用到物品栏菜单的3D玩家模型上。一共提供8个可用覆盖项,引擎会根据玩家角色当前装备的武器自动选中其中一项。INI文件里的覆盖值需要设置为存放在MeshesCharacters_Male目录下的有效KF文件的文件名(含扩展名)。

Blockhead实现了一套三层覆盖工具,用来自定义NPC的身体/头部纹理和模型:

– 第一层(脚本)——通过脚本命令应用。
– 第二层(单NPC专属)——将资源(纹理/模型)放到以下文件夹即可应用:<TexturesMeshes>Characters\AssetOverridesPerNPC。
资源命名规则:00XXXXXX_.,其中XXXXXX是该NPC的表单ID(不含模组索引)。法线贴图、TRI、EGM、EGT等附属文件也需要按相同规则命名,即_n.dds。
– 第三层(单种族专属)——
身体:将资源放到以下文件夹即可应用:<TexturesMeshes>CharactersBodyAssetOverridesPerRace,其中MF对应NPC的性别。资源命名规则:XXX_.,其中XXX是种族的名称。

头部:头部部件的资源覆盖逻辑有所不同。由于所有头部部件的相关路径默认都在种族层面定义,覆盖功能仅用于支持性别差异。覆盖文件的路径会自动从种族记录里定义的原始路径生成。资源命名规则:_.,其中M/F是性别。和第二层一样,附属文件也需要按规则重命名。

有效身体部件名:
– UpperBody(上半身)
– LowerBody(下半身)
– Hand(手)
– Foot(脚)
– Tail(尾巴)

有效头部部件名:
– Head(头部)
– EarsMale(男性耳朵)
– EarsFemale(女性耳朵)
– Mouth(嘴)
– TeethLower(下牙)
– TeethUpper(上牙)
– Tongue(舌头)
– EyesLeft(仅支持模型覆盖)
– EyesRight(仅支持模型覆盖)

优先级顺序:第一层 > 第二层 > 第三层 > 默认资源。

第一层覆盖不会在不同游戏会话之间保留,因此每次加载存档后都需要重新应用。

没有预分配资源的身体/头部部件也可以被覆盖,也就是编辑器里没有分配有效模型/纹理路径的部件。不过这类头部部件的第三层覆盖文件必须放到以下目录:
<TexturesMeshes>CharactersHeadAssetOverridesPerRace,其中MF对应NPC的性别
命名规则如下:XXX_.

除了上述头部部件之外,Blockhead还对以下内容提供有限的覆盖支持:
– 发型——给发型资源的文件名加上“-M”或“-F”后缀,就可以为不同性别指定不同文件。
– 年龄层纹理——年龄纹理可以通过脚本命令按单个NPC覆盖,也可以把自定义资源放到以下文件夹实现:TexturesCharactersAgeTextureOverrides。文件命名规则:00XXXXXX_YY.dds,其中XXXXXX是NPC的表单ID(不含模组索引),YY是年龄。脚本覆盖的优先级高于资源覆盖,且同样不会在不同游戏会话之间保留。

NPC动画也可以按单NPC/单种族覆盖。动画覆盖在内部以特殊动画的形式实现。所有动画文件都必须放到以下目录:MeshesCharacters_MaleSpecialAnims。
– 单NPC专属——覆盖文件必须遵循以下命名规则:_BLKD_PERNPC_XXX_00YYYYYY.kf,其中XXX是模组文件名(含扩展名),YYYYYY是NPC记录的表单ID(不含模组索引)。
– 单种族专属——覆盖文件必须遵循以下命名规则:_BLKD_PERRACE_XXX_Y.kf,其中XXX是种族名称,Y是性别(M/F)。

文件名的前半部分必须和原版游戏的命名规则保持一致,例如BowIdle_PERRACE_Nord_M。

同一个NPC可以同时受到多个覆盖的影响——最终由引擎决定使用哪一个动画文件(选择逻辑的实际机制目前还尚未被完全探明)。

装备覆盖
– 详见说明文档。

插件的INI文件会在首次运行后生成(和DLL文件在同一目录下),里面包含了各项功能的开关选项。

建议搭配NPC Tex Tweak插件一起使用Blockhead,该插件能为用户提供更多自定义NPC纹理的途径。

兼容性

本插件和所有现有的其他OBSE插件都兼容。如果您发现任何冲突问题,请通过下方列出的联系方式反馈。

动画覆盖对使用非标准路径存放骨架的NPC无效,也就是说骨架模型必须存放在MeshesCharacters_Male目录下。通过OBSE的ToggleSpecialAnim脚本命令添加的特殊动画,偶尔可能会被Blockhead的覆盖内容顶替。部分动画组(比如施法动画)的覆盖可能无法始终稳定生效。

鸣谢

特别感谢以下人士:

– Ian Patterson、Stephen Abel和Paul Connelly(OBSE团队)——感谢他们延续《湮灭》模组制作的热情,为模组社区带来了《上古卷轴4:湮灭》的“永生灵药”
– LHammonds——感谢他提供的说明文档生成工具
– nuska
——感谢他在那个周日陪我打发时间。
– scanti——感谢他开发NPC Tex Tweak插件,以及他在引擎扩展领域做出的开拓性工作。

所有其他模组社区成员——感谢你们给我带来了开始制作模组所需的灵感,以及所有我正在使用的优秀模组。
贝塞斯达工作室——感谢你们制作出这样一款可塑性极强的游戏。

更新日志

剧透:展开
11.1
– 修复了持续闪退问题(包括战栗孤岛、佩莱特领域等场景的闪退),修复了身体覆盖的法线贴图无法正确生效的问题,修复了被覆盖的装备无法正确卸下的问题
11.0
– 新增装备覆盖支持
10.3
– 修复了身体覆盖相关的脚本命令问题
10.2——紧急修复补丁,修改了性别差异化发型资源的覆盖文件命名规则
10.1
– 修复了身体部件和衣物缺失的问题
10.0 – 新增身体EGT覆盖支持,修复了加载存档时的闪退问题,修复了性别差异化发型纹理覆盖的问题,修复了ResetAgeTextureOverride脚本命令的问题
9.2
– 漏洞修复
9.1——修改了动画覆盖文件的命名规则,新增了可以开关动画覆盖的脚本命令,修复了若干漏洞
9.0——支持对无默认资源的身体/头部部件进行覆盖,新增年龄纹理和发型覆盖功能,修复了若干漏洞
8.1——修复了多个漏洞,移除了未使用且存在问题的“待机”物品栏待机覆盖项
8.0——升级到Visual Studio 2012 C++运行库,新增基于层级的头部资源覆盖功能,新增动画覆盖功能,修复了若干漏洞
7.0——新增身体模型覆盖支持,更新了脚本命令,实现了三层覆盖体系
6.0——新增脚本化身体纹理覆盖支持,新增FaceGen年龄获取/设置命令,移除了预生成面部纹理相关的补丁(NPC Tex Tweak插件可以更完善地解决该问题)
5.1——修复了由身体纹理覆盖引发的闪退问题
5.0——实现了单NPC专属的身体纹理覆盖功能
4.0
– 实现了物品栏待机动画覆盖功能
3.1
– 修复了年龄纹理路径的问题
3.0——新增种族/性别菜单相机调整工具
2.0
– 新增编辑器支持
1.0
– 首次发布