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)
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)
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 = []
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
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
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)
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
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
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
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
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))
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))
def __init__(self): self.egg = EggData() self.loadFile() list = self.getUVList(self.egg) self.setupGraph(list)