34.9 KB · 수정 2026-08-23 10:38
목차

kidstoon — 캐릭터 제작 전체계획 (사람 공정 대조 · TRELLIS→Unity 상세)

페페 지시(26.8.23): 「사람이 직접 디자인하고 프로세싱하면 어떻게 될까? 앞발·색상 문제만 매달리고 있다. 실제 그래픽 디자이너가 어떻게 작업하는지 확인하고, TRELLIS 결과물 작업까지의 전체계획을 더 상세하고 치밀하게 정리 먼저.」 조사 = 웹조사 5갈래 병렬 + 비판 1(에이전트 6, 웹조회 154회). 원문 = research-2026-08-23-designer-workflow.md. 상태 = handoff.md · TRELLIS 생성 매뉴얼 = playbook.md · 기존 설계 = design.md.


0. 결론 먼저 — 질문 3개의 답

Q1. 사람이 직접 하면 어떻게 되나? 앞발·색 문제는 아예 발생하지 않는다. 사람은 실루엣 추출이라는 공정 자체가 없다 — 턴어라운드를 「이미지 플레인」(배경 참조 그림)으로 깔고 눈으로 보며 손으로 형태를 재구성하고, 모호한 부위는 해부학 지식으로 채운다. 대신 값이 있다: 전문가 기준 캐릭터 1종 ≈ 100시간(컨셉 8~24h + 모델링 32~160h + 리깅/텍스처 ≤15h). 외주 실측가 = 크몽 120만원(디자인부터·수정 2회·15일).

Q2. 우리가 앞발·색상에 매달린 게 맞았나? ~~색은 맞았고 끝났다(비검정 0.882·게이트 0.828 PASS).~~ 🔄2026-08-24 정정 — 색은 안 끝났었다. 지표(비검정·게이트)는 통과했지만 납품 GLB 에는 유령 눈 4개·앞섶 체커·전신 스펙클이 그대로 있었다. 원인은 우리가 TRELLIS 공식 규약을 벗어난 것이다(§10). 앞발은 매달릴 자리가 아니었다 — ①리깅 관통이 끝나기 전엔 이 메시가 쓸 만한지조차 모르고(§3) ②조사에서 안 써 본 지렛대가 4개 나왔다(§5).

Q3. 그래서 다음 한 수는? 앞발을 덮어두고 현 메시로 리깅 관통 스파이크(R1~R6)부터 친다. 사람 공정 기준으로 우리는 지금 「스컬프트+텍스처까지」 온 것이고, 리토포→리깅→리타게팅이 통째로 미검증인데 조사 결과 그 구간에 치비 특유의 함정이 줄줄이 있다(Mixamo 치비 실패는 업계 통념 수준). 관통이 되면 앞발은 재생성 루프(공짜)로 고치면 되고, 안 되면 앞발을 고칠 이유 자체가 없다.


1. 실제 그래픽 디자이너의 공정 (조사 확정)

1-1. 표준 9단계와 실측 시간

# 단계 도구(실무 표준) 시간(심플 스타일라이즈드)
1 컨셉/턴어라운드 Photoshop·PureRef 러프 4~8h + 클린 8~16h
2 블록아웃 Maya/Blender (실루엣 합의 전 3D 착수 금지 원칙)
3 스컬프트 ZBrush(표준)·Marvelous(의상) 모델링 합산 32~160h
4 리토폴로지 Maya QuadDraw·Topogun 0.5h(재사용)~3.5h(부위)~18h(복잡)
5 UV·베이크 Marmoset·xNormal
6 텍스처 Substance Painter·3D Coat(핸드페인트 정평) 전신 ~1주(신입 자기보고)·단순 색블록 1~2일
7 리깅/스키닝 Maya·Mixamo/AccuRIG(오토) 오토 분단위 / 심플 수동 1주
8 엔진 임포트 Unity Humanoid
1종 합계 ≈100h (AAA 상한 사례 270h)

1-2. 우리 파이프라인과 구조가 다른 지점 3개

  1. 사람은 실루엣을 추출하지 않는다. 턴어라운드는 뷰포트 배경의 눈 참조용이고, 형태는 판단으로 만든다. 겹친 팔다리·흰 부위 같은 모호 구간도 「해부학 지식 + 컨셉아티스트에게 질문」으로 채운다. → 우리 앞발 문제는 「AI가 실루엣에서 형태를 추정」하는 구조에서만 존재하는 문제 클래스다.
  2. 색 입히기는 우리 bake 와 같은 원리다. Blender 「project from view」= 카메라 투영 + 클론 브러시 전사 + 심 수정을 각도마다 수동 반복. 우리는 그걸 IoU 자동정합으로 자동화했고 이미 88% 수준까지 왔다 — 색 공정은 사람 대비 열세가 아니다.
  3. 디자인 단계에서 실루엣 문제를 예방한다. 「블랙필 테스트」(실루엣만 검게 채워도 형태가 읽히는가)를 컨셉에서 통과시키는 게 원칙. → 우리도 같은 걸 할 수 있다: 캐릭터 시트 단계에서 「배경과 붙는 흰 부위가 외곽에 없도록」 디자인 규칙화(주황 장갑이 정확히 이것).

