Fixed inconcistencies - only processes MAP_ files now
This commit is contained in:
@@ -18,7 +18,8 @@ class AlphaExtractionToMaskStage(ProcessingStage):
|
||||
Extracts an alpha channel from a suitable source map (e.g., Albedo, Diffuse)
|
||||
to generate a MASK map if one is not explicitly defined.
|
||||
"""
|
||||
SUITABLE_SOURCE_MAP_TYPES = ["ALBEDO", "DIFFUSE", "BASE_COLOR"] # Map types likely to have alpha
|
||||
# Use MAP_ prefixed types for internal logic checks
|
||||
SUITABLE_SOURCE_MAP_TYPES = ["MAP_COL", "MAP_ALBEDO", "MAP_BASECOLOR"] # Map types likely to have alpha
|
||||
|
||||
def execute(self, context: AssetProcessingContext) -> AssetProcessingContext:
|
||||
asset_name_for_log = context.asset_rule.asset_name if context.asset_rule else "Unknown Asset"
|
||||
@@ -38,7 +39,8 @@ class AlphaExtractionToMaskStage(ProcessingStage):
|
||||
# A. Check for Existing MASK Map
|
||||
for file_rule in context.files_to_process:
|
||||
# Assuming file_rule has 'map_type' and 'file_path' (instead of filename_pattern)
|
||||
if hasattr(file_rule, 'map_type') and file_rule.map_type == "MASK":
|
||||
# Check for existing MASK map using the correct item_type field and MAP_ prefix
|
||||
if file_rule.item_type == "MAP_MASK":
|
||||
file_path_for_log = file_rule.file_path if hasattr(file_rule, 'file_path') else "Unknown file path"
|
||||
logger.info(
|
||||
f"Asset '{asset_name_for_log}': MASK map already defined by FileRule "
|
||||
@@ -51,8 +53,10 @@ class AlphaExtractionToMaskStage(ProcessingStage):
|
||||
source_file_rule_id_for_alpha: Optional[str] = None # This ID comes from processed_maps_details keys
|
||||
|
||||
for file_rule_id, details in context.processed_maps_details.items():
|
||||
# Check for suitable source map using the standardized internal_map_type field
|
||||
internal_map_type = details.get('internal_map_type') # Use the standardized field
|
||||
if details.get('status') == 'Processed' and \
|
||||
details.get('map_type') in self.SUITABLE_SOURCE_MAP_TYPES:
|
||||
internal_map_type in self.SUITABLE_SOURCE_MAP_TYPES:
|
||||
try:
|
||||
temp_path = Path(details['temp_processed_file'])
|
||||
if not temp_path.exists():
|
||||
@@ -153,15 +157,16 @@ class AlphaExtractionToMaskStage(ProcessingStage):
|
||||
|
||||
|
||||
context.processed_maps_details[new_mask_processed_map_key] = {
|
||||
'map_type': "MASK",
|
||||
'internal_map_type': "MAP_MASK", # Use the standardized MAP_ prefixed field
|
||||
'map_type': "MASK", # Keep standard type for metadata/naming consistency if needed
|
||||
'source_file': str(source_image_path),
|
||||
'temp_processed_file': str(mask_temp_path),
|
||||
'original_dimensions': original_dims,
|
||||
'processed_dimensions': (alpha_channel.shape[1], alpha_channel.shape[0]),
|
||||
'status': 'Processed',
|
||||
'notes': (
|
||||
f"Generated from alpha of {source_map_details_for_alpha['map_type']} "
|
||||
f"(Source Detail ID: {source_file_rule_id_for_alpha})" # Changed from Source Rule ID
|
||||
f"Generated from alpha of {source_map_details_for_alpha.get('internal_map_type', 'unknown type')} " # Use internal_map_type for notes
|
||||
f"(Source Detail ID: {source_file_rule_id_for_alpha})"
|
||||
),
|
||||
# 'file_rule_id': new_mask_file_rule_id_str # FileRule doesn't have an ID to link here directly
|
||||
}
|
||||
|
||||
@@ -51,7 +51,8 @@ class GlossToRoughConversionStage(ProcessingStage):
|
||||
|
||||
# Iterate using the index (map_key_index) as the key, which is now standard.
|
||||
for map_key_index, map_details in context.processed_maps_details.items():
|
||||
processing_map_type = map_details.get('processing_map_type', '')
|
||||
# Use the standardized internal_map_type field
|
||||
internal_map_type = map_details.get('internal_map_type', '')
|
||||
map_status = map_details.get('status')
|
||||
original_temp_path_str = map_details.get('temp_processed_file')
|
||||
# source_file_rule_idx from details should align with map_key_index.
|
||||
@@ -70,11 +71,12 @@ class GlossToRoughConversionStage(ProcessingStage):
|
||||
processing_tag = f"mki_{map_key_index}_fallback_tag"
|
||||
|
||||
|
||||
if not processing_map_type.startswith("MAP_GLOSS"):
|
||||
# logger.debug(f"Asset '{asset_name_for_log}', Map Key Index {map_key_index}: Type '{processing_map_type}' is not GLOSS. Skipping.")
|
||||
# Check if the map is a GLOSS map using the standardized internal_map_type
|
||||
if not internal_map_type.startswith("MAP_GLOSS"):
|
||||
# logger.debug(f"Asset '{asset_name_for_log}', Map Key Index {map_key_index}: Type '{internal_map_type}' is not GLOSS. Skipping.")
|
||||
continue
|
||||
|
||||
logger.info(f"Asset '{asset_name_for_log}', Map Key Index {map_key_index} (Tag: {processing_tag}): Identified potential GLOSS map (Type: {processing_map_type}).")
|
||||
logger.info(f"Asset '{asset_name_for_log}', Map Key Index {map_key_index} (Tag: {processing_tag}): Identified potential GLOSS map (Type: {internal_map_type}).")
|
||||
|
||||
if map_status not in successful_conversion_statuses:
|
||||
logger.warning(
|
||||
@@ -163,9 +165,9 @@ class GlossToRoughConversionStage(ProcessingStage):
|
||||
|
||||
# Update context.processed_maps_details for this map_key_index
|
||||
map_details['temp_processed_file'] = str(new_temp_path)
|
||||
map_details['original_map_type_before_conversion'] = processing_map_type
|
||||
map_details['processing_map_type'] = "MAP_ROUGH"
|
||||
map_details['map_type'] = "Roughness"
|
||||
map_details['original_map_type_before_conversion'] = internal_map_type # Store the original internal type
|
||||
map_details['internal_map_type'] = "MAP_ROUGH" # Use the standardized MAP_ prefixed field
|
||||
map_details['map_type'] = "Roughness" # Keep standard type for metadata/naming consistency if needed
|
||||
map_details['status'] = "Converted_To_Rough"
|
||||
map_details['notes'] = map_details.get('notes', '') + "; Converted from GLOSS by GlossToRoughConversionStage"
|
||||
if 'base_pot_resolution_name' in map_details:
|
||||
|
||||
@@ -125,6 +125,15 @@ class MergedTaskProcessorStage(ProcessingStage):
|
||||
# --- Load, Transform, and Prepare Inputs ---
|
||||
log.debug(f"{log_prefix}: Loading and preparing inputs...")
|
||||
for channel_char, required_map_type_from_rule in merge_inputs_config.items():
|
||||
# Validate that the required input map type starts with "MAP_"
|
||||
if not required_map_type_from_rule.startswith("MAP_"):
|
||||
result.error_message = (
|
||||
f"Invalid input map type '{required_map_type_from_rule}' for channel '{channel_char}'. "
|
||||
f"Input map types for merging must start with 'MAP_'."
|
||||
)
|
||||
log.error(f"{log_prefix}: {result.error_message}")
|
||||
return result # Fail the task if an input type is invalid
|
||||
|
||||
input_info = input_map_sources_from_task.get(required_map_type_from_rule)
|
||||
input_image_data: Optional[np.ndarray] = None
|
||||
input_source_desc = f"Fallback for {required_map_type_from_rule}"
|
||||
|
||||
@@ -38,7 +38,9 @@ class NormalMapGreenChannelStage(ProcessingStage):
|
||||
|
||||
# Iterate through processed maps, as FileRule objects don't have IDs directly
|
||||
for map_id_hex, map_details in context.processed_maps_details.items():
|
||||
if map_details.get('map_type') == "NORMAL" and map_details.get('status') == 'Processed':
|
||||
# Check if the map is a processed normal map using the standardized internal_map_type
|
||||
internal_map_type = map_details.get('internal_map_type')
|
||||
if internal_map_type and internal_map_type.startswith("MAP_NRM") and map_details.get('status') == 'Processed':
|
||||
|
||||
# Check configuration for inversion
|
||||
# Assuming general_settings is an attribute of config_obj and might be a dict or an object
|
||||
|
||||
@@ -183,6 +183,13 @@ class RegularMapProcessorStage(ProcessingStage):
|
||||
log.error(f"{log_prefix}: {result.error_message}")
|
||||
return result # Early exit
|
||||
|
||||
# Explicitly skip if the determined type doesn't start with "MAP_"
|
||||
if not initial_internal_map_type.startswith("MAP_"):
|
||||
result.status = "Skipped (Invalid Type)"
|
||||
result.error_message = f"FileRule item_type '{initial_internal_map_type}' does not start with 'MAP_'. Skipping processing."
|
||||
log.warning(f"{log_prefix}: {result.error_message}")
|
||||
return result # Early exit
|
||||
|
||||
processing_map_type = self._get_suffixed_internal_map_type(
|
||||
context.asset_rule, file_rule, initial_internal_map_type, respect_variant_map_types, asset_name_for_log
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user