From 79bcb17b7b5bb194c211977a27b6416a70e71f64 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Fri, 9 Aug 2013 08:36:43 +0000 Subject: [PATCH] add support for empty objects --- io_scene_fbx/import_fbx.py | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/io_scene_fbx/import_fbx.py b/io_scene_fbx/import_fbx.py index f5bb75bcf..0d8d02a4d 100644 --- a/io_scene_fbx/import_fbx.py +++ b/io_scene_fbx/import_fbx.py @@ -574,7 +574,6 @@ def load(operator, context, filepath="", fbx_item[1] = blen_read_light(fbx_obj) _(); del _ - # ---- # Connections def connection_filter_ex(fbx_uuid, fbx_id, dct): @@ -596,13 +595,24 @@ def load(operator, context, filepath="", if fbx_obj.id != b'Model': continue - # mesh = fbx_table_nodes[fbx_uuid][1] - for fbx_lnk, fbx_lnk_item, fbx_lnk_type in connection_filter_reverse(fbx_uuid, None): - if not isinstance(fbx_lnk_item, bpy.types.ID): - continue - if isinstance(fbx_lnk_item, (bpy.types.Material, bpy.types.Image)): - continue - + # Create empty object or search for object data + if fbx_obj.props[2] == b'Null': + fbx_lnk_item = None + ok = True + else: + ok = False + for fbx_lnk, fbx_lnk_item, fbx_lnk_type in connection_filter_reverse(fbx_uuid, None): + if fbx_lnk_type.props[0] != b'OO': + continue + if not isinstance(fbx_lnk_item, bpy.types.ID): + continue + if isinstance(fbx_lnk_item, (bpy.types.Material, bpy.types.Image)): + continue + ok = True + break + + if ok: + print(fbx_lnk_type) # create when linking since we need object data obj = blen_read_object(fbx_obj, fbx_lnk_item, global_matrix) assert(fbx_item[1] is None) @@ -613,6 +623,18 @@ def load(operator, context, filepath="", obj_base.select = True _(); del _ + def _(): + # Link objects, keep first, this also creates objects + for fbx_uuid, fbx_item in fbx_table_nodes.items(): + fbx_obj, blen_data = fbx_item + if fbx_obj.id != b'Model': + continue + if fbx_item[1] is None: + continue # no object loaded.. ignore + + + _(); del _ + def _(): # link Material's to Geometry (via Model's) for fbx_uuid, fbx_item in fbx_table_nodes.items(): -- GitLab