Add support for IQM int blend indices and float blend weights

Integer blend indices are converted to bytes at load, ioq3 doesn't allow more than 128 joints.

Heavily based on code by @zippers.
This commit is contained in:
Zack Middleton 2013-10-29 22:09:06 -05:00
parent 1515841b38
commit 0bf1f3d0ba
4 changed files with 150 additions and 46 deletions

View file

@ -618,10 +618,18 @@ typedef struct {
float *normals;
float *tangents;
byte *blendIndexes;
byte *blendWeights;
union {
float *f;
byte *b;
} blendWeights;
byte *colors;
int *triangles;
// depending upon the exporter, blend indices and weights might be int/float
// as opposed to the recommended byte/byte, for example Noesis exports
// int/float whereas the official IQM tool exports byte/byte
byte blendWeightsType; // IQM_BYTE or IQM_FLOAT
int *jointParents;
float *jointMats;
float *poseMats;