def endDocument(self): """ Invoked when mesh processing is done. Used for realizing the mesh from collected vertex/faces and texturizing info. """ # report print("Finished loading file, constructing mesh...") Blender.Window.DrawProgressBar(0.9, "Building mesh...") # build object meshtools.create_mesh(self.verts, self.faces, self.objName, self.faceuvs, self.uvs) print("Done, object built") # load corresponding images and set texture Blender.Window.DrawProgressBar(0.95, "Loading/Applying Texture...") colorTex, specTex = None, None # convert images into textures if self.colorTexture: colTexFName = FindTexture(self.path, self.colorTexture) if colTexFName != None: colorImg = Image.Load(colTexFName) colorTex = Texture.New(self.objName + ".col.tx") colorTex.type = Texture.Types.IMAGE colorTex.image = colorImg if self.specTexture: specTexFName = FindTexture(self.path, self.specTexture) if specTexFName != None: specImg = Image.Load(specTexFName) specTex = Texture.New(self.objName + ".spe.tx") specTex.type = Texture.Types.IMAGE specTex.image = specImg # make material with them and all other previously collected data mat = Material.New(self.objName + ".mat") mat.mode |= Material.Modes.TEXFACE | Material.Modes.SHADOW | Material.Modes.TRACEABLE | Material.Modes.ZTRANSP mat.specTransp = 1.0 if self.alpha : mat.alpha = self.alpha if self.rgbCol : mat.rgbCol = self.rgbCol if self.amb : mat.amb = self.amb if self.emit : mat.emit = self.emit if self.spec : mat.spec = self.spec if self.specCol : mat.specCol = self.specCol if colorTex: mat.setTexture(0, colorTex, Texture.TexCo.UV, Texture.MapTo.COL) if specTex: mat.setTexture(1, specTex, Texture.TexCo.UV, Texture.MapTo.SPEC) # apply to mesh obj = Object.Get(self.objName) mesh = obj.data # mesh.mode = NMesh.Modes.NOVNORMALSFLIP # uncomment the following if you want models automatically sub-surfaced """for currFace in mesh.faces: currFace.smooth = 1 mesh.setSubDivLevels([1,2]) mesh.setMode("SubSurf", "TwoSided")""" mesh.setMode("TwoSided") mesh.addMaterial(mat) mesh.update(1) # Done, notify user Blender.Window.DrawProgressBar(1.0, "Done.")
def read(filename): #start = time.clock() file = open(filename, "rb") raw = [] for line in file: #.xreadlines(): data = line.split() if data[0] == "vertex": vert = map(float, data[1:]) raw.append(vert) tri = [] for i in xrange(0, len(raw), 3): tri.append(raw[i] + raw[i + 1] + raw[i + 2]) #$import pprint; pprint.pprint(tri) # Collect data from RAW format faces = [] for line in tri: f1, f2, f3, f4, f5, f6, f7, f8, f9 = line faces.append([(f1, f2, f3), (f4, f5, f6), (f7, f8, f9)]) # Generate verts and faces lists, without duplicates verts = [] coords = {} index = 0 for i in xrange(len(faces)): for j in xrange(len(faces[i])): vertex = faces[i][j] if not coords.has_key(vertex): coords[vertex] = index index += 1 verts.append(vertex) faces[i][j] = coords[vertex] objname = Blender.sys.splitext(Blender.sys.basename(filename))[0] meshtools.create_mesh(verts, faces, objname) Blender.Window.DrawProgressBar(1.0, '') # clear progressbar file.close() #end = time.clock() #seconds = " in %.2f %s" % (end-start, "seconds") message = "Successfully imported " + Blender.sys.basename( filename) # + seconds meshtools.print_boxed(message)
def read(filename): #start = time.clock() file = open(filename, "rb") raw = [] for line in file: #.xreadlines(): data = line.split() if data[0] == "vertex": vert = map(float, data[1:]) raw.append(vert) tri = [] for i in xrange(0, len(raw), 3): tri.append(raw[i] + raw[i+1] + raw[i+2]) #$import pprint; pprint.pprint(tri) # Collect data from RAW format faces = [] for line in tri: f1, f2, f3, f4, f5, f6, f7, f8, f9 = line faces.append([(f1, f2, f3), (f4, f5, f6), (f7, f8, f9)]) # Generate verts and faces lists, without duplicates verts = [] coords = {} index = 0 for i in xrange(len(faces)): for j in xrange(len(faces[i])): vertex = faces[i][j] if not coords.has_key(vertex): coords[vertex] = index index += 1 verts.append(vertex) faces[i][j] = coords[vertex] objname = Blender.sys.splitext(Blender.sys.basename(filename))[0] meshtools.create_mesh(verts, faces, objname) Blender.Window.DrawProgressBar(1.0, '') # clear progressbar file.close() #end = time.clock() #seconds = " in %.2f %s" % (end-start, "seconds") message = "Successfully imported " + Blender.sys.basename(filename)# + seconds meshtools.print_boxed(message)