X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=examples%2Fopengl%2Fvertexarray.py;h=b9dee7b8bb0e4b08751e6b67e0be765d0d295aee;hb=HEAD;hp=1c3b502cc86334436a2a16460246e2c6cda7b9d2;hpb=ea48ac6ecdd69a4c3e033195d2da8f7e260370dd;p=meshio%2Fpymeshio.git diff --git a/examples/opengl/vertexarray.py b/examples/opengl/vertexarray.py index 1c3b502..b9dee7b 100644 --- a/examples/opengl/vertexarray.py +++ b/examples/opengl/vertexarray.py @@ -61,6 +61,29 @@ class VertexArrayWithUV(object): glDisableClientState(GL_TEXTURE_COORD_ARRAY) glDisableClientState(GL_VERTEX_ARRAY) + def get_boundingbox(self): + vertices_size=len(self.vertices) + if(vertices_size==0): + return ([0, 0, 0], [0, 0, 0]) + def vertex_gen_factory(): + for i in range(0, vertices_size, 3): + yield [ + self.vertices[i], + self.vertices[i+1], + self.vertices[i+2] + ] + vertex_gen=vertex_gen_factory() + v=next(vertex_gen) + max_v=v[:] + min_v=v[:] + for v in vertex_gen: + min_v[0]=min(min_v[0], v[0]) + min_v[1]=min(min_v[1], v[1]) + min_v[2]=min(min_v[2], v[2]) + max_v[0]=max(max_v[0], v[0]) + max_v[1]=max(max_v[1], v[1]) + max_v[2]=max(max_v[2], v[2]) + return (min_v, max_v) ''' インデックス参照頂点配列 @@ -120,6 +143,38 @@ class IndexedVertexArray(object): glDisableClientState(GL_VERTEX_ARRAY) def optimize(self): - self.vertices=numpy.array(self.vertices, 'f') - self.uvlist=numpy.array(self.uvlist, 'f') + self.vertices=numpy.array(self.vertices, numpy.float32) + self.uvlist=numpy.array(self.uvlist, numpy.float32) + for m, indices in self.indicesMap.items(): + self.indicesMap[m]=numpy.array(indices, numpy.uint32) + + def get_boundingbox(self): + vertices_size=len(self.vertices) + if(vertices_size==0): + return ([0, 0, 0], [0, 0, 0]) + def vertex_gen_factory(): + for i in range(0, vertices_size, 4): + yield [ + self.vertices[i], + self.vertices[i+1], + self.vertices[i+2] + ] + vertex_gen=vertex_gen_factory() + v=next(vertex_gen) + max_v=v[:] + min_v=v[:] + for v in vertex_gen: + if v[0]max_v[0]: + max_v[0]=v[0] + if v[1]>max_v[1]: + max_v[1]=v[1] + if v[2]>max_v[2]: + max_v[2]=v[2] + return (min_v, max_v)