#!/usr/bin/env python3
"""Render a contact-sheet turntable using the existing silver studio setup."""

from __future__ import annotations

import math
import sys
from pathlib import Path

import bpy

sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "model-silver-web"))
from build_silver_model import clear_scene, import_and_prepare, setup_studio  # noqa: E402


def main() -> None:
    args = sys.argv[sys.argv.index("--") + 1 :]
    source = Path(args[0]).resolve()
    output = Path(args[1]).resolve()
    output.mkdir(parents=True, exist_ok=True)
    angles = [float(value) for value in args[2:]] or [0, 45, 90, 135, 180, 225, 270, 315]
    clear_scene()
    obj = import_and_prepare(source)
    setup_studio(obj, output / "view-00.png")
    scene = bpy.context.scene
    scene.render.resolution_x = 720
    scene.render.resolution_y = 720
    for index, angle in enumerate(angles):
        obj.rotation_euler[2] = math.radians(angle)
        scene.render.filepath = str(output / f"view-{index:02d}.png")
        bpy.ops.render.render(write_still=True)


if __name__ == "__main__":
    main()
