Model (decl)

Model declarations define a model reference that associates a mesh, it’s animations, and any additional settings with a given name so that they can be referenced as a group. This can prove useful. For instance, allowing you to reuse animations with different models provided they share the same skeleton.

It’s generally used with animated models although there doesn’t appear to be any indication that you couldn’t use them with a static model as well.

Syntax

model [name] {
   inherit [model]
   skin [skin]
   mesh [file]
   remove [anim]
   anim [name] [file] {
      frame [number]    [command]
      frame [number]    [command]
      frame [number]    [command]
      ...
   }
   offset [xyz]
   channel [name] ( [joints] )   
}

Model declarations begin with a header which consists of the keyword “model” followed by the name of the model.

The header is followed by the body of the declaration which is enclosed in curly brackets.

The body is composed of a series of keywords and their parameters.

Keywords

inherit
Causes a model declaration to inherit the properties of the specified model declaration

inherit [model]
  • [model] - The model declaration to inherit from

skin
Applies a skin declaration

skin [skin]
  • [skin] - The skin declaration to apply

mesh
Defines the model associated with this model declaration

mesh [file]
  • [file] - The MD5mesh to use

remove
Removes the specified animation from the list of inherited animations

remove [anim]
  • [anim] - The name of the animation to remove

anim
Associates an animation with this model declaration. Optionally opens a new set of curly brackets for use with frame commands.

anim [name] [file]
  • [name] - The name to use
  • [file] - The MD5anim to use

offset
An offset to apply to this model

offset [xyz]
  • [xyz] - A series of coordinates separated by commas

channel
Defines a group of joints so that animations can be applied to a select portions of a model

channel [name] ( [joints] )
  • [name] - The name of the channel
  • [joints] - A list of joints

Frame Commands

Through the use of the anim keyword, it is possible to trigger events on a per frame basis. This is accomplished by opening a new set of curly brackets as outlined in the syntax section.

Within this unique set of curly brackets you can issue commands on a per frame basis. This allows you to play footstep sounds in sequence with a walking animation, throw fireballs in sequence with a throwing animation, ect…

To further elaborate on the proper syntax…

...
   anim [name] [file] {
      frame [number]    [command]
      frame [number]    [command]
      frame [number]    [command]
      ...
   }
...
  • [number] - Refers to the frame number in the sequence where the command should be issued
  • [command] - A frame command and it’s corresponding parameters.

call
Calls the specified script function

call [function]
  • [function] - The name of the script function to call

object_call
Calls the specified script function on the entity

object_call [function]
  • [function] - The name of the entity specific script function to call

event
Sends the specified event to the entity

event [name] [args]
  • [name] - The name of the coded event
  • [args] - Any arguments expected by the event

sound
Plays the specified sound on any available channel

sound [snd]
  • [snd] - The sound file or shader to play

sound_voice
Plays the specified sound on the specified channel. If a sound is being played on the body channel, and another sound is requested to play, then the first sound is halted. Since the footstep sounds are all defined to be on the body channel, there will never be 2 footstep sounds played twice on the same entity at the same time.

sound_voice [snd]
  • [snd] - The sound file or shader to play

sound_voice2
Plays the specified sound on the specified channel. If a sound is being played on the body channel, and another sound is requested to play, then the first sound is halted. Since the footstep sounds are all defined to be on the body channel, there will never be 2 footstep sounds played twice on the same entity at the same time.

sound_voice2 [snd]
  • [snd] - The sound file or shader to play

sound_body
Plays the specified sound on the specified channel. If a sound is being played on the body channel, and another sound is requested to play, then the first sound is halted. Since the footstep sounds are all defined to be on the body channel, there will never be 2 footstep sounds played twice on the same entity at the same time.

sound_body [snd]
  • [snd] - The sound file or shader to play

sound_body2
Plays the specified sound on the specified channel. If a sound is being played on the body channel, and another sound is requested to play, then the first sound is halted. Since the footstep sounds are all defined to be on the body channel, there will never be 2 footstep sounds played twice on the same entity at the same time.

sound_body2 [snd]
  • [snd] - The sound file or shader to play

sound_body3
Plays the specified sound on the specified channel. If a sound is being played on the body channel, and another sound is requested to play, then the first sound is halted. Since the footstep sounds are all defined to be on the body channel, there will never be 2 footstep sounds played twice on the same entity at the same time.

sound_body3 [snd]
  • [snd] - The sound file or shader to play

sound_weapon
Plays the specified sound on the specified channel. If a sound is being played on the body channel, and another sound is requested to play, then the first sound is halted. Since the footstep sounds are all defined to be on the body channel, there will never be 2 footstep sounds played twice on the same entity at the same time.

sound_weapon [snd]
  • [snd] - The sound file or shader to play

sound_global
Plays the specified sound on the specified channel. If a sound is being played on the body channel, and another sound is requested to play, then the first sound is halted. Since the footstep sounds are all defined to be on the body channel, there will never be 2 footstep sounds played twice on the same entity at the same time.

sound_global [snd]
  • [snd] - The sound file or shader to play

sound_item
Plays the specified sound on the specified channel. If a sound is being played on the body channel, and another sound is requested to play, then the first sound is halted. Since the footstep sounds are all defined to be on the body channel, there will never be 2 footstep sounds played twice on the same entity at the same time.

sound_item [snd]
  • [snd] - The sound file or shader to play

sound_chatter
Plays the specified sound on the specified channel. If a sound is being played on the body channel, and another sound is requested to play, then the first sound is halted. Since the footstep sounds are all defined to be on the body channel, there will never be 2 footstep sounds played twice on the same entity at the same time.

sound_chatter [snd]
  • [snd] - The sound file or shader to play

skin
Changes the model’s skin

skin [skin]
  • [skin] - The name of the skin declaration to apply

fx
Triggers an effect defined by the declaration

fx [name]
  • [name] - The name of the effect to trigger

trigger
Triggers the level trigger

trigger [name]
  • [name] - The name of the trigger to activate

recordDemo
Starts recording a demo or stops recording if blank

recordDemo [name]
  • [name] - The name of the demo to start recording

aviGame
Starts an aviGame. Useful for making animations to be used on video screens (such as all the talking head videos in Doom 3)

aviGame [name]
  • [name] - The name of the image sequence to output

Frame Command Aliases

COMMAND ALIAS
triggerSmokeParticle event triggerParticles
melee event attackMelee
direct_damage event directDamage
attack_begin event attackBegin
attack_end event attackEnd
muzzle_flash event muzzleFlash
create_missile event createMissile
launch_missile event launchMissile
fire_missile_at_target event fireMissileAtTarget
footstep event footstep
leftfoot event leftfoot
rightfoot event rightfoot
jump event jump
enableEyeFocus event enableEyeFocus
disableEyeFocus event disableEyeFocus
disableGravity event disableGravity
enableGravity event enableGravity
enableClip event enableClip
disableClip event disableClip
enableWalkIK event enableWalkIK
disableWalkIK event disableWalkIK
enableLegIK event enableLegIK
disableLegIK event disableLegIK