menu_bookDocumentation
ModelRenderer: Body Groups, Material Override, Material Groups, Shadow Modes, and LOD Override
ModelRenderer: Body Groups, Material Override, Shadow Modes, and LOD
ModelRenderer renders a static (non-skinned) model in the world. It creates a SceneObject in the SceneWorld.Basic Usage
CSHARP
var renderer = AddComponent<ModelRenderer>();
renderer.Model = Model.Load( "models/my_model.vmdl" );
renderer.Tint = Color.Red;
renderer.RenderType = ModelRenderer.ShadowRenderType.On;Body Groups
Body groups control which mesh parts are visible:
CSHARP
// Set by name and choice name
renderer.SetBodyGroup( "hat", "baseball_cap" );
// Set by name and choice index
renderer.SetBodyGroup( "hat", 1 );
// Set by part index and choice index
renderer.SetBodyGroup( 0, 1 );
// Get current value
int current = renderer.GetBodyGroup( "hat" );
// Set raw bitmask (advanced)
renderer.BodyGroups = 0b1010;Material Override
CSHARP
// Override all materials with a single material
renderer.MaterialOverride = Material.Load( "materials/my_material.vmat" );
// Clear override (restore original materials)
renderer.MaterialOverride = null;Material Groups
Material groups are predefined sets of materials on the model:
CSHARP
renderer.MaterialGroup = "team_red"; // switch to a named material groupNote: MaterialGroup and MaterialOverride are mutually exclusive — if MaterialOverride is set, MaterialGroup is ignored.
Shadow Render Types
CSHARP
renderer.RenderType = ModelRenderer.ShadowRenderType.On; // render + cast shadows (default)
renderer.RenderType = ModelRenderer.ShadowRenderType.Off; // render, no shadows
renderer.RenderType = ModelRenderer.ShadowRenderType.ShadowsOnly; // invisible but casts shadowsLOD Override
CSHARP
renderer.LodOverride = 0; // force highest LOD
renderer.LodOverride = 2; // force LOD 2
renderer.LodOverride = null; // automatic LOD selectionTags on SceneObject
The SceneObject's tags are automatically synced from the GameObject's tags. This is how trace tag filters work — Scene.Trace.WithTag("solid") checks the SceneObject's tags.
Was this helpful?