Garry's Mod Wiki

Entity:DrawModel

  Entity:DrawModel( number flags = STUDIO_RENDER )

Description

Draws the entity or model.

If called inside ENTITY:Draw or ENTITY:DrawTranslucent, it only draws the entity's model itself.

If called outside of those hooks, it will call both of said hooks depending on Entity:GetRenderGroup, drawing the entire entity again.

When drawing an entity more than once per frame in different positions, you should call Entity:SetupBones before each draw; Otherwise, the entity will retain its first drawn position.

This is a rendering function that requires a 3d rendering context.

This means that it will only work in 3d Rendering Hooks.

Calling this on entities with EF_BONEMERGE and EF_NODRAW applied causes a crash.

Issue Tracker: 1558
Using this with a map model (game.GetWorld():GetModel()) crashes the game.

Issue Tracker: 2688

Arguments

1 number flags = STUDIO_RENDER
The optional STUDIO_ flags, usually taken from ENTITY:Draw and similar hooks.

Example

Manually draws a single ClientsideModel on the specified bone, on the given offset for every player affected by this hook.

This is useful in case you want to reuse a single model without having to create one for each player.

local modelexample = ClientsideModel( "models/thrusters/jetpack.mdl" ) modelexample:SetNoDraw( true ) local offsetvec = Vector( 3, -5.6, 0 ) local offsetang = Angle( 180, 90, -90 ) hook.Add( "PostPlayerDraw" , "manual_model_draw_example" , function( ply ) local boneid = ply:LookupBone( "ValveBiped.Bip01_Spine2" ) if not boneid then return end local matrix = ply:GetBoneMatrix( boneid ) if not matrix then return end local newpos, newang = LocalToWorld( offsetvec, offsetang, matrix:GetTranslation(), matrix:GetAngles() ) modelexample:SetPos( newpos ) modelexample:SetAngles( newang ) modelexample:SetupBones() modelexample:DrawModel() end)
Output: