Introduction
Attaching models to func_* entities can by tricky. This document illustrates how to achieve this with both the model2 key as well with targeting a model to the entity.
The model2 Key
func_* entities can use a model2 key to attach an external MD3 model file to the entity. While it works universally for all func_* entities (except func_group and func_timer), it has limitations: the model file must be in .md3 format and the model will not be visible in Radiant so proper placement of the model is problematic.

Models Targeting func_* Entities
Alternatively, a misc_model entity can target the func_* entity and the two will operate together. This is beneficial because misc_model entities can accept a wider range of model formats as well as being visible in Radiant.

However, there is an exception when working with func_doors and func_plats. These two entities are expecting an actual targeting trigger, not a model file. Using the above method, func_door and func_plat will fail to operate as it is waiting for a target event from the model. We can work around this by creating a separate trigger_* entity that initalizes the event.
Notes
- You may need to include the models as part of your .pk3 file as the models may not be compiled into the .bsp.
- It may be ideal to write dynamic vertex colour shaders using rgbGen lightingDiffuse so that the model lights correctly on the lightgrid.