Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py')
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py47
1 files changed, 25 insertions, 22 deletions
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 25784960..b0b2d4b8 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
@@ -194,28 +194,31 @@ def __gather_mesh(vnode, blender_object, export_settings):
if len(modifiers) == 0:
modifiers = None
- # TODO for objects without any modifiers, we can keep original mesh_data
- # It will instance mesh in glTF
- if export_settings[gltf2_blender_export_keys.APPLY]:
- armature_modifiers = {}
- if export_settings[gltf2_blender_export_keys.SKINS]:
- # temporarily disable Armature modifiers if exporting skins
- for idx, modifier in enumerate(blender_object.modifiers):
- if modifier.type == 'ARMATURE':
- armature_modifiers[idx] = modifier.show_viewport
- modifier.show_viewport = False
-
- depsgraph = bpy.context.evaluated_depsgraph_get()
- blender_mesh_owner = blender_object.evaluated_get(depsgraph)
- blender_mesh = blender_mesh_owner.to_mesh(preserve_all_data_layers=True, depsgraph=depsgraph)
- for prop in blender_object.data.keys():
- blender_mesh[prop] = blender_object.data[prop]
- skip_filter = True
- if export_settings[gltf2_blender_export_keys.SKINS]:
- # restore Armature modifiers
- for idx, show_viewport in armature_modifiers.items():
- blender_object.modifiers[idx].show_viewport = show_viewport
+ if export_settings[gltf2_blender_export_keys.APPLY]:
+ if modifiers is None: # If no modifier, use original mesh, it will instance all shared mesh in a single glTF mesh
+ blender_mesh = blender_object.data
+ skip_filter = False
+ else:
+ armature_modifiers = {}
+ if export_settings[gltf2_blender_export_keys.SKINS]:
+ # temporarily disable Armature modifiers if exporting skins
+ for idx, modifier in enumerate(blender_object.modifiers):
+ if modifier.type == 'ARMATURE':
+ armature_modifiers[idx] = modifier.show_viewport
+ modifier.show_viewport = False
+
+ depsgraph = bpy.context.evaluated_depsgraph_get()
+ blender_mesh_owner = blender_object.evaluated_get(depsgraph)
+ blender_mesh = blender_mesh_owner.to_mesh(preserve_all_data_layers=True, depsgraph=depsgraph)
+ for prop in blender_object.data.keys():
+ blender_mesh[prop] = blender_object.data[prop]
+ skip_filter = True
+
+ if export_settings[gltf2_blender_export_keys.SKINS]:
+ # restore Armature modifiers
+ for idx, show_viewport in armature_modifiers.items():
+ blender_object.modifiers[idx].show_viewport = show_viewport
else:
blender_mesh = blender_object.data
skip_filter = False
@@ -249,7 +252,7 @@ def __gather_mesh(vnode, blender_object, export_settings):
None,
export_settings)
- if export_settings[gltf2_blender_export_keys.APPLY]:
+ if export_settings[gltf2_blender_export_keys.APPLY] and modifiers is not None:
blender_mesh_owner.to_mesh_clear()
return result