Fitted mesh

This commit is contained in:
Latif Khalifa
2014-01-24 01:11:27 +01:00
parent 655081365f
commit 269deb56e6
11 changed files with 360 additions and 50 deletions

View File

@@ -26,26 +26,45 @@
ATTRIBUTE vec4 weight4;
uniform mat4 matrixPalette[32];
uniform mat3 matrixPalette[64];
uniform vec3 translationPalette[64];
mat4 getObjectSkinnedTransform()
{
float w0 = fract(weight4.x);
float w1 = fract(weight4.y);
float w2 = fract(weight4.z);
float w3 = fract(weight4.w);
int i;
int i0 = int(floor(weight4.x));
int i1 = int(floor(weight4.y));
int i2 = int(floor(weight4.z));
int i3 = int(floor(weight4.w));
vec4 w = fract(weight4);
vec4 index = floor(weight4);
//float scale = 1.0/(w.x+w.y+w.z+w.w);
//w *= scale;
mat4 mat = matrixPalette[i0]*w0;
mat += matrixPalette[i1]*w1;
mat += matrixPalette[i2]*w2;
mat += matrixPalette[i3]*w3;
index = min(index, vec4(63.0));
index = max(index, vec4( 0.0));
return mat;
float scale = 1.0/(w.x+w.y+w.z+w.w);
w *= scale;
int i1 = int(index.x);
int i2 = int(index.y);
int i3 = int(index.z);
int i4 = int(index.w);
mat3 mat = matrixPalette[i1]*w.x;
mat += matrixPalette[i2]*w.y;
mat += matrixPalette[i3]*w.z;
mat += matrixPalette[i4]*w.w;
vec3 trans = translationPalette[i1]*w.x;
trans += translationPalette[i2]*w.y;
trans += translationPalette[i3]*w.z;
trans += translationPalette[i4]*w.w;
mat4 ret;
ret[0] = vec4(mat[0], 0);
ret[1] = vec4(mat[1], 0);
ret[2] = vec4(mat[2], 0);
ret[3] = vec4(trans, 1.0);
return ret;
}