Cal3d Architecture Analysis
4.1 Overview:
The basic idea in cal3d is to extract data that can be shared by multiple different objects from the data of a single object. There are many data that can be shared in skeleton animation, such as animation data and mesh data.
The cal3d library contains a series of core classes (also known as core models) that represent a type model, which stores shared data from all (other models. In addition, each series of instance models (instance classes, also known as models or instance models) are constructed from the core model, representing a specific instance in this model. (Their relationships can be compared to the relationships between classes and objects in C ++)
Example: Hero and Dragon
For example, we have a sci-fi game with heroic warriors and fatal dragons. In this way, we will have two different core models (core models), that is, the Warriors representing heroes and the dinosaurs. The core model that represents a warrior contains all the common data that a warrior may need, such as animation, material, and skin. The dinosaur is also the core model. Now, as long as a warrior or dragon is born, a new model instance will be created based on the core model. The external performance of a single instance is displayed by selecting a specific skin and material from the core model. This allows us to have an epic battle of many different warriors and dragons. Even so, most of the data we store is only one copy.
4.1.1 core classes are the same as described above. For a type model (dragon or warrior), a series of core classes contain the data required by all instances, the data can be divided into four parts. 1. inheritance structure (skeleton and skeleton) 2. motion data (animation, motion track, key frame) 3. skin properties (material) 4. body attributes (skin)
4.1.2 instance class)
Each group of instance classes contains the specific data of an instance of the model type. The data can be divided into three parts.
1. The current skeleton status.
2. Some column animations of the current activity
3. Some objects attached to the body (skin ).
There are four helper classes to simplify model processing
1. Motion Control (managed by mixer)
2. The skinning stage (physique ).
3. Clothes animation layer spring-system (in implementation stage)
4.1.3 Miscellaneous
The remaining classes can be divided into four groups.
1. Vectors and Quaternions)
2. Error Handling)
3. encapsulated platform-related code
4. auxiliary classes for loading and saving
4.1.4 animation Pipeline
The process of calculating the final model data from the core data and the current instance status must be considered as a single pipeline.
1. In "mixer", compare all the activated animations to obtain the current skeleton posture.
2. Compare all activated shape targets in morpher to obtain the current skin (planned)
3. deformation of the current skin according to the current skeleton posture in the shape.
4. Simulate the model clothes in "sping-system.
5. query final data for rendering