[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1897] trunk/py/scripts/addons/ io_scene_fbx/export_fbx.py: remove blend_root, root object.
Campbell Barton
ideasman42 at gmail.com
Sat May 7 04:59:24 CEST 2011
Revision: 1897
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1897
Author: campbellbarton
Date: 2011-05-07 02:59:24 +0000 (Sat, 07 May 2011)
Log Message:
-----------
remove blend_root, root object.
also write out deformed meshes as parentless since the bones `own` them.
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-05-06 03:43:15 UTC (rev 1896)
+++ trunk/py/scripts/addons/io_scene_fbx/export_fbx.py 2011-05-07 02:59:24 UTC (rev 1897)
@@ -53,7 +53,6 @@
# Make sure reserved names are not used
sane_name_mapping_ob['Scene'] = 'Scene_'
-sane_name_mapping_ob['blend_root'] = 'blend_root_'
def increment_string(t):
@@ -68,7 +67,7 @@
return name + '_0'
-# todo - Disallow the name 'Scene' and 'blend_root' - it will bugger things up.
+# todo - Disallow the name 'Scene' - it will bugger things up.
def sane_name(data, dct):
#if not data: return None
@@ -982,7 +981,7 @@
file.write('\n\t}')
# matrixOnly is not used at the moment
- def write_null(my_null=None, fbxName=None, matrixOnly=None):
+ def write_null(my_null=None, fbxName=None):
# ob can be null
if not fbxName:
fbxName = my_null.fbxName
@@ -990,16 +989,11 @@
file.write('\n\tModel: "Model::%s", "Null" {' % fbxName)
file.write('\n\t\tVersion: 232')
- # only use this for the root matrix at the moment
- if matrixOnly:
- poseMatrix = write_object_props(None, None, matrixOnly)[3]
+ if my_null:
+ poseMatrix = write_object_props(my_null.blenObject, None, my_null.parRelMatrix())[3]
+ else:
+ poseMatrix = write_object_props()[3]
- else: # all other Null's
- if my_null:
- poseMatrix = write_object_props(my_null.blenObject, None, my_null.parRelMatrix())[3]
- else:
- poseMatrix = write_object_props()[3]
-
pose_items.append((fbxName, poseMatrix))
file.write('''
@@ -2058,7 +2052,7 @@
Definitions: {
Version: 100
Count: %i''' % (\
- 1 + 1 + camera_count + \
+ 1 + camera_count + \
len(ob_meshes) + \
len(ob_lights) + \
len(ob_cameras) + \
@@ -2067,7 +2061,7 @@
len(ob_bones) + \
bone_deformer_count + \
len(materials) + \
- (len(textures) * 2))) # add 1 for the root model 1 for global settings
+ (len(textures) * 2))) # add 1 for global settings
del bone_deformer_count
@@ -2075,13 +2069,13 @@
ObjectType: "Model" {
Count: %i
}''' % (\
- 1 + camera_count + \
+ camera_count + \
len(ob_meshes) + \
len(ob_lights) + \
len(ob_cameras) + \
len(ob_arms) + \
len(ob_null) + \
- len(ob_bones))) # add 1 for the root model
+ len(ob_bones)))
file.write('''
ObjectType: "Geometry" {
@@ -2150,9 +2144,6 @@
# To comply with other FBX FILES
write_camera_switch()
- # Write the null object
- write_null(None, 'blend_root') # , GLOBAL_MATRIX)
-
for my_null in ob_null:
write_null(my_null)
@@ -2252,8 +2243,6 @@
Relations: {''')
- file.write('\n\tModel: "Model::blend_root", "Null" {\n\t}')
-
for my_null in ob_null:
file.write('\n\tModel: "Model::%s", "Null" {\n\t}' % my_null.fbxName)
@@ -2328,17 +2317,15 @@
# NOTE - The FBX SDK dosnt care about the order but some importers DO!
# for instance, defining the material->mesh connection
- # before the mesh->blend_root crashes cinema4d
+ # before the mesh->parent crashes cinema4d
- # write the fake root node
- file.write('\n\tConnect: "OO", "Model::blend_root", "Model::Scene"')
-
for ob_generic in ob_all_typegroups: # all blender 'Object's we support
for my_ob in ob_generic:
- if my_ob.fbxParent:
+ # for deformed meshes, don't have any parents or they can get twice transformed.
+ if my_ob.fbxParent and (not my_ob.fbxArm):
file.write('\n\tConnect: "OO", "Model::%s", "Model::%s"' % (my_ob.fbxName, my_ob.fbxParent.fbxName))
else:
- file.write('\n\tConnect: "OO", "Model::%s", "Model::blend_root"' % my_ob.fbxName)
+ file.write('\n\tConnect: "OO", "Model::%s", "Model::Scene"' % my_ob.fbxName)
if materials:
for my_mesh in ob_meshes:
@@ -2392,7 +2379,7 @@
file.write('\n\tConnect: "OO", "Model::%s", "GroupSelection::%s"' % (ob_base.fbxName, fbxGroupName))
for my_arm in ob_arms:
- file.write('\n\tConnect: "OO", "Model::%s", "Model::blend_root"' % my_arm.fbxName)
+ file.write('\n\tConnect: "OO", "Model::%s", "Model::Scene"' % my_arm.fbxName)
file.write('\n}')
More information about the Bf-extensions-cvs
mailing list