This article relates to the game "Portal 2". Click here for more information.

Porting humanoids to Portal 2: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Found the root cause of the buggy movement)
 
(22 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[File:Portal2 2017-06-25 19-42-08.png|thumbnail|right|The G-Man in Portal 2, complete with working eyes and skeletal and flex animation. ]]
{{LanguageBar}}
Portal 2, due to numerous and sometimes unknown bugs, will not support the direct (i.e. "drag'n'drop") porting of humans and humanoids, such as those from Half-Life 2. By porting models in this method, the humanoids will crash Hammer, HLMV, and Portal 2 itself. By following this guide, you will be able to successfully port humanoid models to Portal 2. {{todo|Do humanoids from other games, such as CS:GO, possess these same issues?}}
{{P2 topicon}}[[File:Gman in p2.png|thumb|right|The [[G-Man]] in {{portal2|4}}, complete with working eyes and flex animations.]]
{{Note|I am not sure if all of the steps detailed underneath are required. '''Decompiling''', '''Recompiling''', and '''Porting the materials''' certainly are, as well as the shader change in '''Fixing the eyes'''.}}
{{portal2|4}}, due to numerous and sometimes unknown bugs, will not support the direct (i.e. "drag'n'drop") porting of humans and humanoids, such as those from {{hl2|4}}.<br>
By porting these models using this method, the humanoids will crash [[Hammer]], [[HLMV]] and ''Portal 2'' itself. By following this guide, you will be able to successfully port humanoid models to {{p2|4}}.


==Decompiling==
# Extract the .mdl, .dx90.vtx, .dx80.vtx (if applicable), and .phy files from the VPK you are porting from, and place them in a handy directory.{{Note|If you are porting humanoids from {{hl2|2}} you will need to also extract the {{Code|preset=2|male_gestures.mdl, male_postures.mdl, male_shared.mdl and male_ss.mdl models for the male npcs and female_gestures.mdl, female_postures.mdl, female_shared.mdl and female_ss.mdl models for the female npcs}} otherwise the game '''will''' crash. These just have to be recompiled and the $attachment step can be skipped.}}
# Download [[Crowbar]], if you haven't already, download it by following the links [http://steamcommunity.com/groups/CrowbarTool here.]
# Open Crowbar's .exe file (you may have to extract the archive first). Open the {{Code|preset=3|Decompile}} tab and under {{Code|preset=2|MDL file or folder}} browse to the .mdl of the model you are converting. Under {{Code|preset=2|Output Folder}}, choose a nice clean directory to extract the files to. It is recommended to use the {{Code|preset=2|Full Path}} option, but it's completely up to the user. Under {{Code|preset=2|Options}}, make sure your options are the same as shown in the image below:
[[File:Crowbar decomp settings.png|790px|frame|center|[[Crowbar]] decompilation options as of version 0.74.]]


