[Bf-extensions-cvs] [47ea656b] master: glTF exporter: export curve/surface/text objects as meshes

Julien Duroure noreply at git.blender.org
Tue Jul 21 20:33:18 CEST 2020


Commit: 47ea656bdd61e5d19f577b1155789e443e26e3e3
Author: Julien Duroure
Date:   Tue Jul 21 20:28:43 2020 +0200
Branches: master
https://developer.blender.org/rBA47ea656bdd61e5d19f577b1155789e443e26e3e3

glTF exporter: export curve/surface/text objects as meshes

Thanks scurest!

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

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 02fc114f..92d828bb 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, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
-    "version": (1, 3, 37),
+    "version": (1, 3, 38),
     'blender': (2, 90, 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 83984c2b..b2ca5be5 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
@@ -248,6 +248,9 @@ def __gather_matrix(blender_object, export_settings):
 
 
 def __gather_mesh(blender_object, library, export_settings):
+    if blender_object.type in ['CURVE', 'SURFACE', 'FONT']:
+        return __gather_mesh_from_nonmesh(blender_object, library, export_settings)
+
     if blender_object.type != "MESH":
         return None
 
@@ -338,6 +341,49 @@ def __gather_mesh(blender_object, library, export_settings):
     return result
 
 
+def __gather_mesh_from_nonmesh(blender_object, library, export_settings):
+    """Handles curves, surfaces, text, etc."""
+    needs_to_mesh_clear = False
+    try:
+        # Convert to a mesh
+        try:
+            if export_settings[gltf2_blender_export_keys.APPLY]:
+                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)
+                # TODO: do we need preserve_all_data_layers?
+
+            else:
+                blender_mesh_owner = blender_object
+                blender_mesh = blender_mesh_owner.to_mesh()
+
+        except Exception:
+            return None
+
+        needs_to_mesh_clear = True
+
+        skip_filter = True
+        material_names = tuple([ms.material.name for ms in blender_object.material_slots if ms.material is not None])
+        vertex_groups = None
+        modifiers = None
+        blender_object_for_skined_data = None
+
+        result = gltf2_blender_gather_mesh.gather_mesh(blender_mesh,
+                                                       library,
+                                                       blender_object_for_skined_data,
+                                                       vertex_groups,
+                                                       modifiers,
+                                                       skip_filter,
+                                                       material_names,
+                                                       export_settings)
+
+    finally:
+        if needs_to_mesh_clear:
+            blender_mesh_owner.to_mesh_clear()
+
+    return result
+
+
 def __gather_name(blender_object, export_settings):
     return blender_object.name



More information about the Bf-extensions-cvs mailing list