HairDeck이 한 장의 이미지에서 헤어 카드와 스프링 본을 함께 생성한다
HairDeck: Animation-Ready Stylized Hair Cards from a Single Image
무엇인가
게임과 아바타의 스타일화 캐릭터 헤어는 헤어 카드로 만든다. 아티스트가 리본 하나하나를 배치하고 그 기하 자체가 보이는 머리카락이며, 스프링 본이라는 짧은 본 체인으로 흔들림을 시뮬레이션한다. 실사 헤어용 알파 텍스처 카드와 달리 마름모·삼각 단면을 갖고 폭과 두께가 카드 길이를 따라 변한다. 문제는 기존 이미지 기반 방법들이 실사 스트랜드나 하나로 융합된 메시를 내놓는다는 점이다. 스타일화 카드 생성기는 CHARM 하나뿐인데, 이는 헤어스타일을 수백~수천 개 이산 토큰의 긴 시퀀스로 자기회귀적으로 디코딩한다. 저자들은 카드 헤어스타일이 사실 순서 없는 아티스트 정의 프리미티브의 집합이라는 점을 관찰하고, 생성 단위 자체를 바꾼다.
어떻게 동작하나
카드 표현은 CHARM의 제어점 기술을 확장한다. 카드는 n개 제어점 (p_i, w_i, h_i)의 폴리라인으로, 위치·폭·두께를 갖는다. 여기에 단면 종류(마름모 또는 삼각)와 루트 노멀 d1(카드 루트에서의 폭 방향)을 추가하는데, d1은 첫 세 제어점에서 추정하지 않고 아티스트 메시에서 읽는다. 메시를 만들 때는 d1을 회전 최소화(Bishop) 프레임으로 폴리라인을 따라 전파해 각 제어점의 폭 방향을 얻고 단면을 스윕한다. 카드마다 제어점 개수가 다른 문제는 카드 VAE로 해결한다. 인코더는 각 제어점에 호 길이 비율 u_i를 태그해 트랜스포머에 넣고 요약 토큰 출력으로 32차원 잠재 z의 평균과 로그분산을 낸다. 디코더는 z에서 제어점 개수 n을 분류 헤드로 예측한 뒤, n개의 균등한 호 길이 지점에서 저주파 푸리에 특징을 붙여 adaLN-Zero로 z를 변조한 트랜스포머로 카드를 평가한다. 손실은 월드 단위 위치·폭·두께의 제곱 오차에 n의 교차엔트로피와 작은 KL 항을 더한 것이다.
무엇과 다른가
결과적으로 카드 하나가 40차원 토큰 하나가 된다. 토큰은 루트 위치, 루트 노멀, 32차원 잠재, 단면 종류(마름모 −1, 삼각 +1), 존재 플래그 e=+1을 담는다. 헤어스타일은 192개 토큰 슬롯의 집합이고 빈 슬롯은 e=−1만 두고 모두 0이다. 집합 DiT는 12층·폭 768(1억 8130만 파라미터)로 이 슬롯들을 한꺼번에 디노이즈하며, 위치 임베딩을 쓰지 않아 슬롯 순열에 등변이다. 각 블록은 슬롯 간 셀프 어텐션, 조건 토큰으로의 크로스 어텐션, MLP로 구성되고 타임스텝과 풀링된 조건이 adaLN-Zero로 변조한다. 학습은 플로우 매칭으로, X_t=(1−t)X_0+tε 경로의 속도를 예측하되 루트 위치와 존재 플래그에 4배 가중치를 준다. 추론은 오일러 50스텝, 가이던스 2를 쓰고 e>0인 슬롯만 디코딩한다. 존재 플래그 덕분에 카드 개수가 형태와 함께 디노이징 중에 정해진다.
어떻게 쓰나
단일 이미지 조건은 DINOv3 ViT-L/16(동결)의 출력 토큰을 쓰고, 야외 이미지에서는 SAM3로 헤어·얼굴 마스크를 얻는다. 데이터셋 프레임이 캐릭터를 단위 키로 정규화하는 것과 달리 헤어의 크기·위치는 머리를 따라가므로, 얼굴 폭 w를 학습셋 중앙값 W로 맞추는 k=W/w와 얼굴 상단 중심을 공통점 O로 옮기는 b로 정의되는 얼굴 고정 헤드 프레임에서 카드를 예측한다. 학습 이미지는 Blender로 8개 시점에서 렌더링하되 무작위 포즈와 스프링 본 시뮬레이션 모션을 주고, 타깃은 항상 레스트 포즈 카드 집합이다. 여기에 하프톤, XDoG 선화, 플랫 컬러, 페인터리 필터 같은 합성 스타일 증강과, 이미지 편집 모델로 가챠 아트·두꺼운 페인트·세미리얼리스틱 화풍으로 리스타일한 렌더를 섞는다.
전제와 한계
카드만으로는 움직이지 않는다. 스프링 본 체인도 같은 레시피로 생성한다. 체인은 호 길이 기준 8개 경로점, 조인트 수, 강성, 존재 플래그로 이루어진 27차원 토큰이고 헤어스타일당 최대 48개다. 8층·폭 384(3050만 파라미터)의 체인 DiT가 카드 토큰에 크로스 어텐션하며 체인 집합 전체를 헤드 프레임에서 플로우 매칭으로 만든다. 이후 고정 기하 스키닝이 카드를 체인에 묶는다. 카드 중심선 하위 60%와 가장 가까운 체인의 평균 거리가 얼굴 폭의 0.4 미만이면 그 체인을 따르고, 아니면 머리에 강체로 붙는다. 각 점은 해당 체인의 가장 가까운 세그먼트를 따르되 조인트 0.05 얼굴 폭 구간에서 이웃 세그먼트와 선형 블렌딩하고, 가중치는 체인 루트의 0에서 호 길이 0.05 얼굴 폭에 걸쳐 1로 올라간다. 이 두 임계값은 학습 데이터의 아티스트 스킨 가중치에 맞춰 튜닝했고, 시뮬레이션은 UniVRM의 VRM 스프링 본 업데이트를 쓴다.
실험은 VRoid 캐릭터로 만든 CHARM 데이터셋(학습 헤어스타일 3만 6440개, 테스트 100개)에서 CHARM 프로토콜을 따른다. 포인트 클라우드 입력에서 Chamfer 거리는 0.0117에서 0.0066으로, 카드 방향 오차는 40.0도에서 16.8도로 줄었고 실행 시간은 33.7초에서 1.01초로 짧아졌다(약 33배). 참고로 조건이 가장 가까운 학습 헤어스타일을 검색해 쓰면 CD가 0.0119로, CHARM은 대략 학습 데이터 회상 수준의 정확도다. 같은 카드 토큰을 자기회귀적으로 생성하면 CD 0.0078·방향 오차 16.6도였고, 집합 생성은 CD를 0.0066까지 낮추면서 자기회귀보다 6.8배 빨랐다. 자기회귀 모델은 카드 60.8개에서 조기 종료했지만 집합 DiT는 68.9개, 정답은 67.4개였다. 단일 이미지에서는 정렬 후 CD가 0.0089로 CHARM 이미지 모델·TRELLIS.2·Hunyuan3D-2.1·DiffLocks(0.0139~0.0186)보다 낮았고, 실패율은 렌더 테스트 캐릭터 3.5%·야외 이미지 10%로 다른 방법의 13.2~34.2%·17.5~77.5%보다 낮았다. 이미지당 1.33초로 15.6~83.0초 대비 빠르다. 이미지→3D 출력에서 포인트 클라우드를 뽑아 다시 넣는 캐스케이드는 CD 0.0138~0.0170, 실패율 22.4~32.9%로 직접 생성보다 나빴다.
어블레이션도 설계 근거를 뒷받침한다. 카드 VAE 잠재가 원시 제어점보다 CD가 낮고(0.0066 대 0.0068), 카드 부드러움은 평균 회전 14.2도로 아티스트 카드의 14.1도에 근접한 반면 원시 제어점은 21.9도로 들쭉날쭉하다. 스트로크처럼 인덱스로 제어점을 디코딩하는 VAE는 CD 0.0079에 25.3도였다. 루트 노멀을 빼면 방향 오차가 16.8도에서 26.4도로 오르고, 존재 플래그를 빼면 카드 수를 먼저 예측하는 헤드가 카드를 너무 적게(62.8개) 만든다. CHARM의 카드 템플릿으로 학습하면 방향 오차가 26.7도로 나빠진다. 헤드 프레임을 빼면 정렬 전 CD가 0.0136에서 0.0189로, 재투영 헤어 IoU가 0.829에서 0.798로 떨어진다. 스프링 본은 체인이 있는 테스트 헤어스타일 58개로 평가했는데, 아티스트 카드에 대해 체인 DiT는 재현율 0.625·정밀도 0.585로 검색 기반(0.289·0.285)을 크게 앞섰고 머리 회전·끄덕임·점프·흔들기에서 점별 모션 상관이 0.702로 검색 0.622, 규칙 기반 절차 리깅 0.538보다 높았다. 생성된 카드에 대해서는 재현율이 포인트 클라우드 0.542, 단일 이미지 0.390이고 카드 적합도는 0.95를 유지했다.
개발자 관점에서 이 논문의 실무적 가치는 출력이 곧 애니메이션 가능한 자산이라는 데 있다. 카드와 스프링 본 체인, UV 좌표까지 나오고 스키닝이 자동으로 붙어 게임 엔진·VRM 계열 포맷으로 내보낼 수 있다. 체인 DiT가 카드 토큰만 입력받는다는 점도 유용한데, 아티스트가 스프링 본 없이 모델링한 기존 카드 헤어스타일에 자동으로 리깅을 붙이는 용도로 쓸 수 있다. 다만 저자들이 명시한 전제를 확인해야 한다. 학습 데이터가 VRoid 스타일화 헤어스타일이라 아주 짧은 머리와 실사 헤어의 알파 텍스처 카드는 범위 밖이고, 카드의 기하와 UV는 내지만 텍스처는 생성하지 않는다. VRoid 캐릭터 중에는 리본이나 모자를 헤어 카드로 모델링한 경우가 있어 입력에 보이면 그것도 카드로 생성하며, 학습 데이터에서 그런 카드를 걸러내면 피할 수 있다고 밝힌다. 체인 DiT는 VRoid 캐릭터에 흔한 체인 배치를 따르기 때문에 정수리에서 여러 체인이 방사형으로 뻗는 식의 특이한 구성에는 체인을 적게 생성한다.