Skip to content

움직일 수 있는 머리카락을 생성형 캐릭터에 적용하기 ​

글: Oleg Sidorkin, Cinevva CTO 겸 공동 창업자

생성형 캐릭터의 헤어스타일이 그럴듯해 보여도 머리카락이 독립적으로 움직이지 못할 수 있습니다. 결과물이 하나의 표면이거나, 얇은 카드의 집합이거나, 서로 분리된 조각일 수 있기 때문입니다. 이러한 표현 방식만으로는 시뮬레이터가 스트랜드의 시작점, 자라는 방향, 구부러지는 방식을 알 수 없습니다.

이전 머리카락 실험은 아티스트가 리깅한 아바타와 선택한 포니테일로 시작했습니다. 이번에는 재사용 가능한 헤어 메시와 개구리 캐릭터로 시작했습니다. 질문은 더 근본적이었습니다. 헤어스타일을 맞추고, 그 안에서 유용한 가이드 곡선을 추적하며, 애니메이션 중에도 루트가 계속 부착된 상태를 유지할 수 있을까?

현재 프로토타입은 46개 헤어스타일에서 후보 가이드 10,467개를 추출하고, 그중 **10,346개(98.84%)**에서 두피 연결을 찾습니다. 이는 부착 결과입니다. 자연스러운 머리카락 움직임의 성공률이 98.84%라는 뜻은 아닙니다.

메시와 가이드 체험하기 ​

데모는 즉시 로드됩니다. 헤어스타일을 선택한 다음 머리카락 검사에서 원본 메시, 메시와 가이드, 가이드만 표시하는 보기 사이를 전환하세요. 미리보기를 드래그해 회전하고 앞면뿐 아니라 뒷면도 살펴보세요. 애니메이션을 선택해 움직이는 캐릭터를 부착 지점이 제대로 따라가는지 확인할 수 있습니다.

청록색 곡선은 두피에 연결되어 있습니다. 주황색 곡선은 거부된 곡선입니다. “제안된 루트 표시”를 켜면 제안된 부착 지점이 나타납니다. Long01은 밀도가 높은 유용한 예시이며, 프렌치 브레이드 변형은 분리된 조각을 연결하는 데 따르는 어려움을 보여줍니다. 가이드 곡선을 다운로드해 각 포인트와 부착 메타데이터를 살펴볼 수도 있습니다.

Open this demo in a full window ↗

이제 조건에 맞는 풀어진 헤어스타일에는 이전 글의 공유 머리카락 솔버를 활용하는 실험적 어댑터가 적용됩니다. 이 어댑터는 최대 24개의 가이드 체인을 선택하고 조인트를 만든 다음, 보이는 메시와 가이드 오버레이에 동일한 스키닝 가중치를 부여합니다. 캡은 고정된 상태로 유지되고, 지원되지 않는 영역은 계속 머리에 바인딩됩니다. 조건에 맞는 풀어진 가이드가 없는 짧은 스타일은 강체 부착을 유지합니다. 두 가지 프렌치 브레이드 예시는 각각 별도의 실험적 조인트 체인 처리를 유지합니다. 검사 보기를 전환해도 재생 상태는 그대로 유지됩니다.

먼저 맞춘 다음 부착을 설정하기 ​

MakeHuman 컬렉션, 드레드록 변형, Quaternius 에셋에서 CC0 헤어스타일 옵션 46개를 모았습니다. 데모에는 각 옵션의 출처 링크가 있으며, 에셋 카탈로그와 라이선스 목록에 출처 정보가 보존되어 있습니다. 이들은 재사용 가능한 메시 에셋이지, 일관되게 리깅된 스트랜드 라이브러리가 아닙니다.

첫 번째 배치는 눈에 띄게 실패했습니다. 머리카락이 개구리 머리 뒤쪽에 자리 잡았기 때문입니다. 바운딩 박스 스케일링은 의도된 두피를 식별하지 않은 채 두 오브젝트를 정렬했습니다. 이제 피팅 패스는 원본 에셋의 정수리 위치를 추정하고 이를 대상의 머리 표면에 정렬한 뒤, 머리의 대략적인 외피를 기준으로 겹치는 위쪽 머리카락을 바깥으로 이동시킵니다.

