fixed crash in mergetextures

This commit is contained in:
Killergnom
2025-01-25 23:16:01 +01:00
parent 2c9d8068ca
commit 9420ce921c
6 changed files with 57 additions and 46 deletions

View File

@@ -2266,14 +2266,14 @@
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\_py_abc.py', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\_py_abc.py',
'PYMODULE'), 'PYMODULE'),
('stringprep',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\stringprep.py',
'PYMODULE'),
('tracemalloc', ('tracemalloc',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\tracemalloc.py', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\tracemalloc.py',
'PYMODULE'), 'PYMODULE'),
('stringprep',
'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\stringprep.py',
'PYMODULE'),
('PIL.Image', ('PIL.Image',
'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\Image.py', 'C:\\Users\\Niklas\\AppData\\Local\\Packages\\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\\LocalCache\\local-packages\\Python310\\site-packages\\PIL\\Image.py',
'PYMODULE'), 'PYMODULE'),
@@ -3232,34 +3232,34 @@
'E:\\Arma Reforger ' 'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip', 'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip',
'DATA'), 'DATA'),
('setuptools-65.5.0.dist-info\\METADATA', ('setuptools-65.5.0.dist-info\\WHEEL',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA', '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\\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'), 'DATA'),
('setuptools-65.5.0.dist-info\\RECORD', ('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'), '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', ('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
'DATA'), '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', ('setuptools-65.5.0.dist-info\\entry_points.txt',
'C:\\Program ' '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\\entry_points.txt',
'DATA'), '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', ('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\REQUESTED',

View File

@@ -277,33 +277,33 @@
'E:\\Arma Reforger ' 'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip', 'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip',
'DATA'), 'DATA'),
('setuptools-65.5.0.dist-info\\METADATA', ('setuptools-65.5.0.dist-info\\WHEEL',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA', '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\\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'), 'DATA'),
('setuptools-65.5.0.dist-info\\RECORD', ('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'), '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', ('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
'DATA'), 'DATA'),
('setuptools-65.5.0.dist-info\\WHEEL', ('setuptools-65.5.0.dist-info\\entry_points.txt',
'C:\\Program ' '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'), 'DATA'),
('setuptools-65.5.0.dist-info\\INSTALLER', ('setuptools-65.5.0.dist-info\\INSTALLER',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'DATA'), 'DATA'),
('setuptools-65.5.0.dist-info\\entry_points.txt', ('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program ' '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'), 'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED', ('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program ' 'C:\\Program '
@@ -312,7 +312,7 @@
[], [],
False, False,
False, False,
1729345827, 1737832798,
[('run.exe', [('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', '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')], 'EXECUTABLE')],

View File

@@ -253,33 +253,33 @@
'E:\\Arma Reforger ' 'E:\\Arma Reforger '
'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip', 'Work\\1960-utils\\Texturing\\MergeTextures2\\build\\merge_textures\\base_library.zip',
'DATA'), 'DATA'),
('setuptools-65.5.0.dist-info\\METADATA', ('setuptools-65.5.0.dist-info\\WHEEL',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\METADATA', '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\\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'), 'DATA'),
('setuptools-65.5.0.dist-info\\RECORD', ('setuptools-65.5.0.dist-info\\RECORD',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\RECORD',
'DATA'), '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', ('setuptools-65.5.0.dist-info\\LICENSE',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\LICENSE',
'DATA'), 'DATA'),
('setuptools-65.5.0.dist-info\\WHEEL', ('setuptools-65.5.0.dist-info\\entry_points.txt',
'C:\\Program ' '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'), 'DATA'),
('setuptools-65.5.0.dist-info\\INSTALLER', ('setuptools-65.5.0.dist-info\\INSTALLER',
'C:\\Program ' 'C:\\Program '
'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER', 'Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.10_3.10.3056.0_x64__qbz5n2kfra8p0\\lib\\site-packages\\setuptools-65.5.0.dist-info\\INSTALLER',
'DATA'), 'DATA'),
('setuptools-65.5.0.dist-info\\entry_points.txt', ('setuptools-65.5.0.dist-info\\top_level.txt',
'C:\\Program ' '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'), 'DATA'),
('setuptools-65.5.0.dist-info\\REQUESTED', ('setuptools-65.5.0.dist-info\\REQUESTED',
'C:\\Program ' 'C:\\Program '

Binary file not shown.

View File

@@ -66,6 +66,8 @@ def process_textures(input_files):
material_count = len(textures) material_count = len(textures)
print(f"Detected {material_count} Materials to process.") print(f"Detected {material_count} Materials to process.")
failed_converts = 0
# Process each material group # Process each material group
for index, (material, files) in enumerate(textures.items()): for index, (material, files) in enumerate(textures.items()):
basecolor_file = files.get('BaseColor') basecolor_file = files.get('BaseColor')
@@ -77,7 +79,6 @@ def process_textures(input_files):
mask_file = files.get('Mask') mask_file = files.get('Mask')
missing_files = [] missing_files = []
failed_converts = 0
# Check for required textures # Check for required textures
if not basecolor_file: if not basecolor_file:
@@ -89,12 +90,16 @@ def process_textures(input_files):
# Report missing files if any # Report missing files if any
if missing_files: 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 failed_converts += 1
else: else:
# Convert to BCR/NMO format # Convert to BCR/NMO format and track success or failure
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.") 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+++") print(f"+++{material_count - failed_converts} of {material_count} materials successfully converted+++")
time.sleep(3) time.sleep(3)
@@ -106,6 +111,8 @@ def convert_to_bcr_nmo(material, basecolor_file, normal_file, rma_file, orm_file
if rma_file: if rma_file:
rma_img = Image.open(rma_file).convert('RGBA') rma_img = Image.open(rma_file).convert('RGBA')
if not (basecolor_img.size == normal_img.size == rma_img.size):
return False
# BCR conversion # 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 = 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")) 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")) nmo_img.save(os.path.join(output_folder, f"{material}_NMO.png"))
elif orm_file: elif orm_file:
rma_img = Image.open(orm_file).convert('RGBA') rma_img = Image.open(orm_file).convert('RGBA')
if not (basecolor_img.size == normal_img.size == rma_img.size):
return False
# BCR conversion # 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 = 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")) 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: if mask_file:
mask_img = Image.open(mask_file).convert('L') mask_img = Image.open(mask_file).convert('L')
mask_img.save(os.path.join(output_folder, f"{material}_MASK.png")) mask_img.save(os.path.join(output_folder, f"{material}_MASK.png"))
return True
if __name__ == "__main__": if __name__ == "__main__":
if len(sys.argv) < 2: if len(sys.argv) < 2:
print("Usage: drag and drop texture files onto the script") print("Usage: drag and drop texture files onto the script")