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.py46
1 files changed, 46 insertions, 0 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 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