이는 의상 글에서 사용한 구분과 비슷합니다. 에셋 배치, 형태 피팅, 리그 부착, 보조 움직임 부여는 서로 다른 작업입니다. 머리카락 루트는 두피에 붙어 있어야 하고, 길이 부분은 몸에 달라붙지 않고 원래 헤어스타일을 유지해야 합니다.

개구리는 일부러 까다로운 형태로 만들었습니다. 넓은 머리, 돌출된 눈, 인간과 다른 비율을 지녔습니다. 현재 위쪽 및 뒤쪽 두피 마스크는 이 캐릭터에 맞춰 특별히 추론됩니다. 임의의 생성 모델에 사용할 수 있는 자동 두피 감지기가 아닙니다. 일부 스타일은 여전히 얼굴을 가리거나 비율이 맞지 않습니다.

기존 표면을 따라 경로 추적하기 ​

각 헤어 메시에서 연결성 그래프를 만듭니다. UV 심으로 분리된 동일 위치의 정점은 이 분석에서 용접하되, 렌더링되는 원본 메시는 그대로 보존합니다. 연결된 각 컴포넌트 안에서 초기 루트 후보부터 서로 떨어진 끝점까지 표면 경로를 찾은 다음, 해당 경로를 곡선으로 스무딩하고 리샘플링합니다.

인접한 정점 i와 j에 대해 그래프 에지 비용은 두 정점 사이의 기하학적 거리입니다.

wij=‖xj−xi‖,P∗=arg⁡minP∑(i,j)∈Pwij.

이 최단 경로 구성은 메시 표면을 따릅니다. 생물학적인 성장 방향을 알아내지는 않습니다. 처음에 가장 높은 지점을 루트로 삼는 것은 제안일 뿐이며, 이후 두피와의 근접성에 따라 곡선 방향이 뒤집힐 수 있습니다. 평평한 카드는 유용한 경로를 제공하는 경우가 많지만, 닫힌 캡이나 분리된 컬은 훨씬 더 모호합니다.

이들은 개별 머리카락을 복원한 것이 아니라 후보 가이드 곡선입니다. 하나의 카드가 눈에 보이는 여러 가닥을 나타낼 수 있고, 표면 경로가 의도된 흐름을 가로지를 수도 있습니다. 빽빽한 청록색 커버리지는 인상적으로 보이지만 잘못된 방향을 숨길 수 있습니다. 따라서 시각적 검사는 여전히 테스트의 일부입니다.

루트가 실제 두피를 따라가게 만들기 ​

가이드의 끝점을 조건에 맞는 두피 삼각형과 매칭합니다. 거리가 너무 멀면 임의로 머리까지 늘이지 않고 해당 연결을 거부합니다. 승인된 루트에는 삼각형의 정점 인덱스와 무게중심 좌표 가중치를 저장합니다.

애니메이션된 바디 위 삼각형의 정점 a(t), b(t), c(t)에 대해 부착된 루트는 다음과 같습니다.

r(t)=λaa(t)+λbb(t)+λcc(t),λa+λb+λc=1,λi≥0.

삼각형 정점이 스킨과 함께 움직이는 동안 가중치는 고정된 상태로 유지됩니다. 전체 표시 오브젝트를 머리에만 페어런팅했을 때 샘플링한 Walk 검사에서 루트 드리프트가 최대 0.657 mm 발생했습니다. 저장된 삼각형 부착을 따르게 하자 이 오차가 수치 정밀도 수준으로 줄었습니다. 네 애니메이션 시점에서 샘플링한 Long01 루트 74개의 오차는 10−12미터 미만이었습니다.

이는 이 장면의 미터 단위 규칙에 따른 수치적 일관성 검사입니다. 시각적으로 올바른 헤어라인, 곡선 전체의 표면 이격, 모든 애니메이션에서의 안정성을 입증하지는 않습니다.

불확실성을 감추지 않고 조각 연결하기 ​

일부 헤어스타일은 분리된 여러 조각으로 구성되어 있습니다. 두피에서 멀리 떨어진 조각은 이미 부착된 머리카락 다발의 연장 부분일 수 있습니다. 양쪽 방향을 모두 테스트하고, 끝점이 가깝고 방향이 일치할 때만 승인된 가이드에 연결합니다.

