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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager