| #!/usr/bin/env bash |
| set -euo pipefail |
|
|
| cd "$(dirname "$0")/.." |
|
|
| if ! command -v blender >/dev/null 2>&1; then |
| echo "blender was not found on PATH." |
| echo "Expected symlink: $HOME/.local/bin/blender -> /Applications/Blender.app/Contents/MacOS/Blender" |
| exit 1 |
| fi |
|
|
| blender --background --python scripts/generate_character_models_blender.py |
|
|
| python3 - <<'PY' |
| from pathlib import Path |
| from PIL import Image, ImageDraw, ImageFont |
|
|
| root = Path("assets/generated/previews") |
| items = [ |
| ("Squeaky beauty", root / "squeaky-beauty.png"), |
| ("Squeaky rig", root / "squeaky-rig.png"), |
| ("Squeaky objects", root / "squeaky-objects.png"), |
| ("Electraica beauty", root / "electraica-beauty.png"), |
| ("Electraica rig", root / "electraica-rig.png"), |
| ("Electraica objects", root / "electraica-objects.png"), |
| ("Fire Boy beauty", root / "fire-boy-beauty.png"), |
| ("Fire Boy rig", root / "fire-boy-rig.png"), |
| ("Fire Boy objects", root / "fire-boy-objects.png"), |
| ("Shark Girl beauty", root / "shark-girl-beauty.png"), |
| ("Shark Girl rig", root / "shark-girl-rig.png"), |
| ("Shark Girl objects", root / "shark-girl-objects.png"), |
| ] |
|
|
| thumb_w, thumb_h = 360, 360 |
| label_h = 38 |
| sheet = Image.new("RGB", (thumb_w * 3, (thumb_h + label_h) * 4), (250, 246, 236)) |
| draw = ImageDraw.Draw(sheet) |
| try: |
| font = ImageFont.truetype("/System/Library/Fonts/Supplemental/Arial Bold.ttf", 19) |
| except Exception: |
| font = None |
|
|
| for idx, (label, path) in enumerate(items): |
| img = Image.open(path).convert("RGB") |
| img.thumbnail((thumb_w, thumb_h), Image.Resampling.LANCZOS) |
| row, col = divmod(idx, 3) |
| x = col * thumb_w + (thumb_w - img.width) // 2 |
| y = row * (thumb_h + label_h) |
| sheet.paste(img, (x, y)) |
| draw.text((col * thumb_w + 14, y + thumb_h + 8), label, fill=(24, 34, 34), font=font) |
|
|
| sheet.save(root / "contact-sheet.png", quality=94) |
| print((root / "contact-sheet.png").resolve()) |
| PY |
|
|
| echo "Generated Blender previews in assets/generated/previews" |
| echo "Generated rigged GLBs in assets/generated/rigged" |
|
|