[Bf-extensions-cvs] [f4f2738f] blender-v2.82-release: glTF exporter: avoid crash using compositor rendering for image generation

Julien Duroure noreply at git.blender.org
Mon Mar 9 20:54:53 CET 2020


Commit: f4f2738f2b64dfaa5db6795711b3e152d981bcd6
Author: Julien Duroure
Date:   Thu Mar 5 18:36:50 2020 +0100
Branches: blender-v2.82-release
https://developer.blender.org/rBAf4f2738f2b64dfaa5db6795711b3e152d981bcd6

glTF exporter: avoid crash using compositor rendering for image generation

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

M	io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py
M	io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py

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

diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py
index 6a381c8f..3d8db566 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_mesh.py
@@ -39,8 +39,8 @@ def gather_mesh(blender_mesh: bpy.types.Mesh,
         extensions=__gather_extensions(blender_mesh, vertex_groups, modifiers, export_settings),
         extras=__gather_extras(blender_mesh, vertex_groups, modifiers, export_settings),
         name=__gather_name(blender_mesh, vertex_groups, modifiers, export_settings),
+        weights=__gather_weights(blender_mesh, vertex_groups, modifiers, export_settings),
         primitives=__gather_primitives(blender_mesh, blender_object, vertex_groups, modifiers, material_names, export_settings),
-        weights=__gather_weights(blender_mesh, vertex_groups, modifiers, export_settings)
     )
 
     if len(mesh.primitives) == 0:
@@ -134,15 +134,6 @@ def __gather_weights(blender_mesh: bpy.types.Mesh,
                      modifiers: Optional[bpy.types.ObjectModifiers],
                      export_settings
                      ) -> Optional[List[float]]:
-
-    # Seems that in some files, when using Apply Modifier, shape_keys return an error
-    # ReferenceError: StructRNA of type Mesh has been removed
-    # Because shapekeys are not exported in that case, we can return None
-    try:
-        blender_mesh.shape_keys
-    except:
-        return None
-
     if not export_settings[MORPH] or not blender_mesh.shape_keys:
         return None
 
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py
index b146928c..091adcad 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_primitives.py
@@ -59,6 +59,8 @@ def gather_primitives(
             material = gltf2_blender_gather_materials.gather_material(blender_material,
                                                                   double_sided,
                                                                   export_settings)
+            # NOTE: gather_material may invalidate blender_mesh (see #932),
+            # so make sure not to access blender_mesh again after this point
         except IndexError:
             # no material at that index
             pass



More information about the Bf-extensions-cvs mailing list