glTF exporter: export curve/surface/text objects as meshes
Thanks scurest!
This commit is contained in:
parent
422c47c5f7
commit
47ea656bdd
|
@ -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',
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue