Пример #1
0
 def writeHeader(self):
     bfile = sys.expandpath(Blender.Get('filename'))
     self.file.write("#VRML V2.0 utf8\n\n")
     self.file.write("# This file was authored with Blender " \
         "(http://www.blender.org/)\n")
     self.file.write("# Blender version %s\n" % Blender.Get('version'))
     self.file.write("# Blender file %s\n" % sys.basename(bfile))
     self.file.write("# Exported using VRML97 exporter " \
         "v1.55 (2006/01/17)\n\n")
Пример #2
0
	def writeHeader(self):
		bfile = sys.expandpath(Blender.Get('filename'))
		self.file.write("#VRML V2.0 utf8\n\n")
		self.file.write("# This file was authored with Blender " \
						"(http://www.blender.org/)\n")
		self.file.write("# Blender version %s\n" % Blender.Get('version'))
		self.file.write("# Blender file %s\n" % sys.basename(bfile))
		self.file.write("# Exported using VRML97 exporter " \
						"v1.55 (2006/01/17)\n\n")
Пример #3
0
 def writeHeader(self):
     #bfile = sys.expandpath( Blender.Get('filename') ).replace('<', '&lt').replace('>', '&gt')
     bfile = self.filename.replace('<', '&lt').replace('>', '&gt') # use outfile name
     self.file.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
     self.file.write("<!DOCTYPE X3D PUBLIC \"ISO//Web3D//DTD X3D 3.0//EN\" \"http://www.web3d.org/specifications/x3d-3.0.dtd\">\n")
     self.file.write("<X3D version=\"3.0\" profile=\"Immersive\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema-instance\" xsd:noNamespaceSchemaLocation=\"http://www.web3d.org/specifications/x3d-3.0.xsd\">\n")
     self.file.write("<head>\n")
     self.file.write("\t<meta name=\"filename\" content=\"%s\" />\n" % sys.basename(bfile))
     self.file.write("\t<meta name=\"generator\" content=\"Blender %s\" />\n" % Blender.Get('version'))
     self.file.write("\t<meta name=\"translator\" content=\"X3D exporter v1.55 (2006/01/17)\" />\n")
     self.file.write("</head>\n")
     self.file.write("<Scene>\n")
Пример #4
0
	def texture(self, faces):
		tex = ""
		for f in faces:
			if f.image:
				tex = f.image.name
				break
		if tex:
			image = Image.Get(tex)
			texfname = image.filename
			if SET_TEX_DIR:
				texfname = bsys.basename(texfname)
				if TEX_DIR:
					texfname = bsys.join(TEX_DIR, texfname)
			buf = 'texture "%s"\n' % texfname
			xrep = image.xrep
			yrep = image.yrep
			buf += 'texrep %s %s\n' % (xrep, yrep)
			self.file.write(buf)
	def texture(self, faces):
		tex = ""
		for f in faces:
			if f.image:
				tex = f.image.name
				break
		if tex:
			image = Image.Get(tex)
			texfname = image.filename
			if SET_TEX_DIR:
				texfname = bsys.basename(texfname)
				if TEX_DIR:
					texfname = bsys.join(TEX_DIR, texfname)
			buf = 'texture "%s"\n' % texfname
			xrep = image.xrep
			yrep = image.yrep
			# buf += 'texrep %s %s\n' % (xrep, yrep)
			self.file.write(buf)
Пример #6
0
 def writeHeader(self):
     #bfile = sys.expandpath( Blender.Get('filename') ).replace('<', '&lt').replace('>', '&gt')
     bfile = self.filename.replace('<',
                                   '&lt').replace('>',
                                                  '&gt')  # use outfile name
     self.file.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
     self.file.write(
         "<!DOCTYPE X3D PUBLIC \"ISO//Web3D//DTD X3D 3.0//EN\" \"http://www.web3d.org/specifications/x3d-3.0.dtd\">\n"
     )
     self.file.write(
         "<X3D version=\"3.0\" profile=\"Immersive\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema-instance\" xsd:noNamespaceSchemaLocation=\"http://www.web3d.org/specifications/x3d-3.0.xsd\">\n"
     )
     self.file.write("<head>\n")
     self.file.write("\t<meta name=\"filename\" content=\"%s\" />\n" %
                     sys.basename(bfile))
     self.file.write(
         "\t<meta name=\"generator\" content=\"Blender %s\" />\n" %
         Blender.Get('version'))
     self.file.write(
         "\t<meta name=\"translator\" content=\"X3D exporter v1.55 (2006/01/17)\" />\n"
     )
     self.file.write("</head>\n")
     self.file.write("<Scene>\n")
Пример #7
0
		test = AC3DExport(OBJS, file)
	except:
		file.close()
		raise
	else:
		file.close()
		endtime = bsys.time() - starttime
		REPORT_DATA['main'].append("Done. Saved to: %s" % filename)
		REPORT_DATA['main'].append("Data exported in %.3f seconds." % endtime)

	if VERBOSE: report_data()
	Blender.Window.WaitCursor(0)


# -- End of definitions

scn = Blender.Scene.GetCurrent()

if ONLY_SELECTED:
	OBJS = list(scn.objects.context)
else:
	OBJS = list(scn.objects)

if not OBJS:
	Blender.Draw.PupMenu('ERROR: no objects selected')
else:
	fname = bsys.makename(ext=".ac")
	if EXPORT_DIR:
		fname = bsys.join(EXPORT_DIR, bsys.basename(fname))
	FileSelector(fs_callback, "Export AC3D", fname)
		test = AC3DExport(OBJS, file)
	except:
		file.close()
		raise
	else:
		file.close()
		endtime = bsys.time() - starttime
		REPORT_DATA['main'].append("Done. Saved to: %s" % filename)
		REPORT_DATA['main'].append("Data exported in %.3f seconds." % endtime)

	if VERBOSE: report_data()
	Blender.Window.WaitCursor(0)


# -- End of definitions

scn = Blender.Scene.GetCurrent()

if ONLY_SELECTED:
	OBJS = list(scn.objects.context)
else:
	OBJS = list(scn.objects)

if not OBJS:
	Blender.Draw.PupMenu('ERROR: no objects selected')
else:
	fname = bsys.makename(ext=".ac")
	if EXPORT_DIR:
		fname = bsys.join(EXPORT_DIR, bsys.basename(fname))
	FileSelector(fs_callback, "Export AC3D", fname)
Пример #9
0
    def texture(self, faces, mesh):
        uvlayer0 = ""
        uvlayer1 = ""
        uvlayer2 = ""
        uvlayer3 = ""

        uvlayers = mesh.getUVLayerNames()
        numlayer = len(uvlayers)
        if numlayer > 0:
            uvlayer0 = uvlayers[0]
        if numlayer > 1:
            uvlayer1 = uvlayers[1]
        if numlayer > 2:
            uvlayer2 = uvlayers[2]
        if numlayer > 3:
            uvlayer3 = uvlayers[3]

        mmat = mesh.materials
        tex = ""
        for f in faces:
            if f.image:
                tex = f.image.name
                break
        if tex:
            image = Image.Get(tex)
            texfname = image.filename
            if SET_TEX_DIR:
                texfname = bsys.basename(texfname)
                if TEX_DIR:
                    texfname = bsys.join(TEX_DIR, texfname)
            buf = 'texture "%s" base\n' % texfname
            #TODO support multi textures
            #lookup second texture value
            fmat = mmat[f.mat]
            tex1 = ""
            tex2 = ""
            mtextures = fmat.getTextures()
            for mtex in mtextures:
                if not (mtex == None):
                    if mtex.uvlayer == uvlayer1:
                        img1 = mtex.tex.getImage()
                        tex1 = img1.getFilename()
                        tex1 = bsys.basename(tex1)
                    if mtex.uvlayer == uvlayer2:
                        img2 = mtex.tex.getImage()
                        tex2 = img2.getFilename()
                        tex2 = bsys.basename(tex2)

            if tex1 != "":
                buf += 'texture "'
                buf += tex1
                buf += '" tiled\n'
            else:
                buf += 'texture empty_texture_no_mapping skids\n'

            if tex2 != "":
                buf += 'texture "'
                buf += tex2
                buf += '" tiled\n'
            else:
                buf += 'texture empty_texture_no_mapping skids\n'

            buf += 'texture empty_texture_no_mapping shad\n'

            xrep = image.xrep
            yrep = image.yrep
            #			buf += 'texrep %s %s\n' % (xrep, yrep)
            self.file.write(buf)
