From 6da09c309d756cecac66ac27257414c36f9b51b7 Mon Sep 17 00:00:00 2001 From: Julien Duroure <julien.duroure@gmail.com> Date: Sun, 6 Feb 2022 16:51:03 +0100 Subject: [PATCH] glTF exporter: remove proxy management --- io_scene_gltf2/__init__.py | 2 +- io_scene_gltf2/blender/exp/gltf2_blender_gather.py | 12 ++++-------- .../gltf2_blender_gather_animation_channel_target.py | 6 ++---- .../exp/gltf2_blender_gather_animation_channels.py | 3 +-- ...tf2_blender_gather_animation_sampler_keyframes.py | 3 +-- .../blender/exp/gltf2_blender_gather_nodes.py | 8 +++----- 6 files changed, 12 insertions(+), 22 deletions(-) diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py index dc8abae32..d720d8525 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, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin SchmithĂĽsen, Jim Eckerlein, and many external contributors', - "version": (3, 2, 1), + "version": (3, 2, 2), 'blender': (3, 1, 0), 'location': 'File > Import-Export', 'description': 'Import-Export as glTF 2.0', diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather.py index 6f68c19ee..3a33c074f 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather.py @@ -51,9 +51,8 @@ def __gather_scene(blender_scene, export_settings): nodes=[] ) - for _blender_object in [obj for obj in blender_scene.objects if obj.proxy is None]: - if _blender_object.parent is None: - blender_object = _blender_object.proxy if _blender_object.proxy else _blender_object + for blender_object in blender_scene.objects: + if blender_object.parent is None: node = gltf2_blender_gather_nodes.gather_node( blender_object, blender_object.library.name if blender_object.library else None, @@ -70,17 +69,14 @@ def __gather_animations(blender_scene, export_settings): animations = [] merged_tracks = {} - for _blender_object in blender_scene.objects: - - blender_object = _blender_object.proxy if _blender_object.proxy else _blender_object + for blender_object in blender_scene.objects: # First check if this object is exported or not. Do not export animation of not exported object obj_node = gltf2_blender_gather_nodes.gather_node(blender_object, blender_object.library.name if blender_object.library else None, blender_scene, None, export_settings) if obj_node is not None: - # Check was done on armature, but use here the _proxy object, because this is where the animation is - animations_, merged_tracks = gltf2_blender_gather_animations.gather_animations(_blender_object, merged_tracks, len(animations), export_settings) + animations_, merged_tracks = gltf2_blender_gather_animations.gather_animations(blender_object, merged_tracks, len(animations), export_settings) animations += animations_ if export_settings['gltf_nla_strips'] is False: diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channel_target.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channel_target.py index 890ce0aba..ed9c5f8ce 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channel_target.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channel_target.py @@ -86,13 +86,11 @@ def __gather_node(channels: typing.Tuple[bpy.types.FCurve], if isinstance(blender_bone, bpy.types.PoseBone): if export_settings["gltf_def_bones"] is False: - obj = blender_object.proxy if blender_object.proxy else blender_object - return gltf2_blender_gather_joints.gather_joint(obj, blender_bone, export_settings) + return gltf2_blender_gather_joints.gather_joint(blender_object, blender_bone, export_settings) else: bones, _, _ = gltf2_blender_gather_skins.get_bone_tree(None, blender_object) if blender_bone.name in [b.name for b in bones]: - obj = blender_object.proxy if blender_object.proxy else blender_object - return gltf2_blender_gather_joints.gather_joint(obj, blender_bone, export_settings) + return gltf2_blender_gather_joints.gather_joint(blender_object, blender_bone, export_settings) return gltf2_blender_gather_nodes.gather_node(blender_object, blender_object.library.name if blender_object.library else None, diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py index 726104f4d..004e8d646 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_channels.py @@ -112,8 +112,7 @@ def gather_animation_channels(blender_action: bpy.types.Action, # Retrieve channels for drivers, if needed - obj_driver = blender_object.proxy if blender_object.proxy else blender_object - drivers_to_manage = gltf2_blender_gather_drivers.get_sk_drivers(obj_driver) + drivers_to_manage = gltf2_blender_gather_drivers.get_sk_drivers(blender_object) for obj, fcurves in drivers_to_manage: channel = __gather_animation_channel( fcurves, diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_sampler_keyframes.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_sampler_keyframes.py index caf142174..bd0ce3059 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_sampler_keyframes.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_animation_sampler_keyframes.py @@ -174,8 +174,7 @@ def get_bone_matrix(blender_object_if_armature: typing.Optional[bpy.types.Object # If some drivers must be evaluated, do it here, to avoid to have to change frame by frame later - obj_driver = blender_object_if_armature.proxy if blender_object_if_armature.proxy else blender_object_if_armature - drivers_to_manage = get_sk_drivers(obj_driver) + drivers_to_manage = get_sk_drivers(blender_object_if_armature) for dr_obj, dr_fcurves in drivers_to_manage: vals = get_sk_driver_values(dr_obj, frame, dr_fcurves) 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 13c347dc6..d94b8c079 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py @@ -166,15 +166,13 @@ def __gather_children(blender_object, blender_scene, export_settings): children = [] only_bone_children = True # True by default, will be set to False if needed # standard children - for _child_object in blender_object.children: - if _child_object.parent_bone: + for child_object in blender_object.children: + if child_object.parent_bone: # this is handled further down, # as the object should be a child of the specific bone, # not the Armature object continue - child_object = _child_object.proxy if _child_object.proxy else _child_object - node = gather_node(child_object, child_object.library.name if child_object.library else None, blender_scene, None, export_settings) @@ -187,7 +185,7 @@ def __gather_children(blender_object, blender_scene, export_settings): if dupli_object.parent is not None: continue if dupli_object.type == "ARMATURE": - continue # There is probably a proxy + continue # There is probably a proxy (no more existing) node = gather_node(dupli_object, dupli_object.library.name if dupli_object.library else None, blender_scene, blender_object.name, export_settings) -- GitLab