2. 사람이 하면 — 경로 4개 비교 (실측가 기준)

A. 현행 AI 자동화 B. 하이브리드(AI메시+사람 정리) C. 외주 D. 기성(VRoid/에셋)
1종 비용 0원(전기값) 0원+시간 크몽 실측 5만~120만원(디자인부터·수정2회·15일) / Fiverr $25~30+리깅 $100~300 / Upwork $500~2,000 무료~$45
5종 캐스트 0원 시간×5 ≈600만원(크몽 PREMIUM급×5) ~0원
시간/1종 생성 6초+리깅 미지수 +1~2일(숙련자 국소수정 기준·유추치) 15일/종 반나절
원화 일치 게이트 0.828 게이트 이상 작가 역량·수정 2회 한도 원화 포기(기성 형태에 맞춤)
앞발류 문제 있음(구조적) 사람이 지움 없음 없음
캐스트 일관성 시트 규격으로 강제 동일 단일 작가 고정 필수(업계 관행) VRoid는 사람형 위주 — 동물 치비 부적합
주1편 적합성 ◎(재생성 공짜) △(추가 캐릭터마다 돈·15일)
리깅 보장 미검증 사람이 보장 발주조건에 명시하면 보장 VRoid는 Humanoid+블렌드셰이프 자동

판단: 캐릭터는 1회성 자산이라 100h/외주 120만원이 「못 낼 값」은 아니다 — 병목은 편당 제작이지 캐릭터가 아니다. 그래서 A를 기본으로 유지하되, A가 리깅 관통(§4)에 실패하면 C(1종 시험발주 50만원급)로 보험을 건다. D의 VRoid 는 사람형 전제라 동물 치비 캐스트엔 부적합(단, 사람 조연이 필요해지면 그때 최적). B는 A의 국소 보완재로 상시 열어둔다 — Tripo 공식 가이드도 「생성 20% : 정제 80%」를 명시하고, AI 메시→사람 마무리가 2025~26 실무 표준 패턴이다.


3. 🔴 순서 재정렬 — 진짜 미검증 구간은 리깅 이후 전부다

조사에서 확인된 우리 앞길의 함정들(전부 남의 실측):

→ 앞발은 이 벽들을 다 넘은 뒤에 고쳐도 늦지 않고, 벽에서 막히면 고칠 이유도 없다. fail-fast.


4. TRELLIS 결과물 → Unity 완성 상세 공정 (R-체인)

S1~S4(시트→생성→게이트)는 playbook.md 확정. 여기는 그 다음 전 구간. 원칙: 각 단계에 게이트·폴백을 박고, 통과 실측값을 playbook 에 승격한다.

