DyanamicTransform concept

This commit is contained in:
sabrina-shanman 2019-09-13 09:54:46 -07:00
parent ccdfb11de2
commit d948e434dd

View file

@ -287,10 +287,22 @@ public:
bool shouldInitCollisions() const { return _collisionsConfig.size() > 0; } bool shouldInitCollisions() const { return _collisionsConfig.size() > 0; }
}; };
class ShapeTransform { class TransformNode {
std::vector<uint32_t> clusters; uint32_t parent { 0 };
Extents meshExtents; Transform transform;
Transform modelTransform; };
// Formerly contained in hfm::Mesh
class Deformer {
std::vector<uint16_t> indices;
std::vector<uint16_t> weights;
};
class DynamicTransform {
std::vector<uint32_t> deformers;
std::vector<Cluster> clusters; // affect the deformer of the same index
std::vector<uint32_t> blendshapes;
// There is also the modelTransform, which for now is left in hfm::Mesh
}; };
// The lightweight model part description. // The lightweight model part description.
@ -299,7 +311,8 @@ public:
uint32_t mesh; uint32_t mesh;
uint32_t meshPart; uint32_t meshPart;
uint32_t material; uint32_t material;
uint32_t shapeTransform; uint32_t transform; // The static transform node when not taking into account rigging/skinning
uint32_t dynamicTransform;
}; };
/// The runtime model format. /// The runtime model format.
@ -316,8 +329,9 @@ public:
std::vector<Mesh> meshes; std::vector<Mesh> meshes;
std::vector<Material> materials; std::vector<Material> materials;
std::vector<ShapeTransform> shapeTransforms; std::vector<Deformer> deformers;
std::vector<TransformNode> transforms;
std::vector<Joint> joints; std::vector<Joint> joints;
QHash<QString, int> jointIndices; ///< 1-based, so as to more easily detect missing indices QHash<QString, int> jointIndices; ///< 1-based, so as to more easily detect missing indices
bool hasSkeletonJoints; bool hasSkeletonJoints;