[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [2392] trunk/py/scripts/addons/ io_scene_fbx/export_fbx.py: shape key support for FBX
Campbell Barton
ideasman42 at gmail.com
Wed Oct 5 06:51:47 CEST 2011
Revision: 2392
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=2392
Author: campbellbarton
Date: 2011-10-05 04:51:43 +0000 (Wed, 05 Oct 2011)
Log Message:
-----------
shape key support for FBX
Modified Paths:
--------------
trunk/py/scripts/addons/io_scene_fbx/export_fbx.py
Modified: trunk/py/scripts/addons/io_scene_fbx/export_fbx.py
===================================================================
--- trunk/py/scripts/addons/io_scene_fbx/export_fbx.py 2011-10-04 22:01:58 UTC (rev 2391)
+++ trunk/py/scripts/addons/io_scene_fbx/export_fbx.py 2011-10-05 04:51:43 UTC (rev 2392)
@@ -1320,6 +1320,7 @@
do_materials = bool(my_mesh.blenMaterials)
do_textures = bool(my_mesh.blenTextures)
do_uvs = bool(me.uv_textures)
+ do_shapekeys = bool(my_mesh.blenObject.data.shape_keys and len(my_mesh.blenObject.data.vertices) == len(me.vertices))
fw('\n\tModel: "Model::%s", "Mesh" {' % my_mesh.fbxName)
fw('\n\t\tVersion: 232') # newline is added in write_object_props
@@ -1332,6 +1333,10 @@
poseMatrix = write_object_props(my_mesh.blenObject, None, my_mesh.parRelMatrix())[3]
pose_items.append((my_mesh.fbxName, poseMatrix))
+ if do_shapekeys:
+ for kb in my_mesh.blenObject.data.shape_keys.key_blocks[1:]:
+ fw('\n\t\t\tProperty: "%s", "Number", "AN",0' % kb.name)
+
fw('\n\t\t}')
fw('\n\t\tMultiLayer: 0'
@@ -1774,6 +1779,67 @@
fw('\n\t\t\t\tTypedIndex: %i' % i)
fw('\n\t\t\t}')
fw('\n\t\t}')
+
+ if do_shapekeys:
+ key_blocks = my_mesh.blenObject.data.shape_keys.key_blocks[:]
+ for kb in key_blocks[1:]:
+
+ fw('\n\t\tShape: "%s" {' % kb.name)
+ fw('\n\t\t\tIndexes: ')
+
+ basis_verts = key_blocks[0].data
+ range_verts = []
+ delta_verts = []
+ i = -1
+ for j, kv in enumerate(kb.data):
+ delta = kv.co - basis_verts[j].co
+ if delta.length > 0.000001:
+ if i == -1:
+ fw('%d' % j)
+ else:
+ if i == 7:
+ fw('\n\t\t\t')
+ i = 0
+ fw(',%d' % j)
+ delta_verts.append(delta[:])
+ i += 1
+
+ fw('\n\t\t\tVertices: ')
+ i = -1
+ for dv in delta_verts:
+ if i == -1:
+ fw("%g,%g,%g" % dv)
+ else:
+ if i == 4:
+ fw('\n\t\t\t')
+ i = 0
+ fw(",%g,%g,%g" % dv)
+ i += 1
+
+ # all zero, why? - campbell
+ fw('\n\t\t\tNormals: ')
+ for j in range(len(delta_verts)):
+ if i == -1:
+ fw("0,0,0")
+ else:
+ if i == 4:
+ fw('\n\t\t\t')
+ i = 0
+ fw(",0,0,0")
+ i += 1
+ fw('\n\t\t}')
+
+ for v in me_vertices:
+ if i == -1:
+ fw('%.6f,%.6f,%.6f' % v.co[:])
+ i = 0
+ else:
+ if i == 7:
+ fw('\n\t\t')
+ i = 0
+ fw(',%.6f,%.6f,%.6f' % v.co[:])
+ i += 1
+
fw('\n\t}')
def write_group(name):
More information about the Bf-extensions-cvs
mailing list