Esempio n. 1
0
def GenerateCollisionEgg(heightmap, output, input='data/collision3k.egg', scale=100.0):
    input_egg = EggData()
    input_egg.read(input)
    output_egg = EggData()
    output_egg.setCoordinateSystem(CS_default)
    output_egg.stealChildren(input_egg)
    VertexPool = output_egg.getChildren()[1]
    print("Generating mesh, this may take a while...", end="")
    for i in range(VertexPool.getHighestIndex()):
        if i%20000 == 0:
            try:
                base.graphicsEngine.renderFrame()
                print('.', end="")
            except:
                pass
        vert = VertexPool.getVertex(i)
        x0, y0, _ = vert.getPos3()
        #x, y = int(floor(x0+0.5)), int(floor(y0+0.5))
        x, y = int(x0), int(y0)
        if x==512: x=511
        elif x==0: x=1
        if y==512: y=511
        elif y==0: y=1
        vert.setPos(LPoint3d(x0, y0, heightmap.getBright(x,512-y)*scale))

    output_egg.writeEgg(output)
Esempio n. 2
0
    def createGizmo(self, angleDegrees=360, numSteps=16, axis=0, scale=10):
        data = EggData()

        vp = EggVertexPool('fan')
        data.addChild(vp)

        poly = EggPolygon()
        data.addChild(poly)

        v = EggVertex()
        v.setPos(Point3D(0, 0, 0))
        poly.addVertex(vp.addVertex(v))

        angleRadians = deg2Rad(angleDegrees)

        for i in range(numSteps + 1):
            a = angleRadians * i / numSteps
            y = math.sin(a) * scale
            x = math.cos(a) * scale
            v = EggVertex()
            if axis is 0:
                v.setPos(Point3D(x, 0, y))
            elif axis is 1:
                v.setPos(Point3D(x, y, 0))
            else:
                v.setPos(Point3D(0, x, y))
            poly.addVertex(vp.addVertex(v))
        node = loadEggData(data)
        return NodePath(node)
Esempio n. 3
0
 def __init__(self):
     self.data = EggData()
     self.vtxPool = EggVertexPool('mopath')
     self.data.addChild(self.vtxPool)
     self.eggGroup = EggGroup('group')
     self.data.addChild(self.eggGroup)
     self.myverts = []
Esempio n. 4
0
def DisplacementUVSphere(radius,
                         heightmap,
                         scale,
                         rings=5,
                         sectors=5,
                         inv_texture_u=False,
                         inv_texture_v=True):
    data = EggData()
    pool = EggVertexPool('pool')
    vertices = []
    data.addChild(pool)
    R = 1. / (rings)
    S = 1. / (sectors)
    for r in range(0, rings + 1):
        for s in range(0, sectors + 1):
            cos_s = cos(2 * pi * s * S + pi)
            sin_s = sin(2 * pi * s * S + pi)
            sin_r = sin(pi * r * R)
            cos_r = cos(pi * r * R)
            x = cos_s * sin_r
            y = sin_s * sin_r
            z = cos_r
            vertex = EggVertex()
            u = s * S
            v = r * R
            height = radius + heightmap.get_height_uv(u, v) * scale
            vertex.setPos(LPoint3d(x * height, y * height, z * height))
            if inv_texture_v:
                v = 1.0 - v
            if inv_texture_u:
                u = 1.0 - u
            vertex.setUv(LPoint2d(u, v))
            pool.addVertex(vertex)
            vertices.append(vertex)

    index = 0
    for r in range(0, rings):
        for s in range(0, sectors):
            poly = EggPolygon()
            data.addChild(poly)
            poly.addVertex(vertices[index + sectors + 1])
            poly.addVertex(vertices[index])
            poly.addVertex(vertices[index + sectors])

            poly = EggPolygon()
            data.addChild(poly)
            poly.addVertex(vertices[index + sectors + 1])
            poly.addVertex(vertices[index + 1])
            poly.addVertex(vertices[index])
            index += 1
    data.removeUnusedVertices(True)
    data.recomputeVertexNormals(45)
    data.recomputeTangentBinormal(GlobPattern(""))
    node = loadEggData(data)
    path = NodePath(node)
    path.flattenStrong()
    return path
Esempio n. 5
0
    def make_root_node(self):
        egg_root = EggData()
        egg_root.set_coordinate_system(CS_zup_right)  # Z-up

        egg_comment = EggComment(
            '', 'KITSUNETSUKI Asset Tools by kitsune.ONE - '
            'https://github.com/kitsune-ONE-team/KITSUNETSUKI-Asset-Tools')
        egg_root.add_child(egg_comment)

        return egg_root
Esempio n. 6
0
    def __init__(self, in_file, out_file):
        #New container for data:
        self.data = EggData()

        #New Container for vertex:
        self.vertexPool = EggVertexPool('model')

        #Adding vertexPool to the main data container:
        self.data.addChild(self.vertexPool) 
        self.load(in_file)
        self.data.setCoordinateSystem(CSZupRight)
        self.data.writeEgg(out_file)
