🌲 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
This commit is contained in:
80
clean_nova_mapa.py
Normal file
80
clean_nova_mapa.py
Normal file
@@ -0,0 +1,80 @@
|
||||
#!/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}")
|
||||
Reference in New Issue
Block a user