# 단계 도구(전부 무료) 게이트(통과 기준) 실패 시 폴백
R1 노멀 정리 — 스무딩 노멀 생성(툰 아웃라인용 UV2 베이크는 셰이더 확정 후) Blender(Shade Smooth + Auto Smooth) 렌더에서 패싯 면 없음 각도 임계 조정
R2 리토포 — 20,650 tri → 쿼드 위주 8~15K, 관절(팔꿈치·무릎·어깨·목)에 지지 루프 ≥3 Instant Meshes(오픈소스) 1차 → Blender Remesh/수동 보정 쿼드율·관절 루프 육안 + tri 수 Meshy/Tripo 무료 Remesh(웹)
R3 UV 재전개 + 텍스처 전사 — 새 토폴로지에 새 UV, 기존 bake 텍스처를 Selected-to-Active 베이크로 이사. ⚠전사할 원본 텍스처는 §10 결정 후 확정 Blender(xatlas/Smart UV + Cycles bake) 비검정 >0.15 · 육안 심 확인 문제 부위만 국소 재언랩
R4 리깅 — ①AccuRIG(과장비율 주장·1순위) ②Mixamo(마커를 사람 비율처럼) ③Blender Automatic Weights 재스킨 AccuRIG·Mixamo·Blender 본 위치 육안 + 팔들기·앉기 테스트 포즈에서 찢어짐 없음 ③까지 실패 = §5 경로 전환
R5 Unity 반입 — URP + com.unity.toonshader + UniVRM(SpringBone용) 설치, FBX 임포트, Humanoid Avatar 매핑 Unity 6000.3.22f1(집PC) Configure 에서 필수 본 전부 녹색 + T포즈 정상 본 이름 수동 매핑(⚠GLTF 본이름 콜론 제거 함정 기억)
R6 리타게팅 검증 — Mixamo walk/idle/wave 3클립 재생 Unity Animator 팔 관통·보폭·손위치 육안 3클립 통과 Avatar Mask·클립별 커브·Two-Bone IK
R7 귀·꼬리 — 임포터 마스크에서 extra bone 활성 + SpringBone UniVRM SpringBone(MIT) 흔들림 육안(Stiffness 1.0·Drag 0.4 기본에서 시작) 본 없으면 Blender 에서 귀·꼬리 본 수동 추가
R8 입·눈 텍스처 스왑 — 얼굴 쿼드 전용 2번째 UV + 8칸 아틀라스, Shader Graph Flipbook 노드(Tile 에 정수 인덱스) Unity 내장 입모양 8종 전환 육안 MaterialPropertyBlock 직접 오프셋
R9 캐스트 간 클립 공유 검증 — 2종째 캐릭터(로봇)에 같은 클립 R1~R6 반복 두 캐릭터가 같은 클립으로 걷는가 캐릭터별 클립 사본+커브 보정

R1~R6 = 「리깅 관통 스파이크」 1단위(현 메시 그대로, 앞발 무시). 예상 반나절~1일. 집PC GPU 불필요 구간(R1~R4 는 Blender CPU 로 미니PC에서도 가능, R5~R6 만 집PC Unity).


5. 앞발 — 관통 뒤에 쓸 지렛대 4개 (조사에서 새로 나온 것 포함)

우선순위 순. ①이 공짜고 근본이라 1순위.

  1. 업스트림 크로마키 — 시트 재생성(비판 에이전트 발견·미시도). 나노바나나 프롬프트에서 배경을 캐릭터 팔레트에 없는 색(그린/마젠타)으로 지정해 처음부터 흰 부위가 배경과 안 붙는 시트를 뽑는다. rembg(u2net)가 흰 앞발을 배경으로 오인하는 원인 자체가 사라진다. 비용 = 프롬프트 실험 1~2시간. ⚠단 「배경교체 후 rembg」(rembg-swap)가 붕괴했던 전례가 있으므로, 생성 시점부터 크로마키인 시트로 4컷 전부 다시 뽑아 일관되게 넣어야 한다(후처리 교체와는 다른 조건).
  2. rembg 노브/모델 교체(미시도). alpha_matting 임계값(fg 기본 240·bg 기본 10) 조정 또는 birefnet 등 다른 매팅 모델 — 손대는 건 파라미터지 매트 자체가 아니라서 「외곽을 우리가 다시 그리면 붕괴」 규칙에 안 걸린다. 비용 = 코드 한 줄 스윕.
  3. 디자인 변경 — 주황 장갑(기존 안). 디자이너의 「블랙필 테스트」 원칙과 정확히 같은 해법. 장화와 세트라 자연스럽다. 비용 = 시트 재생성. ①②가 실패하면 이것.
  4. Blender 국소 수정(하이브리드 B). 정상 발을 복제·이식 + 국소 재언랩 + 원화 재투영. 숙련자 1~2일(유추치) — 코디가 Blender 파이썬으로 시도 가능하되 학습곡선 리스크.

6. 실행 로드맵 (이 순서로)

Phase A  리깅 관통 스파이크 (R1~R6, 현 메시·앞발 무시)
  ├─ 통과 → Phase B
  └─ R4 3폴백 전부 실패 → Phase C
Phase B  앞발 지렛대 ①→②→③ 순 시도 → 시트 확정 → 재생성 →
         R-체인 재주행(이번엔 자동화 스크립트로) → R7~R9 → 캐릭터 1종 완성
Phase C  하이브리드 B 심화 — 코디가 Blender 스크립팅(bpy)으로 리깅·정리를 직접 자동화
         (본 배치 휴리스틱 개선·웨이트 수동보정 스크립트화) + 시트·생성 파라미터 재설계 루프

페페 확정(26.8.23) = ①관통 먼저 ②지렛대 = 크로마키→rembg 노브→장갑 순 ③🔴외주는 안 쓴다 — 무조건 AI 기술로 승부. §2 경로 C(외주)·구 Phase C(시험발주)는 폐기. 실패 시 경로 = 항상 「AI + 코디 자동화」 안에서 푼다(위 Phase C).

