diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 6282a90aa..4d1845a14 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -154,7 +154,9 @@ | Kategorija | Naloga | Prioriteta | Status | |------------|--------|------------|--------| | **Asset Browser** | Visual gallery for all assets | ⭐⭐⭐⭐⭐ | ✅ Complete | -| **Reference Folder** | Master references (/references/) | ⭐⭐⭐⭐⭐ | 🟡 Partial (Ivan done) | +| **Reference Folder** | Master references (/references/) | ⭐⭐⭐⭐⭐ | ✅ Complete (24 references) | +| **Background Removal** | Auto-remove green backgrounds (transparent) | ⭐⭐⭐⭐⭐ | ✅ Complete (24 images processed) | +| **Auto-Clean System** | Automated background removal script | ⭐⭐⭐⭐ | ✅ Complete (scripts/remove_backgrounds.py) | | **Map Cleanup** | Remove all status dots from maps | ⭐⭐⭐ | 🔴 Not started | | **Force Render** | Ensure all new buildings/NPCs visible | ⭐⭐⭐⭐ | 🔴 Not started | diff --git a/references/companions/susi/master_reference_nobg.png b/references/companions/susi/master_reference_nobg.png new file mode 100644 index 000000000..78e73d004 Binary files /dev/null and b/references/companions/susi/master_reference_nobg.png differ diff --git a/references/companions/zombie_scout/master_reference_nobg.png b/references/companions/zombie_scout/master_reference_nobg.png new file mode 100644 index 000000000..62109a117 Binary files /dev/null and b/references/companions/zombie_scout/master_reference_nobg.png differ diff --git a/references/enemies/nomad_raiders/desert_nomad.png b/references/enemies/nomad_raiders/desert_nomad.png new file mode 100644 index 000000000..3b06f2075 Binary files /dev/null and b/references/enemies/nomad_raiders/desert_nomad.png differ diff --git a/references/enemies/nomad_raiders/desert_nomad_nobg.png b/references/enemies/nomad_raiders/desert_nomad_nobg.png new file mode 100644 index 000000000..a5e8945b1 Binary files /dev/null and b/references/enemies/nomad_raiders/desert_nomad_nobg.png differ diff --git a/references/enemies/nomad_raiders/frost_bandit.png b/references/enemies/nomad_raiders/frost_bandit.png new file mode 100644 index 000000000..5519c1f47 Binary files /dev/null and b/references/enemies/nomad_raiders/frost_bandit.png differ diff --git a/references/enemies/nomad_raiders/frost_bandit_nobg.png b/references/enemies/nomad_raiders/frost_bandit_nobg.png new file mode 100644 index 000000000..d4beb101f Binary files /dev/null and b/references/enemies/nomad_raiders/frost_bandit_nobg.png differ diff --git a/references/enemies/nomad_raiders/jungle_marauder.png b/references/enemies/nomad_raiders/jungle_marauder.png new file mode 100644 index 000000000..fd00aa31c Binary files /dev/null and b/references/enemies/nomad_raiders/jungle_marauder.png differ diff --git a/references/enemies/nomad_raiders/jungle_marauder_nobg.png b/references/enemies/nomad_raiders/jungle_marauder_nobg.png new file mode 100644 index 000000000..ee21601ec Binary files /dev/null and b/references/enemies/nomad_raiders/jungle_marauder_nobg.png differ diff --git a/references/enemies/nomad_raiders/tech_scavenger.png b/references/enemies/nomad_raiders/tech_scavenger.png new file mode 100644 index 000000000..ce06ef93b Binary files /dev/null and b/references/enemies/nomad_raiders/tech_scavenger.png differ diff --git a/references/enemies/nomad_raiders/tech_scavenger_nobg.png b/references/enemies/nomad_raiders/tech_scavenger_nobg.png new file mode 100644 index 000000000..9e244f6cc Binary files /dev/null and b/references/enemies/nomad_raiders/tech_scavenger_nobg.png differ diff --git a/references/enemies/zombies/master_reference_nobg.png b/references/enemies/zombies/master_reference_nobg.png new file mode 100644 index 000000000..aa99a301a Binary files /dev/null and b/references/enemies/zombies/master_reference_nobg.png differ diff --git a/references/enemies/zombies/variants/strong_red_eyes_nobg.png b/references/enemies/zombies/variants/strong_red_eyes_nobg.png new file mode 100644 index 000000000..148a60256 Binary files /dev/null and b/references/enemies/zombies/variants/strong_red_eyes_nobg.png differ diff --git a/references/enemies/zombies/variants/weak_white_eyes_nobg.png b/references/enemies/zombies/variants/weak_white_eyes_nobg.png new file mode 100644 index 000000000..f3845ab00 Binary files /dev/null and b/references/enemies/zombies/variants/weak_white_eyes_nobg.png differ diff --git a/references/main_characters/ana/master_reference_nobg.png b/references/main_characters/ana/master_reference_nobg.png new file mode 100644 index 000000000..cb9fec5da Binary files /dev/null and b/references/main_characters/ana/master_reference_nobg.png differ diff --git a/references/main_characters/gronk/master_reference_nobg.png b/references/main_characters/gronk/master_reference_nobg.png new file mode 100644 index 000000000..f59c771db Binary files /dev/null and b/references/main_characters/gronk/master_reference_nobg.png differ diff --git a/references/main_characters/kai/master_reference_nobg.png b/references/main_characters/kai/master_reference_nobg.png new file mode 100644 index 000000000..f6125af21 Binary files /dev/null and b/references/main_characters/kai/master_reference_nobg.png differ diff --git a/references/npcs/arborist/master_reference_nobg.png b/references/npcs/arborist/master_reference_nobg.png new file mode 100644 index 000000000..991367bad Binary files /dev/null and b/references/npcs/arborist/master_reference_nobg.png differ diff --git a/references/npcs/ivan_kovac/master_reference_nobg.png b/references/npcs/ivan_kovac/master_reference_nobg.png new file mode 100644 index 000000000..31a63170b Binary files /dev/null and b/references/npcs/ivan_kovac/master_reference_nobg.png differ diff --git a/references/npcs/kustos/master_reference_nobg.png b/references/npcs/kustos/master_reference_nobg.png new file mode 100644 index 000000000..3f7920ee0 Binary files /dev/null and b/references/npcs/kustos/master_reference_nobg.png differ diff --git a/references/npcs/mayor/master_reference_nobg.png b/references/npcs/mayor/master_reference_nobg.png new file mode 100644 index 000000000..fbb54b4dc Binary files /dev/null and b/references/npcs/mayor/master_reference_nobg.png differ diff --git a/references/npcs/miro_pravnik/master_reference_nobg.png b/references/npcs/miro_pravnik/master_reference_nobg.png new file mode 100644 index 000000000..c46a83fa5 Binary files /dev/null and b/references/npcs/miro_pravnik/master_reference_nobg.png differ diff --git a/references/npcs/pek/master_reference_nobg.png b/references/npcs/pek/master_reference_nobg.png new file mode 100644 index 000000000..fa08053f3 Binary files /dev/null and b/references/npcs/pek/master_reference_nobg.png differ diff --git a/references/npcs/sivilja/master_reference_nobg.png b/references/npcs/sivilja/master_reference_nobg.png new file mode 100644 index 000000000..e2c875b00 Binary files /dev/null and b/references/npcs/sivilja/master_reference_nobg.png differ diff --git a/references/npcs/teacher/master_reference_nobg.png b/references/npcs/teacher/master_reference_nobg.png new file mode 100644 index 000000000..0e0f7eef5 Binary files /dev/null and b/references/npcs/teacher/master_reference_nobg.png differ diff --git a/references/npcs/tehnik/master_reference_nobg.png b/references/npcs/tehnik/master_reference_nobg.png new file mode 100644 index 000000000..e36d635c9 Binary files /dev/null and b/references/npcs/tehnik/master_reference_nobg.png differ diff --git a/references/species/elves/master_reference.png b/references/species/elves/master_reference.png new file mode 100644 index 000000000..d6c29d11b Binary files /dev/null and b/references/species/elves/master_reference.png differ diff --git a/references/species/elves/master_reference_nobg.png b/references/species/elves/master_reference_nobg.png new file mode 100644 index 000000000..6963c40a7 Binary files /dev/null and b/references/species/elves/master_reference_nobg.png differ diff --git a/references/species/fairies/master_reference.png b/references/species/fairies/master_reference.png new file mode 100644 index 000000000..8c56c41d8 Binary files /dev/null and b/references/species/fairies/master_reference.png differ diff --git a/references/species/fairies/master_reference_nobg.png b/references/species/fairies/master_reference_nobg.png new file mode 100644 index 000000000..e5ef3fb89 Binary files /dev/null and b/references/species/fairies/master_reference_nobg.png differ diff --git a/references/species/trolls/master_reference.png b/references/species/trolls/master_reference.png new file mode 100644 index 000000000..6fd46d056 Binary files /dev/null and b/references/species/trolls/master_reference.png differ diff --git a/references/species/trolls/master_reference_nobg.png b/references/species/trolls/master_reference_nobg.png new file mode 100644 index 000000000..f47fadd04 Binary files /dev/null and b/references/species/trolls/master_reference_nobg.png differ diff --git a/scripts/remove_backgrounds.py b/scripts/remove_backgrounds.py new file mode 100644 index 000000000..dff516ef6 --- /dev/null +++ b/scripts/remove_backgrounds.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 +""" +AUTOMATIC BACKGROUND REMOVAL SYSTEM +Removes green backgrounds from all reference images and makes them transparent. +Uses color-based removal (green #00FF00 background). +""" + +import os +from PIL import Image +import numpy as np + +def remove_green_background(input_path, output_path): + """ + Remove green (#00FF00) background and make transparent. + """ + print(f"Processing: {input_path}") + + # Open image + img = Image.open(input_path).convert("RGBA") + data = np.array(img) + + # Get RGB channels + r, g, b, a = data.T + + # Define green background color range (accounting for compression artifacts) + # Pure green is #00FF00 (0, 255, 0) + green_threshold = 200 # Flexibility for compression + + # Find green pixels + green_areas = (g > green_threshold) & (r < 100) & (b < 100) + + # Make green pixels transparent + data[..., 3][green_areas.T] = 0 + + # Save with transparency + result = Image.fromarray(data) + result.save(output_path, 'PNG') + print(f"✅ Saved: {output_path}") + +def process_references_folder(references_path): + """ + Process all PNG/JPG images in references folder recursively. + """ + processed_count = 0 + + for root, dirs, files in os.walk(references_path): + for file in files: + # Only process image files + if file.lower().endswith(('.png', '.jpg', '.jpeg')): + input_path = os.path.join(root, file) + + # Skip if already processed (has '_nobg' in name) + if '_nobg' in file: + continue + + # Create output path (same location, add _nobg suffix) + base_name = os.path.splitext(file)[0] + output_path = os.path.join(root, f"{base_name}_nobg.png") + + try: + remove_green_background(input_path, output_path) + processed_count += 1 + except Exception as e: + print(f"❌ Error processing {input_path}: {e}") + + return processed_count + +if __name__ == "__main__": + references_path = os.path.join(os.path.dirname(__file__), '..', 'references') + + print("=" * 60) + print("🎨 AUTOMATIC BACKGROUND REMOVAL") + print("=" * 60) + print(f"Processing folder: {references_path}") + print() + + count = process_references_folder(references_path) + + print() + print("=" * 60) + print(f"✅ COMPLETE! Processed {count} images") + print("=" * 60)