config.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. """Runtime configuration (all overridable via env). Defaults target the
  2. `genrecon` LXC produced by issue i-opavuyaq; the MOCK path lets the whole
  3. app run/test on any machine without a GPU or the GenRecon install."""
  4. import os
  5. from pathlib import Path
  6. BASE = Path(__file__).resolve().parent
  7. ROOT = BASE.parent
  8. def _flag(name: str, default: str = "0") -> bool:
  9. return str(os.environ.get(name, default)).lower() in ("1", "true", "yes", "on")
  10. # --- mode ---
  11. MOCK = _flag("GENRECON_MOCK") # skip GPU pipeline, emit the sample scene
  12. # --- paths ---
  13. JOBS_DIR = Path(os.environ.get("GENRECON_JOBS_DIR", "/srv/jobs"))
  14. FRONTEND_DIR = Path(os.environ.get("GENRECON_FRONTEND_DIR", str(ROOT / "frontend")))
  15. SAMPLE_GLB = Path(os.environ.get("GENRECON_SAMPLE_GLB", str(ROOT / "sample" / "scene.glb")))
  16. # --- GenRecon install (on the genrecon machine) ---
  17. GENRECON_SRC = Path(os.environ.get("GENRECON_SRC", "/opt/genrecon/src"))
  18. GENRECON_CKPTS = Path(os.environ.get("GENRECON_CKPTS", "/opt/genrecon/ckpts"))
  19. CONDA_ENV = os.environ.get("GENRECON_CONDA_ENV", "genrecon")
  20. CUDA_DEVICE = os.environ.get("GENRECON_CUDA_DEVICE", "5") # pin to a free GPU on hypervisor a
  21. # --- pipeline knobs ---
  22. FFMPEG_BIN = os.environ.get("GENRECON_FFMPEG_BIN", "ffmpeg")
  23. COLMAP_BIN = os.environ.get("GENRECON_COLMAP_BIN", "colmap")
  24. FRAMES_FPS = float(os.environ.get("GENRECON_FRAMES_FPS", "2"))
  25. FRAMES_MAX = int(os.environ.get("GENRECON_FRAMES_MAX", "300"))
  26. NUM_IMGS_PER_SCENE = int(os.environ.get("GENRECON_NUM_IMGS", "999"))
  27. PIPELINE_CONFIG = os.environ.get("GENRECON_PIPELINE_CONFIG", "configs/pipelines/texture.json")
  28. MAX_UPLOAD_MB = int(os.environ.get("GENRECON_MAX_UPLOAD_MB", "2048"))
  29. JOBS_DIR.mkdir(parents=True, exist_ok=True)
  30. # Stage order + the progress band each stage fills (start, end).
  31. STAGES = [
  32. ("frames", 5, 25),
  33. ("colmap", 25, 55),
  34. ("reconstruct", 55, 90),
  35. ("glb", 90, 100),
  36. ]