기존 로드맵과의 관계 = P0 관통 스파이크의 「③Mixamo 클립이 AI 메시 리그에 붙음」 게이트를 R1~R6 으로 세분화한 것. P0 의 나머지(셋·대사·Recorder)는 R-체인 통과 후 그대로 진행.

7. 페페 결정 — ✅확정(26.8.23)

# 사안 결정
1 우선순위 관통 먼저(추천대로)
2 앞발 지렛대 크로마키 → rembg 노브 → 장갑 순(추천대로)
3 외주 ✅🔴외주 사용 없음 — 무조건 AI 기술로 승부(페페 원문 26.8.23). 실패 시에도 AI+코디 자동화 안에서 푼다. §2 경로 C 폐기

7-1. 경로 E — 파트별 생성·조립 (페페 발의 26.8.23 밤, 코디 평가)

페페 원문: 「몸·얼굴의 다른 색상부분, 귀 파트, 눈 파트 등 디테일이 하나로 베이크해서 산출 안 되는 부분들을 파트별로 나눠 생성하는 방법도 생각해봐. 에셋 개념으로 파트를 나눠 생성하면 관절 부위도 생성되고 파트별 에셋 생성도 잘 될 것 같다.」

코디 평가 = 유망하다. 오늘 확인된 문제 3계열을 동시에 지운다:

  1. 앞발 실루엣 결손 소멸 — 팔을 독립 파트로 생성하면 흰 앞발이 실루엣 내부가 아니라 파트 자체가 된다. rembg 가 오릴 배경 혼동 자체가 없다.
  2. 어깨 융합·웨이트 번짐 소멸 — 오늘 단면 진단의 최대 리스크(위팔~어깨가 몸통에 융합, 자동 웨이트 번짐 우려)가 파트별 강체(rigid) 바인딩으로 원천 제거된다. 관절 = 파트 겹침(볼조인트) — 세그먼트 캐릭터는 툰 장르 표준 기법(레이먼은 아예 팔다리가 떠 있다). 스키닝·자동 웨이트가 공정에서 사라진다.
  3. 텍스처 아틀라스 단순화 — 파트당 텍스처가 작고 단순해져(귀=단색+안쪽, 눈=평면) 오늘 밤 잡은 「단일 아틀라스 섬 뒤섞임」 문제의 표면적 자체가 준다. 눈·입은 애초에 D4 계획대로 텍스처 스왑 쿼드라 파트 생성과 정합.

리스크·확인 필요 = ①TRELLIS 가 몸통 없는 단독 팔/귀를 온전히 생성하는지(학습분포 밖일 수 있다 — 파트당 실측 1회) ②파트 접합부 이음새가 툰 렌더에서 읽히는지(겹침 반경 튜닝) ③파트 배치 정렬 자동화 (랜드마크 JSON 은 이미 있다 — rig_prep 산출을 조립 좌표로 재사용) ④파트 수 × 생성 시간(파트당 6초라 문제 아님).

결론 = R3'(텍스처 대응 문제)가 한 번 더 막히면 경로 E 를 1군으로 승격한다. 그 전에도 귀·꼬리 같은 소형 파트는 E 방식이 유리(SpringBone 대상이라 어차피 별도 본이다). 로봇 주연(D3)은 애초에 파트 조립이 자연형이라 E 의 첫 실전은 로봇 캐스트로 잡는 게 맞다.

8. 조사의 한계 (정직하게)


9. 눈·귀·입 움직임 — 조사 결과와 채택안 (2026-08-24, 페페 지시)

페페 원문: 「영상으로 만들고 3D로 캐릭터가 움직이면 눈, 귀, 입 움직임도 필요하다. 파트를 나눠서 별도로 머리에 추가하는 방법이 필요할거 같다. 관절은 지금 상태에서도 움직일 수 있을 것으로 본다.」

결론 = 페페 직감이 맞다. 단 「파트」의 성격이 부위마다 다르다 — 셋을 같은 방식으로 풀면 안 된다.

부위 성격 채택 기법
평면 특징(실루엣 무관) 텍스처 스왑 — 별도 패치 메시 + 8칸 아틀라스 UV 오프셋 Rhubarb 출력이 A~H 8종 코드+타임코드라 그대로 대응
평면 특징 텍스처 스왑 — 깜빡임 2~3칸 + 감정 N칸 업계 표준(젤다TP·VRoid·VTuber 3D)
실루엣 특징 본 2개(Head 자식 L/R) + SpringBone 텍스처로 불가 — 쫑긋/납작은 외곽선이 바뀐다
꼬리 실루엣 본 3~4개 + SpringBone (기존 R7) 동일

