本文与游戏《传送门2》有关。点击这里查看更多信息。

Porting humanoids to Portal 2

From Valve Developer Community
Jump to navigation Jump to search
English (en)Hrvatski (hr)中文 (zh)Translate (Translate)
《半条命》中的G-Man(en)传送门2 传送门2中,带有可活动的眼睛和面部动画。

由于存在许多且有时是未知的漏洞,传送门2 传送门2不支持直接(即“拖放”)移植人类和类人生物模型,例如来自半衰期2 半衰期2的那些模型。
通过使用这种方法移植这些模型,类人生物会导致 Hammer编辑器(en)Half-Life模型查看器(en)和《传送门2》本身崩溃。按照本指南操作,你将能够成功地将类人生物模型移植到传送门2 传送门2中。

反编译

  1. 从你要移植的VPK文件中提取.mdl、.dx90.vtx、.dx80.vtx(如适用)和.phy文件,并将它们放在一个方便的目录中。
    Note.png注意:如果你要从半衰期2 半衰期2移植类人生物,你还需要提取男性NPC的male_gestures.mdl、male_postures.mdl、male_shared.mdl和male_ss.mdl模型,以及女性NPC的female_gestures.mdl、female_postures.mdl、female_shared.mdl和female_ss.mdl模型,否则游戏“肯定”会崩溃。这些只需重新编译,可跳过$attachment步骤。
  2. 下载Crowbar工具(en),如果还没有的话,通过这里的链接下载。
  3. 打开Crowbar的.exe文件(可能需要先解压压缩包)。打开Decompile(反编译)选项卡,在MDL file or folder(MDL文件或文件夹)下浏览到你要转换的模型的.mdl文件。在Output Folder(输出文件夹)下,选择一个干净整洁的目录来提取文件。建议使用Full Path(完整路径)选项,但这完全由用户决定。在Options(选项)下,确保你的选项与下图所示相同:
版本0.74的Crowbar工具(en)反编译选项。

重新编译

  1. 找到.QC文件,用文本编辑器打开,寻找以$attachment(en)开头的行。它看起来应该像这样:
    $Attachment "eyes" "ValveBiped.Bip01_Head1" 3.23 -3.49 0.12 rotate 0 -80.1 -90
    $Attachment "mouth" "ValveBiped.Bip01_Head1" 0.6 -5.5 0 rotate 0 -80 -90
    $Attachment "chest" "ValveBiped.Bip01_Spine2" 5 4 0 rotate 0 90 90
    $Attachment "forward" "ValveBiped.forward" 0 0 0 rotate 0 0 0
    $Attachment "anim_attachment_RH" "ValveBiped.Anim_Attachment_RH" 0 0 0 rotate -90 -90 0
    $Attachment "anim_attachment_LH" "ValveBiped.Anim_Attachment_LH" 0 0 0 rotate -90 -90 0
    $Attachment "anim_attachment_head" "ValveBiped.Bip01_Head1" 0 0 0 rotate -90 -90 0
    
    Note.png注意:如果看到名为“EyeRightAttach”和“EyeLeftAttach”的附件,直接进行第4步。
  2. 将本节中包含“eyes”的行复制粘贴两次。在第一个副本中,将“eyes”改为“EyeRightAttach”;在第二个副本中,改为“EyeLeftAttach”。修改后的部分应该像这样:
    $Attachment "EyeRightAttach" "ValveBiped.Bip01_Head1" 3.23 -3.49 0.12 rotate 0 -80.1 -90
    $Attachment "EyeLeftAttach" "ValveBiped.Bip01_Head1" 3.23 -3.49 0.12 rotate 0 -80.1 -90
    $Attachment "eyes" "ValveBiped.Bip01_Head1" 3.23 -3.49 0.12 rotate 0 -80.1 -90
    $Attachment "mouth" "ValveBiped.Bip01_Head1" 0.6 -5.5 0 rotate 0 -80 -90
    $Attachment "chest" "ValveBiped.Bip01_Spine2" 5 4 0 rotate 0 90 90
    $Attachment "forward" "ValveBiped.forward" 0 0 0 rotate 0 0 0
    $Attachment "anim_attachment_RH" "ValveBiped.Anim_Attachment_RH" 0 0 0 rotate -90 -90 0
    $Attachment "anim_attachment_LH" "ValveBiped.Anim_Attachment_LH" 0 0 0 rotate -90 -90 0
    $Attachment "anim_attachment_head" "ValveBiped.Bip01_Head1" 0 0 0 rotate -90 -90 0
    
  3. 保存并关闭QC文件。
  4. 打开Crowbar,切换到Compile(编译)选项卡。在QC input(QC输入)下,浏览到你刚打开的QC文件并选中它。
  5. 对于Output Folder(输出文件夹),切换到Game's "models" folder(游戏的“models”文件夹)
    Note.png注意:要使其正常工作,你必须通过进入Set Up Games(设置游戏)选项卡正确设置你的游戏。
  6. 在“Options(选项)”部分,确保Game that has the model compiler:(拥有模型编译器的游戏:)设置为《传送门2》。
  7. 点击“Compile(编译)”!

