Uspelo je, radi, jeste da ponegde izgleda malo dzombasto ali radi. Mada mi je cudno sto mu je potrebno oko 38 sekundi za ucitavanje objekta koji ima 5640 vertexa i 31192 poligona, a Anim8or ga ucita za 5 sekundi. Postoji li brzi nacin od ovog sto sam ja napisao, ili sam mozda nesto propustio ili pogresno uradio pa mi ide sporo.
Code:
void LoadNormals(mesh *Mesh)
{
point normal, normalsum, tempnormal; //point je struktura sa 3 floata x, y i z
int pointscount, facescount, points, shared;
for(facescount = 0; facescount < Mesh->numoffaces; facescount++) //ovo izracunava normale poligonima.
{
tempnormal = CalculateNormal(*Mesh, facescount);
Mesh->faces[facescount].normal = Normalize(tempnormal);
}
for(pointscount = 0; pointscount < Mesh->numofpoints; pointscount++) //ovoprolazi kroz sve vertexe
{
shared = 0;
normalsum.x = 0;
normalsum.y = 0;
normalsum.z = 0;
for(facescount = 0; facescount < Mesh->numoffaces; facescount++) //ovo prolazi kroz sve poligone
{
for(points = 0; points < Mesh->faces[facescount].numofpoints; points++) //i ovo prolazi kroz sve vertexe poligona
{
if(Mesh->faces[facescount].PointData[points].pointindex == pointscount)//a ovo testira da li poligon
{ //sadrzi vertex
normalsum.x = Mesh->faces[facescount].normal.x;
normalsum.y = Mesh->faces[facescount].normal.y;
normalsum.z = Mesh->faces[facescount].normal.z;
shared++;
}
}
}
normalsum.x /= -shared;
normalsum.y /= -shared;
normalsum.z /= -shared;
normal = Normalize(normalsum);
Mesh->normals[pointscount] = normal;
}
}