업계 대조 — VRoid 계열은 모델을 Body/Face/Hair 별도 SkinnedMeshRenderer + 별도 머티리얼로 쪼개고 얼굴만 텍스처를 갈아끼운다. 눈은 「얼굴 메시의 고정 영역에 눈 텍스처를 얹고 UV 를 오프셋」하는 닌텐도식이 정석(SetTextureOffset). 블렌드셰이프를 안 쓰는 게 이 장르의 주류다 — AI 메시엔 셰이프키가 없어 캐릭터마다 입을 조각해야 하는데, 그 비용이 통째로 사라진다(rules.md 기확정).

🔴 진짜 장애물 = 베이스 텍스처에 얼굴이 이미 구워져 있다

눈·입을 스왑하려면 그 자리가 비어 있어야 하는데, 우리 아틀라스는 xatlas 임의 섬이라 「얼굴 영역만」 도려낼 수가 없다. 3안:

방법 비용 위험
(a) 덮기 ✅채택 눈·입 패치 메시를 머리 곡면에 shrinkwrap 으로 밀착시켜 얹는다(평면 아님 — 세분화 필요) 최저. 오늘 자산에 바로 얹힌다 z-fighting · 툰 아웃라인이 패치 경계를 그릴 수 있다
(b) 민얼굴 베이스 얼굴 특징을 뺀 시트를 한 벌 더 생성해 그걸로 굽는다(imagegen) 시트 재생성 = 형상까지 흔들릴 수 있어 bake 입력만 교체해야 한다
(c) 경로 E 머리를 파트로 생성 최대 §7-1

채택 = (a) 먼저. 베이스 재생성 없이 검증되고, 실패해도 (b)→(c) 로 승급하면 된다. (b) 는 (a) 에서 「패치가 원래 눈을 다 못 가린다」가 확인될 때만 간다.

관절 = 페페 말대로 현 상태로 간다

Phase A 에서 Humanoid 아바타 isValid+isHuman · 전 본 자동매핑 · 근육 포즈 3종 메시 붕괴 없음을 이미 확인했다(2026-08-23). 귀·꼬리만 extra bone 으로 추가하는데, Mixamo 리타게팅은 extra bone 을 건드리지 않으므로 기존 클립과 충돌하지 않는다(= 안전한 증분).

한국어 립싱크

Rhubarb 는 영어 음소 기반이라 한국어는 근사다. 음향 기반 uLipSync(언어 무관)가 한국어 1순위 후보 — R8 에서 두 개를 같은 대사로 붙여보고 육안 비교해 고른다.

미검증(정직하게)

9-1. (a)안 스파이크 실측 — 2026-08-24 (tools/blender_face_parts.py)

패치 메시(24×24 그리드) + SHRINKWRAP(PROJECT, offset 0.004) + Mapping 노드 UV 오프셋으로 final3 머리에 눈 3칸·입 4칸 아틀라스를 얹어 정면·35° 2각도 렌더.

질문 근거
곡면에 이음새 없이 붙는가 붙는다 35° 비스듬에서도 머리에 밀착, 뜨거나 파고들지 않음
z-fighting 나는가 안 난다 offset 0.004 로 충분
UV 오프셋으로 칸이 바뀌는가 바뀐다 눈 뜸→감음 · 입 다뭄→A 교체 확인
원래 구워진 얼굴을 가리는가 🔴못 가린다 베이크된 눈이 패치 옆으로 그대로 보인다

🔴그래서 (b)민얼굴 베이스는 선택이 아니라 필수다. 이유 = 눈을 덮으려면 패치 칸에 주변 털색 배경을 같이 그려야 하는데, 우리 캐릭터는 털이 무늬(태비/주황 비대칭)라 단색 배경으로는 절대 안 맞는다. 패치를 키우면 35° 에서 머리 옆면까지 감겨 눈감음 선이 볼 밖으로 삐져나온다(실측). → bake 입력 시트에서만 눈·입을 지우고 굽는다(형상 입력은 손대지 않는다 — 실루엣 건드리면 §2 붕괴 규칙에 걸린다). 시트 재생성이 아니라 --sheet-dir 쪽 4컷만 얼굴 특징 제거하면 된다.

다음 수 = ①민얼굴 bake 시트 4컷 생성(imagegen 또는 인페인팅) → 재bake → 패치만 남는지 확인 ②패치 위치·크기를 랜드마크(rig_prep)에서 자동 산출 ③Head 본에 패런팅 + Unity 반입.

9-2. (b)민얼굴 베이스 — ✅관통 확인 (2026-08-24)

