[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [676] trunk/py/scripts/addons: SVN maintenance.

gsr b3d gsr.b3d at infernal-iceberg.com
Thu May 20 19:54:12 CEST 2010


Revision: 676
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=676
Author:   gsrb3d
Date:     2010-05-20 19:54:11 +0200 (Thu, 20 May 2010)

Log Message:
-----------
SVN maintenance.

Modified Paths:
--------------
    trunk/py/scripts/addons/import_scene_mhx.py

Property Changed:
----------------
    trunk/py/scripts/addons/import_scene_mhx.py
    trunk/py/scripts/addons/space_view3d_materials_utils.py

Modified: trunk/py/scripts/addons/import_scene_mhx.py
===================================================================
--- trunk/py/scripts/addons/import_scene_mhx.py	2010-05-20 10:21:06 UTC (rev 675)
+++ trunk/py/scripts/addons/import_scene_mhx.py	2010-05-20 17:54:11 UTC (rev 676)
@@ -1,2243 +1,2243 @@
-""" 
-**Project Name:**	  MakeHuman
-
-**Product Home Page:** http://www.makehuman.org/
-
-**Code Home Page:**	http://code.google.com/p/makehuman/
-
-**Authors:**		   Thomas Larsson
-
-**Copyright(c):**	  MakeHuman Team 2001-2010
-
-**Licensing:**		 GPL3 (see also http://sites.google.com/site/makehumandocs/licensing)
-
-**Coding Standards:**  See http://sites.google.com/site/makehumandocs/developers-guide
-
-Abstract
-MHX (MakeHuman eXchange format) importer for Blender 2.5x.
-Version 0.9
-
-"""
-
-bl_addon_info = {
-	'name': 'Import MakeHuman (.mhx)',
-	'author': 'Thomas Larsson',
-	'version': '0.9, Make Human Alpha 5',
-	'blender': (2, 5, 3),
-	'location': 'File > Import',
-	'description': 'Import files in the MakeHuman eXchange format (.mhx)',
-	'url': 'http://wiki.blender.org/index.php/Extensions:2.5/Py/' \
-        'Scripts/File_I-O/Make_Human',
-	'category': 'Import/Export'}
-
-"""
-Place this file in the .blender/scripts/addons dir
-You have to activated the script in the "Add-Ons" tab (user preferences).
-Access from the File > Import menu.
-"""
-
-#
-#
-#
-
-import bpy
-import os
-import time
-import mathutils
-from mathutils import *
-import geometry
-import string
-
-MAJOR_VERSION = 0
-MINOR_VERSION = 9
-MHX249 = False
-Blender24 = False
-Blender25 = True
-TexDir = "~/makehuman/exports"
-
-#
-#
-#
-
-theScale = 1.0
-useMesh = 1
-doSmash = 1
-verbosity = 2
-warnedTextureDir = False
-warnedVersion = False
-
-true = True
-false = False
-Epsilon = 1e-6
-nErrors = 0
-theTempDatum = None
-
-todo = []
-
-#
-#	toggle flags
-#
-
-T_ArmIK = 0x01
-T_LegIK = 0x02
-T_Replace = 0x20
-T_Face = 0x40
-T_Shape = 0x80
-T_Mesh = 0x100
-T_Armature = 0x200
-T_Proxy = 0x400
-T_Panel = 0x800
-
-T_Rigify = 0x1000
-T_Preset = 0x2000
-T_Symm = 0x4000
-T_MHX = 0x8000
-
-toggle = T_Replace + T_ArmIK + T_LegIK + T_Mesh + T_Armature + T_Face
-
-#
-#	setFlagsAndFloats(rigFlags):
-#
-#	Global floats
-fLegIK = 0.0
-fArmIK = 0.0
-fFingerPanel = 0.0
-fFingerIK = 0.0
-fFingerCurl = 0.0
-
-#	rigLeg and rigArm flags
-T_Toes = 0x0001
-T_GoboFoot = 0x0002
-T_InvFoot = 0x0004
-
-T_FingerPanel = 0x100
-T_FingerCurl = 0x0200
-T_FingerIK = 0x0400
-
-
-T_LocalFKIK = 0x8000
-
-rigLeg = 0
-rigArm = 0
-
-def setFlagsAndFloats(rigFlags):
-	global toggle, rigLeg, rigArm
-
-	(footRig, fingerRig) = rigFlags
-	rigLeg = 0
-	rigArm = 0
-	if footRig == 'Reverse foot': rigLeg |= T_InvFoot
-	elif footRig == 'Gobo': rigLeg |= T_GoboFoot
-
-	if fingerRig == 'Panel': rigArm |= T_FingerPanel
-	elif fingerRig == 'IK': rigArm |= T_FingerIK
-	elif fingerRig == 'Curl': rigArm |= T_FingerCurl
-
-	toggle |= T_Panel
-
-	# Global floats, used as influences
-	global fFingerCurl, fLegIK, fArmIK, fFingerIK
-
-	fFingerCurl = 1.0 if rigArm&T_FingerCurl else 0.0
-	fLegIK = 1.0 if toggle&T_LegIK else 0.0
-	fArmIK = 1.0 if toggle&T_ArmIK else 0.0
-	fFingerIK = 1.0 if rigArm&T_FingerIK else 0.0
-
-	return
-
-
-#
-#	Dictionaries
-#
-
-loadedData = {
-	'NONE' : {},
-
-	'Object' : {},
-	'Mesh' : {},
-	'Armature' : {},
-	'Lamp' : {},
-	'Camera' : {},
-	'Lattice' : {},
-	'Curve' : {},
-
-	'Material' : {},
-	'Image' : {},
-	'MaterialTextureSlot' : {},
-	'Texture' : {},
-	
-	'Bone' : {},
-	'BoneGroup' : {},
-	'Rigify' : {},
-
-	'Action' : {},
-	'Group' : {},
-
-	'MeshTextureFaceLayer' : {},
-	'MeshColorLayer' : {},
-	'VertexGroup' : {},
-	'ShapeKey' : {},
-	'ParticleSystem' : {},
-
-	'ObjectConstraints' : {},
-	'ObjectModifiers' : {},
-	'MaterialSlot' : {},
-}
-
-Plural = {
-	'Object' : 'objects',
-	'Mesh' : 'meshes',
-	'Lattice' : 'lattices',
-	'Curve' : 'curves',
-	'Group' : 'groups',
-	'Empty' : 'empties',
-	'Armature' : 'armatures',
-	'Bone' : 'bones',
-	'BoneGroup' : 'bone_groups',
-	'Pose' : 'poses',
-	'PoseBone' : 'pose_bones',
-	'Material' : 'materials',
-	'Texture' : 'textures',
-	'Image' : 'images',
-	'Camera' : 'cameras',
-	'Lamp' : 'lamps',
-	'World' : 'worlds',
-}
-
-#
-#	Creators
-#
-
-def uvtexCreator(me, name):
-	print("uvtexCreator", me, name)
-	me.add_uv_texture()
-	uvtex = me.uv_textures[-1]
-	uvtex.name = name
-	return uvtex
-
-
-def vertcolCreator(me, name):
-	print("vertcolCreator", me, name)
-	me.add_vertex_color()
-	vcol = me.vertex_colors[-1]
-	vcol.name = name
-	return vcol
-		
-
-#
-#	loadMhx(filePath, context, flags):
-#
-
-def loadMhx(filePath, context, flags):
-	global toggle
-	toggle = flags
-	readMhxFile(filePath)
-	return
-
-#
-#	readMhxFile(filePath, rigFlags):
-#
-
-def readMhxFile(filePath, rigFlags):
-	global todo, nErrors
-	
-	fileName = os.path.expanduser(filePath)
-	(shortName, ext) = os.path.splitext(fileName)
-	if ext != ".mhx":
-		print("Error: Not a mhx file: " + fileName)
-		return
-	print( "Opening MHX file "+ fileName )
-	time1 = time.clock()
-
-	ignore = False
-	stack = []
-	tokens = []
-	key = "toplevel"
-	level = 0
-	nErrors = 0
-
-	setFlagsAndFloats(rigFlags)
-
-	file= open(fileName, "rU")
-	print( "Tokenizing" )
-	lineNo = 0
-	for line in file: 
-		# print(line)
-		lineSplit= line.split()
-		lineNo += 1
-		if len(lineSplit) == 0:
-			pass
-		elif lineSplit[0] == '#':
-			pass
-		elif lineSplit[0] == 'end':
-			try:
-				sub = tokens
-				tokens = stack.pop()
-				if tokens:
-					tokens[-1][2] = sub
-				level -= 1
-			except:
-				print( "Tokenizer error at or before line %d" % lineNo )
-				print( line )
-				dummy = stack.pop()
-		elif lineSplit[-1] == ';':
-			if lineSplit[0] == '\\':
-				key = lineSplit[1]
-				tokens.append([key,lineSplit[2:-1],[]])
-			else:
-				key = lineSplit[0]
-				tokens.append([key,lineSplit[1:-1],[]])
-		else:
-			key = lineSplit[0]
-			tokens.append([key,lineSplit[1:],[]])
-			stack.append(tokens)
-			level += 1
-			tokens = []
-	file.close()
-
-	if level != 0:
-		raise NameError("Tokenizer out of kilter %d" % level)	
-	clearScene()
-	print( "Parsing" )
-	parse(tokens)
-	
-	for (expr, glbals, lcals) in todo:
-		try:
-			# print("Doing %s" % expr)
-			exec(expr, glbals, lcals)
-		except:
-			msg = "Failed: "+expr
-			print( msg )
-			nErrors += 1
-			#raise NameError(msg)
-
-	print("Postprocess")
-	postProcess()
-	print("HideLayers")
-	hideLayers()
-	time2 = time.clock()
-	print("toggle = %x" % toggle)
-	msg = "File %s loaded in %g s" % (fileName, time2-time1)
-	if nErrors:
-		msg += " but there where %d errors. " % (nErrors)
-	print(msg)
-	return	# loadMhx
-
-#
-#	getObject(name, var, glbals, lcals):
-#
-
-def getObject(name, var, glbals, lcals):
-	try:
-		ob = loadedData['Object'][name]
-	except:
-		if name != "None":
-			expr = "%s = loadedData['Object'][name]" % var
-			print("Todo ", expr)
-			todo.append((expr, glbals, lcals))
-		ob = None
-	return ob
-
-#
-#	parse(tokens):
-#
-
-ifResult = False
-
-def parse(tokens):
-	global warnedVersion, MHX249, ifResult
-	
-	for (key, val, sub) in tokens:	
-		# print("Parse %s" % key)
-		data = None
-		if key == 'MHX':
-			if int(val[0]) != MAJOR_VERSION and int(val[1]) != MINOR_VERSION and not warnedVersion:
-				print("Warning: \nThis file was created with another version of MHX\n")
-				warnedVersion = True
-
-		elif key == 'MHX249':
-			MHX249 = eval(val[0])
-			print("Blender 2.49 compatibility mode is %s\n" % MHX249)
-
-		elif key == 'if':
-			try:
-				ifResult = eval(val[0])
-			except:
-				ifResult = False
-			if ifResult:
-				parse(sub)
-				
-		elif key == 'elif':
-			if not ifResult:
-				try:
-					ifResult = eval(val[0])
-				except:
-					ifResult = False
-				if ifResult:
-					parse(sub)
-		
-		elif key == 'else':
-			if not ifResult:
-				parse(sub)
-		
-
-		elif MHX249:
-			pass
-
-		elif key == 'print':
-			msg = concatList(val)
-			print(msg)
-		elif key == 'warn':
-			msg = concatList(val)
-			print(msg)
-		elif key == 'error':
-			msg = concatList(val)
-			raise NameError(msg)			
-		elif key == "Object":
-			parseObject(val, sub)
-		elif key == "Mesh":
-			data = parseMesh(val, sub)
-		elif key == "Curve":
-			data = parseCurve(val, sub)
-		elif key == "Lattice":
-			data = parseLattice(val, sub)
-		elif key == "Group":
-			data = parseGroup(val, sub)
-		elif key == "Armature":
-			data = parseArmature(val, sub)
-		elif key == "Pose":
-			data = parsePose(val, sub)
-		elif key == "Action":
-			data = parseAction(val, sub)
-		elif key == "Material":
-			data = parseMaterial(val, sub)
-		elif key == "Texture":
-			data = parseTexture(val, sub)
-		elif key == "Image":
-			data = parseImage(val, sub)
-		elif key == "Process":
-			parseProcess(val, sub)
-		elif key == 'AnimationData':
-			try:
-				ob = loadedData['Object'][val[0]]
-			except:
-				ob = None
-			if ob:
-				bpy.context.scene.objects.active = ob
-				parseAnimationData(ob, sub)
-		elif key == 'ShapeKeys':
-			try:
-				ob = loadedData['Object'][val[0]]
-			except:
-				ob = None
-			if ob:
-				bpy.context.scene.objects.active = ob
-				parseShapeKeys(ob, ob.data, val, sub)
-		else:
-			data = parseDefaultType(key, val, sub)				
-
-		if data and key != 'Mesh':
-			print( data )
-	return
-
-#
-#	parseDefaultType(typ, args, tokens):
-#
-
-def parseDefaultType(typ, args, tokens):
-	global todo
-
-	name = args[0]
-	data = None
-	expr = "bpy.data.%s.new('%s')" % (Plural[typ], name)
-	print(expr)
-	data = eval(expr)
-	print("  ok", data)
-
-	bpyType = typ.capitalize()
-	print(bpyType, name, data)
-	loadedData[bpyType][name] = data
-	if data == None:
-		return None
-
-	for (key, val, sub) in tokens:
-		#print("%s %s" % (key, val))
-		defaultKey(key, val, sub, 'data', [], globals(), locals())
-	print("Done ", data)
-	return data
-	
-#
-#	concatList(elts)
-#
-
-def concatList(elts):
-	string = ""
-	for elt in elts:
-		string += " %s" % elt
-	return string
-
-#
-#	parseAction(args, tokens):
-#	parseFCurve(fcu, args, tokens):
-#	parseKeyFramePoint(pt, args, tokens):
-#
-
-def parseAction(args, tokens):
-	name = args[0]
-	if invalid(args[1]):
-		return
-
-	ob = bpy.context.object
-	bpy.ops.object.mode_set(mode='POSE')
-	if ob.animation_data:
-		ob.animation_data.action = None
-	created = {}
-	for (key, val, sub) in tokens:
-		if key == 'FCurve':
-			prepareActionFCurve(ob, created, val, sub)
-		
-	act = ob.animation_data.action
-	loadedData['Action'][name] = act
-	if act == None:
-		print("Ignoring action %s" % name)
-		return act
-	act.name = name
-	print("Action", name, act, ob)
-	
-	for (key, val, sub) in tokens:
-		if key == 'FCurve':
-			fcu = parseActionFCurve(act, ob, val, sub)
-		else:
-			defaultKey(key, val, sub, 'act', [], globals(), locals())
-	ob.animation_data.action = None

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list