glTF exporter: do not bake selected skinned meshes, as glTF transforms must be ignored on skinned meshes

This commit is contained in:
Julien Duroure 2022-08-24 17:09:52 +02:00
parent 57b65bd3f4
commit e0d33461ce
2 changed files with 16 additions and 13 deletions

View File

@ -4,7 +4,7 @@
bl_info = {
'name': 'glTF 2.0 format',
'author': 'Julien Duroure, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
"version": (3, 3, 26),
"version": (3, 3, 27),
'blender': (3, 3, 0),
'location': 'File > Import-Export',
'description': 'Import-Export as glTF 2.0',

View File

@ -66,19 +66,22 @@ def gather_animations( obj_uuid: int,
# (Only when force sampling is ON)
# If force sampling is OFF, can lead to inconsistent export anyway
if export_settings['gltf_selected'] is True and blender_object.type != "ARMATURE" and export_settings['gltf_force_sampling'] is True:
channels = __gather_channels_baked(obj_uuid, export_settings)
if channels is not None:
animation = gltf2_io.Animation(
channels=channels,
extensions=None, # as other animations
extras=None, # Because there is no animation to get extras from
name=blender_object.name, # Use object name as animation name
samplers=[]
)
# We also have to check if this is a skinned mesh, because we don't have to force animation baking on this case
# (skinned meshes TRS must be ignored, says glTF specification)
if export_settings['vtree'].nodes[obj_uuid].skin is None:
channels = __gather_channels_baked(obj_uuid, export_settings)
if channels is not None:
animation = gltf2_io.Animation(
channels=channels,
extensions=None, # as other animations
extras=None, # Because there is no animation to get extras from
name=blender_object.name, # Use object name as animation name
samplers=[]
)
__link_samplers(animation, export_settings)
if animation is not None:
animations.append(animation)
__link_samplers(animation, export_settings)
if animation is not None:
animations.append(animation)
elif export_settings['gltf_selected'] is True and blender_object.type == "ARMATURE":
# We need to bake all bones. Because some bone can have some constraints linking to
# some other armature bones, for example