tools/deface_sheet.py 신설 = bake 시트에서 눈만 지운다(형상 입력은 안 건드린다). 🔑열쇠 2개 — ①원화가 툰 라인아트라 「어둡다」의 대부분이 외곽선이다 → 알파를 침식한 내부에 완전히 포함된 덩어리만 남긴다(외곽선·귀선 제거) ②태비 줄무늬도 어둡고 내부라 안 갈린다 → 홍채색(HSV s>80·v>110·h 18~42)이 인접한 덩어리만 눈으로 인정. 이 둘을 다 걸어야 눈 2개만 남는다. 실측 = 마스크 13,450px(front) · 줄무늬·귀·주둥이 보존 · 코/입선은 남긴다(입 패치가 덮는다).

관통 결과 = 민얼굴 시트로 재bake(out/trellis/noface, 지표 유지 coverage 0.595 · raw 0.675) → 패치 얹기 → 베이스에 눈이 없고 패치 눈만 보인다 ✅. 눈 깜빡임·입 4칸 교체도 그대로 동작.

남은 것 = ①패치 위치·크기를 랜드마크에서 자동 산출(지금은 상수 0.760/0.690 — 원래 눈보다 작고 가깝다) ②눈 지운 자리에 옅은 얼룩이 남는다(패치 밑이라 실사용엔 무해) ③실제 눈·입 아틀라스 아트 (지금은 플레이스홀더) ④Head 본 패런팅 + Unity 반입 ⑤귀 본 2개.


10. 🔑 텍스처 경로 — 공식 규약 재발견과 3안 비교 (2026-08-24)

10-1. 발단 — orbit.mp4 는 납품물이 아니었다

페페 지적 = 「앞섶 깨지고 얼굴 이중, 전체 텍스처 지저분. 그런데 final3/orbit.mp4 는 완벽하다」.

정체 = trellis_gen.py 마지막 줄이 render_utils.render_video(outputs["gaussian"][0]). orbit.mp4 는 가우시안 스플랫 직접 렌더라 메시·UV·bake·GLB 를 하나도 안 거친다. 그래서 우리 텍스처 공정이 무슨 짓을 해도 안 깨진다 — final·run1·cut1모든 실행 폴더의 orbit.mp4 가 원래 다 깨끗했다. 「final3 만 완벽」이 아니다.

glb_cpu_render.py 로 GLB 를 직접 렌더하니 페페가 말한 3증상이 GLB 에만 전부 있었다 — 눈 4개(정면시트 눈 2 + 측면시트 눈 2가 볼에 찍힘) · 가슴 중앙 체커 · 전신 스펙클. 증거 = kidstoon/out/_diag_texture/compare_{body,face}*.png.

10-2. 🔴 뿌리 = 공식 규약 이탈

TRELLIS v1 공식 페이지(26.8.23 조사에서 누락, 26.8.24 페페 지적으로 확인):

"GLB files are extracted by baking appearance from 3D Gaussians to meshes."

공식에서 GLB 텍스처의 관측원은 가우시안이다. 우리는 「생성된 가슴·앞발이 검다」를 고치려고 관측원을 원화 4컷으로 갈아끼웠고(--sheet-dir), 그 순간 3D 정합을 잃었다.

측면 시트의 눈은 「같은 눈을 옆에서 그린 2D 그림」인데, 옆 카메라로 쏘면 광선이 머리 옆면에 맞는다 → 볼에 눈. 앞섶은 4뷰 모두 스치듯 봐서 텍셀당 관측 1~2개 → 최적화 미결정 → 체커. 파라미터(texture_size·lambda-tv·simplify)로는 못 고친다 — 1024+TV 는 증상만 옅게 한다.

조사 §1-2 의 「디자이너는 턴어라운드를 눈 참조로만 쓴다」가 코드로 나타난 것이고, 가우시안은 4뷰를 3D 로 융합해 눈 위치를 이미 결정했으므로 이 문제 클래스가 원리상 없다.

10-3. 3안 비교 (26.8.24 실행, tools/trellis_3way.bat)

# 구현 기대
공식 to_glb 복귀 --sheet-dir 없이 실행(코드에 이미 있는 else 분기) + --target-medv 0.53 알베도 보정 유령눈·체커 원리적 소멸. 대가 = 라인아트 뭉갬(코·입 선 소실, 색 파스텔)
하이브리드 🆕--gauss-views 60 — 원화 4뷰에 가우시안 60뷰를 관측으로 덧붙인다. 원화 지분 4/64. 상하규약은 래스터 마스크 IoU 로 자동 결정(추측 금지) 다수결이 정합 쪽으로 기울어 유령 소멸 + 원화 색·선 일부 회복
정면만 얼굴 시트 조합 cut_h_frontface = 정면·후면은 원본, 측면 2장은 눈·입 지운 것(cut_noface 재활용) 볼에 눈을 칠할 관측이 없어 유령 구조적 소멸. 4뷰 희소성(체커)은 남음

