[Bf-extensions-cvs] [33eae7da] master: glTF exporter: filtering of exported nodes

Julien Duroure noreply at git.blender.org
Tue Oct 20 22:38:08 CEST 2020


Commit: 33eae7da675d532bbb9c12b129c0e30228f5f000
Author: Julien Duroure
Date:   Tue Oct 20 22:36:51 2020 +0200
Branches: master
https://developer.blender.org/rBA33eae7da675d532bbb9c12b129c0e30228f5f000

glTF exporter: filtering of exported nodes

This partially solves bugs on "use_selected" option.
Not perfect yet (for example on collection or linked collection), but better than nothing for now

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

M	io_scene_gltf2/__init__.py
M	io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py

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

diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index 6b4a88d0..03180b3f 100755
--- a/io_scene_gltf2/__init__.py
+++ b/io_scene_gltf2/__init__.py
@@ -15,7 +15,7 @@
 bl_info = {
     'name': 'glTF 2.0 format',
     'author': 'Julien Duroure, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
-    "version": (1, 4, 37),
+    "version": (1, 4, 38),
     'blender': (2, 91, 0),
     'location': 'File > Import-Export',
     'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
index 30058309..35c2df00 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
@@ -49,25 +49,45 @@ def gather_node(blender_object, library, blender_scene, dupli_object_parent, exp
 
 @cached
 def __gather_node(blender_object, library, blender_scene, dupli_object_parent, export_settings):
+    children = __gather_children(blender_object, blender_scene, export_settings)
+
+    camera = None
+    mesh = None
+    skin = None
+    weights = None
+
     # If blender_scene is None, we are coming from animation export
     # Check to know if object is exported is already done, so we don't check
     # again if object is instanced in scene : this check was already done when exporting object itself
     if not __filter_node(blender_object, blender_scene, export_settings):
-        return None
+        if children:
+            # This node should be filtered out, but has un-filtered children present.
+            # So, export this node, excluding its camera, mesh, skin, and weights.
+            # The transformations and animations on this node will have visible effects on children.
+            pass
+        else:
+            # This node is filtered out, and has no un-filtered children or descendants.
+            return None
+    else:
+        # This node is being fully exported.
+        camera = __gather_camera(blender_object, export_settings)
+        mesh = __gather_mesh(blender_object, library, export_settings)
+        skin = __gather_skin(blender_object, export_settings)
+        weights = __gather_weights(blender_object, export_settings)
 
     node = gltf2_io.Node(
-        camera=__gather_camera(blender_object, export_settings),
-        children=__gather_children(blender_object, blender_scene, export_settings),
+        camera=camera,
+        children=children,
         extensions=__gather_extensions(blender_object, export_settings),
         extras=__gather_extras(blender_object, export_settings),
         matrix=__gather_matrix(blender_object, export_settings),
-        mesh=__gather_mesh(blender_object, library, export_settings),
+        mesh=mesh,
         name=__gather_name(blender_object, export_settings),
         rotation=None,
         scale=None,
-        skin=__gather_skin(blender_object, export_settings),
+        skin=skin,
         translation=None,
-        weights=__gather_weights(blender_object, export_settings)
+        weights=weights
     )
 
     # If node mesh is skined, transforms should be ignored at import, so no need to set them here



More information about the Bf-extensions-cvs mailing list