diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2014-06-09 14:15:18 +0400 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2014-06-09 14:15:18 +0400 |
commit | 9948cd6025f29fad12eaf6d3b0e738dfb2b50d4a (patch) | |
tree | 7812dbf6efa610100fbe8d3e956b9b3d04d8620d | |
parent | fcec7304a00de3b612c6a5435328fdfd753fecd3 (diff) |
FBX io: add support for the 'visibility' option (though in Blender it's a bool value)...v2.71-rc1v2.71
Idea from karanikk (Kostas Karanikolas).
-rw-r--r-- | io_scene_fbx/export_fbx_bin.py | 1 | ||||
-rw-r--r-- | io_scene_fbx/fbx_utils.py | 4 | ||||
-rw-r--r-- | io_scene_fbx/import_fbx.py | 16 |
3 files changed, 21 insertions, 0 deletions
diff --git a/io_scene_fbx/export_fbx_bin.py b/io_scene_fbx/export_fbx_bin.py index 1475f2e7..c902a667 100644 --- a/io_scene_fbx/export_fbx_bin.py +++ b/io_scene_fbx/export_fbx_bin.py @@ -1353,6 +1353,7 @@ def fbx_data_object_elements(root, ob_obj, scene_data): elem_props_template_set(tmpl, props, "p_lcl_translation", b"Lcl Translation", loc) elem_props_template_set(tmpl, props, "p_lcl_rotation", b"Lcl Rotation", rot) elem_props_template_set(tmpl, props, "p_lcl_scaling", b"Lcl Scaling", scale) + elem_props_template_set(tmpl, props, "p_visibility", b"Visibility", float(not ob_obj.hide)) # Custom properties. if scene_data.settings.use_custom_properties: diff --git a/io_scene_fbx/fbx_utils.py b/io_scene_fbx/fbx_utils.py index 641bf0b7..76496bf4 100644 --- a/io_scene_fbx/fbx_utils.py +++ b/io_scene_fbx/fbx_utils.py @@ -679,6 +679,10 @@ class ObjectWrapper(metaclass=MetaObjectWrapper): return get_fbx_uuid_from_key(self.key) fbx_uuid = property(get_fbx_uuid) + def get_hide(self): + return self.bdata.hide + hide = property(get_hide) + def get_parent(self): if self._tag == 'OB': return ObjectWrapper(self.bdata.parent) diff --git a/io_scene_fbx/import_fbx.py b/io_scene_fbx/import_fbx.py index e91636df..3d165cad 100644 --- a/io_scene_fbx/import_fbx.py +++ b/io_scene_fbx/import_fbx.py @@ -227,6 +227,21 @@ def elem_props_get_enum(elem, elem_prop_id, default=None): return default +def elem_props_get_visibility(elem, elem_prop_id, default=None): + elem_prop = elem_props_find_first(elem, elem_prop_id) + if elem_prop is not None: + assert(elem_prop.props[0] == elem_prop_id) + assert(elem_prop.props[1] == b'Visibility') + assert(elem_prop.props[2] == b'') + assert(elem_prop.props[3] in {b'A', b'A+', b'AU'}) + + # we could allow other number types + assert(elem_prop.props_type[4] == data_types.FLOAT64) + + return elem_prop.props[4] + return default + + # ---------------------------------------------------------------------------- # Blender @@ -251,6 +266,7 @@ def blen_read_object(fbx_tmpl, fbx_obj, object_data): # Misc Attributes obj.color[0:3] = elem_props_get_color_rgb(fbx_props, b'Color', (0.8, 0.8, 0.8)) + obj.hide = not bool(elem_props_get_visibility(fbx_props, b'Visibility', 1.0)) # ---- # Transformation |