#!/usr/bin/env bash # Stable Fast 3D (SF3D) — Stability, official MPS. Weights gated on HF: the owner # must `huggingface-cli login` and accept the stabilityai/stable-fast-3d license # once; otherwise the first run errors with a clear message. set -euo pipefail cd "$(dirname "$0")/.." ROOT=$(pwd) UV=/opt/homebrew/bin/uv echo "[sf3d] OpenMP runtime for Metal/C++ kernel compile ..." brew list libomp >/dev/null 2>&1 || brew install libomp mkdir -p vendor [ -d vendor/stable-fast-3d ] || git clone --depth 1 https://github.com/Stability-AI/stable-fast-3d vendor/stable-fast-3d echo "[sf3d] creating venv (python 3.11) ..." $UV venv --python 3.11 venvs/sf3d PY="$ROOT/venvs/sf3d/bin/python" echo "[sf3d] installing torch + build tooling ..." $UV pip install --python "$PY" -U "setuptools==69.5.1" wheel ninja $UV pip install --python "$PY" torch torchvision echo "[sf3d] installing sf3d requirements ..." cd vendor/stable-fast-3d LIBOMP=$(brew --prefix libomp) export CPPFLAGS="-Xclang -fopenmp -I$LIBOMP/include ${CPPFLAGS:-}" export LDFLAGS="-L$LIBOMP/lib -lomp ${LDFLAGS:-}" # --no-build-isolation so the local texture_baker/uv_unwrapper packages can see # the torch we just installed at build time (they import torch in setup.py). $UV pip install --python "$PY" --no-build-isolation -r requirements.txt echo "[sf3d] verifying import ..." "$PY" -c "import torch; print('[sf3d] torch', torch.__version__, 'mps', torch.backends.mps.is_available())" echo "[sf3d] done — weights download on first run (needs HF login for stabilityai/stable-fast-3d)"