==Decompiling==
# Extract the .mdl, .dx90.vtx, .dx80.vtx (if applicable), and .phy files from the VPK you are porting from, and place them in a handy directory.
# Download Crowbar, if you haven't already, by following the links [http://steamcommunity.com/groups/CrowbarTool here.]
# Open Crowbar's exe file (you may have to extract the archive first). Open the '''Decompile''' tab and under '''MDL file or folder''' browse to the .mdl of the model you are converting. Under '''Output Folder''', choose a nice clean directory to extract your files to. I recommend using the '''Full Path''' option, but it's completely up to you. Under '''Options''', make sure your options are the same as mine:
[[File:Crowbar 2017-06-25 19-33-07.png|790px|frame|center|Options for Crowbar decompile.]]
==Recompiling==
==Recompiling==
# Find the QC and open it in a text editor. Look for the line beginning with "$ModelName" and remember the string in quotes. Next, scroll down to the area where every line begins with $Attachment -- it should look something like this. [[File:QC Attachments.png|center|$Attachment section]]
# Find the .QC file and open it in a text editor and look for the line beginning with [[$attachment]]. It should look something like this:<syntaxhighlight lang="c">
# If you see attachments named "EyeRightAttach" and "EyeLeftAttach", proceed to **Step 4**.  
$Attachment "eyes" "ValveBiped.Bip01_Head1" 3.23 -3.49 0.12 rotate 0 -80.1 -90
# Copy and paste the line that contains "eyes" in this section twice. Change "eyes" to "EyeRightAttach" in the first copy, and to "EyeLeftAttach" in the second. The section should now look something like this. [[File:QC Attachments 2.png|center|$Attachment section after editing]] Save and close the QC. Don't worry about what this is doing -- it will come in handy later.
$Attachment "mouth" "ValveBiped.Bip01_Head1" 0.6 -5.5 0 rotate 0 -80 -90
# Open Crowbar and switch to the **Compile** tab. Under **QC file or folder**, browse to the QC file you just opened.
$Attachment "chest" "ValveBiped.Bip01_Spine2" 5 4 0 rotate 0 90 90
# For '''Output Folder''', switch to '''Full Path''' and type in ''C:\Program Files (x86)\Steam\SteamApps\common\Portal 2\portal2\models\[x]'', substituting ''[x]'' for the string you noted earlier, but with the file removed. Essentially, if the QC read ''"$ModelName"   "props_test\testanim\deyork.mdl"'', you would enter ''C:\Program Files (x86)\Steam\SteamApps\common\Portal 2\portal2\models\props_test\testanim\'' in the '''Full Path''' dialog, correcting for your Steam install directory.
$Attachment "forward" "ValveBiped.forward" 0 0 0 rotate 0 0 0
# Under the '''Options''' section, make sure that '''Game that has the model compiler''' is set to Portal 2. Hit Compile! {{Note|Depending on your Steam library setup, you may have to run '''Set Up Games''' first.}}
$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
</syntaxhighlight>{{Note| If you see attachments named "EyeRightAttach" and "EyeLeftAttach", proceed to '''Step 4'''.}}
# Copy and paste the line that contains "eyes" in this section twice. Change "eyes" to "EyeRightAttach" in the first copy, and to "EyeLeftAttach" in the second. The section should now look something like this.<syntaxhighlight lang="c">
$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
</syntaxhighlight>
#Save and close the QC.
# Open Crowbar and switch to the {{Code|preset=3|Compile}} tab. Under {{Code|preset=2|QC input}}, browse to the QC file you just opened and select it.
# For {{Code|preset=2|Output Folder}}, switch to {{Code|preset=2|Game's "models" folder}}{{Note|For this to work you have to have your games set up properly by going into the {{Code|preset=3|Set Up Games}} tab}}
# Under the '''Options''' section, make sure that {{Code|preset=2|Game that has the model compiler:}} is set to Portal 2.
# Hit Compile!


==Porting the materials==
==Porting the materials==
# After compiling your model, hit '''Use in View''' on the bottom bar of Crowbar. Then click on '''View'''. This will open HLMV straight to the model.
# After compiling your model, hit {{Code|preset=2|Use in View}} on the bottom bar of Crowbar. Then click on {{Code|preset=2|View}}. This will open [[HLMV]] straight to the model.
# If you have not already ported the materials, your model will appear black. Navigate to the '''Model''' tab and look at the '''VMTs Loaded''' section. The VMTs listed here are the ones you will need to port. Extract them from the original VPK and move them to the corresponding location in Portal 2's directory -- for example, you would place ''models/test/bestmap.vmt'' in ''C:\Program Files (x86)\Steam\SteamApps\common\Portal 2\portal2\materials\models\test\bestmap.vmt''. once again correcting for your Steam install directory.
# If you have not already ported the materials, your model will appear with a purple and black missing texture. Navigate to the {{Code|preset=3|Model}} tab and look at the {{Code|preset=2|VMTs Loaded}} section. The [[VMT]] files listed here are the ones you will need to port alongside their corresponding [[VTF]] files. Extract them from the original VPK and move them to the corresponding location in Portal 2's directory -- for example, you would place {{path|\materials\models\gman\gman_sheet.vmt}} in {{path|C:\Program Files (x86)\Steam\SteamApps\common\Portal 2\portal2\materials\models\gman\gman_sheet.vmt}}. once again correcting for your Steam install directory.
# Open all of the just-ported VMTs and find the VTFs they reference, and repeat the same process for them as well.
# Hit F5 to refresh [[HLMV]]. The model should now be perfectly textured.
# Hit F5 to refresh HLMV. The model should now be perfectly textured.


