Пример #1
0
	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.")
Пример #2
0
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)
Пример #3
0
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)