From 2905a3283092d083bd372a607c61b92b23a0c838 Mon Sep 17 00:00:00 2001 From: JoshQuake Date: Mon, 4 Nov 2024 19:34:42 -0800 Subject: [PATCH 1/7] added restore_texture_paths() fixed issue with texture filepaths pointing to wrong location --- .../send2ue/resources/extensions/affixes.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/addons/send2ue/resources/extensions/affixes.py b/src/addons/send2ue/resources/extensions/affixes.py index 311c60d9..d3a08164 100644 --- a/src/addons/send2ue/resources/extensions/affixes.py +++ b/src/addons/send2ue/resources/extensions/affixes.py @@ -42,6 +42,8 @@ def add_affixes(): append_affix(slot.material, properties.extensions.affixes.material_name_affix) texture_images = get_texture_images(mesh_object) + for image in texture_images: + save_image_filepath(image) rename_all_textures(texture_images, append_affix, properties) for rig_object in rig_objects: @@ -86,6 +88,9 @@ def remove_affixes(): for action in actions: discard_affix(action, properties.extensions.affixes.animation_sequence_name_affix) +def save_image_filepath(image): + path, filename = os.path.split(image.filepath_from_user()) + AffixesExtension.images_original_paths.append(path) def append_affix(scene_object, affix, is_image=False): """ @@ -210,6 +215,19 @@ def rename_texture(image, new_name): if os.path.exists(new_path): image.filepath = new_path +def restore_texture_paths(): + mesh_objects = utilities.get_from_collection(BlenderTypes.MESH) + for mesh_object in mesh_objects: + texture_images = get_texture_images(mesh_object) + + for index, image in enumerate(texture_images): + original_path = os.path.join( AffixesExtension.images_original_paths[index], image.name ) + + if not os.path.exists(original_path): + shutil.copy(image.filepath_from_user(), original_path) + + image.filepath = original_path + pass def check_asset_affixes(self, context=None): """ @@ -245,6 +263,7 @@ class AffixesExtension(ExtensionBase): AddAssetAffixes, RemoveAssetAffixes ] + images_original_paths = [] show_name_affix_settings: bpy.props.BoolProperty(default=False) # ---------------------------- name affix settings -------------------------------- @@ -331,6 +350,9 @@ def post_operation(self, properties): """ if self.auto_remove_asset_name_affixes: remove_affixes() + + restore_texture_paths() + AffixesExtension.images_original_paths = [] def pre_validations(self, properties): """ From 69b4474a7951f6644fe2bd29aac4fefd10804279 Mon Sep 17 00:00:00 2001 From: JoshQuake Date: Mon, 4 Nov 2024 19:39:01 -0800 Subject: [PATCH 2/7] Update release_notes.md --- src/addons/send2ue/release_notes.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/addons/send2ue/release_notes.md b/src/addons/send2ue/release_notes.md index 44ebd4f2..dfbf69fc 100644 --- a/src/addons/send2ue/release_notes.md +++ b/src/addons/send2ue/release_notes.md @@ -1,14 +1,10 @@ -## Minor Changes -* Added custom root bone name setting - * [88](https://github.com/poly-hammer/BlenderTools/pull/88) - ## Patch Changes -* Fixed collision merging into LOD meshes - * [93](https://github.com/poly-hammer/BlenderTools/pull/93) +* Fixed Texture filepaths post operation + * [99](https://github.com/poly-hammer/BlenderTools/pull/99) ## Special Thanks -@vaeryn-uk (88), @souvey (93) + ## Tests Passing On * Blender `3.6`, `4.2` (installed from blender.org) From 712b6a5af54a9eb2f9f28da3893d1b67901b93e4 Mon Sep 17 00:00:00 2001 From: JoshQuake Date: Mon, 4 Nov 2024 19:56:46 -0800 Subject: [PATCH 3/7] Update affixes.py --- src/addons/send2ue/resources/extensions/affixes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/addons/send2ue/resources/extensions/affixes.py b/src/addons/send2ue/resources/extensions/affixes.py index d3a08164..d6e0b382 100644 --- a/src/addons/send2ue/resources/extensions/affixes.py +++ b/src/addons/send2ue/resources/extensions/affixes.py @@ -227,7 +227,6 @@ def restore_texture_paths(): shutil.copy(image.filepath_from_user(), original_path) image.filepath = original_path - pass def check_asset_affixes(self, context=None): """ From 1c54931e0c4aea4e107ad67330d52abb7ee4809e Mon Sep 17 00:00:00 2001 From: JoshQuake Date: Mon, 4 Nov 2024 19:58:17 -0800 Subject: [PATCH 4/7] Update affixes.py --- src/addons/send2ue/resources/extensions/affixes.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/addons/send2ue/resources/extensions/affixes.py b/src/addons/send2ue/resources/extensions/affixes.py index d6e0b382..1be94146 100644 --- a/src/addons/send2ue/resources/extensions/affixes.py +++ b/src/addons/send2ue/resources/extensions/affixes.py @@ -15,7 +15,8 @@ def add_affixes(): properties = bpy.context.scene.send2ue mesh_objects = utilities.get_from_collection(BlenderTypes.MESH) rig_objects = utilities.get_from_collection(BlenderTypes.SKELETON) - + AffixesExtension.images_original_paths = [] + for mesh_object in mesh_objects: if mesh_object.modifiers: is_armature = False @@ -351,7 +352,6 @@ def post_operation(self, properties): remove_affixes() restore_texture_paths() - AffixesExtension.images_original_paths = [] def pre_validations(self, properties): """ From f1a644faadf631c5419f10e56d3f3abe8dfa16c4 Mon Sep 17 00:00:00 2001 From: JoshQuake Date: Tue, 5 Nov 2024 12:07:02 -0800 Subject: [PATCH 5/7] Update affixes.py --- .../send2ue/resources/extensions/affixes.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/addons/send2ue/resources/extensions/affixes.py b/src/addons/send2ue/resources/extensions/affixes.py index 1be94146..3f8d2e9c 100644 --- a/src/addons/send2ue/resources/extensions/affixes.py +++ b/src/addons/send2ue/resources/extensions/affixes.py @@ -221,13 +221,14 @@ def restore_texture_paths(): for mesh_object in mesh_objects: texture_images = get_texture_images(mesh_object) - for index, image in enumerate(texture_images): - original_path = os.path.join( AffixesExtension.images_original_paths[index], image.name ) - - if not os.path.exists(original_path): - shutil.copy(image.filepath_from_user(), original_path) - - image.filepath = original_path + for image_index, image in enumerate(texture_images): + if image.source == 'FILE': + original_path = os.path.join( AffixesExtension.images_original_paths[image_index], image.name ) + + if not os.path.exists(original_path): + shutil.copy(image.filepath_from_user(), original_path) + + image.filepath = original_path def check_asset_affixes(self, context=None): """ From bdddefe12e8cc814d436cce0964ba7ea8d87e61d Mon Sep 17 00:00:00 2001 From: JoshQuake Date: Tue, 5 Nov 2024 12:35:39 -0800 Subject: [PATCH 6/7] Update affixes.py --- src/addons/send2ue/resources/extensions/affixes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/addons/send2ue/resources/extensions/affixes.py b/src/addons/send2ue/resources/extensions/affixes.py index 3f8d2e9c..8378404c 100644 --- a/src/addons/send2ue/resources/extensions/affixes.py +++ b/src/addons/send2ue/resources/extensions/affixes.py @@ -15,7 +15,6 @@ def add_affixes(): properties = bpy.context.scene.send2ue mesh_objects = utilities.get_from_collection(BlenderTypes.MESH) rig_objects = utilities.get_from_collection(BlenderTypes.SKELETON) - AffixesExtension.images_original_paths = [] for mesh_object in mesh_objects: if mesh_object.modifiers: @@ -342,6 +341,7 @@ def pre_operation(self, properties): """ Defines the pre operation logic that will be run before the operation. """ + AffixesExtension.images_original_paths.clear() if self.auto_add_asset_name_affixes: add_affixes() From 77cbd37e9b900421c4d8a23a2e86b3d28ce53897 Mon Sep 17 00:00:00 2001 From: Jack Yao Date: Tue, 5 Nov 2024 18:38:01 -0600 Subject: [PATCH 7/7] guarded restore textures logic to only when auto_add_asset_name_affixes is true --- src/addons/send2ue/resources/extensions/affixes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/addons/send2ue/resources/extensions/affixes.py b/src/addons/send2ue/resources/extensions/affixes.py index 3f8d2e9c..1e69a7be 100644 --- a/src/addons/send2ue/resources/extensions/affixes.py +++ b/src/addons/send2ue/resources/extensions/affixes.py @@ -342,6 +342,7 @@ def pre_operation(self, properties): """ Defines the pre operation logic that will be run before the operation. """ + AffixesExtension.images_original_paths.clear() if self.auto_add_asset_name_affixes: add_affixes() @@ -352,7 +353,8 @@ def post_operation(self, properties): if self.auto_remove_asset_name_affixes: remove_affixes() - restore_texture_paths() + if self.auto_add_asset_name_affixes: + restore_texture_paths() def pre_validations(self, properties): """