==Fixing the eyes==
==Fixing the eye material==
This is the step of the porting process that has stayed elusive to most modders.  
This is the step of the porting process that has stayed elusive to most modders.
# In HLMV, navigate to the '''Attachments''' tab. In the left column, select "eyes", and mess with the translation values so it is level with the eyes and about far away from them as in this picture on the right. [[File:Eyesdistance.png|thumbnail|Your model's "eyes" attachment should be in this position.]] '''Make sure that the blue arrow is pointing up, the red arrow is pointing away from the eyes, and the green arrow is perpendicular to them!''' Copy the '''QC String''' and replace the original '''$Attachment''' string for "eyes" in the QC with that.
# Find the [[VMT]] files for the eyes by looking at the {{Code|preset=2|VMTs Loaded}} section of [[HLMV]] again. They will most likely be named eyeball_r.vmt and eyeball_l.vmt. Find them on-disk in your ''Portal 2'' directory and open them.
# In the left column, select "EyeRightAttach" and mess with the '''Translation''' settings to get it centered on all axices in the model's ''right eye''. Once again, make sure the blue arrow is pointing up, the red arrow is pointing away from the eyes, and the green arrow is perpendicular to them. Copy the '''QC String''' and replace the original '''$Attachment''' string for "EyeAttachRight" in the QC with that.
# Replace the contents of the file with this:
# Repeat the last step. except instead selecting, modifying, and replacing "EyeLeftAttach".
# Repeat the earlier process for compiling the model and hit F5 to refresh it in HLMV.
# Find the VMTs for the eyes by looking at the '''VMTs Loaded''' section of HLMV again. They will most likely be named eyeball_r.vmt and eyeball_l.vmt. Find them on-disk in your Portal 2 directory and open them.  
# Replace the contents of the file with this:  
<syntaxhighlight lang="c">
<syntaxhighlight lang="c">
EyeRefract
EyeRefract
{
{
$Iris "iris_texture_goes_here"  
$Iris "iris_texture_goes_here"
$AmbientOcclTexture "models/player/chell/gambler_eye_ao"  
$AmbientOcclTexture "models/player/chell/gambler_eye_ao"
$Envmap "Engine/eye-reflection-cubemap-"  
$Envmap "Engine/eye-reflection-cubemap-"
$CorneaTexture "Engine/eye-cornea"  
$CorneaTexture "Engine/eye-cornea"
$EyeballRadius "0.5"  
$EyeballRadius "0.5"
$AmbientOcclColor "[.6 .4 .3]"  
$AmbientOcclColor "[.6 .4 .3]"
$Dilation ".6"  
$Dilation ".6"
$ParallaxStrength "0.25"  
$ParallaxStrength "0.25"
$CorneaBumpStrength ".5"  
$CorneaBumpStrength ".5"
$halflambert 1
$halflambert 1
$nodecal 1
$nodecal 1
$ambientocclusion 1
$ambientocclusion 1


$RaytraceSphere 1  
$RaytraceSphere 1
$SphereTexkillCombo 0  
$SphereTexkillCombo 0
 
}
}
</syntaxhighlight>
</syntaxhighlight>
Be sure to replace ''iris_texture_goes_here'' with the name of the original texture for $iris. Hit F5 to reload the model -- you're done!
Be sure to replace {{Code|preset=2|iris_texture_goes_here}} with the name of the original texture for [[$iris]]. Hit F5 to reload the model -- you're done!
 
==Fixing the eye texture==
[[File:Gimp hl2 eye texture fix - pupil.jpg|712px|thumb|right|How it should look at this point as described in step 5]]
To have the eye texture appear properly both the iris textures and eyeball textures have to be combined into one single texture.
To do this an image editing program like {{GIMP|4}} or {{ps|4}} is needed.
# Export the eyeball and iris texture from their respective [[VTF]] files
# Next, export gambler_eyes.vtf found under {{path|\materials\models\player\chell}} in the {{p2|4}} .[[VPK]]
# Import the images into your image editing program of choice {{note|In this tutorial {{GIMP|4}} is used but the process should be similar to your setup}}
# Copy the {{hl2|4}} eyeball texture over to the gambler_eyes texture and scale it to fit the gambler_eyes image size as shown in the image
# Copy and paste the iris texture onto the eyeball texture and merge the two together
# Next copy the alpha channel of gambler_eyes to the {{hl2|4}} eyeball texture. [https://www.youtube.com/watch?v=a7he6tv90gM Tutorial for GIMP]
# Now with that done export the image (without the gambler_eyes texture of course) and it's ready to be reimplemented and be used as the eyeball texture within the new shader{{note|Remember to name it the same as the original eyeball texture.<br> The texture has to be imported into [[VTFEdit]] in RGBA8888 formatting}}
{{tip|To create the right version of the texture simply take the left one and flip it horizontally.}}
[[File:Gimp hl2 eye texture fix - pupil - final.jpg|712px|thumb|center|How it should look in the end]]


