2 Exportation des vertices et des faces

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import bpy
import sys

def printVerticesOfTheMesh(file, mesh):
	file.write("Vertices :\n")
	for vertex in mesh.data.vertices:
		file.write("%f, %f, %f,   " % (vertex.co[0], vertex.co[1], vertex.co[2]))
		file.write("\t")

def printIndexOfTheMesh(file, mesh):
	file.write("\nNombre de faces : %d\n" % len(mesh.data.faces))
	file.write("\nFaces :\n")
	#en fait edges c'est le nombre de bords
	#le nombre de faces doit être faces
	for face in mesh.data.faces:
		#file.write("face %i : " % face.index)
		if len(face.vertices) == 3:
			for vertexFace in face.vertices:
				file.write("%i, " % (vertexFace.numerator))
		else:
			assert len(face.vertices) == 4
			listeTriangle1 = face.vertices[:3]
			listeTriangle2 = [face.vertices[0], face.vertices[3], face.vertices[2]]
			for vert1 in listeTriangle1:
				file.write("%i, " % (vert1.numerator))
			for vert2 in listeTriangle2:
				file.write("%i, " % (vert2.numerator))
		file.write("\n")

def printTexCoordOfTheMesh(file, mesh):
	file.write("TexCoord :")
	vertIndex = 0
	faceIdx = 0
	if len(mesh.data.uv_textures)>0:
		uvLayer=mesh.data.uv_textures.active.data
		#uv=uvLayer[faceIdx]
		#uv=uv.uv1, uv.uv2, uv.uv3, uv.uv4
		#uvCoord=uv[vertIndex][0], 1.0-uv[vertIndex][1]
	#else:
		#uvCoord=v.uvco[0], 1.0-v.uvco[1]
	#file.write('u %.6f %.6f \n' %uvCoord) # uv

def printMeshBlender(file, mesh):
	file.write("Name = %s\n" % mesh.name)
	printVerticesOfTheMesh(file, mesh)
	printIndexOfTheMesh(file, mesh)
	printTexCoordOfTheMesh(file, mesh)
	file.write("\n")	


def print_all_meshes(file):
	for item in bpy.data.objects:
		if item.type == 'MESH':
			printMeshBlender(file, item)


filepath = "/tmp/fichierTest.txt"
file = open(filepath, 'w')

print_all_meshes(file)

file.close()

Voici le résultat sur le cube par défaut de Blender :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Name = Cube
Vertices :
1.000000, 1.000000, -1.000000,   	1.000000, -1.000000, -1.000000,   	-1.000000, -1.000000, -1.000000,   	-1.000000, 1.000000, -1.000000,
1.000000, 0.999999, 1.000000,   	0.999999, -1.000001, 1.000000,   	-1.000000, -1.000000, 1.000000,   	-1.000000, 1.000000, 1.000000,   	
Nombre de faces : 6

Faces :
0, 1, 2, 0, 3, 2, 
4, 7, 6, 4, 5, 6, 
0, 4, 5, 0, 1, 5, 
1, 5, 6, 1, 2, 6, 
2, 6, 7, 2, 3, 7, 
4, 0, 3, 4, 7, 3, 
TexCoord :

Dans ce cas, on n'affiche pas les coordonnées de texture, puisque, par défaut, le cube de départ n'en a pas.