diff --git a/Texturing/MergeTextures2/build/merge_textures/Analysis-00.toc b/Texturing/MergeTextures2/build/merge_textures/Analysis-00.toc index 996bb31..d568622 100644 --- a/Texturing/MergeTextures2/build/merge_textures/Analysis-00.toc +++ b/Texturing/MergeTextures2/build/merge_textures/Analysis-00.toc @@ -2266,14 +2266,14 @@ 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\_py_abc.py', 'PYMODULE'), - ('stringprep', - 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\stringprep.py', - 'PYMODULE'), ('tracemalloc', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\tracemalloc.py', 'PYMODULE'), + ('stringprep', + 'C:\\Program ' + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\stringprep.py', + 'PYMODULE'), ('PIL.Image', 'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\Image.py', 'PYMODULE'), @@ -3232,34 +3232,34 @@ 'E:\\Arma Reforger ' 'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip', 'DATA'), - ('setuptools-65.5.0.dist-info\\METADATA', + ('setuptools-65.5.0.dist-info\\WHEEL', 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA', - 'DATA'), - ('setuptools-65.5.0.dist-info\\top_level.txt', - 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt', + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL', 'DATA'), ('setuptools-65.5.0.dist-info\\RECORD', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD', 'DATA'), + ('setuptools-65.5.0.dist-info\\METADATA', + 'C:\\Program ' + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA', + 'DATA'), ('setuptools-65.5.0.dist-info\\LICENSE', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE', 'DATA'), - ('setuptools-65.5.0.dist-info\\WHEEL', - 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL', - 'DATA'), - ('setuptools-65.5.0.dist-info\\INSTALLER', - 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER', - 'DATA'), ('setuptools-65.5.0.dist-info\\entry_points.txt', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt', 'DATA'), + ('setuptools-65.5.0.dist-info\\INSTALLER', + 'C:\\Program ' + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER', + 'DATA'), + ('setuptools-65.5.0.dist-info\\top_level.txt', + 'C:\\Program ' + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt', + 'DATA'), ('setuptools-65.5.0.dist-info\\REQUESTED', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED', diff --git a/Texturing/MergeTextures2/build/merge_textures/EXE-00.toc b/Texturing/MergeTextures2/build/merge_textures/EXE-00.toc index ed4f28f..a927799 100644 --- a/Texturing/MergeTextures2/build/merge_textures/EXE-00.toc +++ b/Texturing/MergeTextures2/build/merge_textures/EXE-00.toc @@ -277,33 +277,33 @@ 'E:\\Arma Reforger ' 'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip', 'DATA'), - ('setuptools-65.5.0.dist-info\\METADATA', + ('setuptools-65.5.0.dist-info\\WHEEL', 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA', - 'DATA'), - ('setuptools-65.5.0.dist-info\\top_level.txt', - 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt', + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL', 'DATA'), ('setuptools-65.5.0.dist-info\\RECORD', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD', 'DATA'), + ('setuptools-65.5.0.dist-info\\METADATA', + 'C:\\Program ' + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA', + 'DATA'), ('setuptools-65.5.0.dist-info\\LICENSE', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE', 'DATA'), - ('setuptools-65.5.0.dist-info\\WHEEL', + ('setuptools-65.5.0.dist-info\\entry_points.txt', 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL', + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt', 'DATA'), ('setuptools-65.5.0.dist-info\\INSTALLER', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER', 'DATA'), - ('setuptools-65.5.0.dist-info\\entry_points.txt', + ('setuptools-65.5.0.dist-info\\top_level.txt', 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt', + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt', 'DATA'), ('setuptools-65.5.0.dist-info\\REQUESTED', 'C:\\Program ' @@ -312,7 +312,7 @@ [], False, False, - 1729345827, + 1737832798, [('run.exe', 'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PyInstaller\\bootloader\\Windows-64bit-intel\\run.exe', 'EXECUTABLE')], diff --git a/Texturing/MergeTextures2/build/merge_textures/PKG-00.toc b/Texturing/MergeTextures2/build/merge_textures/PKG-00.toc index 0e9b167..9414756 100644 --- a/Texturing/MergeTextures2/build/merge_textures/PKG-00.toc +++ b/Texturing/MergeTextures2/build/merge_textures/PKG-00.toc @@ -253,33 +253,33 @@ 'E:\\Arma Reforger ' 'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip', 'DATA'), - ('setuptools-65.5.0.dist-info\\METADATA', + ('setuptools-65.5.0.dist-info\\WHEEL', 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA', - 'DATA'), - ('setuptools-65.5.0.dist-info\\top_level.txt', - 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt', + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL', 'DATA'), ('setuptools-65.5.0.dist-info\\RECORD', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD', 'DATA'), + ('setuptools-65.5.0.dist-info\\METADATA', + 'C:\\Program ' + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA', + 'DATA'), ('setuptools-65.5.0.dist-info\\LICENSE', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE', 'DATA'), - ('setuptools-65.5.0.dist-info\\WHEEL', + ('setuptools-65.5.0.dist-info\\entry_points.txt', 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\WHEEL', + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt', 'DATA'), ('setuptools-65.5.0.dist-info\\INSTALLER', 'C:\\Program ' 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER', 'DATA'), - ('setuptools-65.5.0.dist-info\\entry_points.txt', + ('setuptools-65.5.0.dist-info\\top_level.txt', 'C:\\Program ' - 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\entry_points.txt', + 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\top_level.txt', 'DATA'), ('setuptools-65.5.0.dist-info\\REQUESTED', 'C:\\Program ' diff --git a/Texturing/MergeTextures2/build/merge_textures/merge_textures.pkg b/Texturing/MergeTextures2/build/merge_textures/merge_textures.pkg index 135caeb..f60b624 100644 Binary files a/Texturing/MergeTextures2/build/merge_textures/merge_textures.pkg and b/Texturing/MergeTextures2/build/merge_textures/merge_textures.pkg differ diff --git a/Texturing/MergeTextures2/dist/merge_textures.exe b/Texturing/MergeTextures2/dist/merge_textures.exe index ba5b732..379bb8a 100644 Binary files a/Texturing/MergeTextures2/dist/merge_textures.exe and b/Texturing/MergeTextures2/dist/merge_textures.exe differ diff --git a/Texturing/MergeTextures2/merge_textures.py b/Texturing/MergeTextures2/merge_textures.py index a1f545c..34804b3 100644 --- a/Texturing/MergeTextures2/merge_textures.py +++ b/Texturing/MergeTextures2/merge_textures.py @@ -65,6 +65,8 @@ def process_textures(input_files): material_count = len(textures) print(f"Detected {material_count} Materials to process.") + + failed_converts = 0 # Process each material group for index, (material, files) in enumerate(textures.items()): @@ -77,7 +79,6 @@ def process_textures(input_files): mask_file = files.get('Mask') missing_files = [] - failed_converts = 0 # Check for required textures if not basecolor_file: @@ -86,15 +87,19 @@ def process_textures(input_files): missing_files.append('Normal') if not (rma_file or orm_file): missing_files.append('RMA or ORM') - - # Report missing files if any + + # Report missing files if any if missing_files: - print(f"({index+1}/{material_count}) Skipping {material}: missing {', '.join(missing_files)}") + print(f"({index + 1}/{material_count}) Skipping {material}: missing {', '.join(missing_files)}") failed_converts += 1 else: - # Convert to BCR/NMO format - convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file, emissive_file, opacity_file, mask_file, output_folder) - print(f"({index+1}/{material_count}) {material}: Successfully converted.") + # Convert to BCR/NMO format and track success or failure + + if convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file, emissive_file, opacity_file, mask_file, output_folder): + print(f"({index + 1}/{material_count}) {material}: Successfully converted.") + else: + failed_converts += 1 # Increment counter here if conversion fails + print(f"({index + 1}/{material_count}) Skipping {material}: input file sizes do not match.") print(f"+++{material_count - failed_converts} of {material_count} materials successfully converted+++") time.sleep(3) @@ -106,6 +111,8 @@ def convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file if rma_file: rma_img = Image.open(rma_file).convert('RGBA') + if not (basecolor_img.size == normal_img.size == rma_img.size): + return False # BCR conversion bcr_img = Image.merge('RGBA', (basecolor_img.split()[0], basecolor_img.split()[1], basecolor_img.split()[2], rma_img.split()[0])) # Use Roughness (Alpha from RMA/ORM) bcr_img.save(os.path.join(output_folder, f"{material}_BCR.png")) @@ -114,6 +121,8 @@ def convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file nmo_img.save(os.path.join(output_folder, f"{material}_NMO.png")) elif orm_file: rma_img = Image.open(orm_file).convert('RGBA') + if not (basecolor_img.size == normal_img.size == rma_img.size): + return False # BCR conversion bcr_img = Image.merge('RGBA', (basecolor_img.split()[0], basecolor_img.split()[1], basecolor_img.split()[2], rma_img.split()[1])) # Use Roughness (Alpha from RMA/ORM) bcr_img.save(os.path.join(output_folder, f"{material}_BCR.png")) @@ -132,6 +141,8 @@ def convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file if mask_file: mask_img = Image.open(mask_file).convert('L') mask_img.save(os.path.join(output_folder, f"{material}_MASK.png")) + + return True if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: drag and drop texture files onto the script")