Пример #10
0
	def testAC3DImport(self):

		FACE_TWOSIDE = Mesh.FaceModes['TWOSIDE']
		FACE_TEX = Mesh.FaceModes['TILES']
		#FACE_TEX = Mesh.FaceModes['TEX']
		MESH_AUTOSMOOTH = Mesh.Modes['AUTOSMOOTH']

		MAT_MODE_ZTRANSP = Material.Modes['ZTRANSP']
		MAT_MODE_TRANSPSHADOW = Material.Modes['TRANSPSHADOW']

		scene = self.scene

		bl_images = {} # loaded texture images
		missing_textures = [] # textures we couldn't find
		bl_textures = {} # loaded textures

		objlist = self.objlist[1:] # skip 'world'

		#bmat = []
		bmat = {}
		m = None
		has_transp_mats = False
		for mat in self.mlist:
			name = mat[0]
#			if name=='':
			name = 'BaseMaterial'
			if m== None:
				m = Material.New(name)
			
			m.rgbCol = (mat[1][0], mat[1][1], mat[1][2])
			m.amb = mat[2]
			m.emit = mat[3]
			m.specCol = (mat[4][0], mat[4][1], mat[4][2])
			m.spec = mat[5]
			m.alpha = mat[6]
			#force it to zero because that is how Speed Dreams / Torcs work
			m.alpha = 0.0
			if m.alpha < 1.0:
				m.mode |= MAT_MODE_ZTRANSP
				has_transp_mats = True
#			bmat[name]=m

#		if has_transp_mats:
#			for mat in bmat:
#				mat.mode |= MAT_MODE_TRANSPSHADOW

		obj_idx = 0 # index of current obj in loop
		for obj in objlist:
			if obj.type == AC_GROUP:
				continue
			elif obj.type == AC_LIGHT:
				light = Lamp.New('Lamp')
				object = scene.objects.new(light, obj.name)
				#object.select(True)
				obj.bl_obj = object
				if obj.data:
					light.name = obj.data
				continue

			# type AC_POLY:

			# old .ac files used empty meshes as groups, convert to a real ac group
			if not obj.vlist and obj.kids:
				obj.type = AC_GROUP
				continue

				

			mesh = Mesh.New()
			object = scene.objects.new(mesh, obj.name)
			#object.select(True)
			obj.bl_obj = object
			if obj.data: mesh.name = obj.data
			mesh.degr = obj.crease # will auto clamp to [1, 80]

			if not obj.vlist: # no vertices? nothing more to do
				continue
			
			#Setup UV Layers
			mesh.addUVLayer("ImageUV")
			mesh.addUVLayer("ShadowUV")
			mesh.activeUVLayer ="ImageUV"
			
			mesh.verts.extend(obj.vlist)

			objmat_indices = []

			for e in obj.elist:
				mesh.edges.extend(e)

			if obj.flist_v:
				mesh.faces.extend(obj.flist_v)

				facesnum = len(mesh.faces)

				if facesnum == 0: # shouldn't happen, of course
					continue

				mesh.faceUV = True

				# checking if the .ac file had duplicate faces (Blender ignores them)
				if facesnum != len(obj.flist_v):
					# it has, ugh. Let's clean the uv list:
					lenfl = len(obj.flist_v)
					flist = obj.flist_v
					uvlist = obj.flist_uv
					uvlist2 = obj.flist_uv2
					cfglist = obj.flist_cfg
					for f in flist:
						f.sort()
					fi = lenfl
					while fi > 0: # remove data related to duplicates
						fi -= 1
						if flist[fi] in flist[:fi]:
							uvlist.pop(fi)
							cfglist.pop(fi)
							if len(uvlist2)>0:
								uvlist2.pop(fi)

				img = None
				img2 = None
					
				if obj.tex != '':
					if obj.tex in bl_images.keys():
						img = bl_images[obj.tex]
					elif obj.tex not in missing_textures:
						texfname = None
						objtex = obj.tex
						baseimgname = bsys.basename(objtex)
						if bsys.exists(objtex) == 1:
							texfname = objtex
						else:
							if baseimgname.find('\\') > 0:
								baseimgname = bsys.basename(objtex.replace('\\','/'))
							objtex = bsys.join(self.importdir, baseimgname)
							if bsys.exists(objtex) == 1:
								texfname = objtex
							else:
								objtex = bsys.join(TEXTURES_DIR2, baseimgname)
								if bsys.exists(objtex):
									texfname = objtex
								else:
                                                                        inform("Couldn't find texture in alt path %s" % TEXTURES_DIR2)
						if texfname:
							try:
								img = Image.Load(texfname)
								# Commented because it's unnecessary:
								#img.xrep = int(obj.texrep[0])
								#img.yrep = int(obj.texrep[1])
								if img:
									bl_images[obj.tex] = img															
							except:
								inform("THROW:  Couldn't load texture: %s" % baseimgname)
						else:
							missing_textures.append(obj.tex)
							inform("Couldn't find texture: %s" % baseimgname)
							
				if obj.tex2 != '':
					if obj.tex2 in bl_images.keys():
						img2 = bl_images[obj.tex2]
					elif obj.tex2 not in missing_textures:
						texfname = None
						objtex2 = obj.tex2
						baseimgname = bsys.basename(objtex2)
						if bsys.exists(objtex2) == 1:
							texfname = objtex2
						else:
							if baseimgname.find('\\') > 0:
								baseimgname = bsys.basename(objtex2.replace('\\','/'))
							objtex2 = bsys.join(self.importdir, baseimgname)
							if bsys.exists(objtex) == 1:
								texfname = objtex2
							else:
								objtex2 = bsys.join(TEXTURES_DIR2, baseimgname)
								if bsys.exists(objtex2):
                                                                        texfname = objtex2
								else:
                                                                        inform("Couldn't find texture in alt path %s" % objtex2)

						if texfname:
							try:
								img2 = Image.Load(texfname)
								# Commented because it's unnecessary:
								#img.xrep = int(obj.texrep[0])
								#img.yrep = int(obj.texrep[1])
								if img2:
									bl_images[obj.tex2] = img2															
							except:
								inform("THROW:  Couldn't load texture: %s" % baseimgname)
						else:
							missing_textures.append(obj.tex2)
							inform("Couldn't find texture: %s" % baseimgname)
							
				if obj.tex not in bmat.keys():							
					if img:
						#Create a new material with a texture attached to it
						m1 = Material.New(obj.tex)
						m1.rgbCol = m.rgbCol
						m1.amb = m.amb
						m1.emit = m.emit
						m1.specCol = m.specCol
						m1.spec = m.spec
						m1.alpha = m.alpha
						texname = 'Tex%s' %obj.tex
						texname2 = 'Tex2%s' %obj.tex
						
						if img:
							iname = img.getName()
							if iname not in bl_textures.keys():
								basetex = Texture.New(iname)
								basetex.setType('Image')
								map1=Texture.MapTo.COL|Texture.MapTo.ALPHA
								basetex.image = img
								bl_textures[iname] = basetex
							
							basetex = bl_textures[iname]
							m1.setTexture(0,basetex,Texture.TexCo.UV,map1)
						
						if img2:
							iname2 = img2.getName()
							if iname2 not in bl_textures.keys():
								basetex2 = Texture.New(iname2)
								basetex2.setType('Image')
								map2=Texture.MapTo.COL
								basetex2.image = img2
								bl_textures[iname2] = basetex2					
							else:
								map2=Texture.MapTo.COL							
								
							basetex2 = bl_textures[iname2]					
							m1.setTexture(1,basetex2,Texture.TexCo.UV,map2)
										
						if m1.alpha < 1.0:
							m1.mode |= MAT_MODE_ZTRANSP
							has_transp_mats = True				
					
						mtextures = m1.getTextures()
						tunit = 0				    
						for mtex in mtextures:
							if not ( mtex == None ):
								if tunit == 1:
									mtex.uvlayer ="ShadowUV"
									mtex.colfac=0.3									
									tunit = tunit+1							
								if tunit ==0:
									mtex.uvlayer ="ImageUV"

									tunit = tunit+1

						bmat[obj.tex]=m1

	
				if obj.tex != '':
					if obj.tex in bl_images.keys():
						img = bl_images[obj.tex]

				#TODO attach correct materials to objects
				if obj.tex in bmat.keys():
					mat1 = bmat[obj.tex]
					if len(mesh.materials)==0:
						mesh.materials+= [mat1]
				else:
					inform('Material %s not found\n' % obj.tex)

				for i in range(facesnum):
					f = obj.flist_cfg[i]
					fmat = f[0]
					is_smooth = f[1]
					twoside = f[2]
					bface = mesh.faces[i]
					bface.smooth = is_smooth
					if twoside: bface.mode |= FACE_TWOSIDE
					if img:
						bface.mode |= FACE_TEX
						bface.image = img
					#TODO handle material properly
					#bface.mat = objmat_indices.index(fmat)			
					bface.mat = 0
					fuv = obj.flist_uv[i]
					if len(obj.flist_uv2)>0:
						fuv2 = obj.flist_uv2[i]
						
					if obj.texoff:
						uoff = obj.texoff[0]
						voff = obj.texoff[1]
						urep = obj.texrep[0]
						vrep = obj.texrep[1]
						for uv in fuv:
							uv[0] *= urep
							uv[1] *= vrep
							uv[0] += uoff
							uv[1] += voff

						if len(fuv2)>0:
							for uv2 in fuv2:
								uv2[0] *= urep
								uv2[1] *= vrep
								uv2[0] += uoff
								uv2[1] += voff

					mesh.activeUVLayer ="ImageUV"
					mesh.faces[i].uv = fuv
					
					if len(fuv2)>0:
						mesh.activeUVLayer ="ShadowUV"
						mesh.faces[i].uv = fuv2
