X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=examples%2Fopengl%2Fvertexarraymap.py;h=8f51fa713bbd6bdf732daaed2bd31bf06a427b1b;hb=a678c04bd9942eb915a1d07caac747ef5d0f8556;hp=d242419e26bba7847dbb85c63233bc89b6522bb4;hpb=f2381b1a90cf4781c5e3dbf9a6762e15ec63f39b;p=meshio%2Fpymeshio.git diff --git a/examples/opengl/vertexarraymap.py b/examples/opengl/vertexarraymap.py index d242419..8f51fa7 100644 --- a/examples/opengl/vertexarraymap.py +++ b/examples/opengl/vertexarraymap.py @@ -42,20 +42,20 @@ class VertexArrayMap(object): for v in self.vertexArrayMap.values(): v.vertices=numpy.array(v.vertices, 'f') - ''' 頂点配列をマテリアル毎に分別する(UV付き) ''' class VertexArrayMapWithUV(object): - def __init__(self, materials): - self.materials=materials + def __init__(self): + self.materials=[] self.vertexArrayWithUVMap={} + def addMaterial(self, material): + self.materials.append(material) + self.vertexArrayWithUVMap[material]=vertexarray.VertexArrayWithUV([], []) + def getVertexArray(self, material_index): material=self.materials[material_index] - if not material in self.vertexArrayWithUVMap: - vertexArray=vertexarray.VertexArrayWithUV([], []) - self.vertexArrayWithUVMap[material]=vertexArray return self.vertexArrayWithUVMap[material] def addTriangle(self, material_index, v0, v1, v2, uv0, uv1, uv2): @@ -88,5 +88,21 @@ class VertexArrayMapWithUV(object): v.uvarray=numpy.array(v.uvarray, 'f') def onInitialize(self): - [m.onInitialize() for m in self.materials] + #[m.onInitialize() for m in self.materials] + pass + + def get_boundingbox(self): + if len(self.vertexArrayWithUVMap)==0: + return ([0, 0, 0], [0, 0, 0]) + gen=iter(self.vertexArrayWithUVMap.values()) + (min_v, max_v)=next(gen).get_boundingbox() + for va in gen: + (va_min_v, va_max_v)=va.get_boundingbox() + min_v[0]=min(min_v[0], va_min_v[0]) + min_v[1]=min(min_v[1], va_min_v[1]) + min_v[2]=min(min_v[2], va_min_v[2]) + max_v[0]=max(max_v[0], va_max_v[0]) + max_v[1]=max(max_v[1], va_max_v[1]) + max_v[2]=max(max_v[2], va_max_v[2]) + return (min_v, max_v)