| name | stdgen-3d-reveal-bake |
| description | 단일 2D 애니 원화 → StdGEN(CVPR2025) 오프라인 3D 의미분해 복원 → 정수리/뒷머리 reveal 자산 베이킹 → 우리 2.5D 리그 주입. 머리 강회전(끄덕임 정수리·턴 귀뒤)의 "disocclusion 픽셀 부재" 천장을 *3D를 자산 생성기로만* 빌려 푼다(런타임은 현 2.5D 경량 유지). Colab A100. 트리거 — "정수리 reveal 생성", "머리 강회전 자산", "StdGEN", "3D 베이킹", "hair 별도메시", "끄덕임 정수리", "disocclusion 생성", "3D reveal bake". |
StdGEN 3D Reveal 베이킹 → 2.5D 주입
한 줄: 정면 원화 → 오프라인 3D(body/face/hair 별도메시) → 극단각 렌더로 정수리 자산 베이크 → 2.5D 리그 주입. 3D는 자산 생성기일 뿐 런타임 아님(배포=맥/웹 경량 그대로). SPEC docs/ref/rnd/AUTORIG-3D-REVEAL-BAKE-001.md, 메모리 [[3d-reveal-bake-stdgen]].
비협상
- 주인님이라 부른다. 시각 결과는 항상
open <png>로 띄워 보여준다([[show-results-open-png]]).
- 3D 정수리가 2D 화풍에 붙는가=미검증 리스크. 실렌더 합성·육안 판정 전엔 "된다" 금지([[visual-verify-real-render]]).
- 끝나면 A100 정지(
colab stop -s sh) — 유휴 A100 ~$1.5/hr.
- 증거 메시·mp4·렌더 PNG 삭제 금지.
★입력 = 전신 (비협상)
StdGEN은 full-body 전제. 흉상 입력 → 얼굴 마스크·다리 환각(2026-06-24 008 실증). 흉상밖에 없으면 gpt-image-2 edit로 전신 생성:
canonicalize 후 result/apose/*.png를 먼저 띄워 조기게이트(얼굴/머리 안 깨졌나) → 깨지면 즉시 중단(비용 절약).
★ENV 레시피 (Colab A100 · 16개 함정 정리 — 이 순서·버전 그대로)
StdGEN은 py3.9 + torch2.1.0+cu118 + nvcc11.8(일치) 가 정답. torch2.0.1은 pytorch3d 휠은 쉬우나 모델 MHA가 깨짐(loratorch qkv_bias=None). nvcc11.8 확보가 열쇠 — pytorch3d 소스빌드·nvdiffrast 컴파일 둘 다 cu118과 일치해야 함.
colab --auth adc new -s sh --gpu A100
wget -q .../Miniconda3-latest-Linux-x86_64.sh -O mc.sh && bash mc.sh -b -p /content/miniconda
source /content/miniconda/etc/profile.d/conda.sh
conda create -n stdgen python=3.9 pip -y -c conda-forge --override-channels
PY=/content/miniconda/envs/stdgen/bin/python
$PY -m ensurepip --upgrade
$PY -m pip install -q --upgrade "setuptools==69.5.1" wheel ninja
git clone --depth 1 https://github.com/hyz317/StdGEN /content/StdGEN
$PY -m pip install -q torch==2.1.0 torchvision==0.16.0 --index-url https://download.pytorch.org/whl/cu118
$PY -m pip install -q xformers==0.0.22.post4 --index-url https://download.pytorch.org/whl/cu118
conda install -n stdgen --override-channels -c nvidia/label/cuda-11.8.0 -c conda-forge cuda-nvcc cuda-cudart-dev cuda-libraries-dev -y
export CUDA_HOME=/content/miniconda/envs/stdgen PATH=$CUDA_HOME/bin:$PATH TORCH_CUDA_ARCH_LIST="8.0+PTX"
$PY -m pip install --no-build-isolation "git+https://github.com/facebookresearch/pytorch3d.git@stable"
$PY -m pip install -q torch-scatter -f https://data.pyg.org/whl/torch-2.1.0+cu118.html
cd /content/nvdiffrast 2>/dev/null || git clone https://github.com/NVlabs/nvdiffrast /content/nvdiffrast
cd /content/nvdiffrast && $PY setup.py build_ext --inplace
SP=/content/miniconda/envs/stdgen/lib/python3.9/site-packages
cp /content/nvdiffrast/_nvdiffrast_c*.so $SP/ && cp -r /content/nvdiffrast/nvdiffrast $SP/ && cp -r /content/nvdiffrast/nvdiffrast.egg-info $SP/
$PY -m pip install -q omegaconf "diffusers==0.27.2" "transformers==4.42.4" "huggingface_hub==0.25.0" \
"pytorch_lightning==2.0.9" "pymeshlab==2022.2.post4" einops accelerate kornia opencv-python \
rm_anime_bg rembg onnxruntime imageio imageio-ffmpeg scikit-learn matplotlib xatlas trimesh pygltflib
$PY -m pip install -q git+https://github.com/Baijiong-Lin/LoRA-Torch git+https://github.com/facebookresearch/segment-anything.git
$PY -c "from huggingface_hub import snapshot_download; snapshot_download('hyz317/StdGEN', local_dir='ckpt')"
wget -q https://dl.fbaipublicfiles.com/segment_anything/sam_vit_h_4b8939.pth -O ckpt/sam_vit_h_4b8939.pth
버전 핀 이유: pymeshlab 2022.2.post4=Percentage 존재(신버전 제거) · PL 2.0.9=신버전은 torch2.1 flop_counter 의존 OK지만 안전핀 · setuptools<81=pkg_resources(lightning_fabric).
실행 규약 (긴 작업 = nohup + 폴링, websocket 타임아웃 회피)
- 모든 단계를 1개
run.sh로 묶어 setsid bash run.sh >nohup.out 2>&1 </dev/null & (★setsid+</dev/null 안 하면 런처 헛돔). nohup Popen만으론 안 떴음.
- 모든 python 호출에
MPLBACKEND=Agg(Colab inline 백엔드 거부 함정).
- 로컬 background bash가
colab exec로 tail run.log 폴링, RUN_DONE_OK/치명마커서 종료. 폴 트리거에 ModuleNotFoundError·일반 Traceback 넣지 말 것(nvdiffrast 등 양성 체크가 오트리거) — RUN_DONE_OK|CUDA out of memory|Killed|No space|Session .* not found만.
파이프라인
MPLBACKEND=Agg $PY infer_canonicalize.py --input_dir ./input_cases --output_dir ./result/apose
MPLBACKEND=Agg $PY infer_multiview.py --input_dir ./result/apose --output_dir ./result/multiview
MPLBACKEND=Agg $PY infer_slrm.py --input_dir ./result/multiview --output_dir ./result/slrm
MPLBACKEND=Agg $PY infer_refine.py --input_mv_dir result/multiview --input_obj_dir ./result/slrm --output_dir ./result/refine
출력(result/slrm/): akane_0=전체통합 · _1=의상 · _2=머리카락(정수리 포함) · _3=베이스몸+얼굴(대머리). 각 .glb/.obj/.mp4(턴테이블). zip 후 download.
정수리 베이크 (로컬 Blender, A100 불요)
GLB는 정점색(vertex Color attr, UV 없음). 머리(akane_2)를 pitch elev 35~60°로 렌더 → 정수리 reveal 패치.
- Principled BSDF는 스페큘러가 plastic하게 띄움 → **Emission(언릿 정점색)**이 진짜 albedo·공정.
- Blender 5.x:
scn.render.engine='BLENDER_EEVEE_NEXT', view_settings.view_transform='Standard', film_transparent=True.
- 참조 스크립트:
experiments/autorig-character-008/reports/reveal_bake_poc/ 의 render_crown3.py류.
⚠️ 화풍 괴리 후처리 (PoC 미해결 — 다음 세션)
StdGEN 정점색은 채도 낮게(밝게) 베이크(hair [142,144,172] vs 원화 [58,78,132]) + 매끈 3D. 괴리 보정 사다리:
- refine 복구(torch_scatter ABI) → 멀티뷰 컬러 투영으로 색·디테일 ↑ (정점색 바램 대체)
- NPR 툰 렌더: 셀 양자화 + Freestyle/인버티드-헐 검은 외곽선 → 2D 라인아트
- 팔레트 매칭: 정수리 패치 hue/sat을 2D 팔레트로 리톤(결정론, 실증됨
CROWN_colorfix.png)
- 2D 가닥 텍스처 빌려오기: 3D는 형태(알파)만, 내부는 기존
front_hair 가닥 워프(괴리 0)
- (무거움) img2img + See-through 스타일 LoRA
비용·실증
~$0.5/캐릭터(A100 종량). 2026-06-24 008 아카네 end-to-end 실증: 전신생성→canonicalize→multiview→slrm 메시 산출(hair 정수리 돔 확보). refine만 torch_scatter ABI로 미완(slrm으로 충분). 인프라 스킬 [[autorig-colab-seethrough-2048]] 재사용.