Half-Life Model Viewer++

From Valve Developer Community
Jump to: navigation, search
English (en)
Half-Life Model Viewer++
TypeThird Party Tool
EngineSource Source
PlatformsWindows Windows
Join Discord server
X (Twitter)

HLMV++ Half-Life Model Viewer++ (HLMV++ HLMV++) is a community-made modification of HLMV Half-Life Model Viewer for Source Source that provides an updated, feature-rich version of the model viewer. HLMV++ is made by ficool2, the same programmer that created Hammer++ Hammer++, and the two are cross-compatible. HLMV++ contains many fixes to long-standing HLMV issues, as well as many new features, some of which were ported over from Counter-Strike: Global Offensive Counter-Strike: Global Offensive's HLMV.

HLMV++ currently supports the following branches of the Source Engine:


  • HLMV++ runs at 240 fps, most noticeable with a 144hz monitor.
  • MVScript support, ported from CS:GO's HLMV.
  • Live VMT materials editing, ported from CS:GO's HLMV.
  • Ability to change picmip, antialias and anistropic settings without needing to modify the dxsupport.cfg file to do so. Options are now available via the Render tab of the control panel.
  • Loading and rendering particle effects that can be attached to bones via the new Particles tab on the control panel.
  • Showing/hiding the bottom-third control panel.
    • Options > Show/Hide Control Panel
  • A reworked Flexes control panel with pagination.
    • This feature also reworks how the Flexes panel functions, removing the usage of dropdown boxes which subsequently fixes an age-old bug where changing a targeted flex via a dropdown could sometimes revert all the flex changes you had made up to that point.
  • Facial flex saving is possible via editing registry keys.
  • Saving a screenshot with or without an automatically generated alpha channel.
    • Screenshots (and video frames) were initially saved as TGAs until the Garry's Mod build and Version 6 of the Team Fortress 2 build, where they are now saved as PNGs.
  • A new Make Video option that exports multiple PNG frames to create animated GIFs/APNGs/VTFs.
    • There is also a "transparent" option that will make all exported frames have an automatically generated alpha channel.
  • Added volume slider for sounds.
  • Added aspect ratio correction.
    • This makes the model render correctly regardless of window size. Can be toggled off for old behavior.
  • A new cosmetic item model browser that parses the contents of the items_game.txt file. (only in Team Fortress 2)
  • Asset mounting from mount.cfg. (only in Garry's Mod)
  • Material list now shows texture name beside missing materials.
  • Shadows now work without ground being required.
  • Added SetCameraFOV and SetCameraAspectCorrection MVScript commands.
  • Added support for loading 2D skyboxes as the background of the 3D render area.
    • HDR skyboxes are supported as well as of the most recent (January 2024) version.
    • The .mvscript system can also access this option with the following key:
      • SetSkybox sky
        • The sky param works with sky names such as sky_tf2.
  • Added support for Refract materials.
  • Ability to create and place up to 4 independent light sources and customize each light source's type (point, directional or spot), cone, color and ambient color.
    • Left 4 Dead 2 build only allows up to 2 light sources, due to limitations in the Left 4 Dead engine branch.
    • The .mvscript system can also access these lighting options with the following commands:
      • SetLightType index i
        • index param accepts the following values:
          • 0: Disabled
          • 1: Point
          • 2: Directional
          • 3: Spot
      • SetLightPosition x y z i
      • SetLightAngles x y z i
      • SetLightColor r g b i
      • SetLightCone inner outer i
        • The i parameter is for specifying which of the potential 4 light sources you want to control, from 0 to 3.
      • SetAmbientColor r g b
  • Added support for loading animation-only models as primary models. Formerly, trying to load an animation-only model would just result in an error popup.
    • An example of how this could be used would be loading up tf\models\weapons\c_models\c_demo_animations.mdl as the primary model, then loading up tf\models\weapons\c_models\c_medic_arms.mdl as a submodel so the Demoman's first person animations would use the Medic's arms model instead of the Demoman's arms.
  • Added SetFlexes MVScript command. Flexes also get saved in the session file.
  • Restored the hitbox editing functionality that was accidentally removed early on in the project's life.
  • Added bodygroup and skin switching for submodels.


Icon-Bug.pngBug:The "Make Screenshot" function may not work correctly when HLMV++ is stretched across multiple monitors. Doing so may result in a very wide screenshot with two copies of the same model in it. This is not fixable.
Icon-Bug.pngBug:Making transparent screenshots/videos of anything that uses $additive materials, such as certain particle effects or parts of certain cosmetic items (like the Propaniac for example) in Team Fortress 2, does not work correctly as the generated alpha channel algorithm doesn't play nice with additive materials. Any details that use additive materials will not be part of the generated alpha channel, or just may not be captured correctly by the alpha channel generation.
Icon-Bug.pngBug:When generating a transparent screenshot, there will usually always be a couple pixels in the bottom-right hand corner of the image.
Note.pngNote:This one may need a test with the latest build for Team Fortress 2 or Garry's Mod to see if this still the case. The alpha channel generation algorithm has undergone changes throughout the life of the project so this entry may be something from an older build. This issue was first noticed when selecting the entire canvas and copying the contents so that creating a new canvas would set the width and height to the specific size of the model render being worked with. The size was found to be off due to some pixel remnants in the corner caused by the screenshot algorithm.
Fix: Just hit the bottom-right corner of the canvas with the erase tool in your image editor of choice.
Icon-Bug.pngBug:Trying to launch the Left 4 Dead 2 build can result in an error message stating "Model models/tools/rotate_widget.mdl not found and models/error.mdl could not be loaded."
Fix: Mount your custom folder directly to the base gameinfo.txt in πŸ–Ώsteamapps/common/Left 4 Dead 2/left4dead, point Crowbar to that gameinfo.txt instead, and always open HLMV++ through the View > Open Viewer option in Crowbar


Icon-Bug.pngBug:Trying to launch the Left 4 Dead 2 build from inside the πŸ–Ώsteamapps/common/Left 4 Dead 2/bin folder has been reported to result in "Unable to find gameinfo.txt" errors.
Fix: Create a shortcut where the "Target" field contains an added -game "Path"
Example: "D:\Programme\Steam\steamapps\common\Left 4 Dead 2\bin\hlmvplusplus.exe" -game "D:\Programme\Steam\steamapps\common\Left 4 Dead 2\left4dead2"
In case you added a custom content folder via Gameinfo, you may want to load that folder, instead of the default ".../Left 4 Dead 2/left4dead2" in the shortcut's -game path, else the "(Steam) Load Model" button cannot read your new models.
Fix: Alternatively, use Crowbar to run HLMV++ by setting it up as the model viewer in the Left 4 Dead 2 game setup menu, then running it by using the View > Open Viewer option.



  • Fixed the Make Screenshot option not working.
  • Fixed the FOV slider being inaccurate.
  • Fixed a bug where the Material Proxies checkbox state was not being refreshed correctly.
  • Fixed a display scaling bug.
  • Fixed .mdls/.mvscripts passed on command line not working. This fixes HLMV++ not working with the "Preview" mode from Crowbar Crowbar.
  • Fixed sounds not playing.
  • Fixed crash in BoneWeights view.
  • Fixed Reset Lighting also resetting background color.
  • Fixed particles not being saved across sessions.
  • Fixed rapid flashing when using Make Screenshot/Video.
  • Fixed light type name being cut off.
  • Fixed background color and ground color buttons not working.
  • Fixed Reset Lights button not resetting light type and selected light.
  • Fixed ground color never being used (bug from stock HLMV).
  • Fixed .mvscript screenshot filenames with more than 128 characters being truncated.
  • Fixed flexes not working on materials with transparency.
  • Fixed submodels persisting when loading other models.
  • Fixed .mvscript SetLightColor and SetAmbientColor (pitch black issue).
  • Fixed .mvscript SetLightCone not saving correctly.
  • Fixed Highlight Hitbox option in Bones tab not working.
  • Fixed crash if skybox texture was missing a side VMT.
  • Fixed toggle control panel not correctly calculating panel size after re-enabling.
  • Fixed crashes with certain MVScript commands if no model was loaded.


External links