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:
authorJulien Duroure <julien.duroure@gmail.com>2020-07-21 21:28:43 +0300
committerJulien Duroure <julien.duroure@gmail.com>2020-07-21 21:28:43 +0300
commit47ea656bdd61e5d19f577b1155789e443e26e3e3 (patch)
tree0df285bb2b94290c9c5184960db1bbb39ccf88d2
parent422c47c5f79ed0e693d6b876b232736d34af83d9 (diff)
glTF exporter: export curve/surface/text objects as meshes
Thanks scurest!
-rwxr-xr-xio_scene_gltf2/__init__.py2
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py46
2 files changed, 47 insertions, 1 deletions
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