[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4718] trunk/py/scripts/addons/ io_import_scene_mhx.py: MHX importer.
Thomas Larsson
thomas_larsson_01 at hotmail.com
Sat Aug 31 17:08:46 CEST 2013
Revision: 4718
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4718
Author: thomasl
Date: 2013-08-31 15:08:45 +0000 (Sat, 31 Aug 2013)
Log Message:
-----------
MHX importer. All exec statements removed.
Modified Paths:
--------------
trunk/py/scripts/addons/io_import_scene_mhx.py
Modified: trunk/py/scripts/addons/io_import_scene_mhx.py
===================================================================
--- trunk/py/scripts/addons/io_import_scene_mhx.py 2013-08-31 13:35:28 UTC (rev 4717)
+++ trunk/py/scripts/addons/io_import_scene_mhx.py 2013-08-31 15:08:45 UTC (rev 4718)
@@ -38,7 +38,7 @@
bl_info = {
'name': 'Import: MakeHuman (.mhx)',
'author': 'Thomas Larsson',
- 'version': (1, 16, 3),
+ 'version': (1, 16, 4),
"blender": (2, 68, 0),
'location': "File > Import > MakeHuman (.mhx)",
'description': 'Import files in the MakeHuman eXchange format (.mhx)',
@@ -92,8 +92,6 @@
theMessage = ""
theMhxFile = ""
-todo = []
-
#
# toggle flags
#
@@ -203,7 +201,7 @@
#
def readMhxFile(filePath):
- global todo, nErrors, theScale, theArmature, defaultScale, One
+ global nErrors, theScale, theArmature, defaultScale, One
global toggle, warnedVersion, theMessage, alpha7, theDir
defaultScale = theScale
@@ -295,16 +293,6 @@
print( "Parsing" )
parse(tokens)
- for (expr, glbals, lcals) in todo:
- try:
- print("Doing %s" % expr)
- exec(expr, glbals, lcals)
- except:
- msg = "Failed: %s\n" % expr
- print( msg )
- nErrors += 1
- #MyError(msg)
-
scn.objects.active = theArmature
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.select_all(action='DESELECT')
@@ -320,10 +308,10 @@
return
#
-# getObject(name, var, glbals, lcals):
+# getObject(name, var):
#
-def getObject(name, var, glbals, lcals):
+def getObject(name, var):
try:
ob = loadedData['Object'][name]
except:
@@ -479,8 +467,6 @@
#
def parseDefaultType(typ, args, tokens):
- global todo
-
name = args[0]
data = None
expr = "bpy.data.%s.new('%s')" % (Plural[typ], name)
@@ -492,7 +478,7 @@
return None
for (key, val, sub) in tokens:
- defaultKey(key, val, sub, 'data', [], globals(), locals())
+ defaultKey(key, val, sub, data)
return data
#
@@ -537,7 +523,7 @@
if key == 'FCurve':
fcu = parseActionFCurve(act, ob, val, sub)
else:
- defaultKey(key, val, sub, 'act', [], globals(), locals())
+ defaultKey(key, val, sub, act)
ob.animation_data.action = None
bpy.ops.object.mode_set(mode='OBJECT')
return act
@@ -625,7 +611,7 @@
#print(tokens)
#MyError("kp", fcu, n, len(fcu.keyframe_points), val)
else:
- defaultKey(key, val, sub, 'fcu', [], globals(), locals())
+ defaultKey(key, val, sub, fcu)
return fcu
def parseKeyFramePoint(pt, args, tokens):
@@ -651,7 +637,7 @@
if key == 'FCurve':
fcu = parseAnimDataFCurve(adata, rna, val, sub)
else:
- defaultKey(key, val, sub, 'adata', [], globals(), locals())
+ defaultKey(key, val, sub, adata)
return adata
def parseAnimDataFCurve(adata, rna, args, tokens):
@@ -673,7 +659,7 @@
pt = parseKeyFramePoint(pt, val, sub)
n += 1
else:
- defaultKey(key, val, sub, 'fcu', [], globals(), locals())
+ defaultKey(key, val, sub, fcu)
return fcu
"""
@@ -704,7 +690,7 @@
if key == 'DriverVariable':
var = parseDriverVariable(drv, rna, val, sub)
else:
- defaultKey(key, val, sub, 'drv', [], globals(), locals())
+ defaultKey(key, val, sub, drv)
return fcu
def parseDriverVariable(drv, rna, args, tokens):
@@ -717,14 +703,14 @@
parseDriverTarget(var, nTarget, rna, val, sub)
nTarget += 1
else:
- defaultKey(key, val, sub, 'var', [], globals(), locals())
+ defaultKey(key, val, sub, var)
return var
def parseFModifier(fcu, args, tokens):
fmod = fcu.modifiers.new(args[0])
#fmod = fcu.modifiers[0]
for (key, val, sub) in tokens:
- defaultKey(key, val, sub, 'fmod', [], globals(), locals())
+ defaultKey(key, val, sub, fmod)
return fmod
"""
@@ -749,7 +735,7 @@
else:
targ.data_path = propNames(val)[1]
else:
- defaultKey(key, val, sub, 'targ', [], globals(), locals())
+ defaultKey(key, val, sub, targ)
return targ
@@ -760,7 +746,6 @@
#
def parseMaterial(args, tokens):
- global todo
name = args[0]
mat = bpy.data.materials.new(name)
if mat is None:
@@ -786,12 +771,11 @@
parseAnimationData(mat, val, sub)
else:
exclude = ['specular_intensity', 'tangent_shading']
- defaultKey(key, val, sub, 'mat', [], globals(), locals())
+ defaultKey(key, val, sub, mat)
return mat
def parseMTex(mat, args, tokens):
- global todo
index = int(args[0])
texname = args[1]
texco = args[2]
@@ -802,12 +786,11 @@
mtex.texture = tex
for (key, val, sub) in tokens:
- defaultKey(key, val, sub, "mtex", [], globals(), locals())
+ defaultKey(key, val, sub, mtex)
return mtex
def parseTexture(args, tokens):
- global todo
if verbosity > 2:
print( "Parsing texture %s" % args )
name = args[0]
@@ -828,35 +811,32 @@
tex.use_nodes = True
parseNodeTree(tex.node_tree, val, sub)
else:
- defaultKey(key, val, sub, "tex", ['use_nodes', 'use_textures', 'contrast', 'use_alpha'], globals(), locals())
+ defaultKey(key, val, sub, tex, ['use_nodes', 'use_textures', 'contrast', 'use_alpha'])
return tex
def parseRamp(data, args, tokens):
- nvar = "data.%s" % args[0]
- use = "data.use_%s = True" % args[0]
- exec(use)
- ramp = eval(nvar)
+ setattr(data, "use_%s" % args[0], True)
+ ramp = getattr(data, args[0])
elts = ramp.elements
n = 0
for (key, val, sub) in tokens:
- # print("Ramp", key, val)
if key == 'Element':
elts[n].color = eval(val[0])
elts[n].position = eval(val[1])
n += 1
else:
- defaultKey(key, val, sub, "tex", ['use_nodes', 'use_textures', 'contrast'], globals(), locals())
+ defaultKey(key, val, sub, tex, ['use_nodes', 'use_textures', 'contrast'])
def parseSSS(mat, args, tokens):
sss = mat.subsurface_scattering
for (key, val, sub) in tokens:
- defaultKey(key, val, sub, "sss", [], globals(), locals())
+ defaultKey(key, val, sub, sss)
def parseStrand(mat, args, tokens):
strand = mat.strand
for (key, val, sub) in tokens:
- defaultKey(key, val, sub, "strand", [], globals(), locals())
+ defaultKey(key, val, sub, strand)
#
# parseNodeTree(tree, args, tokens):
@@ -873,7 +853,7 @@
if key == 'Node':
parseNodes(tree.nodes, val, sub)
else:
- defaultKey(key, val, sub, "tree", [], globals(), locals())
+ defaultKey(key, val, sub, tree)
def parseNodes(nodes, args, tokens):
print("Nodes", nodes, args)
@@ -885,7 +865,7 @@
elif key == 'Outputs':
parseSocket(node.outputs, val, sub)
else:
- defaultKey(key, val, sub, "node", [], globals(), locals())
+ defaultKey(key, val, sub, node)
def parseNode(node, args, tokens):
print("Node", node, args)
@@ -897,7 +877,7 @@
elif key == 'Outputs':
parseSocket(node.outputs, val, sub)
else:
- defaultKey(key, val, sub, "node", [], globals(), locals())
+ defaultKey(key, val, sub, node)
def parseSocket(socket, args, tokens):
print("Socket", socket, args)
@@ -906,7 +886,7 @@
if key == 'Node':
parseNode(tree.nodes, val, sub)
else:
- defaultKey(key, val, sub, "tree", [], globals(), locals())
+ defaultKey(key, val, sub, tree)
@@ -932,7 +912,6 @@
def parseImage(args, tokens):
- global todo
imgName = args[0]
img = None
for (key, val, sub) in tokens:
@@ -945,7 +924,7 @@
return None
img.name = imgName
else:
- defaultKey(key, val, sub, "img", ['depth', 'dirty', 'has_data', 'size', 'type', 'use_premultiply'], globals(), locals())
+ defaultKey(key, val, sub, img, ['depth', 'dirty', 'has_data', 'size', 'type', 'use_premultiply'])
print ("Image %s" % img )
loadedData['Image'][imgName] = img
return img
@@ -997,7 +976,7 @@
elif key == 'FieldSettings':
parseDefault(ob.field, sub, {}, [])
else:
- defaultKey(key, val, sub, "ob", ['type', 'data'], globals(), locals())
+ defaultKey(key, val, sub, ob, ['type', 'data'])
if bpy.context.object == ob:
if ob.type == 'MESH':
@@ -1061,7 +1040,7 @@
else:
MyError("Unknown hook %s" % val)
else:
- defaultKey(key, val, sub, 'mod', [], globals(), locals())
+ defaultKey(key, val, sub, mod)
return mod
def hookAssignNth(mod, n, select, points):
@@ -1106,7 +1085,7 @@
if key == 'Particles':
parseParticles(psys, val, sub)
else:
- defaultKey(key, val, sub, 'psys', [], globals(), locals())
+ defaultKey(key, val, sub, psys)
return psys
def parseParticles(psys, args, tokens):
@@ -1119,7 +1098,7 @@
n += 1
else:
for par in particles:
- defaultKey(key, val, sub, 'par', [], globals(), locals())
+ defaultKey(key, val, sub, par)
bpy.ops.particle.particle_edit_toggle()
return particles
@@ -1153,7 +1132,7 @@
#
def parseMesh (args, tokens):
- global todo, BMeshAware
+ global BMeshAware
if verbosity > 2:
print( "Parsing mesh %s" % args )
@@ -1214,7 +1193,7 @@
if mat:
me.materials.append(mat)
else:
- defaultKey(key, val, sub, "me", [], globals(), locals())
+ defaultKey(key, val, sub, me)
for (key, val, sub) in tokens:
if key == 'Faces':
@@ -1333,7 +1312,7 @@
if key == 'Data':
parseUvTexDataBMesh(val, sub, uvloop.data)
else:
- defaultKey(key, val, sub, "uvtex", [], globals(), locals())
+ defaultKey(key, val, sub, uvtex)
return
def parseUvTexDataBMesh(args, tokens, data):
@@ -1359,7 +1338,7 @@
if key == 'Data':
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list