[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3020] trunk/py/scripts/addons/ io_import_scene_mhx.py: MHX importer: temporary commit for Bmesh.
Thomas Larsson
thomas_larsson_01 at hotmail.com
Sun Feb 26 21:37:43 CET 2012
Revision: 3020
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3020
Author: thomasl
Date: 2012-02-26 20:37:36 +0000 (Sun, 26 Feb 2012)
Log Message:
-----------
MHX importer: temporary commit for Bmesh. UV coordinates are ignored, but at least the script does not crash.
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 2012-02-26 18:02:32 UTC (rev 3019)
+++ trunk/py/scripts/addons/io_import_scene_mhx.py 2012-02-26 20:37:36 UTC (rev 3020)
@@ -26,7 +26,7 @@
"""
Abstract
MHX (MakeHuman eXchange format) importer for Blender 2.5x.
-Version 1.10.2
+Version 1.10.3
This script should be distributed with Blender.
If not, place it in the .blender/scripts/addons dir
@@ -39,8 +39,8 @@
bl_info = {
'name': 'Import: MakeHuman (.mhx)',
'author': 'Thomas Larsson',
- 'version': (1, 10, 2),
- "blender": (2, 5, 9),
+ 'version': (1, 10, 3),
+ "blender": (2, 6, 2),
'location': "File > Import > MakeHuman (.mhx)",
'description': 'Import files in the MakeHuman eXchange format (.mhx)',
'warning': '',
@@ -51,7 +51,7 @@
MAJOR_VERSION = 1
MINOR_VERSION = 10
-SUB_VERSION = 2
+SUB_VERSION = 3
BLENDER_VERSION = (2, 59, 2)
#
@@ -1051,7 +1051,7 @@
parseDefault(ob.field, sub, {}, [])
else:
defaultKey(key, val, sub, "ob", ['type', 'data'], globals(), locals())
-
+
# Needed for updating layers
if bpy.context.object == ob:
pass
@@ -1341,12 +1341,17 @@
def parseUvTexture(args, tokens, me):
name = args[0]
- me.uv_textures.new(name = name)
- uvtex = me.uv_textures[-1]
- loadedData['MeshTextureFaceLayer'][name] = uvtex
+ uvtex = me.uv_textures.new(name = name)
+ print("WARNING: UV texture %s ignored until BMesh api is understood" % name)
+ return
+ uvtex.active = True
+ tessUvtex = me.tessface_uv_textures.active
+ print("UV textures:")
+ print(" ", me.uv_textures.active_index, uvtex, tessUvtex)
+ loadedData['MeshTextureFaceLayer'][name] = tessUvtex
for (key, val, sub) in tokens:
if key == 'Data':
- parseUvTexData(val, sub, uvtex.data)
+ parseUvTexData(val, sub, tessUvtex.data)
else:
defaultKey(key, val, sub, "uvtex", [], globals(), locals())
return
@@ -1360,6 +1365,9 @@
data[n].uv3 = (float(val[4]), float(val[5]))
if len(val) > 6:
data[n].uv4 = (float(val[6]), float(val[7]))
+ print(val)
+ print(data[n].uv1, data[n].uv2, data[n].uv3, data[n].uv4)
+ halt
n += 1
else:
pass
@@ -2007,7 +2015,7 @@
except:
ob = None
if toggle & T_Diamond == 0 and ob:
- deleteDiamonds(ob)
+ deleteDiamonds(ob)
return
#
@@ -3248,7 +3256,7 @@
else:
setBoneLocation(context, pbones[b+'_L'], scale, loc, False, setKey, frame)
setBoneLocation(context, pbones[b+'_R'], scale, loc, True, setKey, frame)
- updatePose(rig)
+ updatePose(context.scene)
return
def setBoneLocation(context, pb, scale, loc, mirror, setKey, frame):
@@ -3297,7 +3305,7 @@
setViseme(context, vis, True, int(words[0])+offs)
fp.close()
setInterpolation(rig)
- updatePose(rig)
+ updatePose(context.scene)
print("Moho file %s loaded" % filepath)
return
@@ -3315,7 +3323,7 @@
setViseme(context, vis, True, int(words[0])+offs)
fp.close()
setInterpolation(rig)
- updatePose(rig)
+ updatePose(context.scene)
print("Magpie file %s loaded" % filepath)
return
@@ -3397,13 +3405,14 @@
return
#
-# updatePose(rig):
+# updatePose(scn):
# class VIEW3D_OT_MhxUpdateButton(bpy.types.Operator):
#
-def updatePose(rig):
- pb = rig.pose.bones["PFaceDisp"]
- pb.location = pb.location
+def updatePose(scn):
+ scn = bpy.context.scene
+ scn.frame_current = scn.frame_current
+ #scn.frame_current -= 1
return
class VIEW3D_OT_MhxUpdateButton(bpy.types.Operator):
@@ -3411,8 +3420,7 @@
bl_label = "Update"
def execute(self, context):
- rig = getMhxRig(context.object)
- updatePose(rig)
+ updatePose(context.scene)
return{'FINISHED'}
@@ -3434,7 +3442,7 @@
props = getShapeProps(rig)
for (prop, name) in props:
rig[prop] = 0.0
- updatePose(rig)
+ updatePose(context.scene)
return{'FINISHED'}
#
@@ -3451,7 +3459,7 @@
frame = context.scene.frame_current
for (prop, name) in props:
rig.keyframe_insert('["%s"]' % prop, frame=frame)
- updatePose(rig)
+ updatePose(context.scene)
return{'FINISHED'}
#
# class VIEW3D_OT_MhxPinExpressionButton(bpy.types.Operator):
@@ -3481,7 +3489,7 @@
rig[prop] = 1.0
else:
rig[prop] = 0.0
- updatePose(rig)
+ updatePose(context.scene)
return{'FINISHED'}
#
@@ -3599,13 +3607,35 @@
def draw(self, context):
ob = context.object
+ layout = self.layout
props = list(ob.keys())
props.sort()
for prop in props:
if prop[0:4] == "Hide":
- self.layout.prop(ob, '["%s"]' % prop)
+ layout.prop(ob, '["%s"]' % prop)
+ layout.separator()
+ layout.operator("mhx.update_textures")
return
+class VIEW3D_OT_MhxUpdateTexturesButton(bpy.types.Operator):
+ bl_idname = "mhx.update_textures"
+ bl_label = "Update"
+
+ def execute(self, context):
+ scn = context.scene
+ for mat in bpy.data.materials:
+ if mat.animation_data:
+ try:
+ mat["MhxDriven"]
+ except:
+ continue
+ for driver in mat.animation_data.drivers:
+ prop = mat.path_resolve(driver.data_path)
+ value = driver.evaluate(scn.frame_current)
+ #print("Update %s[%d] = %s" % (driver.data_path, driver.array_index, value))
+ prop[driver.array_index] = value
+ return{'FINISHED'}
+
###################################################################################
#
# Layers panel
@@ -3747,7 +3777,6 @@
fcu.extrapolation = 'CONSTANT'
return
-
###################################################################################
#
# initialize and register
@@ -3762,14 +3791,17 @@
bpy.types.INFO_MT_file_import.append(menu_func)
def unregister():
- bpy.utils.unregister_module(__name__)
- bpy.types.INFO_MT_file_import.remove(menu_func)
-
-if __name__ == "__main__":
try:
- unregister()
+ bpy.utils.unregister_module(__name__)
except:
pass
+ try:
+ bpy.types.INFO_MT_file_import.remove(menu_func)
+ except:
+ pass
+
+if __name__ == "__main__":
+ unregister()
register()
More information about the Bf-extensions-cvs
mailing list