移植材质

  1. 编译模型后,点击Crowbar底部栏上的Use in View(在视图中使用)。然后点击View(查看)。这将直接在Half-Life模型查看器(en)中打开该模型。
  2. 如果你还没有移植材质,你的模型将显示为紫黑相间的缺失纹理。导航到Model(模型)选项卡,查看VMTs Loaded(已加载的VMT)部分。这里列出的VMT文件(en)是你需要移植的,以及它们对应的VTF文件(en)。从原始VPK中提取它们,并移动到《传送门2》目录中的相应位置——例如,你需要将🖿\materials\models\gman\gman_sheet.vmt放在🖿C:\Program Files (x86)\Steam\SteamApps\common\Portal 2\portal2\materials\models\gman\gman_sheet.vmt,再次根据你的Steam安装目录进行调整。
  3. 按F5刷新Half-Life模型查看器(en)。模型现在应该有完美的纹理了。

修复眼睛材质

这是大多数模组制作者在移植过程中难以掌握的步骤。

  1. 通过再次查看Half-Life模型查看器(en)VMTs Loaded(已加载的VMT)部分,找到眼睛的VMT文件(en)。它们很可能被命名为eyeball_r.vmt和eyeball_l.vmt。在你的《传送门2》目录中找到这些文件并打开。
  2. 用以下内容替换文件的内容:
EyeRefract
{
$Iris "iris_texture_goes_here"
$AmbientOcclTexture "models/player/chell/gambler_eye_ao"
$Envmap "Engine/eye-reflection-cubemap-"
$CorneaTexture "Engine/eye-cornea"
$EyeballRadius "0.5"
$AmbientOcclColor "[.6 .4 .3]"
$Dilation ".6"
$ParallaxStrength "0.25"
$CorneaBumpStrength ".5"
$halflambert 1
$nodecal 1
$ambientocclusion 1

$RaytraceSphere 1
$SphereTexkillCombo 0
}

务必用$iris(en)的原始纹理名称替换iris_texture_goes_here。按F5重新加载模型——你完成了!

修复眼睛纹理

如步骤5所述,此时应该呈现的样子

要使眼睛纹理正常显示,虹膜纹理和眼球纹理都必须合并到一个单一纹理中。 要做到这一点,需要像GIMP GIMPAdobe Photoshop Adobe Photoshop这样的图像编辑程序。

  1. 从各自的VTF文件(en)中导出眼球和虹膜纹理。
  2. 接下来,导出在传送门2 传送门2VPK文件(en)🖿\materials\models\player\chell目录下找到的gambler_eyes.vtf。
  3. 将图像导入你选择的图像编辑程序中
    Note.png注意:在本教程中,使用的是GIMP GIMP,但该过程与你的设置应该类似。
  4. 半衰期2 半衰期2的眼球纹理复制到gambler_eyes纹理上,并将其缩放以适应gambler_eyes图像的大小,如图所示。
  5. 将虹膜纹理复制粘贴到眼球纹理上,并将两者合并。
  6. 接下来,将gambler_eyes的alpha通道复制到半衰期2 半衰期2的眼球纹理上。GIMP教程
  7. 完成后,导出图像(当然不包括gambler_eyes纹理),它就可以重新应用并用作新着色器中的眼球纹理了。
    Note.png注意:记住要将其命名为与原始眼球纹理相同的名称。
    该纹理必须以RGBA8888格式导入到VTFEdit(en)中。
Tip.png提示:要创建右侧版本的纹理,只需取左侧的纹理并水平翻转即可。
最终应该呈现的样子

重要注意事项

  • 除了自动唇形同步和行走外,所有功能都能正常工作。唇形同步必须手动完成。这里的“手动”是指添加你自己的面部表情——《传送门2》中的音素系统完全损坏。(但当然,《传送门2》为什么会需要这种未被充分利用的功能呢?)然而,其他所有功能都能正常工作,包括骨骼动画、面部表情动画、手势和眼球追踪。
  • 行走动画存在很多漏洞。一个普通角色行走时会出现故障,视觉上会四处瞬移,并且看起来像是“卡顿”。这种行为不会出现在传送门2 传送门2的合作模式/多人游戏中,只出现在单人游戏中。要修复这个故障移动,必须将cl_localnetworkbackdoor设置为0。这可以通过point_clientcommand实体(en)向控制台发送cl_localnetworkbackdoor 0来实现。
  • 移植的人类模型的眼睛会一直跟着玩家转,无论玩家在哪里,除非将道具类型设置为generic_actor(en)。乍一看,这似乎会移除一些功能,比如SetAnimation输入。然而,generic_actor(en)允许使用scripted_sequence(en)Faceposer(en)来制作动画和编排场景。它可以完成prop_dynamic能完成的所有事情,甚至更多,但需要更多的努力和工作,并且需要将🖿scenes/scenes.image与你的BSP一起分发。
  • 要调整移植模型的瞳孔大小,必须在移植过程的修复眼睛纹理步骤中手动调整。这是由于EyeRefract着色器(en)的限制。

另见