//---- Dibujamos el mesh
int nB=E->GetNBones();
int nV=E->GetNVertex();
_3D * V=E->GetVertex(); //array de vertices
_3D v; //vertice x,y,z,w
double weight;
RenderBone(Bones->Root); //aplico las matrices absolutas de los bones
for (int iV=0;iV<nV;iV++)
{
E->WeightedVertex[iV]=V[iV];
E->WeightedVertex[iV].w=1.0;
}
for (int b=0;b<E->GetNBones();b++)
{
KngBone * B=E->GetBone(b);
for (int w=0;w<B->GetNWeights();w++)
{
iV=B->GetWeight(w).n;
weight=B->GetWeight(w).w;
v=B->Absolute.VectorMatrixMultiply(E->WeightedVertex[iV]); //aqui multiplico la matriz acumulada de todos los bones que afectan a este bone y la aplico sobre el vertice.
v.x*=weight; //opero sobre los pesos para saber el verdadero desplazamiento
v.y*=weight;
v.z*=weight;
v.w*=weight;
//sumo todos los pesos para tener el vertice bien
E->WeightedVertex[iV].x+=v.x;E->WeightedVertex[iV].y+=v.y;E->WeightedVertex[iV].z+=v.z;
}
}
for (ifaces=0;ifaces<nFaces;ifaces++)
{
glBegin(GL_LINE_STRIP); // Drawing Using Triangles
F=Faces[ifaces];
_3D va,vb,vc;
va=E->WeightedVertex[F.a];
vb=E->WeightedVertex[F.b];
vc=E->WeightedVertex[F.c];
glVertex3f( va.x, va.y, va.z);
glVertex3f( vb.x, vb.y, vb.z);
glVertex3f( vc.x, vc.y, vc.z);
glVertex3f( va.x, va.y, va.z);
glEnd();
}