11 class VertexArrayMap(object):
12 def __init__(self, materials):
13 self.materials=materials
14 self.vertexArrayMap={}
16 def getVertexArray(self, material_index):
17 material=self.materials[material_index]
18 if not material in self.vertexArrayMap:
19 vertexArray=vertexarray.VertexArray([])
20 self.vertexArrayMap[material]=vertexArray
21 return self.vertexArrayMap[material]
23 def addTriangle(self, material_index, v0, v1, v2):
24 vertexArray=self.getVertexArray(material_index)
25 vertexArray.vertices.append(v0.x)
26 vertexArray.vertices.append(v0.y)
27 vertexArray.vertices.append(v0.z)
28 vertexArray.vertices.append(v1.x)
29 vertexArray.vertices.append(v1.y)
30 vertexArray.vertices.append(v1.z)
31 vertexArray.vertices.append(v2.x)
32 vertexArray.vertices.append(v2.y)
33 vertexArray.vertices.append(v2.z)
36 for m, vertexArray in self.vertexArrayMap.items():
42 for v in self.vertexArrayMap.values():
43 v.vertices=numpy.array(v.vertices, 'f')
47 頂点配列をマテリアル毎に分別する(UV付き)
49 class VertexArrayMapWithUV(object):
50 def __init__(self, materials):
51 self.materials=materials
52 self.vertexArrayWithUVMap={}
54 def getVertexArray(self, material_index):
55 material=self.materials[material_index]
56 if not material in self.vertexArrayWithUVMap:
57 vertexArray=vertexarray.VertexArrayWithUV([], [])
58 self.vertexArrayWithUVMap[material]=vertexArray
59 return self.vertexArrayWithUVMap[material]
61 def addTriangle(self, material_index, v0, v1, v2, uv0, uv1, uv2):
62 vertexArray=self.getVertexArray(material_index)
63 vertexArray.vertices.append(v0.x)
64 vertexArray.vertices.append(v0.y)
65 vertexArray.vertices.append(v0.z)
66 vertexArray.vertices.append(v1.x)
67 vertexArray.vertices.append(v1.y)
68 vertexArray.vertices.append(v1.z)
69 vertexArray.vertices.append(v2.x)
70 vertexArray.vertices.append(v2.y)
71 vertexArray.vertices.append(v2.z)
72 vertexArray.uvarray.append(uv0.x)
73 vertexArray.uvarray.append(uv0.y)
74 vertexArray.uvarray.append(uv1.x)
75 vertexArray.uvarray.append(uv1.y)
76 vertexArray.uvarray.append(uv2.x)
77 vertexArray.uvarray.append(uv2.y)
80 for m, vertexArray in self.vertexArrayWithUVMap.items():
86 for v in self.vertexArrayWithUVMap.values():
87 v.vertices=numpy.array(v.vertices, 'f')
88 v.uvarray=numpy.array(v.uvarray, 'f')
90 def onInitialize(self):
91 [m.onInitialize() for m in self.materials]