From d473ddd7f44c32a84ac696d8de39868c8af820b4 Mon Sep 17 00:00:00 2001 From: Rusfort Date: Wed, 7 May 2025 19:05:43 +0200 Subject: [PATCH] Bug Fixes --- config/app_settings.json | 6 +++--- configuration.py | 4 ++++ main.py | 2 +- processing_engine.py | 29 +++++++++++++++-------------- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/config/app_settings.json b/config/app_settings.json index c98d586..ac3a894 100644 --- a/config/app_settings.json +++ b/config/app_settings.json @@ -245,8 +245,8 @@ "COL" ], "EXTRA_FILES_SUBDIR": "Extra", - "OUTPUT_BASE_DIR": "../Asset_Processor_Output", - "OUTPUT_DIRECTORY_PATTERN": "[supplier]/[assetname]", + "OUTPUT_BASE_DIR": "../Asset_Processor_Output_Tests", + "OUTPUT_DIRECTORY_PATTERN": "[supplier]/[sha5]_[assetname]", "OUTPUT_FILENAME_PATTERN": "[assetname]_[maptype]_[resolution].[ext]", "METADATA_FILENAME": "metadata.json", "DEFAULT_NODEGROUP_BLEND_PATH": "G:/02 Content/10-19 Content/19 Catalogs/19.01 Blender Asset Catalogue/_CustomLibraries/Nodes-Linked/PBRSET-Nodes-Testing.blend", @@ -254,7 +254,7 @@ "BLENDER_EXECUTABLE_PATH": "C:/Program Files/Blender Foundation/Blender 4.4/blender.exe", "PNG_COMPRESSION_LEVEL": 6, "JPG_QUALITY": 98, - "RESOLUTION_THRESHOLD_FOR_JPG": 999999, + "RESOLUTION_THRESHOLD_FOR_JPG": 4096, "IMAGE_RESOLUTIONS": { "8K": 8192, "4K": 4096, diff --git a/configuration.py b/configuration.py index d17285a..cbaec74 100644 --- a/configuration.py +++ b/configuration.py @@ -509,6 +509,10 @@ class Configuration: """Returns the LLM request timeout in seconds from LLM settings.""" return self._llm_settings.get('llm_request_timeout', 120) + @property + def FILE_TYPE_DEFINITIONS(self) -> dict: + return self._core_settings.get('FILE_TYPE_DEFINITIONS', {}) + @property def keybind_config(self) -> dict[str, list[str]]: """ diff --git a/main.py b/main.py index 9aa5f7b..acc0713 100644 --- a/main.py +++ b/main.py @@ -181,7 +181,7 @@ class ProcessingTask(QRunnable): log.debug(f" Rule Details: {self.rule}") # --- Calculate SHA5 and Incrementing Value --- - config = self.engine.config + config = self.engine.config_obj archive_path = self.rule.input_path output_dir = self.output_base_path # This is already a Path object from App.on_processing_requested diff --git a/processing_engine.py b/processing_engine.py index ca7778b..f4d0812 100644 --- a/processing_engine.py +++ b/processing_engine.py @@ -405,7 +405,7 @@ class ProcessingEngine: output_base_path=output_base_path, # Pass output path processed_maps_details_asset=processed_maps_details_asset, merged_maps_details_asset=merged_maps_details_asset, - temp_metadata_path=temp_metadata_path_asset + temp_metadata_info=temp_metadata_path_asset ) log.info(f"--- Asset '{asset_name}' processed successfully (Supplier: {effective_supplier}). ---") @@ -719,8 +719,8 @@ class ProcessingEngine: jpg_quality = config.jpg_quality png_compression_level = config._core_settings.get('PNG_COMPRESSION_LEVEL', 6) image_resolutions = config.image_resolutions - output_directory_pattern = config.get('OUTPUT_DIRECTORY_PATTERN', '[supplier]/[assetname]') - output_filename_pattern = config.get('OUTPUT_FILENAME_PATTERN', '[assetname]_[maptype]_[resolution].[ext]') + output_directory_pattern = config.output_directory_pattern + output_filename_pattern = config.output_filename_pattern # --- 1. Determine Output Bit Depth --- source_bpc = source_info.get('source_bit_depth', 8) @@ -878,11 +878,11 @@ class ProcessingEngine: try: cv2.imwrite(str(output_path_temp), img_save_final, save_params) saved_successfully = True - log.info(f" > Saved {map_type} ({resolution_key}, {output_bit_depth}-bit) as {output_format}") + log.info(f" > Saved {current_map_identifier} ({resolution_key}, {output_bit_depth}-bit) as {output_format}") except Exception as save_err: - log.error(f"Save failed ({output_format}) for {map_type} {resolution_key}: {save_err}") + log.error(f"Save failed ({output_format}) for {current_map_identifier} {resolution_key}: {save_err}") if output_bit_depth == 16 and output_format.startswith("exr") and fallback_fmt_16 != output_format and fallback_fmt_16 == "png": - log.warning(f"Attempting fallback PNG save for {map_type} {resolution_key}") + log.warning(f"Attempting fallback PNG save for {current_map_identifier} {resolution_key}") actual_format_saved = "png"; output_ext = ".png" # Regenerate path with .png extension for fallback token_data_fallback = token_data.copy() @@ -910,18 +910,18 @@ class ProcessingEngine: img_fallback_save_final = img_fallback is_3_channel_fallback = len(img_fallback.shape) == 3 and img_fallback.shape[2] == 3 if is_3_channel_fallback: # PNG is non-EXR - log.debug(f"Converting RGB to BGR for fallback PNG save {map_type} ({resolution_key})") + log.debug(f"Converting RGB to BGR for fallback PNG save {current_map_identifier} ({resolution_key})") try: img_fallback_save_final = cv2.cvtColor(img_fallback, cv2.COLOR_RGB2BGR) except Exception as cvt_err_fb: log.error(f"Failed RGB->BGR conversion for fallback PNG: {cvt_err_fb}. Saving original."); try: cv2.imwrite(str(output_path_temp), img_fallback_save_final, save_params_fallback) saved_successfully = True - log.info(f" > Saved {map_type} ({resolution_key}) using fallback PNG") + log.info(f" > Saved {current_map_identifier} ({resolution_key}) using fallback PNG") except Exception as fallback_err: - log.error(f"Fallback PNG save failed for {map_type} {resolution_key}: {fallback_err}", exc_info=True) + log.error(f"Fallback PNG save failed for {current_map_identifier} {resolution_key}: {fallback_err}", exc_info=True) else: - log.error(f"No suitable fallback available or applicable for failed save of {map_type} ({resolution_key}) as {output_format}.") + log.error(f"No suitable fallback available or applicable for failed save of {current_map_identifier} ({resolution_key}) as {output_format}.") # --- 6. Return Result --- @@ -939,7 +939,7 @@ class ProcessingEngine: return None # Indicate save failure except Exception as e: - log.error(f"Unexpected error in _save_image for {map_type} ({resolution_key}): {e}", exc_info=True) + log.error(f"Unexpected error in _save_image for {current_map_identifier} ({resolution_key}): {e}", exc_info=True) return None @@ -1056,6 +1056,7 @@ class ProcessingEngine: effective_map_type_for_processing = "MAP_ROUGH" # --- End of new gloss map filename logic --- + log.debug(f"DEBUG POST-RETAG: effective_map_type_for_processing='{effective_map_type_for_processing}' for file '{source_path_rel.name}'") original_extension = source_path_rel.suffix.lower() # Get from path log.info(f"-- Asset '{asset_name}': Processing Individual Map: {effective_map_type_for_processing} (Source: {source_path_rel.name}, EffectiveIsGlossSourceForLoad: {effective_is_gloss_source_for_load}, OriginalRuleItemType: {original_item_type_override}) --") @@ -1070,7 +1071,7 @@ class ProcessingEngine: try: # --- Loop through target resolutions from static config --- for res_key, target_dim_px in resolutions.items(): - log.debug(f"Processing {map_type} for resolution: {res_key}...") + log.debug(f"Processing {effective_map_type_for_processing} for resolution: {res_key}...") # --- 1. Load and Transform Source (using helper + cache) --- # This now only runs for files that have an item_type_override @@ -1520,8 +1521,8 @@ class ProcessingEngine: # --- Generate Path and Save --- # Get the new separate patterns from config - output_directory_pattern = self.config_obj.get('OUTPUT_DIRECTORY_PATTERN', '[supplier]/[assetname]') - output_filename_pattern = self.config_obj.get('OUTPUT_FILENAME_PATTERN', '[assetname]_[maptype]_[resolution].[ext]') + output_directory_pattern = self.config_obj.output_directory_pattern + output_filename_pattern = self.config_obj.output_filename_pattern metadata_filename_base = self.config_obj.metadata_filename # e.g., "metadata.json" metadata_ext = Path(metadata_filename_base).suffix.lstrip('.') or 'json' metadata_maptype = Path(metadata_filename_base).stem # Use filename stem as maptype token