-
Notifications
You must be signed in to change notification settings - Fork 0
/
skin.h
43 lines (33 loc) · 949 Bytes
/
skin.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef _SKIN_H_
#define _SKIN_H_
#include "joint.h"
#include "trimesh/include/TriMesh.h"
#include <vector>
#include <QVector4D>
#include <QtGui/QMatrix4x4>
class Skin {
public:
// Constructor
Skin(trimesh::TriMesh* model, Joint* root);
// Joint to skin to
Joint* _root;
// Property of the model
std::vector<trimesh::point> vertices_init;
std::vector<trimesh::point> vertices;
std::vector<trimesh::Vec<3, int>>* indices = nullptr;
std::vector<std::vector<float> > weights;
// Matrice de transformation
std::vector<QMatrix4x4> _M0_1;
std::vector<QMatrix4x4> _Mi;
// Fonction Update
void Update_vertices(int frame);
void Update_M(int frame);
private:
// Fonction d'initialisation
void ReadWeights(std::string fileName, bool hard_mode=false);
void Init_M0();
// Fonction récursive appelé dans les fonction précédantes
void set_rec_Mi(Joint* joint, int& k);
void set_rec_M0_1(Joint* joint);
};
#endif