현재 연결 규칙은 이 장면의 스케일을 기준으로 25 mm 거리 제한과 0.5를 초과하는 접선 내적값을 사용합니다. 이미 부착된 경로만 부모가 될 수 있으므로 순환이 발생하지 않습니다. 곡선 길이, 포인트 수, 연결 패스에도 상한이 있습니다. 이 임계값들은 프로토타입에서 선택한 값이지 보편적인 머리카락 매개변수가 아닙니다.

연결을 통해 승인된 집합에 1,851개 연결이 추가됩니다. 프렌치 브레이드 변형은 직접 부착된 가이드 136개에서 전체 509개가 연결된 상태가 되며, 헝클어진 브레이드는 519개 중 512개가 연결됩니다. 나머지 조각 7개는 주황색으로 남습니다. 연결된 경우에도 검토가 필요합니다. 지오메트리가 가깝다는 사실만으로 두 조각이 같은 스트랜드에 속한다는 것을 입증할 수는 없습니다.

측정된 커버리지 살펴보기 ​

스타일을 검색하거나 거부된 가이드가 있는 스타일만 표시할 수 있습니다. 링크를 열면 해당 실시간 검사 보기로 이동합니다. 이 수치는 저장된 46개 스타일의 감사 결과이며, 계속해서 계산되는 물리 점수가 아닙니다.

46 of 46 styles · saved audit

전체 부착 결과 다운로드.

감사 과정에서 46개 스타일 모두 브라우저 오류 없이 로드되었습니다. 추출 과정에서는 Elvs 메시 3개에 걸쳐 정점 90개가 제외되었습니다. 네 가지 집중 테스트를 통해 연결성, 누락 보고, 재구성 가능한 두피 부착, 조각 연결, 멀리 떨어진 조각의 거부를 확인합니다. 데스크톱 보기와 390픽셀 모바일 보기를 검사했으며, 모바일 페이지에는 가로 오버플로가 없었습니다.

이 결과는 이 개구리에 맞춘 이 라이브러리만 측정합니다. 임의의 생성형 지오메트리, 모든 포즈, 자체 충돌, 다른 엔진으로의 내보내기는 다루지 않습니다.

실제 머리카락 물리가 되려면 무엇이 더 필요한가? ​

현재 가이드는 루트와 후보 경로를 제공합니다. 첫 번째 어댑터는 이제 기존의 고정 시간 간격 스프링, 휴지 형상, 접촉 솔버를 재사용합니다. Long01에서는 메시 정점 39,804개 중 18,204개를 24개 체인에 바인딩했으며, 제어된 테스트에서 샘플링한 풀어진 머리카락의 한 포인트가 머리를 기준으로 13.6 mm 움직였습니다. 이는 보조 변형을 검증하지만, 자연스러운 움직임이나 충돌 없는 애니메이션을 입증하지는 않습니다. 메시와 오버레이는 동일한 스키닝 필드를 사용합니다. 신뢰할 수 있는 방향, 각 머리카락 다발에 걸친 일관된 가중치, 폭넓은 움직임 검사가 여전히 필요합니다.

다음 단계에서는 모호한 루트와 조각 연결을 검토하고, 서로 분리된 머리카락 다발 사이가 찢어지지 않도록 가이드 선택과 가중치를 개선하며, 움직이는 동안 바디와의 접촉을 검증해야 합니다. 자체 접촉도 추가 작업이 필요합니다. 내보내고 다시 불러온 뒤에도 이러한 바인딩이 유지되어야 합니다.

생성형 캐릭터에서는 별도의 머리카락 표면을 교체하는 것이 실용적인 출발점입니다. 머리와 머리카락이 결합된 메시에는 또 다른 전제 조건이 필요합니다. 머리카락 영역을 식별하고 그 아래에 사용할 수 있는 두피를 설정해야 합니다. 이번 개구리 실험은 이러한 세그멘테이션 문제를 해결하지 않습니다.

이제 검사할 수 있는 중간 결과가 마련되었습니다. 피팅된 메시, 명시적인 후보 경로, 움직이는 표면 부착, 눈에 보이는 거부 결과입니다. 다음 개선에서는 단순히 청록색 곡선의 수만 늘리는 것이 아니라, 이러한 경로가 설득력 있게 움직이도록 만들어야 합니다.