대조군 = 현 영상 자산 nf1024tv/model_n.glb(원화 4뷰 · 1024 · TV 0.01). ②③은 대조군과 같은 simplify 0.90 / texture 1024 / lambda-tv 0.01 로 맞춰 1변수 비교로 만들었다.

판정 = glb_cpu_render.py 로 GLB 직접 렌더 → ⓐ정면 눈 개수 2개 ⓑ가슴 체커 없음 ⓒ코·입 라인 생존.

10-3′. 실측 결과 (26.8.24, GLB 직접 렌더 판정)

증거 = kidstoon/out/_diag_texture/ALL_6way.png(위=전신 · 아래=얼굴 확대, 좌→우 순서 = 아래 표).

# 유령 눈 앞섶·스펙클 라인아트 판정
대조군 nf1024tv(현 영상 자산) 🔴있음 🔴체커·전신 스펙클 선명 현 상태
o1_native 공식 to_glb ✅없음 ✅깨끗 🔴전부 소실(코·입선·태비무늬) 통과, 밋밋
o2_hybrid 원화4+가우시안60 ✅없음 ✅깨끗 △입·주머니선 일부 생존 🏆최선
②b o2b_hybrid12 원화4+가우시안12 △약한 테두리 재등장 ✅깨끗 ○①②보다 더 살아남 노브 확인용
o3_frontface 측면시트 deface 🔴있음 🔴그대로 선명 실패
③b o3b_eyedrop 측면시트 눈 알파=0 🔴있음 🔴그대로 선명 실패

🔑 ③ 계열 2방식 전부 실패 = 「원화 4뷰 단독」 경로는 종결이다. 측면 시트를 손대는 것으로는 유령이 안 지워진다 — 즉 유령의 출처가 측면 시트만이 아니다(정면 시트 자체의 관측이 구형 머리 옆면까지 유효 판정되는 것으로 추정, 미확정). 4뷰 희소성은 관측 수를 늘리는 것 말고 해법이 없다.

🔴 ③ 이 실패한 직접 원인은 따로 있고, 이게 더 큰 발견이다deface_sheet.py 는 눈을 못 지운다. 어두운 덩어리(눈꺼풀·동공)만 인페인팅하고 밝은 홍채를 남겨 창백한 원형 잔상을 만든다 (실측: cut_h vs cut_noface 측면 시트 확대). 그래서 ③은 「측면 눈 제거」가 아니라 「측면 눈을 다른 얼룩으로 교체」를 시험한 셈이었다. 현 영상의 「얼굴이 이중으로 겹쳐 보인다」도 같은 원인 — 민얼굴 베이스(nf1024tv)에 이 홍채 잔상이 남아 있는데 그 위에 눈 패치를 얹었다.

②의 노브 = 가우시안 뷰 수. 60뷰(지분 6%)면 유령 0·라인 최소, 12뷰(지분 25%)면 라인이 더 살고 유령이 조금 돌아온다. 라인아트를 더 원하면 12~30 사이를 스윕한다.

10-3″. 5시트 × 가우시안{12,60} 전수 매트릭스 (26.8.24, 페페 지시)

산출 = out/trellis/m10/{A_orig,B_front,C_drop,D_noface,E_dropall}_g{12,60} · 대조 = o1_native. 캡처 = out/_diag_texture/m10_{body_front,body_left,face}.png(2행 = g12/g60, 6열 = A~E + NATIVE).

코드 시트(bake 관측)
A cut_h 원화 얼굴 그대로(=final3 입력)
B cut_h_frontface 측면 2장 deface
C cut_h_eyedrop 측면 2장 눈 알파 0
D cut_noface 4장 전부 deface(현 영상 베이스)
E cut_h_dropall 🆕 4장 전부 눈 알파 0

결과 — 10개 전부 깨끗하다. 유령 눈 0 · 앞섶 체커 0 · 스펙클 0. 즉 가우시안 관측을 넣는 순간 시트 변형(A~E)은 사실상 무의미해진다.

비교 평균 픽셀차(0~255)
같은 g 에서 A 대비 B/C/D/E g12 1.5~1.6 · g60 1.0~1.2
같은 시트에서 g12 vs g60 1.6~1.7
NATIVE 대비 g12 2.3 · g60 1.8