#						for uv2 in fuv2:
#							inform('UV2 coords %.5f %.5f\n' % (uv2[0],uv2[1]))

					mesh.activeUVLayer ="ImageUV"						
					
				# finally, delete the 1st vertex we added to prevent vindices == 0
				mesh.verts.delete(0)

				mesh.calcNormals()

				mesh.mode = MESH_AUTOSMOOTH

			obj_idx += 1

		self.build_hierarchy()
		scene.update()
Пример #11
0
def trace():
    #voici mes variables pouvant etre modifie
    #my variables
    global nbr_phoneme, mon_fichier_dico
    global let01, let02, let03, let04, let05, let06, let07, let08, let09, let10
    global let11, let12, let13, let14, let15, let16, let17, let18, let19, let20
    global let21, let22, let23, let24

    global let01selectkey, let02selectkey, let03selectkey, let04selectkey, let05selectkey
    global let06selectkey, let07selectkey, let08selectkey, let09selectkey, let10selectkey, let11selectkey
    global let12selectkey, let13selectkey, let14selectkey, let15selectkey, let16selectkey, let17selectkey
    global let18selectkey, let19selectkey, let20selectkey, let21selectkey, let22selectkey, let23selectkey
    global let24selectkey

    glClearColor(0.4, 0.5, 0.6, 0.0)
    glClear(GL_COLOR_BUFFER_BIT)

    glColor3d(1, 1, 1)
    glRasterPos2i(87, 375)
    Text("Blendersynchro V 2.0")
    glColor3d(1, 1, 1)
    glRasterPos2i(84, 360)
    Text("Programming: Dienben")

    glColor3d(0, 0, 0)
    glRasterPos2i(13, 342)
    Text("Lip Synchronization Tool")
    glColor3d(0, 0, 0)
    glRasterPos2i(13, 326)
    Text("Thanks to Chris Clawson and Liubomir Kovatchev")

    glColor3d(1, 1, 1)
    glRasterPos2i(5, 320)
    Text("_______________________________________________________")
    glColor3d(0, 0, 0)
    glRasterPos2i(6, 318)
    Text("_______________________________________________________")

    if (etape == 1):
        #cette etape permet de choisi la correspondance entre les phonemes et les cles
        #this stage offer the possibility to choose the mapping between phonems and shapes

        glColor3d(1, 1, 1)
        glRasterPos2i(140, 300)
        Text("Objet: " + Blender.Object.GetSelected()[0].getName())

        glColor3d(1, 1, 1)
        glRasterPos2i(5, 215)
        Text("Assign phonems to shapes:")

        #on mesure la taille de la liste de phonemes
        #this is the lenght of the phonem list
        nbr_phoneme = len(liste_phoneme)

        #on dessine les listes de choix
        #we draw the choice list

        #
        if (nbr_phoneme > 0):
            let01 = String(" ", 4, 5, 185, 30, 16, liste_phoneme[0], 3)
            glColor3d(0, 0, 0)
            glRasterPos2i(40, 188)
            Text("=")
            let01selectkey = Menu(key_menu, 50, 50, 185, 70, 16,
                                  let01selectkey.val)

