起源引擎自定义枪械模型
G28 模型接入问题总结与新模型检查清单更新时间2026-10-14本次目标把 Sketchfab 作者trolosqlfod的 HK G28 模型接入 Source SDK 2013 Multiplayer 的mod_hl2mp让第一人称视图中枪位于屏幕右下方枪口朝准星方向使用原始模型的颜色和贴图$scale保持1不添加手臂、不改变玩法。原始资产授权SketchfabHK G28 Sniper Rifle作者trolosqlfod许可证CC-BY-4.0。最终文件和路径源文件F:\game_素材\hkg28-convert\source_qc_smd\v_hkg28.qcF:\game_素材\hkg28-convert\source_qc_smd\v_hkg28_ref.smdF:\game_素材\hkg28-convert\source_qc_smd\w_hkg28_ref.smd最终视图模型 QC 关键参数$scale 1.0 $origin -14 8 8 -90编译目录H:\cfgame\Steam\steamapps\common\Source SDK Base 2013 Multiplayer\hl2mp运行时目录H:\cfgame_test\origin-of-fps\source-sdk-2013\game\mod_hl2mp最终视图模型文件已复制到H:\cfgame_test\origin-of-fps\source-sdk-2013\game\mod_hl2mp\models\weapons\包括v_hkg28.mdl、v_hkg28.vvd、v_hkg28.dx90.vtx、v_hkg28.dx80.vtx、v_hkg28.sw.vtx。遇到的问题和根因1. 模型消失或顶在头上最初的$origin -6 5 12不适合这个模型的坐标系。模型本身的几何包围盒大约为X -12 .. 28 Y -4.68 .. 4.68 Z -6.88 .. 6.88模型长轴实际在 SMD 的X方向经过视图模型坐标转换后枪口方向需要通过 QC 的旋转参数对齐 Source 第一人称坐标。最终使用$origin -14 8 8 -90其中-14把枪沿枪口方向向前移避免枪身过于靠后8保持合适的横向和高度偏移-90把模型长轴旋转到准星前方。2. 枪的颜色像掉漆瞄准镜出现错误颜色这不是原始 BaseColor 损坏主要是两个转换问题叠加UV 的 V 坐标方向错误。原始 glTF 贴图和 Source SMD 的 V 轴方向相反导致模型采样到图集的上下错误位置。修复方法是对视图和世界 SMD 的每个顶点执行v 1 - v材质名中的点号被 StudioMDL 处理成扩展名分隔符。原始材质名为mat0.001到mat0.006编译后的模型最终只剩一个mat0材质导致枪身、瞄准镜、脚架和镜片错误地共用枪身材质。已改为没有点号的唯一材质名hkg28_body hkg28_magazine hkg28_receiver hkg28_scope hkg28_bipod hkg28_lens_front hkg28_lens_rear重新编译后v_hkg28.mdl和w_hkg28.mdl都确认包含 7 个材质。镜片 Alpha 透明度需要保留。原始镜片 PNG 是 RGBA前后镜片 Alpha 分别为 92 和 84。已使用 RGBA 源图重新生成镜片 VTF并确认 VTF 使用带 Alpha 的格式。3. 编译目录错误studiomdl.exe -game不能指向这个模组的gameinfo.txt。正确做法是对 SDK 自带的 HL2MP 目录编译studiomdl.exe-gameH:\cfgame\Steam\steamapps\common\Source SDK Base 2013 Multiplayer\hl2mpv_hkg28.qc然后把生成的模型文件复制到mod_hl2mp\models\weapons。新模型接入时必须检查几何和坐标先确认原始模型的长轴、枪口方向和上下方向。先测量 SMD 顶点包围盒再决定$origin不要凭感觉连续试错。视图模型和世界模型分别确认坐标不能直接假设两者使用同一套偏移。$scale只有在确认尺寸错误时才修改本项目要求保持1。第一人称验收标准是枪身在右下方、枪口指向准星不以第三人称世界模型画面代替。UV 和贴图glTF、OBJ、FBX 转 SMD 时明确检查 V 轴是否需要翻转。编译前后抽取少量 UV 或比较 VTF 解码图确认贴图没有上下错位。原始 BaseColor 应尽量原样转换不要把 BaseColor 当成法线或粗糙度图。法线图要使用$bumpmap并在 VTF 中设置 Normal 标志。透明镜片必须保留 RGBA Alpha不要用 RGB-only 转换覆盖它。重新生成 VTF 后检查尺寸、格式、Alpha 和是否被错误压成 DXT1。材质命名不要使用mat0.001、material.002这类带点号的材质名。使用字母、数字和下划线例如g28_scope、g28_lens_front。每个视觉部件必须拥有唯一材质名和对应 VMT。编译后从 MDL 读取材质表确认材质数量和名称与 SMD 一致。VMT 中的$basetexture、$bumpmap必须和实际 VTF 文件名逐字匹配。VMT 参数先用简单的VertexLitGeneric $basetexture验证贴图对应关系。确认颜色正确后再逐项加入$bumpmap、$phong、$envmap和 rim light。不要一开始同时启用很强的$phongboost、$envmap、$rimlight否则很难判断是贴图错还是光照过强。如果画面出现紫色优先检查 VMT/VTF 路径和文件是否缺失。如果画面出现灰绿反光或像掉漆检查环境贴图、法线 Alpha 遮罩和 Phong 强度。编译和部署修改source_qc_smd中的 QC、SMD 和材质源。对 SDK 的hl2mp目录运行studiomdl.exe。同时编译视图模型和世界模型。把.mdl、.vvd、.dx90.vtx、.dx80.vtx、.sw.vtx复制到运行时模型目录世界模型另外复制.phy。把 VMT/VTF 复制到运行时materials目录。重启游戏或换图避免旧模型和旧材质仍在内存中。进入dm_lockdown确认右下角模型、准星朝向、颜色、镜片透明度和开火/换弹动画。推荐的验收顺序1. 模型可见 2. 枪口朝向正确 3. 位置在右下方 4. BaseColor 对应正确 5. 瞄准镜和镜片材质独立 6. 镜片 Alpha 正常 7. 法线和高光正常 8. 开火、换弹、切枪动画正常 9. 世界模型和物理文件正常 10. 重启后仍能正常加载本次最终验收结果第一人称模型已在dm_lockdown中显示。枪位于屏幕右下方枪口朝向准星。UV 翻转问题已修复。模型材质已从错误的单材质恢复为 7 个独立材质。枪身颜色恢复为原始黑灰和沙色风格。瞄准镜使用独立贴图镜片保持蓝色透明效果。未添加手臂未改变玩法$scale仍为1.0。