[Bf-extensions-cvs] [9948cd6] master: FBX io: add support for the 'visibility' option (though in Blender it's a bool value)...

Bastien Montagne noreply at git.blender.org
Mon Jun 9 12:17:32 CEST 2014


Commit: 9948cd6025f29fad12eaf6d3b0e738dfb2b50d4a
Author: Bastien Montagne
Date:   Mon Jun 9 12:15:18 2014 +0200
https://developer.blender.org/rBA9948cd6025f29fad12eaf6d3b0e738dfb2b50d4a

FBX io: add support for the 'visibility' option (though in Blender it's a bool value)...

Idea from karanikk (Kostas Karanikolas).

===================================================================

M	io_scene_fbx/export_fbx_bin.py
M	io_scene_fbx/fbx_utils.py
M	io_scene_fbx/import_fbx.py

===================================================================

diff --git a/io_scene_fbx/export_fbx_bin.py b/io_scene_fbx/export_fbx_bin.py
index 1475f2e..c902a66 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 641bf0b..76496bf 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 e91636d..3d165ca 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



More information about the Bf-extensions-cvs mailing list