lire un obj et transformer les faces en triangles
Bonjour,
Tout est dans le titre : en utilisant un scanner pour lire un fichier .obj, en java, avec android studio ( pour une application mobile ), je parviens à lire les vertexs et les sommets :
(le fichier .obj donne ceci par exemple avec 2 quadrilataire, le premier à 4 sommets et le deuxième 5 ).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
# Blender v2.76 (sub 0) OBJ File: test.blend'
# www.blender.org
mtllib test.mtl
o Plane.plane
v 0.000000 0.000000 0.000000
v 1.000000 0.000000 0.000000
v 0.293249 0.000000 -0.885343
v 1.000000 0.000000 -1.000000
v -0.188105 -0.002691 -0.882331
v -1.154975 0.000000 -0.007805
v -0.778643 0.000000 -0.641668
vn 0.000000 1.000000 0.000000
vn -0.000400 1.000000 -0.001700
usemtl None
s off
f 1//1 2//1 4//1 3//1
f 5//2 7//2 6//2 1//2 3//2 |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
ArrayList<Vertex> vertexs_ = new ArrayList<Vertex>() ;
ArrayList<Integer> vertexsID_ = new ArrayList<Integer>() ;
while ( scan.hasNext() ){
String word = scan.next() ;
if ( word.equals("v")){
vertexs_.add(new Vertex( scan.nextFloat() ,-scan.nextFloat(),scan.nextFloat()));
}
if ( word.equals("f")){
word = scan.next() ;
vertexsID_.add(transformToInt(word));
while ( scan.hasNext() && !scan.hasNext("f") ) {
word = scan.next() ;
vertexsID_.add(transformToInt(word));
}
}
} |
Le problème est que je ne sais pas comment transformer ces faces en triangles pour pouvoir les afficher correctement.
En effet si je me contente de ranger les vertexs dans le bon ordre en suivant les ids il ne m'affiche que la moitié des triangles forcément..
Savez vous comment s'y prendre ?
Cordialement,
Mazertys