A CoreModel is a model type from which many instance Models can be
created. For example, there could be a clown CoreModel and many
individual clown instances. The CoreModel contains data shared
by its instances:
- A single skeleton
- One or more meshes, represented by MeshIds
- One or more animations, represented by AnimationIds
- One or more materials, represented by MaterialIds
Each of these may be loaded from a file by the
appropriate loader function, for example, loadCoreSkeleton.
Materials of the CoreModel are organized by sets and threads.
Within a material set, represented by a MaterialSetId, all materials
have the same appearance, such as metal or wood.
Each material thread, represented by a MaterialThreadId,
is associated with a particular part of the model, such as head or arm.
Changing material sets of a model (instance) is a convenient way
of changing the character's costume or over-all look.