add: better wound textures

This commit is contained in:
ZioPao
2025-10-04 16:38:50 +02:00
parent b281ce7d12
commit 528a43247a
34 changed files with 88 additions and 40 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -1,46 +1,65 @@
from pathlib import Path
from PIL import Image
import os
input_bodies_path = Path('input/body')
input_wound_texture = Path('input/wound.png')
# 48, 33 TEXTURE
# 45, 33 TEXTURE
# 256,256
IMG_WIDTH = 256
COORDS_L = {
#"H": (0, 115),
"F": (0, 59),
"U": (0,21),
"H": (2, 100),
"F": (2, 59),
"U": (2,21),
}
COORDS_R = {
#"H": (IMG_WIDTH - 50- COORDS_L['H'][0], COORDS_L['H'][1]),
"F": (IMG_WIDTH - 48 - COORDS_L['F'][0], COORDS_L['F'][1]),
"U": (IMG_WIDTH - 48 - COORDS_L['U'][0], COORDS_L['U'][1]),
"H": (IMG_WIDTH - 43- COORDS_L['H'][0], COORDS_L['H'][1]),
"F": (IMG_WIDTH - 43 - COORDS_L['F'][0], COORDS_L['F'][1]),
"U": (IMG_WIDTH - 43 - COORDS_L['U'][0], COORDS_L['U'][1]),
}
STATES = ["BOTH"]
FULL_COORDS = {key: (COORDS_L[key], COORDS_R[key]) for key in COORDS_L}
print(FULL_COORDS)
overlay = Image.open(input_wound_texture)
for filepath in input_bodies_path.glob('*.png'): # Only PNG files
print(f'Processing {filepath.name}...')
base = Image.open(filepath)
body_name = filepath.stem
for key_L, value_L in COORDS_L.items():
for key_R, value_R in COORDS_R.items():
for state in STATES:
result = base.copy()
body_name = filepath.stem.replace('MaleBody', 'skin')
if body_name.endswith('a'):
body_name = body_name[:-1] + '_hairy_b'
else:
body_name = body_name + '_b'
for key, (value_L, value_R) in FULL_COORDS.items():
print(key)
result = base.copy()
result.paste(overlay, value_L, mask=overlay)
result.paste(overlay, value_R, mask=overlay)
output_path = 'output/'
if key == "H":
os.makedirs('output/Hand', exist_ok=True)
output_path = 'output/Hand'
if key == "F":
os.makedirs('output/Forearm', exist_ok=True)
output_path = 'output/Forearm'
if key == "U":
os.makedirs('output/UpperArm', exist_ok=True)
output_path = 'output/UpperArm'
result.save(f'{output_path}/{body_name}.png')
if state == "BOTH" or state == "ONLY_LEFT":
result.paste(overlay, value_L, mask=overlay)
if state == "BOTH" or state == "ONLY_RIGHT":
result.paste(overlay, value_R, mask=overlay)
result.save(f'output/{body_name}_{key_L}_{key_R}_{state}.png')