==Important Notes==
==Important Notes==
* Everything works except automatic lipsync. You'll have to do it manually. And be "manual" I mean adding your own flexes -- the phoneme system is broken entirely in Portal 2. (After all, why would they need it? The only human in the game doesnt even talk!) However, everything else works, including skeletal animation, facial expression animation, gestures, and eye tracking.
* Everything works except automatic lipsync and walking. Lipsyncing will have to be done manually. And by "manual" it means adding your own flexes -- the phoneme system is broken entirely in {{p2|4}}. (But of course, why would ''Portal 2'' need something so unutilized?) However, everything else works, including skeletal animation, facial expression animation, gestures, and eye tracking.
* '''''Ported human models' eyes will completely bug out UNLESS you set their prop type as "generic_actor"''''' (or maybe another NPC). At first glance, this appears to remove some features like the "SetAnimation" input. However, generic_actor grants to access to using Faceposer to animate and choreograph scenes. It can accomplish everything that can be accomplished with prop_dynamic and more, but takes a bit more effort and work, and requires scenes/scenes.image to be distributed along with your BSP.
* Walking animations are very buggy. A generic actor when walking will glitch, visually teleporting around and will appear to "lag". This behavior doesn't occur in the cooperative mode/multiplayer gameplay of {{p2|4}}, only single player. To fix the buggy movement {{code|preset=3|cl_localnetworkbackdoor}} has to be set to 0. This can be done with a [[point_clientcommand]] sending {{code|preset=3|cl_localnetworkbackdoor 0}} to the console.
* If you want to adjust the pupil size of a ported model, you have to manually resize the pupil on the texture in an image-editing program. This is due to the limitations of the EyeRefract shader.
* '''''Ported human models' eyes will just follow the player around no matter their location UNLESS the prop type is set to''''' [[generic_actor]]. At first glance, this appears to remove some features like the {{code|preset=2|SetAnimation}} input. However, [[generic_actor]] grants access to using [[scripted_sequence]] and [[Faceposer]] to animate and choreograph scenes. It can accomplish everything that can be accomplished with prop_dynamic and more, but takes a bit more effort and work, and requires {{path|scenes/scenes.image}} to be distributed along with your BSP.
* To adjust the pupil size of a ported model, it has to be manually resized in the {{code|preset=4|Fixing the eye texture}} step of the porting process. This is due to the limitations of the [[EyeRefract]] shader.


==See also==
* [[Choreography creation]]: For animating the humans
* [[Portal 2 Level Design]]: P2 level creation home page
* [[weapon_portal_base]]: For creating custom weapons in the {{Portal|4}} franchise


==See Also==
[[Category:Entities]]
* [[Choreography creation]] for animating the humans
[[Category:Level Design]]
* [[Portal 2 Level Design]] P2 level creation home page
[[Category:Choreography creation]]
[[Category:NPCs]]

Latest revision as of 16:53, 8 March 2025

English (en)Hrvatski (hr)中文 (zh)Translate (Translate)
The G-Man in Portal 2 Portal 2, complete with working eyes and flex animations.

Portal 2 Portal 2, due to numerous and sometimes unknown bugs, will not support the direct (i.e. "drag'n'drop") porting of humans and humanoids, such as those from Half-Life 2 Half-Life 2.
By porting these models using this method, the humanoids will crash Hammer, HLMV and Portal 2 itself. By following this guide, you will be able to successfully port humanoid models to Portal 2 Portal 2.

Decompiling

  1. Extract the .mdl, .dx90.vtx, .dx80.vtx (if applicable), and .phy files from the VPK you are porting from, and place them in a handy directory.
    Note.pngNote:If you are porting humanoids from Half-Life 2 Half-Life 2 you will need to also extract the male_gestures.mdl, male_postures.mdl, male_shared.mdl and male_ss.mdl models for the male npcs and female_gestures.mdl, female_postures.mdl, female_shared.mdl and female_ss.mdl models for the female npcs otherwise the game will crash. These just have to be recompiled and the $attachment step can be skipped.
  2. Download Crowbar, if you haven't already, download it by following the links here.
  3. Open Crowbar's .exe file (you may have to extract the archive first). Open the Decompile tab and under MDL file or folder browse to the .mdl of the model you are converting. Under Output Folder, choose a nice clean directory to extract the files to. It is recommended to use the Full Path option, but it's completely up to the user. Under Options, make sure your options are the same as shown in the image below:
Crowbar decompilation options as of version 0.74.