Esempio n. 7
0
 def toEgg(self):
     # make a new egg
     egg = EggData()
     # convert polygon faces
     if len(self.faces) > 0:
         for objname in self.objects:
             for groupname in self.groups:
                 self.__facestoegg(egg, objname, groupname)
     # convert polylines
     if len(self.polylines) > 0:
         for objname in self.objects:
             for groupname in self.groups:
                 self.__polylinestoegg(egg, objname, groupname)
     return egg
Esempio n. 8
0
 def toEgg(self, verbose=True):
     if verbose: print("converting...")
     # make a new egg
     egg = EggData()
     # convert polygon faces
     if len(self.faces) > 0:
         for objname in self.objects:
             for groupname in self.groups:
                 self.__facestoegg(egg, objname, groupname)
     # convert polylines
     if len(self.polylines) > 0:
         for objname in self.objects:
             for groupname in self.groups:
                 self.__polylinestoegg(egg, objname, groupname)
     return egg
Esempio n. 9
0
    def make_circle(self, num_steps):
        data = EggData()

        vertex_pool = EggVertexPool('fan')
        data.addChild(vertex_pool)

        poly = EggPolygon()
        data.addChild(poly)

        for i in range(num_steps + 1):
            angle = 2 * math.pi * i / num_steps
            y = math.sin(angle) * config.minimap.size / 2
            x = math.cos(angle) * config.minimap.size / 2

            vertex = EggVertex()
            vertex.setPos(Point3D(x, 0, y))
            poly.addVertex(vertex_pool.addVertex(vertex))

        node = loadEggData(data)
        return node
Esempio n. 10
0
    def createCuttingPlanes(self):
        self.planes = self.render.attachNewNode("planes")
        pl = self.planes.attachNewNode("pl")
        data = EggData()
        self.planedata = []

        vp = EggVertexPool('plane')
        data.addChild(vp)

        fac = 1.0
        expanse = 10.0
        rng = 4
        for i in range(-rng, rng):
            poly = EggPolygon()
            data.addChild(poly)

            self.planedata.append(i * fac)

            v = EggVertex()
            v.setPos(Point3D(i * fac, -expanse, -expanse))
            poly.addVertex(vp.addVertex(v))
            v = EggVertex()
            v.setPos(Point3D(i * fac, -expanse, +expanse))
            poly.addVertex(vp.addVertex(v))
            v = EggVertex()
            v.setPos(Point3D(i * fac, +expanse, +expanse))
            poly.addVertex(vp.addVertex(v))
            v = EggVertex()
            v.setPos(Point3D(i * fac, +expanse, -expanse))
            poly.addVertex(vp.addVertex(v))

        node = loadEggData(data)
        np = NodePath(node)
        np.reparentTo(pl)
        np.setColor(0, 1, 0, 1)
        np.setTwoSided(True)
        np.setTransparency(TransparencyAttrib.MAlpha)
        np.setAlphaScale(0.1)
        np.setCollideMask(BitMask32(0x0))
        return self.planes
Esempio n. 11
0
def makeEgg(filename):

    # Egg data
    vp = EggVertexPool('sky')

    data = EggData()
    data.addChild(vp)
    data.setCoordinateSystem(1)  # CS_zup_right

    # Vertices
    vmap = {}
    for idx, (x, y, z) in enumerate(vertices):
        vmap[idx] = makeVertex(vp, x, y, z)

    # Faces
    for (i1, i2, i3) in indices:
        v1 = vmap[i1]
        v2 = vmap[i2]
        v3 = vmap[i3]
        makePoly(data, [v1, v2, v3])

    # Save
    data.recomputePolygonNormals()
    data.writeEgg(Filename(filename))
Esempio n. 12
0
            print("Warning: %s does not exist!" % filepath)
            shutil.copyfile(errorImage, filecheck)
            continue

        shutil.copyfile(filepath, filecheck)


# if outputFile:
#    if path.exists('texList.txt'):
#        os.remove('texList.txt')

with open('texList.txt', 'w+') as fp:
    pass

for model in eggFiles:
    egg = EggData()
    egg.read(model)
    texList = getTextureList(egg)
    cloneTextureDirs(texList, model)
    if verboseList:
        print(model, texList)
    if outputFile:
        with open('texList.txt', 'a') as f:
            print("%s\n%s\n" % (model, texList), file=f)

# Post migration
dirList = []
for dirs in os.listdir(os.path.join(eggDir, eggOutputDir)):
    dirList.append(os.path.join(eggDir, eggOutputDir, dirs))

#print(os.path.join(eggDir, eggOutputDir))
Esempio n. 13
0
 def __init__(self):
     self.egg = EggData()
     self.loadFile()
     list = self.getUVList(self.egg)
     self.setupGraph(list)