andbin ha scritto:
A prima vista non vedo errori davvero "grossolani". Ci sono diverse cose non buonissime ("da principianti") che si potrebbero migliorare ma non sono di certo quelle il problema principale.
Dato che il funzionamento di tutto il ciclo è molto "pilotato" dai dati nel file, allora mostra anche un esempio di file (possibilmente breve purché valido per il funzionamento).
Magari potrebbe anche essere utile vedere come sono Vertex/Face/Mesh anche se credo (spero...) non sia in questi il problema. Al 99% direi di no ma non si sa mai ..
Allora, ti lascio un esempio di file da cui prendo i dati (all'inizio ci sono le coordinate x, y, z, u, v mentre, a seguire, trovi il numero di vertici di ogni poligono seguito dagli indici dell'arraylist in cui andare a prendere le coordinate)
STOFF
36989 36442 0
-12.4582 182.837 5.4237 0.0117 0.4746
-12.2316 184.074 5.1951 0.0455 0.4794
-12.2902 184.059 4.8857 0.0449 0.4887
-12.5256 182.837 5.0546 0.0115 0.4861
59.0989 112.341 -10.939 1.7565 0.9345
58.1335 112.341 -8.7121 1.7578 0.9891
4 0 3 2 1
4 1 2 4 5
Per quanto riguarda le classi vertex, mesh e face, ti lascio i costruttori e i campi:
//CAMPI
private static Vertex v1;
private static Vertex v2;
private static Vertex v3;
private static Vertex v4;
private static Vertex v5;
private Edge l1, l2, l3, l4, l5;
//COSTRUTTORI
public Face(Vertex v1, Vertex v2, Vertex v3, Vertex v4){ //quad
this.v1 = v1;
this.v2 = v2;
this.v3 = v3;
this.v4 = v4;
l1 = new Edge(v1,v2);
l2 = new Edge(v2,v3);
l3 = new Edge(v3,v4);
l4 = new Edge(v4, v1);
}
L'edge è lo spigolo (lato) del poligono che definisco a partire da 2 vertici.
//CAMPI
private Face faccia;
//COSTRUTTORI
public Mesh(Face f){
faccia = f;
}
E infine
//CAMPI
private float x,y,z,u,v;
private Vec3 coordinate;
private Vec2 cTexture;
//COSTRUTTORI
public Vertex(float x, float y, float z, float argU, float argV){
this.x = x;
this.y = y;
this.z = z;
u = argU;
v = argV;
coordinate = new Vec3(x, y, z); //vettore delle coordinate x,y,z del vertice
cTexture = new Vec2(u,v); //vettore delle coordinate u,v del vertice nello spazio texture
}