🔴 결정적 발견 = 하이브리드로는 민얼굴 베이스를 못 만든다. D(전부 deface)·E(전부 알파드롭)에도 눈이 그대로 있다 — 가우시안이 눈을 갖고 있어 다시 칠한다(얼굴영역 홍채색 비율 D 0.485 · E 0.486 = NATIVE 0.487). R8 눈·입 스왑은 시트를 손대는 것으로 해결 안 되고, 가우시안 렌더 쪽에서 얼굴을 지우거나 얼굴을 별도 파트로 분리(경로 E)해야 한다.

⚠ 방법론 경고 — 이 매트릭스는 시트 변형 효과를 분리하지 못한다. TRELLIS 가 --seed 1 고정에도 매 실행 메시가 다르다(10회 verts 12,590~13,129 전부 상이) → UV 재배치로 선명도가 흔들리고, 그 런노이즈가 변형 효과(1.0~1.6)와 같은 크기다. 시트 변형을 진짜로 재려면 메시를 1회 생성해 고정하고 bake 만 반복해야 한다(미구현).

남은 유일한 실질 노브 = 가우시안 뷰 수. g12 가 g60 보다 원화 쪽(대비·라인)에 가깝고 NATIVE 에서 멀다. 원화 선명도를 더 원하면 4~8뷰까지 내려 스윕하는 게 다음 수다(미실행).

10-5. 🔑 정정 + 해결 — 유령의 범인은 측면 시트였다 (26.8.24 밤)

정정 — §10-3′ 의 「③ 계열 2방식 실패 = 원화 4뷰 단독 경로 종결」은 오판이었다. ③b 를 1024+TV 로 돌려 다른 파라미터의 기준선과 눈으로 비교한 탓이다. 같은 조건으로 A/B 를 다시 쳤다.

A/B (둘 다 sheet-only · 2048 · TV off · 가우시안 0 = final3 설정)out/_diag_texture/ghost_ab.png

시트 정면 눈
S1 cut_h (원화 얼굴 그대로) 🔴4개
S2 cut_h_eyedrop (측면 시트 눈만 알파 0) 2개

→ 측면 시트가 범인 확정. 측면 원화의 눈은 「같은 눈을 옆에서 그린 2D 그림」이라 옆 카메라로 쏘면 광선이 머리 옆면(볼) 에 맞는다(메시의 진짜 눈은 앞면). 같은 원리로 측면 시트의 수염·주둥이선· 머리 윤곽선이 얼굴을 가로지르는 유령 곡선이 된다.

해법 = tools/facedrop_sheet.py 신설. 측면 시트의 눈에서 앞·아래 사분면(눈 크기 단위 직사각)을 알파 0 으로 판다. 정면·후면 시트는 그대로 둔다(정면 눈이 진짜 눈이고 후면엔 얼굴이 없다).

시트 결과
F0 cut_h_facedrop (윤곽선 띠 보존) 눈 2개 ✅ · 얼굴 가로지르는 곡선 잔존
F0b cut_h_facedrop2 (--no-edge, 윤곽선 띠까지 제거) 🏆눈 2개 · 곡선 소멸 · 원화급 선명도·색 유지
F4/F8 facedrop + 가우시안 4/8 🔴가우시안이 소수여도 색이 탁해지고 노이즈 증가 — 섞지 마라

증거 = out/_diag_texture/facedrop_{face,edge_ab,body}.png · 산출 = out/trellis/fd/.

🏆 현재 최선 = fd/F0b_g0 — 원화 4뷰 단독 · 2048 · TV off · facedrop2 시트. 페페 평가대로 색·해상도는 final3 급이면서 유령만 사라진 것이다.

남는 결함 = 가슴(앞섶) 격자·전신 스펙클. 이건 유령과 별개인 4뷰 희소성 문제이고, 가우시안 혼합은 색을 죽이니(F4/F8 실측) 다른 수가 필요하다 — 후보 = 시트 4컷 → 6~8컷 증설, 또는 앞섶 부위만 국소 보정. 미해결.

10-4. 조사 방법론 교정 (재발방지)

26.8.23 조사는 웹 154회를 돌면서 지금 쓰고 있는 도구의 1차 문서를 안 읽었다(TRELLIS v1 공식 페이지 0건. 잡힌 건 전부 TRELLIS.2·포크·ComfyUI·fal.ai). 도구를 이미 돌리고 있다는 사실이 「문서는 이미 안다」는 착각을 만들었다. → 조사 착수 시 0번 항목 = 현재 쓰는 도구의 1차 문서. 조사 원문 반영 = research-2026-08-23-designer-workflow.md===== trellis-official ===== 절.