Files
novafarma/clean_nova_mapa.py
David Kotnik 26d689de03 🌲 Interactive Forest Path Scene - Faza 1 Demo
 Dodane features:
- Interaktivna kamera z mouse wheel zoom (0.5x - 2.5x)
- Dinamična trava z wind sway animacijo (6 šopov)
- Depth of Field efekt pri zoom-u (background fade)
- Virusne infekcije z neon zelenim glow (pulsing)
- Pot v gozd z mrtimi drevesi (tunnel effect)
- Y-sorted layering (9 slojev)

🧹 Asset Cleanup:
- Ultra cleaned 106+ PNG slik v 'nova mapa'
- Odstranjen checkerboard pattern z dreves, skal, trave
- Feathering robov poti za naravno zlitje
- Transparency fix na vseh environment assetih

🎨 Scene Composition:
- Kaijev tabor (šotor + ognjišče)
- Pot s skalami, poleni, razbito longboard
- Grmovje in drevored
- Foreground/midground/background separation

📁 Assets iz: nova mapa/ (Characters, Environment, UI)
🎮 Testno: http://localhost:3000 + mouse wheel zoom
2026-01-21 17:52:07 +01:00

81 lines
2.6 KiB
Python

#!/usr/bin/env python3
"""
Agresivno čiščenje ozadij za vse slike v 'nova mapa '
Odstrani: zeleno, belo, checkerboard, sivo
"""
from PIL import Image
import numpy as np
import os
def ultra_clean_background(input_path, output_path):
"""
Ultra agresivno čiščenje vseh ozadij
"""
print(f"Ultra cleaning: {input_path}")
img = Image.open(input_path)
img = img.convert("RGBA")
data = np.array(img, dtype=np.float32)
r, g, b, a = data[:,:,0], data[:,:,1], data[:,:,2], data[:,:,3]
# MASKA 1: Zeleno ozadje (všečen range)
green_light = (g > 200) & (g > r + 20) & (g > b + 20)
green_medium = (g > 150) & (g > r + 40) & (g > b + 40)
green_dark = (g > 100) & (g > r + 50) & (g > b + 50)
green_mask = green_light | green_medium | green_dark
# MASKA 2: Belo ozadje (všečen range)
white_bright = (r > 250) & (g > 250) & (b > 250)
white_light = (r > 235) & (g > 235) & (b > 235)
white_mask = white_bright | white_light
# MASKA 3: Checkerboard - ULTRA AGGRESSIVE
# Svetlo sivo (range 180-210)
light_gray = (r > 170) & (r < 220) & (g > 170) & (g < 220) & (b > 170) & (b < 220)
is_gray_light = (np.abs(r - g) < 10) & (np.abs(g - b) < 10) & (np.abs(r - b) < 10)
light_gray_mask = light_gray & is_gray_light
# Temno sivo (range 130-170)
dark_gray = (r > 120) & (r < 180) & (g > 120) & (g < 180) & (b > 120) & (b < 180)
is_gray_dark = (np.abs(r - g) < 10) & (np.abs(g - b) < 10) & (np.abs(r - b) < 10)
dark_gray_mask = dark_gray & is_gray_dark
# Kombinirana maska
remove_mask = green_mask | white_mask | light_gray_mask | dark_gray_mask
# Nastavi alpha na 0
data[remove_mask, 3] = 0
# Pretvori nazaj
result_data = data.astype(np.uint8)
result = Image.fromarray(result_data)
# Shrani
result.save(output_path, "PNG")
print(f" ✓ Ultra cleaned: {output_path}")
# Čisti VSE PNG slike v vseh 3 mapah
base_path = "assets/slike/nova mapa "
folders = ["Characters", "Environment", "UI"]
total_cleaned = 0
for folder in folders:
folder_path = os.path.join(base_path, folder)
print(f"\n{'='*60}")
print(f"CLEANING FOLDER: {folder}")
print(f"{'='*60}")
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith(".png") and not file.startswith("."):
filepath = os.path.join(root, file)
ultra_clean_background(filepath, filepath)
total_cleaned += 1
print(f"\n{'='*60}")
print(f"✅ TOTAL: {total_cleaned} PNG slik ULTRA SČIŠČENIH!")
print(f"{'='*60}")