Recompiling

  1. Find the .QC file and open it in a text editor and look for the line beginning with $attachment. It should look something like this:
    $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.pngNote: If you see attachments named "EyeRightAttach" and "EyeLeftAttach", proceed to Step 4.
  2. Copy and paste the line that contains "eyes" in this section twice. Change "eyes" to "EyeRightAttach" in the first copy, and to "EyeLeftAttach" in the second. The section should now look something like this.
    $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. Save and close the QC.
  4. Open Crowbar and switch to the Compile tab. Under QC input, browse to the QC file you just opened and select it.
  5. For Output Folder, switch to Game's "models" folder
    Note.pngNote:For this to work you have to have your games set up properly by going into the Set Up Games tab
  6. Under the Options section, make sure that Game that has the model compiler: is set to Portal 2.
  7. Hit Compile!

Porting the materials

  1. After compiling your model, hit Use in View on the bottom bar of Crowbar. Then click on View. This will open HLMV straight to the model.
  2. If you have not already ported the materials, your model will appear with a purple and black missing texture. Navigate to the Model tab and look at the VMTs Loaded section. The VMT files listed here are the ones you will need to port alongside their corresponding VTF files. Extract them from the original VPK and move them to the corresponding location in Portal 2's directory -- for example, you would place 🖿\materials\models\gman\gman_sheet.vmt in 🖿C:\Program Files (x86)\Steam\SteamApps\common\Portal 2\portal2\materials\models\gman\gman_sheet.vmt. once again correcting for your Steam install directory.
  3. Hit F5 to refresh HLMV. The model should now be perfectly textured.

Fixing the eye material

This is the step of the porting process that has stayed elusive to most modders.

  1. Find the VMT files for the eyes by looking at the VMTs Loaded section of HLMV again. They will most likely be named eyeball_r.vmt and eyeball_l.vmt. Find them on-disk in your Portal 2 directory and open them.
  2. Replace the contents of the file with this:
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
}

Be sure to replace iris_texture_goes_here with the name of the original texture for $iris. Hit F5 to reload the model -- you're done!

Fixing the eye texture

How it should look at this point as described in step 5

To have the eye texture appear properly both the iris textures and eyeball textures have to be combined into one single texture. To do this an image editing program like GIMP GIMP or Adobe Photoshop Adobe Photoshop is needed.

  1. Export the eyeball and iris texture from their respective VTF files
  2. Next, export gambler_eyes.vtf found under 🖿\materials\models\player\chell in the Portal 2 Portal 2 .VPK
  3. Import the images into your image editing program of choice
    Note.pngNote:In this tutorial GIMP GIMP is used but the process should be similar to your setup
  4. Copy the Half-Life 2 Half-Life 2 eyeball texture over to the gambler_eyes texture and scale it to fit the gambler_eyes image size as shown in the image
  5. Copy and paste the iris texture onto the eyeball texture and merge the two together
  6. Next copy the alpha channel of gambler_eyes to the Half-Life 2 Half-Life 2 eyeball texture. Tutorial for GIMP
  7. Now with that done export the image (without the gambler_eyes texture of course) and it's ready to be reimplemented and be used as the eyeball texture within the new shader
    Note.pngNote:Remember to name it the same as the original eyeball texture.
    The texture has to be imported into VTFEdit in RGBA8888 formatting
Tip.pngTip:To create the right version of the texture simply take the left one and flip it horizontally.
How it should look in the end

Important Notes

  • Everything works except automatic lipsync and walking. Lipsyncing will have to be done manually. And by "manual" it means adding your own flexes -- the phoneme system is broken entirely in Portal 2 Portal 2. (But of course, why would Portal 2 need something so unutilized?) However, everything else works, including skeletal animation, facial expression animation, gestures, and eye tracking.
  • Walking animations are very buggy. A generic actor when walking will glitch, visually teleporting around and will appear to "lag". This behavior doesn't occur in the cooperative mode/multiplayer gameplay of Portal 2 Portal 2, only single player. To fix the buggy movement cl_localnetworkbackdoor has to be set to 0. This can be done with a point_clientcommand sending cl_localnetworkbackdoor 0 to the console.
  • Ported human models' eyes will just follow the player around no matter their location UNLESS the prop type is set to generic_actor. At first glance, this appears to remove some features like the SetAnimation input. However, generic_actor grants access to using scripted_sequence and Faceposer to animate and choreograph scenes. It can accomplish everything that can be accomplished with prop_dynamic and more, but takes a bit more effort and work, and requires 🖿scenes/scenes.image to be distributed along with your BSP.
  • To adjust the pupil size of a ported model, it has to be manually resized in the Fixing the eye texture step of the porting process. This is due to the limitations of the EyeRefract shader.

See also