Blender 5.2 · 프로시저럴 · 헤드리스

코드로 만든 고양이

모델링 프로그램을 열지 않고 만든 고양이입니다. 파이썬 스크립트 한 장이 구·원뿔·베지어 커브를 놓고, 재질과 조명을 걸고, 렌더를 돌립니다. 마우스로 정점을 찍은 곳은 없습니다.

주황색 털에 초록 눈을 한 통통한 3D 고양이가 푸른 회색 바닥에 앉아 있다
Cycles 128 samples 1080 × 1080 11분 11초 · CPU 스크립트 397줄

엔진 둘을 나눠 쓴다

고칠 때마다 11분을 기다릴 수는 없습니다. 형태와 배치를 잡는 동안은 EEVEE로 2초 만에 확인하고, 마지막 한 장만 Cycles로 넘깁니다. 같은 스크립트에 인자만 바꿔 넣습니다.

EEVEE1.9초
EEVEE로 렌더한 같은 고양이 — 그림자가 단단하고 재질이 평평하다
48 samples · 640 × 640 · 확인용
Cycles671초
Cycles로 렌더한 같은 고양이 — 그림자가 부드럽고 털에 빛이 스며든다
128 samples · 1080 × 1080 · 최종

눈으로만 잡히는 것들

일곱 번 렌더하고 일곱 번 고쳤습니다. 오류 메시지가 뜬 적은 한 번도 없습니다. 전부 그림을 봐야 알 수 있는 것들이었고, 그래서 매번 결과 이미지를 열어 확인했습니다.

버전보인 증상실제 원인
v1몸통과 발이 화면 밖으로 잘림카메라가 너무 가까웠다
v1주황으로 지정한 털이 크림색으로 나옴기본 AgX 색변환이 채도를 깎는다
v1분홍 속귀가 아예 안 보임겉귀 원뿔 속에 완전히 파묻혔다
v1눈동자 반사가 네모사각 조명이 그대로 비쳤다
v2배 무늬가 사라짐몸통 표면을 뚫고 나오지 못했다
v2바닥이 하얗게 날아감밝은 쪽이 잘려 나갔다
v4눈이 사시처럼 보임동공이 작아 반사광과 어긋났다
v5입이 고글 두 짝처럼 튀어나옴볼록한 면에선 고리의 윗절반을 숨길 수 없다
v6수염이 한쪽만 뺨을 긁고 지나감좌우에서 회전 부호의 의미가 뒤집혔다

GPU는 쓰지 못했다

Metal 가속은 헤드리스에서 멈춥니다. 480 × 480 / 32 samples짜리 작은 렌더를 걸었는데 5분이 지나도 CPU 점유율이 0.2%였습니다. 느린 게 아니라 아무 일도 하지 않고 서 있던 겁니다. 그래서 스크립트는 CPU를 기본값으로 두고, GPU는 마지막 인자로 직접 켜야만 쓰게 해뒀습니다. 최종 한 장에 11분이 걸린 이유가 이것입니다.

돌리는 법

출력 경로는 반드시 절대 경로여야 합니다. 상대 경로를 주면 저장 단계에서 실패합니다.

# 확인용 — 2초
blender --background --python scripts/cat.py -- \
    /abs/out.png BLENDER_EEVEE 48 640 640

# 최종 — 11분
blender --background --python scripts/cat.py -- \
    /abs/out.png CYCLES 128 1080 1080 CPU