#
        if (nbr_phoneme > 1):
            let02 = String(" ", 4, 150, 185, 30, 16, liste_phoneme[1], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(185, 188)
            Text("=")
            let02selectkey = Menu(key_menu, 51, 195, 185, 70, 16,
                                  let02selectkey.val)

#
        if (nbr_phoneme > 2):
            let03 = String(" ", 4, 5, 165, 30, 16, liste_phoneme[2], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(40, 168)
            Text("=")
            let03selectkey = Menu(key_menu, 52, 50, 165, 70, 16,
                                  let03selectkey.val)

#
        if (nbr_phoneme > 3):
            let04 = String(" ", 4, 150, 165, 30, 16, liste_phoneme[3], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(185, 168)
            Text("=")
            let04selectkey = Menu(key_menu, 53, 195, 165, 70, 16,
                                  let04selectkey.val)

    #
        if (nbr_phoneme > 4):
            let05 = String(" ", 4, 5, 145, 30, 16, liste_phoneme[4], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(40, 148)
            Text("=")
            let05selectkey = Menu(key_menu, 54, 50, 145, 70, 16,
                                  let05selectkey.val)

        #
        if (nbr_phoneme > 5):
            let06 = String(" ", 4, 150, 145, 30, 16, liste_phoneme[5], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(185, 148)
            Text("=")
            let06selectkey = Menu(key_menu, 55, 195, 145, 70, 16,
                                  let06selectkey.val)

    #
        if (nbr_phoneme > 6):
            let07 = String(" ", 4, 5, 125, 30, 16, liste_phoneme[6], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(40, 128)
            Text("=")
            let07selectkey = Menu(key_menu, 56, 50, 125, 70, 16,
                                  let07selectkey.val)

        #
        if (nbr_phoneme > 7):
            let08 = String(" ", 4, 150, 125, 30, 16, liste_phoneme[7], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(185, 128)
            Text("=")
            let08selectkey = Menu(key_menu, 57, 195, 125, 70, 16,
                                  let08selectkey.val)

        #
        if (nbr_phoneme > 8):
            let09 = String(" ", 4, 5, 105, 30, 16, liste_phoneme[8], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(40, 108)
            Text("=")
            let09selectkey = Menu(key_menu, 58, 50, 105, 70, 16,
                                  let09selectkey.val)

        #
        if (nbr_phoneme > 9):
            let10 = String(" ", 4, 150, 105, 30, 16, liste_phoneme[9], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(185, 108)
            Text("=")
            let10selectkey = Menu(key_menu, 59, 195, 105, 70, 16,
                                  let10selectkey.val)

        #
        if (nbr_phoneme > 10):
            let11 = String(" ", 4, 5, 85, 30, 16, liste_phoneme[10], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(40, 88)
            Text("=")
            let11selectkey = Menu(key_menu, 60, 50, 85, 70, 16,
                                  let11selectkey.val)

        #
        if (nbr_phoneme > 11):
            let12 = String(" ", 4, 150, 85, 30, 16, liste_phoneme[11], 2)
            glColor3d(0, 0, 0)
            Text("=")
            let12selectkey = Menu(key_menu, 61, 195, 85, 70, 16,
                                  let12selectkey.val)

        #
        if (nbr_phoneme > 12):
            let13 = String(" ", 4, 5, 65, 30, 16, liste_phoneme[12], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(40, 68)
            Text("=")
            let13selectkey = Menu(key_menu, 62, 50, 65, 70, 16,
                                  let13selectkey.val)

        #
        if (nbr_phoneme > 13):
            let14 = String(" ", 4, 150, 65, 30, 16, liste_phoneme[13], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(185, 68)
            Text("=")
            let14selectkey = Menu(key_menu, 63, 195, 65, 70, 16,
                                  let14selectkey.val)

        #
        if (nbr_phoneme > 14):
            let15 = String(" ", 4, 5, 45, 30, 16, liste_phoneme[14], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(40, 48)
            Text("=")
            let15selectkey = Menu(key_menu, 64, 50, 45, 70, 16,
                                  let15selectkey.val)

        #
        if (nbr_phoneme > 15):
            let16 = String(" ", 4, 150, 45, 30, 16, liste_phoneme[15], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(185, 48)
            Text("=")
            let16selectkey = Menu(key_menu, 65, 195, 45, 70, 16,
                                  let16selectkey.val)

        #
        if (nbr_phoneme > 16):
            let17 = String(" ", 4, 295, 185, 30, 16, liste_phoneme[16], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(330, 188)
            Text("=")
            let17selectkey = Menu(key_menu, 66, 340, 185, 70, 16,
                                  let17selectkey.val)

        #
        if (nbr_phoneme > 17):
            let18 = String(" ", 4, 440, 185, 70, 16, liste_phoneme[17], 8)
            glColor3d(0, 0, 0)
            glRasterPos2i(515, 188)
            Text("=")
            let18selectkey = Menu(key_menu, 67, 525, 185, 70, 16,
                                  let18selectkey.val)

        #
        if (nbr_phoneme > 18):
            let19 = String(" ", 4, 295, 165, 30, 16, liste_phoneme[18], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(330, 168)
            Text("=")
            let19selectkey = Menu(key_menu, 68, 340, 165, 70, 16,
                                  let19selectkey.val)

        #
        if (nbr_phoneme > 19):
            let20 = String(" ", 4, 440, 165, 70, 16, liste_phoneme[19], 8)
            glColor3d(0, 0, 0)
            glRasterPos2i(515, 168)
            Text("=")
            let20selectkey = Menu(key_menu, 69, 525, 165, 70, 16,
                                  let20selectkey.val)

        #
        if (nbr_phoneme > 20):
            let21 = String(" ", 4, 295, 145, 30, 16, liste_phoneme[20], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(330, 148)
            Text("=")
            let21selectkey = Menu(key_menu, 70, 340, 145, 70, 16,
                                  let21selectkey.val)

        #
        if (nbr_phoneme > 21):
            let22 = String(" ", 4, 440, 145, 70, 16, liste_phoneme[21], 8)
            glColor3d(0, 0, 0)
            glRasterPos2i(515, 148)
            Text("=")
            let22selectkey = Menu(key_menu, 71, 525, 145, 70, 16,
                                  let22selectkey.val)

        #
        if (nbr_phoneme > 22):
            let23 = String(" ", 4, 295, 125, 30, 16, liste_phoneme[22], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(330, 128)
            Text("=")
            let23selectkey = Menu(key_menu, 72, 340, 125, 70, 16,
                                  let23selectkey.val)

        #
        if (nbr_phoneme > 23):
            let24 = String(" ", 4, 440, 125, 70, 16, liste_phoneme[23], 8)
            glColor3d(0, 0, 0)
            glRasterPos2i(515, 128)
            Text("=")
            let24selectkey = Menu(key_menu, 73, 525, 125, 70, 16,
                                  let24selectkey.val)

        #
        if (nbr_phoneme > 24):
            let25 = String(" ", 4, 295, 105, 30, 16, liste_phoneme[24], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(330, 108)
            Text("=")
            let25selectkey = Menu(key_menu, 74, 340, 105, 70, 16,
                                  let25selectkey.val)

        #
        if (nbr_phoneme > 25):
            let26 = String(" ", 4, 440, 105, 70, 16, liste_phoneme[25], 8)
            glColor3d(0, 0, 0)
            glRasterPos2i(515, 108)
            Text("=")
            let26selectkey = Menu(key_menu, 75, 525, 105, 70, 16,
                                  let26selectkey.val)

        #
        if (nbr_phoneme > 26):
            let27 = String(" ", 4, 295, 85, 30, 16, liste_phoneme[26], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(330, 88)
            Text("=")
            let27selectkey = Menu(key_menu, 76, 340, 85, 70, 16,
                                  let27selectkey.val)

        #
        if (nbr_phoneme > 27):
            let28 = String(" ", 4, 440, 85, 70, 16, liste_phoneme[27], 8)
            glColor3d(0, 0, 0)
            glRasterPos2i(515, 88)
            Text("=")
            let28selectkey = Menu(key_menu, 77, 525, 85, 70, 16,
                                  let28selectkey.val)

        #
        if (nbr_phoneme > 28):
            let29 = String(" ", 4, 295, 65, 30, 16, liste_phoneme[28], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(330, 68)
            Text("=")
            let29selectkey = Menu(key_menu, 78, 340, 65, 70, 16,
                                  let29selectkey.val)

        #
        if (nbr_phoneme > 29):
            let30 = String(" ", 4, 440, 65, 70, 16, liste_phoneme[29], 8)
            glColor3d(0, 0, 0)
            glRasterPos2i(515, 68)
            Text("=")
            let30selectkey = Menu(key_menu, 79, 525, 65, 70, 16,
                                  let30selectkey.val)

        #
        if (nbr_phoneme > 30):
            let31 = String(" ", 4, 295, 45, 30, 16, liste_phoneme[30], 2)
            glColor3d(0, 0, 0)
            glRasterPos2i(330, 48)
            Text("=")
            let31selectkey = Menu(key_menu, 80, 340, 45, 70, 16,
                                  let31selectkey.val)

        #
        if (nbr_phoneme > 31):
            let32 = String(" ", 4, 440, 45, 70, 16, liste_phoneme[31], 8)
            glColor3d(0, 0, 0)
            glRasterPos2i(515, 48)
            Text("=")
            let32selectkey = Menu(key_menu, 81, 525, 45, 70, 16,
                                  let32selectkey.val)

        Button("Go", 3, 155, 5, 145, 22)

    if (etape == 2):
        glColor3d(1, 1, 1)
        glRasterPos2i(125, 200)
        Text("Operation Completed")

    if (etape == 0):
        glColor3d(1, 1, 1)
        glRasterPos2i(125, 200)
        Text(
            "Please select a Mesh'Object and Create all the IPO Curves for your Shapes"
        )

    if (etape == 3):
        #this stage permits to load a custom dictionnary
        load_file_text = "Load File"
        if mon_fichier_dico:
            Button("Import Loaded File", 2, 5, 5, 145, 22)
            glColor3d(1, 1, 1)
            glRasterPos2i(6, 50)
            Text("loaded file: %s" % basename(mon_fichier_dico))
            load_file_text = "Choose Another File"
        Button(load_file_text, 8, 125, 180, 145, 22)

    glRasterPos2i(6, 40)
    Text("_______________________________________________________")
    glColor3d(0, 0, 0)
    glRasterPos2i(6, 38)
    Text("_______________________________________________________")

    Button("Exit", 1, 305, 5, 80, 22)
Пример #12
0
	def texture(self, faces,mesh):
		uvlayer0=""
		uvlayer1=""
		uvlayer2=""
		uvlayer3=""

		uvlayers = mesh.getUVLayerNames()
		numlayer = len(uvlayers)
		if numlayer>0:
			uvlayer0 = uvlayers[0]
		if numlayer>1:
			uvlayer1 = uvlayers[1]
		if numlayer>2:
			uvlayer2 = uvlayers[2]
		if numlayer>3:
			uvlayer3 = uvlayers[3]

		mmat = mesh.materials;
		tex = ""
		for f in faces:
			if f.image:
				tex = f.image.name
				break
		if tex:
			image = Image.Get(tex)
			texfname = image.filename
			if SET_TEX_DIR:
				texfname = bsys.basename(texfname)
				if TEX_DIR:
					texfname = bsys.join(TEX_DIR, texfname)
			buf = 'texture "%s" base\n' % texfname
#TODO support multi textures
#lookup second texture value
			fmat = mmat[f.mat]
			tex1 =""
			tex2=""
			mtextures = fmat.getTextures()
			for mtex in mtextures:
				if not ( mtex == None ):
					if mtex.uvlayer==uvlayer1:
						img1 = mtex.tex.getImage()
						tex1=img1.getFilename()
						tex1=bsys.basename(tex1)
					if mtex.uvlayer==uvlayer2:
						img2 = mtex.tex.getImage()
						tex2 = img2.getFilename()
						tex2=bsys.basename(tex2)

			
			if tex1!="":
				buf +='texture "'
				buf +=tex1
				buf+='" tiled\n'
			else:
				buf+='texture empty_texture_no_mapping skids\n'

			if tex2!="":
				buf+='texture "'
				buf+=tex2
				buf+='" tiled\n'
			else:
				buf +='texture empty_texture_no_mapping skids\n'

			buf +='texture empty_texture_no_mapping shad\n'

			xrep = image.xrep
			yrep = image.yrep
#			buf += 'texrep %s %s\n' % (xrep, yrep)
			self.file.write(buf)
Пример #13
0
def trace():
	#voici mes variables pouvant etre modifie
	#my variables
	global nbr_phoneme, mon_fichier_dico
	global let01, let02, let03, let04,let05, let06, let07, let08, let09, let10
	global let11, let12, let13, let14,let15, let16, let17, let18, let19, let20
	global let21, let22, let23, let24

	global let01selectkey,let02selectkey,let03selectkey,let04selectkey,let05selectkey
	global let06selectkey,let07selectkey,let08selectkey,let09selectkey,let10selectkey,let11selectkey
	global let12selectkey,let13selectkey,let14selectkey,let15selectkey,let16selectkey,let17selectkey
	global let18selectkey,let19selectkey,let20selectkey,let21selectkey,let22selectkey,let23selectkey
	global let24selectkey

	glClearColor(0.4,0.5,0.6 ,0.0)
	glClear(GL_COLOR_BUFFER_BIT)

	glColor3d(1,1,1)
	glRasterPos2i(87, 375)
	Text("Blendersynchro V 2.0")
	glColor3d(1,1,1)
	glRasterPos2i(84, 360)
	Text("Programming: Dienben")

	glColor3d(0,0,0)
	glRasterPos2i(13, 342)
	Text("Lip Synchronization Tool")
	glColor3d(0,0,0)
	glRasterPos2i(13, 326)
	Text("Thanks to Chris Clawson and Liubomir Kovatchev")

	glColor3d(1,1,1)
	glRasterPos2i(5, 320)
	Text("_______________________________________________________")
	glColor3d(0,0,0)
	glRasterPos2i(6, 318)
	Text("_______________________________________________________")


	if (etape==1):
		#cette etape permet de choisi la correspondance entre les phonemes et les cles
		#this stage offer the possibility to choose the mapping between phonems and shapes

		glColor3d(1,1,1)
		glRasterPos2i(140, 300)
		Text("Objet: "+Blender.Object.GetSelected()[0].getName() )

		glColor3d(1,1,1)
		glRasterPos2i(5, 215)
		Text("Assign phonems to shapes:")

		#on mesure la taille de la liste de phonemes
		#this is the lenght of the phonem list
		nbr_phoneme=len(liste_phoneme)

		#on dessine les listes de choix
		#we draw the choice list

		#
		if (nbr_phoneme > 0):
			let01 = String(" ", 4, 5, 185, 30, 16, liste_phoneme[0], 3)
			glColor3d(0,0,0)
			glRasterPos2i(40, 188)
			Text("=")
			let01selectkey = Menu(key_menu, 50, 50, 185, 70, 16, let01selectkey.val)

        #
		if (nbr_phoneme > 1):
			let02 = String(" ", 4, 150, 185, 30, 16, liste_phoneme[1], 2)
			glColor3d(0,0,0)
			glRasterPos2i(185, 188)
			Text("=")
			let02selectkey = Menu(key_menu, 51, 195, 185, 70, 16, let02selectkey.val)

        #
		if (nbr_phoneme > 2):
			let03 = String(" ", 4, 5, 165, 30, 16, liste_phoneme[2], 2)
			glColor3d(0,0,0)
			glRasterPos2i(40, 168)
			Text("=")
			let03selectkey = Menu(key_menu, 52, 50, 165, 70, 16, let03selectkey.val)

        #
		if (nbr_phoneme > 3):
			let04 = String(" ", 4, 150, 165, 30, 16, liste_phoneme[3], 2)
			glColor3d(0,0,0)
			glRasterPos2i(185, 168)
			Text("=")
			let04selectkey = Menu(key_menu, 53, 195, 165, 70, 16, let04selectkey.val)

	#
		if (nbr_phoneme > 4):
			let05 = String(" ", 4, 5, 145, 30, 16, liste_phoneme[4], 2)
			glColor3d(0,0,0)
			glRasterPos2i(40, 148)
			Text("=")
			let05selectkey = Menu(key_menu, 54, 50, 145, 70, 16, let05selectkey.val)

		#
		if (nbr_phoneme > 5):
			let06 = String(" ", 4, 150, 145, 30, 16, liste_phoneme[5], 2)
			glColor3d(0,0,0)
			glRasterPos2i(185, 148)
			Text("=")
			let06selectkey = Menu(key_menu, 55, 195, 145, 70, 16, let06selectkey.val)

	#
		if (nbr_phoneme > 6):
			let07 = String(" ", 4, 5, 125, 30, 16, liste_phoneme[6], 2)
			glColor3d(0,0,0)
			glRasterPos2i(40, 128)
			Text("=")
			let07selectkey = Menu(key_menu, 56, 50, 125, 70, 16, let07selectkey.val)

		#
		if (nbr_phoneme > 7):
			let08 = String(" ", 4, 150, 125, 30, 16, liste_phoneme[7], 2)
			glColor3d(0,0,0)
			glRasterPos2i(185, 128)
			Text("=")
			let08selectkey = Menu(key_menu, 57, 195, 125, 70, 16,let08selectkey.val)

		#
		if (nbr_phoneme > 8):
			let09 = String(" ", 4, 5, 105, 30, 16, liste_phoneme[8], 2)
			glColor3d(0,0,0)
			glRasterPos2i(40, 108)
			Text("=")
			let09selectkey = Menu(key_menu, 58, 50, 105, 70, 16,let09selectkey.val)

		#
		if (nbr_phoneme > 9):
			let10 = String(" ", 4, 150, 105, 30, 16, liste_phoneme[9], 2)
			glColor3d(0,0,0)
			glRasterPos2i(185, 108)
			Text("=")
			let10selectkey = Menu(key_menu, 59, 195, 105, 70, 16, let10selectkey.val)

		#
		if (nbr_phoneme > 10):
			let11 = String(" ", 4, 5, 85, 30, 16, liste_phoneme[10], 2)
			glColor3d(0,0,0)
			glRasterPos2i(40, 88)
			Text("=")
			let11selectkey = Menu(key_menu, 60, 50, 85, 70, 16, let11selectkey.val)

		#
		if (nbr_phoneme > 11):
			let12 = String(" ", 4, 150, 85, 30, 16, liste_phoneme[11], 2)
			glColor3d(0,0,0)
			Text("=")
			let12selectkey = Menu(key_menu, 61, 195, 85, 70, 16, let12selectkey.val)

		#
		if (nbr_phoneme > 12):
			let13 = String(" ", 4, 5, 65, 30, 16, liste_phoneme[12], 2)
			glColor3d(0,0,0)
			glRasterPos2i(40, 68)
			Text("=")
			let13selectkey = Menu(key_menu, 62, 50, 65, 70, 16, let13selectkey.val)

		#
		if (nbr_phoneme > 13):
			let14 = String(" ", 4, 150, 65, 30, 16, liste_phoneme[13], 2)
			glColor3d(0,0,0)
			glRasterPos2i(185, 68)
			Text("=")
			let14selectkey = Menu(key_menu, 63, 195, 65, 70, 16, let14selectkey.val)

		#
		if (nbr_phoneme > 14):
			let15 = String(" ", 4, 5, 45, 30, 16, liste_phoneme[14], 2)
			glColor3d(0,0,0)
			glRasterPos2i(40, 48)
			Text("=")
			let15selectkey = Menu(key_menu, 64, 50, 45, 70, 16, let15selectkey.val)

		#
		if (nbr_phoneme > 15):
			let16 = String(" ", 4, 150, 45, 30, 16, liste_phoneme[15], 2)
			glColor3d(0,0,0)						        
			glRasterPos2i(185, 48)
			Text("=")
			let16selectkey = Menu(key_menu, 65, 195, 45, 70, 16, let16selectkey.val)

		#
		if (nbr_phoneme > 16):
			let17 = String(" ", 4, 295, 185, 30, 16, liste_phoneme[16], 2)
			glColor3d(0,0,0)
			glRasterPos2i(330, 188)
			Text("=")
			let17selectkey = Menu(key_menu, 66, 340, 185, 70, 16, let17selectkey.val)

		#
		if (nbr_phoneme > 17):
			let18 = String(" ", 4, 440, 185, 70, 16, liste_phoneme[17], 8)
			glColor3d(0,0,0)
			glRasterPos2i(515, 188)
			Text("=")
			let18selectkey = Menu(key_menu, 67, 525, 185, 70, 16, let18selectkey.val)

		#
		if (nbr_phoneme > 18):
			let19 = String(" ", 4, 295, 165, 30, 16, liste_phoneme[18], 2)
			glColor3d(0,0,0)
			glRasterPos2i(330, 168)
			Text("=")
			let19selectkey = Menu(key_menu, 68, 340, 165, 70, 16, let19selectkey.val)

		#
		if (nbr_phoneme > 19):
			let20 = String(" ", 4, 440, 165, 70, 16, liste_phoneme[19], 8)
			glColor3d(0,0,0)
			glRasterPos2i(515, 168)
			Text("=")
			let20selectkey = Menu(key_menu, 69, 525, 165, 70, 16, let20selectkey.val)

		#
		if (nbr_phoneme > 20):
			let21 = String(" ", 4, 295, 145, 30, 16, liste_phoneme[20], 2)
			glColor3d(0,0,0)
			glRasterPos2i(330, 148)
			Text("=")
			let21selectkey = Menu(key_menu, 70, 340, 145, 70, 16, let21selectkey.val)

		#
		if (nbr_phoneme > 21):
			let22 = String(" ", 4, 440, 145, 70, 16, liste_phoneme[21], 8)
			glColor3d(0,0,0)						        
			glRasterPos2i(515, 148)
			Text("=")
			let22selectkey = Menu(key_menu, 71, 525, 145, 70, 16, let22selectkey.val)

		#
		if (nbr_phoneme > 22):
			let23 = String(" ", 4, 295, 125, 30, 16, liste_phoneme[22], 2)
			glColor3d(0,0,0)
			glRasterPos2i(330, 128)
			Text("=")
			let23selectkey = Menu(key_menu, 72, 340, 125, 70, 16,let23selectkey.val)

		#
		if (nbr_phoneme > 23):
			let24 = String(" ", 4, 440, 125, 70, 16, liste_phoneme[23], 8)
			glColor3d(0,0,0)
			glRasterPos2i(515, 128)
			Text("=")
			let24selectkey = Menu(key_menu, 73, 525, 125, 70, 16, let24selectkey.val)

		#
		if (nbr_phoneme > 24):
			let25 = String(" ", 4, 295, 105, 30, 16, liste_phoneme[24], 2)
			glColor3d(0,0,0)
			glRasterPos2i(330, 108)
			Text("=")
			let25selectkey = Menu(key_menu, 74, 340, 105, 70, 16, let25selectkey.val)

		#
		if (nbr_phoneme > 25):
			let26 = String(" ", 4, 440, 105, 70, 16, liste_phoneme[25], 8)
			glColor3d(0,0,0)
			glRasterPos2i(515, 108)
			Text("=")
			let26selectkey = Menu(key_menu, 75, 525, 105, 70, 16,let26selectkey.val)

		#
		if (nbr_phoneme > 26):
			let27 = String(" ", 4, 295, 85, 30, 16, liste_phoneme[26], 2)
			glColor3d(0,0,0)
			glRasterPos2i(330, 88)
			Text("=")
			let27selectkey = Menu(key_menu, 76, 340, 85, 70, 16, let27selectkey.val)

		#
		if (nbr_phoneme > 27):
			let28 = String(" ", 4, 440, 85, 70, 16, liste_phoneme[27], 8)
			glColor3d(0,0,0)
			glRasterPos2i(515, 88)
			Text("=")
			let28selectkey = Menu(key_menu, 77, 525, 85, 70, 16,let28selectkey.val)

		#
		if (nbr_phoneme > 28):
			let29 = String(" ", 4, 295, 65, 30, 16, liste_phoneme[28], 2)
			glColor3d(0,0,0)
			glRasterPos2i(330, 68)
			Text("=")
			let29selectkey = Menu(key_menu, 78, 340, 65, 70, 16, let29selectkey.val)

		#
		if (nbr_phoneme > 29):
			let30 = String(" ", 4, 440, 65, 70, 16, liste_phoneme[29], 8)
			glColor3d(0,0,0)
			glRasterPos2i(515, 68)
			Text("=")
			let30selectkey = Menu(key_menu, 79, 525, 65, 70, 16, let30selectkey.val)

		#
		if (nbr_phoneme > 30):
			let31 = String(" ", 4, 295, 45, 30, 16, liste_phoneme[30], 2)
			glColor3d(0,0,0)
			glRasterPos2i(330, 48)
			Text("=")
			let31selectkey = Menu(key_menu, 80, 340, 45, 70, 16, let31selectkey.val)

		#
		if (nbr_phoneme > 31):
			let32 = String(" ", 4, 440, 45, 70, 16, liste_phoneme[31], 8)
			glColor3d(0,0,0)
			glRasterPos2i(515, 48)
			Text("=")
			let32selectkey = Menu(key_menu, 81, 525, 45, 70, 16, let32selectkey.val)

		Button("Go", 3, 155, 5, 145, 22)
	
	if (etape==2):
		glColor3d(1,1,1)
		glRasterPos2i(125, 200)
		Text("Operation Completed")

	if (etape==0):
		glColor3d(1,1,1)
		glRasterPos2i(125, 200)
		Text("Please select a Mesh'Object and Create all the IPO Curves for your Shapes")

	if (etape==3):
		#this stage permits to load a custom dictionnary
		load_file_text = "Load File"
		if mon_fichier_dico:
			Button("Import Loaded File", 2, 5, 5, 145, 22)
			glColor3d(1,1,1)
			glRasterPos2i(6, 50)
			Text("loaded file: %s" % basename(mon_fichier_dico))
			load_file_text = "Choose Another File"
		Button(load_file_text, 8, 125, 180, 145, 22)

	glRasterPos2i(6, 40)
	Text("_______________________________________________________")
	glColor3d(0,0,0)
	glRasterPos2i(6, 38)
	Text("_______________________________________________________")
	
	Button("Exit", 1, 305, 5, 80, 22)
Пример #14
0
	def testAC3DImport(self):

		FACE_TWOSIDE = Mesh.FaceModes['TWOSIDE']
		FACE_TEX = Mesh.FaceModes['TEX']
		MESH_AUTOSMOOTH = Mesh.Modes['AUTOSMOOTH']

		MAT_MODE_ZTRANSP = Material.Modes['ZTRANSP']
		MAT_MODE_TRANSPSHADOW = Material.Modes['TRANSPSHADOW']

		scene = self.scene

		bl_images = {} # loaded texture images
		missing_textures = [] # textures we couldn't find

		objlist = self.objlist[1:] # skip 'world'

		bmat = []
		has_transp_mats = False
		for mat in self.mlist:
			name = mat[0]
			m = Material.New(name)
			m.rgbCol = (mat[1][0], mat[1][1], mat[1][2])
			m.amb = mat[2]
			m.emit = mat[3]
			m.specCol = (mat[4][0], mat[4][1], mat[4][2])
			m.spec = mat[5]
			m.alpha = mat[6]
			if m.alpha < 1.0:
				m.mode |= MAT_MODE_ZTRANSP
				has_transp_mats = True
			bmat.append(m)

		if has_transp_mats:
			for mat in bmat:
				mat.mode |= MAT_MODE_TRANSPSHADOW

		obj_idx = 0 # index of current obj in loop
		for obj in objlist:
			if obj.type == AC_GROUP:
				continue
			elif obj.type == AC_LIGHT:
				light = Lamp.New('Lamp')
				object = scene.objects.new(light, obj.name)
				#object.select(True)
				obj.bl_obj = object
				if obj.data:
					light.name = obj.data
				continue

			# type AC_POLY:

			# old .ac files used empty meshes as groups, convert to a real ac group
			if not obj.vlist and obj.kids:
				obj.type = AC_GROUP
				continue

			mesh = Mesh.New()
			object = scene.objects.new(mesh, obj.name)
			#object.select(True)
			obj.bl_obj = object
			if obj.data: mesh.name = obj.data
			mesh.degr = obj.crease # will auto clamp to [1, 80]

			if not obj.vlist: # no vertices? nothing more to do
				continue

			mesh.verts.extend(obj.vlist)

			objmat_indices = []
			for mat in bmat:
				if bmat.index(mat) in obj.matlist:
					objmat_indices.append(bmat.index(mat))
					mesh.materials += [mat]
					if DISPLAY_TRANSP and mat.alpha < 1.0:
						object.transp = True

			for e in obj.elist:
				mesh.edges.extend(e)

			if obj.flist_v:
				mesh.faces.extend(obj.flist_v)

				facesnum = len(mesh.faces)

				if facesnum == 0: # shouldn't happen, of course
					continue

				mesh.faceUV = True

				# checking if the .ac file had duplicate faces (Blender ignores them)
				if facesnum != len(obj.flist_v):
					# it has, ugh. Let's clean the uv list:
					lenfl = len(obj.flist_v)
					flist = obj.flist_v
					uvlist = obj.flist_uv
					cfglist = obj.flist_cfg
					for f in flist:
						f.sort()
					fi = lenfl
					while fi > 0: # remove data related to duplicates
						fi -= 1
						if flist[fi] in flist[:fi]:
							uvlist.pop(fi)
							cfglist.pop(fi)

				img = None
				if obj.tex != '':
					if obj.tex in bl_images.keys():
						img = bl_images[obj.tex]
					elif obj.tex not in missing_textures:
						texfname = None
						objtex = obj.tex
						baseimgname = bsys.basename(objtex)
						if bsys.exists(objtex) == 1:
							texfname = objtex
						elif bsys.exists(bsys.join(self.importdir, objtex)):
							texfname = bsys.join(self.importdir, objtex)
						else:
							if baseimgname.find('\\') > 0:
								baseimgname = bsys.basename(objtex.replace('\\','/'))
							objtex = bsys.join(self.importdir, baseimgname)
							if bsys.exists(objtex) == 1:
								texfname = objtex
							else:
								objtex = bsys.join(TEXTURES_DIR, baseimgname)
								if bsys.exists(objtex):
									texfname = objtex
						if texfname:
							try:
								img = Image.Load(texfname)
								# Commented because it's unnecessary:
								#img.xrep = int(obj.texrep[0])
								#img.yrep = int(obj.texrep[1])
								if img:
									bl_images[obj.tex] = img
							except:
								inform("Couldn't load texture: %s" % baseimgname)
						else:
							missing_textures.append(obj.tex)
							inform("Couldn't find texture: %s" % baseimgname)

				for i in range(facesnum):
					f = obj.flist_cfg[i]
					fmat = f[0]
					is_smooth = f[1]
					twoside = f[2]
					bface = mesh.faces[i]
					bface.smooth = is_smooth
					if twoside: bface.mode |= FACE_TWOSIDE
					if img:
						bface.mode |= FACE_TEX
						bface.image = img
					bface.mat = objmat_indices.index(fmat)
					fuv = obj.flist_uv[i]
					if obj.texoff:
						uoff = obj.texoff[0]
						voff = obj.texoff[1]
						urep = obj.texrep[0]
						vrep = obj.texrep[1]
						for uv in fuv:
							uv[0] *= urep
							uv[1] *= vrep
							uv[0] += uoff
							uv[1] += voff

					mesh.faces[i].uv = fuv

				# finally, delete the 1st vertex we added to prevent vindices == 0
				mesh.verts.delete(0)

				mesh.calcNormals()

				mesh.mode = MESH_AUTOSMOOTH

				# subdiv: create SUBSURF modifier in Blender
				if SUBDIV and obj.subdiv > 0:
					subdiv = obj.subdiv
					subdiv_render = subdiv
					# just to be safe:
					if subdiv_render > 6: subdiv_render = 6
					if subdiv > 3: subdiv = 3
					modif = object.modifiers.append(Modifier.Types.SUBSURF)
					modif[Modifier.Settings.LEVELS] = subdiv
					modif[Modifier.Settings.RENDLEVELS] = subdiv_render

			obj_idx += 1

		self.build_hierarchy()
		scene.update()
Пример #15
0
	def testAC3DImport(self):

		FACE_TWOSIDE = Mesh.FaceModes['TWOSIDE']
		FACE_TEX = Mesh.FaceModes['TEX']
		MESH_AUTOSMOOTH = Mesh.Modes['AUTOSMOOTH']

		MAT_MODE_ZTRANSP = Material.Modes['ZTRANSP']
		MAT_MODE_TRANSPSHADOW = Material.Modes['TRANSPSHADOW']

		scene = self.scene

		bl_images = {} # loaded texture images
		missing_textures = [] # textures we couldn't find

		objlist = self.objlist[1:] # skip 'world'

		bmat = []
		has_transp_mats = False
		for mat in self.mlist:
			name = mat[0]
			m = Material.New(name)
			m.rgbCol = (mat[1][0], mat[1][1], mat[1][2])
			m.amb = mat[2]
			m.emit = mat[3]
			m.specCol = (mat[4][0], mat[4][1], mat[4][2])
			m.spec = mat[5]
			m.mirCol = (mat[6][0], mat[6][1], mat[6][2])
			m.alpha = mat[7]
			if m.alpha < 1.0:
				m.mode |= MAT_MODE_ZTRANSP
				has_transp_mats = True
			bmat.append(m)

		if has_transp_mats:
			for mat in bmat:
				mat.mode |= MAT_MODE_TRANSPSHADOW

		obj_idx = 0 # index of current obj in loop
		for obj in objlist:
			if obj.type == AC_GROUP:
				continue
			elif obj.type == AC_LIGHT:
				light = Lamp.New('Lamp')
				object = scene.objects.new(light, obj.name)
				#object.select(True)
				obj.bl_obj = object
				if obj.data:
					light.name = obj.data
				continue

			# type AC_POLY:

			# old .ac files used empty meshes as groups, convert to a real ac group
			if not obj.vlist and obj.kids:
				obj.type = AC_GROUP
				continue

			mesh = Mesh.New()
			object = scene.objects.new(mesh, obj.name)
			#object.select(True)
			obj.bl_obj = object
			if obj.data: mesh.name = obj.data
			mesh.degr = obj.crease # will auto clamp to [1, 80]

			if not obj.vlist: # no vertices? nothing more to do
				continue

			mesh.verts.extend(obj.vlist)

			objmat_indices = []
			for mat in bmat:
				if bmat.index(mat) in obj.matlist:
					objmat_indices.append(bmat.index(mat))
					mesh.materials += [mat]
					if DISPLAY_TRANSP and mat.alpha < 1.0:
						object.transp = True

			for e in obj.elist:
				mesh.edges.extend(e)

			if obj.flist_v:
				mesh.faces.extend(obj.flist_v)

				facesnum = len(mesh.faces)

				if facesnum == 0: # shouldn't happen, of course
					continue

				mesh.faceUV = True

				# checking if the .ac file had duplicate faces (Blender ignores them)
				if facesnum != len(obj.flist_v):
					# it has, ugh. Let's clean the uv list:
					lenfl = len(obj.flist_v)
					flist = obj.flist_v
					uvlist = obj.flist_uv
					cfglist = obj.flist_cfg
					for f in flist:
						f.sort()
					fi = lenfl
					while fi > 0: # remove data related to duplicates
						fi -= 1
						if flist[fi] in flist[:fi]:
							uvlist.pop(fi)
							cfglist.pop(fi)

				img = None
				if obj.tex != '':
					if obj.tex in bl_images.keys():
						img = bl_images[obj.tex]
					elif obj.tex not in missing_textures:
						texfname = None
						objtex = obj.tex
						baseimgname = bsys.basename(objtex)
						if bsys.exists(objtex) == 1:
							texfname = objtex
						elif bsys.exists(bsys.join(self.importdir, objtex)):
							texfname = bsys.join(self.importdir, objtex)
						else:
							if baseimgname.find('\\') > 0:
								baseimgname = bsys.basename(objtex.replace('\\','/'))
							objtex = bsys.join(self.importdir, baseimgname)
							if bsys.exists(objtex) == 1:
								texfname = objtex
							else:
								objtex = bsys.join(TEXTURES_DIR, baseimgname)
								if bsys.exists(objtex):
									texfname = objtex
						if texfname:
							try:
								img = Image.Load(texfname)
								# Commented because it's unnecessary:
								#img.xrep = int(obj.texrep[0])
								#img.yrep = int(obj.texrep[1])
								if img:
									bl_images[obj.tex] = img
							except:
								inform("Couldn't load texture: %s" % baseimgname)
						else:
							missing_textures.append(obj.tex)
							inform("Couldn't find texture: %s" % baseimgname)

				for i in range(facesnum):
					f = obj.flist_cfg[i]
					fmat = f[0]
					is_smooth = f[1]
					twoside = f[2]
					bface = mesh.faces[i]
					bface.smooth = is_smooth
					if twoside: bface.mode |= FACE_TWOSIDE
					if img:
						bface.mode |= FACE_TEX
						bface.image = img
					bface.mat = objmat_indices.index(fmat)
					fuv = obj.flist_uv[i]
					if obj.texoff:
						uoff = obj.texoff[0]
						voff = obj.texoff[1]
						urep = obj.texrep[0]
						vrep = obj.texrep[1]
						for uv in fuv:
							uv[0] *= urep
							uv[1] *= vrep
							uv[0] += uoff
							uv[1] += voff

					mesh.faces[i].uv = fuv

				# finally, delete the 1st vertex we added to prevent vindices == 0
				mesh.verts.delete(0)

				mesh.calcNormals()

				mesh.mode = MESH_AUTOSMOOTH

				# subdiv: create SUBSURF modifier in Blender
				if SUBDIV and obj.subdiv > 0:
					subdiv = obj.subdiv
					subdiv_render = subdiv
					# just to be safe:
					if subdiv_render > 6: subdiv_render = 6
					if subdiv > 3: subdiv = 3
					modif = object.modifiers.append(Modifier.Types.SUBSURF)
					modif[Modifier.Settings.LEVELS] = subdiv
					modif[Modifier.Settings.RENDLEVELS] = subdiv_render

			obj_idx += 1

		self.build_hierarchy()
		scene.update()
Пример #16
0
    def testAC3DImport(self):

        FACE_TWOSIDE = Mesh.FaceModes['TWOSIDE']
        FACE_TEX = Mesh.FaceModes['TILES']
        #FACE_TEX = Mesh.FaceModes['TEX']
        MESH_AUTOSMOOTH = Mesh.Modes['AUTOSMOOTH']

        MAT_MODE_ZTRANSP = Material.Modes['ZTRANSP']
        MAT_MODE_TRANSPSHADOW = Material.Modes['TRANSPSHADOW']

        scene = self.scene

        bl_images = {}  # loaded texture images
        missing_textures = []  # textures we couldn't find
        bl_textures = {}  # loaded textures

        objlist = self.objlist[1:]  # skip 'world'

        #bmat = []
        bmat = {}
        m = None
        has_transp_mats = False
        for mat in self.mlist:
            name = mat[0]
            #			if name=='':
            name = 'BaseMaterial'
            if m == None:
                m = Material.New(name)

            m.rgbCol = (mat[1][0], mat[1][1], mat[1][2])
            m.amb = mat[2]
            m.emit = mat[3]
            m.specCol = (mat[4][0], mat[4][1], mat[4][2])
            m.spec = mat[5]
            m.alpha = mat[6]
            #force it to zero because that is how Speed Dreams / Torcs work
            m.alpha = 0.0
            if m.alpha < 1.0:
                m.mode |= MAT_MODE_ZTRANSP
                has_transp_mats = True
#			bmat[name]=m

#		if has_transp_mats:
#			for mat in bmat:
#				mat.mode |= MAT_MODE_TRANSPSHADOW

        obj_idx = 0  # index of current obj in loop
        for obj in objlist:
            if obj.type == AC_GROUP:
                continue
            elif obj.type == AC_LIGHT:
                light = Lamp.New('Lamp')
                object = scene.objects.new(light, obj.name)
                #object.select(True)
                obj.bl_obj = object
                if obj.data:
                    light.name = obj.data
                continue

            # type AC_POLY:

            # old .ac files used empty meshes as groups, convert to a real ac group
            if not obj.vlist and obj.kids:
                obj.type = AC_GROUP
                continue

            mesh = Mesh.New()
            object = scene.objects.new(mesh, obj.name)
            #object.select(True)
            obj.bl_obj = object
            if obj.data: mesh.name = obj.data
            mesh.degr = obj.crease  # will auto clamp to [1, 80]

            if not obj.vlist:  # no vertices? nothing more to do
                continue

            #Setup UV Layers
            mesh.addUVLayer("ImageUV")
            mesh.addUVLayer("ShadowUV")
            mesh.activeUVLayer = "ImageUV"

            mesh.verts.extend(obj.vlist)

            objmat_indices = []

            for e in obj.elist:
                mesh.edges.extend(e)

            if obj.flist_v:
                mesh.faces.extend(obj.flist_v)

                facesnum = len(mesh.faces)

                if facesnum == 0:  # shouldn't happen, of course
                    continue

                mesh.faceUV = True

                # checking if the .ac file had duplicate faces (Blender ignores them)
                if facesnum != len(obj.flist_v):
                    # it has, ugh. Let's clean the uv list:
                    lenfl = len(obj.flist_v)
                    flist = obj.flist_v
                    uvlist = obj.flist_uv
                    uvlist2 = obj.flist_uv2
                    cfglist = obj.flist_cfg
                    for f in flist:
                        f.sort()
                    fi = lenfl
                    while fi > 0:  # remove data related to duplicates
                        fi -= 1
                        if flist[fi] in flist[:fi]:
                            uvlist.pop(fi)
                            cfglist.pop(fi)
                            if len(uvlist2) > 0:
                                uvlist2.pop(fi)

                img = None
                img2 = None

                if obj.tex != '':
                    if obj.tex in bl_images.keys():
                        img = bl_images[obj.tex]
                    elif obj.tex not in missing_textures:
                        texfname = None
                        objtex = obj.tex
                        baseimgname = bsys.basename(objtex)
                        if bsys.exists(objtex) == 1:
                            texfname = objtex
                        else:
                            if baseimgname.find('\\') > 0:
                                baseimgname = bsys.basename(
                                    objtex.replace('\\', '/'))
                            objtex = bsys.join(self.importdir, baseimgname)
                            if bsys.exists(objtex) == 1:
                                texfname = objtex
                            else:
                                objtex = bsys.join(TEXTURES_DIR2, baseimgname)
                                if bsys.exists(objtex):
                                    texfname = objtex
                                else:
                                    inform(
                                        "Couldn't find texture in alt path %s"
                                        % TEXTURES_DIR2)
                        if texfname:
                            try:
                                img = Image.Load(texfname)
                                # Commented because it's unnecessary:
                                #img.xrep = int(obj.texrep[0])
                                #img.yrep = int(obj.texrep[1])
                                if img:
                                    bl_images[obj.tex] = img
                            except:
                                inform("THROW:  Couldn't load texture: %s" %
                                       baseimgname)
                        else:
                            missing_textures.append(obj.tex)
                            inform("Couldn't find texture: %s" % baseimgname)

                if obj.tex2 != '':
                    if obj.tex2 in bl_images.keys():
                        img2 = bl_images[obj.tex2]
                    elif obj.tex2 not in missing_textures:
                        texfname = None
                        objtex2 = obj.tex2
                        baseimgname = bsys.basename(objtex2)
                        if bsys.exists(objtex2) == 1:
                            texfname = objtex2
                        else:
                            if baseimgname.find('\\') > 0:
                                baseimgname = bsys.basename(
                                    objtex2.replace('\\', '/'))
                            objtex2 = bsys.join(self.importdir, baseimgname)
                            if bsys.exists(objtex) == 1:
                                texfname = objtex2
                            else:
                                objtex2 = bsys.join(TEXTURES_DIR2, baseimgname)
                                if bsys.exists(objtex2):
                                    texfname = objtex2
                                else:
                                    inform(
                                        "Couldn't find texture in alt path %s"
                                        % objtex2)

                        if texfname:
                            try:
                                img2 = Image.Load(texfname)
                                # Commented because it's unnecessary:
                                #img.xrep = int(obj.texrep[0])
                                #img.yrep = int(obj.texrep[1])
                                if img2:
                                    bl_images[obj.tex2] = img2
                            except:
                                inform("THROW:  Couldn't load texture: %s" %
                                       baseimgname)
                        else:
                            missing_textures.append(obj.tex2)
                            inform("Couldn't find texture: %s" % baseimgname)

                if obj.tex not in bmat.keys():
                    if img:
                        #Create a new material with a texture attached to it
                        m1 = Material.New(obj.tex)
                        m1.rgbCol = m.rgbCol
                        m1.amb = m.amb
                        m1.emit = m.emit
                        m1.specCol = m.specCol
                        m1.spec = m.spec
                        m1.alpha = m.alpha
                        texname = 'Tex%s' % obj.tex
                        texname2 = 'Tex2%s' % obj.tex

                        if img:
                            iname = img.getName()
                            if iname not in bl_textures.keys():
                                basetex = Texture.New(iname)
                                basetex.setType('Image')
                                map1 = Texture.MapTo.COL | Texture.MapTo.ALPHA
                                basetex.image = img
                                bl_textures[iname] = basetex

                            basetex = bl_textures[iname]
                            m1.setTexture(0, basetex, Texture.TexCo.UV, map1)

                        if img2:
                            iname2 = img2.getName()
                            if iname2 not in bl_textures.keys():
                                basetex2 = Texture.New(iname2)
                                basetex2.setType('Image')
                                map2 = Texture.MapTo.COL
                                basetex2.image = img2
                                bl_textures[iname2] = basetex2
                            else:
                                map2 = Texture.MapTo.COL

                            basetex2 = bl_textures[iname2]
                            m1.setTexture(1, basetex2, Texture.TexCo.UV, map2)

                        if m1.alpha < 1.0:
                            m1.mode |= MAT_MODE_ZTRANSP
                            has_transp_mats = True

                        mtextures = m1.getTextures()
                        tunit = 0
                        for mtex in mtextures:
                            if not (mtex == None):
                                if tunit == 1:
                                    mtex.uvlayer = "ShadowUV"
                                    mtex.colfac = 0.3
                                    tunit = tunit + 1
                                if tunit == 0:
                                    mtex.uvlayer = "ImageUV"

                                    tunit = tunit + 1

                        bmat[obj.tex] = m1

                if obj.tex != '':
                    if obj.tex in bl_images.keys():
                        img = bl_images[obj.tex]

                #TODO attach correct materials to objects
                if obj.tex in bmat.keys():
                    mat1 = bmat[obj.tex]
                    if len(mesh.materials) == 0:
                        mesh.materials += [mat1]
                else:
                    inform('Material %s not found\n' % obj.tex)

                for i in range(facesnum):
                    f = obj.flist_cfg[i]
                    fmat = f[0]
                    is_smooth = f[1]
                    twoside = f[2]
                    bface = mesh.faces[i]
                    bface.smooth = is_smooth
                    if twoside: bface.mode |= FACE_TWOSIDE
                    if img:
                        bface.mode |= FACE_TEX
                        bface.image = img
                    #TODO handle material properly
                    #bface.mat = objmat_indices.index(fmat)
                    bface.mat = 0
                    fuv = obj.flist_uv[i]
                    if len(obj.flist_uv2) > 0:
                        fuv2 = obj.flist_uv2[i]

                    if obj.texoff:
                        uoff = obj.texoff[0]
                        voff = obj.texoff[1]
                        urep = obj.texrep[0]
                        vrep = obj.texrep[1]
                        for uv in fuv:
                            uv[0] *= urep
                            uv[1] *= vrep
                            uv[0] += uoff
                            uv[1] += voff

                        if len(fuv2) > 0:
                            for uv2 in fuv2:
                                uv2[0] *= urep
                                uv2[1] *= vrep
                                uv2[0] += uoff
                                uv2[1] += voff

                    mesh.activeUVLayer = "ImageUV"
                    mesh.faces[i].uv = fuv

                    if len(fuv2) > 0:
                        mesh.activeUVLayer = "ShadowUV"
                        mesh.faces[i].uv = fuv2
#						for uv2 in fuv2:
#							inform('UV2 coords %.5f %.5f\n' % (uv2[0],uv2[1]))

                    mesh.activeUVLayer = "ImageUV"

                # finally, delete the 1st vertex we added to prevent vindices == 0
                mesh.verts.delete(0)

                mesh.calcNormals()

                mesh.mode = MESH_AUTOSMOOTH

            obj_idx += 1

        self.build_hierarchy()
        scene.update()