예제 #1
0
    def __build_Tris(self, sphere, mode):
        vdata = GeomVertexData("Data", self.__vformat[mode], Geom.UHStatic)
        _num_rows = len(sphere.pts)

        # Vertices.
        vertices = GeomVertexWriter(vdata, "vertex")
        vertices.reserveNumRows(_num_rows)
        for pt in sphere.pts:
            vertices.addData3f(*pt)

        # Map coords.
        if mode == "mid":
            mapcoords = GeomVertexWriter(vdata, "mapcoord")
            mapcoords.reserveNumRows(_num_rows)
            for mc in sphere.coords:
                u, v = mc[:2]
                mapcoords.addData2f(u, v)

        # Tris.
        prim = GeomTriangles(Geom.UHStatic)
        prim.reserveNumVertices(len(sphere.tris))
        for tri in sphere.tris:
            prim.addVertices(*tri)
        prim.closePrimitive()

        # Geom.
        geom = Geom(vdata)
        geom.addPrimitive(prim)
        geom_node = GeomNode("geom")
        geom_node.addGeom(geom)
        geom_np = NodePath(geom_node)
        return geom_np
예제 #2
0
파일: model.py 프로젝트: svfgit/solex
 def __build_Tris(self, sphere, mode):
     vdata = GeomVertexData("Data", self.__vformat[mode], Geom.UHStatic)
     _num_rows = len(sphere.pts)
      
     # Vertices.
     vertices = GeomVertexWriter(vdata, "vertex")
     vertices.reserveNumRows(_num_rows)
     for pt in sphere.pts:
         vertices.addData3f(*pt)
     
     # Map coords.
     if mode == "mid":
         mapcoords = GeomVertexWriter(vdata, "mapcoord")
         mapcoords.reserveNumRows(_num_rows)
         for mc in sphere.coords:
             u, v = mc[:2]
             mapcoords.addData2f(u,v)
         
     # Tris.
     prim = GeomTriangles(Geom.UHStatic)
     prim.reserveNumVertices(len(sphere.tris))
     for tri in sphere.tris:
         prim.addVertices(*tri)
     prim.closePrimitive()
     
     # Geom.
     geom = Geom(vdata)
     geom.addPrimitive(prim)
     geom_node = GeomNode("geom")
     geom_node.addGeom(geom)
     geom_np = NodePath(geom_node)
     return geom_np
예제 #3
0
 def __modify_Model(self, field, data):
     geom = self.node.modifyGeom(0)
     vdata = geom.modifyVertexData()
     vwriter = GeomVertexWriter(vdata, field)
     vwriter.reserveNumRows(len(data))
     set_data = self.set_dict[field]
     for datum in data:
         set_data(vwriter, *datum)
     geom.setVertexData(vdata)
예제 #4
0
파일: model.py 프로젝트: svfgit/solex
 def __modify_Model(self, field, data):
     geom = self.node.modifyGeom(0)
     vdata = geom.modifyVertexData()
     vwriter = GeomVertexWriter(vdata, field)
     vwriter.reserveNumRows(len(data))
     set_data = self.set_dict[field]
     for datum in data:
         set_data(vwriter, *datum)
     geom.setVertexData(vdata)
예제 #5
0
파일: _model.py 프로젝트: svfgit/solex
 def __modify_Model(self, field, data):
     set_dict = {
         'vertex':GeomVertexWriter.setData3f,
         'normal':GeomVertexWriter.setData3f,
         'color':GeomVertexWriter.setData4f,
         'texcoord':GeomVertexWriter.setData2f,
         'info':GeomVertexWriter.setData4f,
         'ref':GeomVertexWriter.setData3f,
         'nbr':GeomVertexWriter.setData4i}
         
     geom = self.NP.node().modifyGeom(0)
     vdata = geom.modifyVertexData()
     vwriter = GeomVertexWriter(vdata, field)
     vwriter.reserveNumRows(len(data))
     set_data = set_dict[field]
     for datum in data:
         set_data(vwriter, *datum)
     geom.setVertexData(vdata)
예제 #6
0
    def __build_Patches(self, sphere):
        vdata = GeomVertexData("Data", self.__vformat['high'], Geom.UHStatic)
        vertices = GeomVertexWriter(vdata, "vertex")
        mapcoords = GeomVertexWriter(vdata, "mapcoord")
        texcoords = GeomVertexWriter(vdata, "texcoord")

        _num_rows = len(sphere.pts)
        vertices.reserveNumRows(_num_rows)
        mapcoords.reserveNumRows(_num_rows)
        texcoords.reserveNumRows(_num_rows)

        # Pts.
        for pt, uv, coords, in zip(sphere.pts, sphere.uvs, sphere.coords):
            vertices.addData3f(*pt)
            mapcoords.addData2f(*coords)
            texcoords.addData2f(*uv)  ## *.99+.01)

        # Patches.
        prim = GeomPatches(3, Geom.UHStatic)
        prim.reserveNumVertices(len(sphere.tris))
        for tri in sphere.tris:
            prim.addVertices(*tri)
        prim.closePrimitive()

        # Geom.
        geom = Geom(vdata)
        geom.addPrimitive(prim)
        geom_node = GeomNode("geom")
        geom_node.addGeom(geom)
        geom_np = NodePath(geom_node)
        return geom_np
예제 #7
0
파일: model.py 프로젝트: svfgit/solex
 def __build_Patches(self, sphere):
     vdata = GeomVertexData("Data", self.__vformat['high'], Geom.UHStatic)
     vertices = GeomVertexWriter(vdata, "vertex")
     mapcoords = GeomVertexWriter(vdata, "mapcoord")
     texcoords = GeomVertexWriter(vdata, "texcoord")
     
     _num_rows = len(sphere.pts)
     vertices.reserveNumRows(_num_rows)
     mapcoords.reserveNumRows(_num_rows)
     texcoords.reserveNumRows(_num_rows)
     
     # Pts.
     for pt, uv, coords, in zip(sphere.pts, sphere.uvs, sphere.coords):
         vertices.addData3f(*pt)
         mapcoords.addData2f(*coords)
         texcoords.addData2f(*uv) ## *.99+.01)
     
     # Patches.
     prim = GeomPatches(3, Geom.UHStatic)
     prim.reserveNumVertices(len(sphere.tris))
     for tri in sphere.tris:
         prim.addVertices(*tri)
     prim.closePrimitive()
     
     # Geom.
     geom = Geom(vdata)
     geom.addPrimitive(prim)
     geom_node = GeomNode("geom")
     geom_node.addGeom(geom)
     geom_np = NodePath(geom_node)
     return geom_np