수정하기 앞서, 최적의 메타휴먼 DNA를 세팅하는법

원본 소스 : https://dev.epicgames.com/documentation/en-us/metahuman/obtaining-an-initial-metahuman-head-dna

Expression Editor는 MetaHuman의 얼굴 애니메이션 데이터인 DNA 파일을 로드하고 저장하는 툴입니다. 이 과정에서 Maya 씬 파일 자체는 거의 중요하지 않습니다.

가장 중요한 점은, Expression Editor가 DNA를 처음부터 '생성'하는 툴이 아니라는 것입니다. 그보다는 기존 DNA를 특정 캐릭터의 얼굴에 맞게 정밀하게 **'보정(Calibrate)'**하는 데 특화되어 있습니다.

따라서, 성공적인 결과물을 얻기 위한 가장 중요한 첫걸음은 목표 캐릭터의 뉴트럴 포즈(무표정)와 가장 유사한 DNA 파일을 확보하는 것입니다. 뉴트럴 포즈의 유사성이 떨어지거나, 무표정이 아닌 미세한 표정이 들어간 상태에서 시작하면 최종 결과물의 품질이 크게 저하될 수밖에 없습니다.

좋은 결과를 얻기 위해서는, 수작업으로 뉴트럴 포즈를 만들든 Mesh to MetaHuman 기능을 사용하든 다음 두 가지 핵심 개념을 반드시 고려해야 합니다.

  1. 시맨틱 중요성 (Semantic Significance)
  2. 델타 최소화 (Delta Minimization)

1. 시맨틱 중요성 (Semantic Significance)

'시맨틱 중요성'이란, 특정 버텍스(vertex)가 특정 얼굴 부위(feature) 및 기능과 고유하게 연결되어 있다는 의미입니다. 조인트와 버텍스의 관계, 조인트가 표정에 매핑되는 방식, 얼굴의 여러 영역을 구분하는 맵(region maps) 등이 모두 버텍스에 이러한 '의미론적 중요성'을 부여합니다.

이것이 중요한 이유는 다음과 같습니다.

  • 정해진 역할 유지: 예를 들어, 눈꺼풀의 가장자리를 표현하는 버텍스가 눈 안쪽이나 바깥쪽으로 말려들어가 다른 위치로 가서는 안 됩니다.
  • 고유 기능 보존: 입꼬리가 오므라드는 지점(pinching point)을 담당하는 버텍스를 임의로 옮겨 보조개를 만드는 데 사용하고, 다른 버텍스가 그 자리를 대신 채우게 해서는 안 됩니다. 각 버텍스는 원래의 볼륨을 표현하는 역할을 유지해야 합니다.

특히 눈이나 입꼬리처럼 표정이 풍부하고 복잡한 영역의 특정 버텍스들은 위치에 극도로 민감합니다. 반면, 움직임이 적은 다른 부위들은 어느 정도의 유연성을 허용합니다.

쉽게 말해, MetaHuman의 얼굴 메쉬는 단순한 껍데기가 아니라, 각 버텍스가 '여기는 눈꺼풀 끝', '여기는 입꼬리 당기는 곳'이라는 고유의 역할을 부여받은 정교한 시스템과 같습니다. 스컬프팅 시 이 역할을 무시하고 버텍스를 마음대로 이동시키면 리깅이 망가지는 원인이 됩니다.

2. 델타 최소화 (Delta Minimization)

Mesh to MetaHuman 기능은 사용자가 제공한 메쉬 볼륨에 맞춰 1차적인 로컬 피팅(local fit)을 수행한 후, MetaHuman 클라우드 서비스로 데이터를 보내 자동 리깅(autorigging)을 진행합니다.

이 두 번째 단계에서, 서비스는 데이터베이스에 있는 실제 사람 얼굴 데이터 중 가장 유사한 것을 찾아 최대한 가깝게 DNA를 생성합니다. 이때, 데이터베이스의 이상적인 얼굴과 사용자의 메쉬 간의 차이점이 남게 되는데, 이것이 **'델타(Delta)'**로 저장됩니다.

이 델타는 다음과 같은 특징을 가집니다.

  • 시각적 형태: 델타는 씬 뷰에서 **'조인트 위치'와 '버텍스 표면' 사이의 간극(gap)**으로 나타납니다.
  • 결과물에 미치는 영향: 이 델타를 최소화하는 것이 매우 중요합니다. 델타가 크면, 표정을 지을 때 조인트의 움직임을 따라가지 못하는 여분의 살덩어리(mass)가 붕 떠서 움직이는 것처럼 보이는 문제를 야기합니다.
  • 조절 방법: MetaHuman Creator의 Head Conform Controls에 있는 Global Delta 파라미터를 사용해 이 델타를 줄일 수 있지만, 그 대가로 원본 캐릭터와의 유사성이 떨어지게 됩니다.

이 설명은 뉴트럴 포즈를 처음 피팅하는 과정에 국한됩니다. 표정 포즈를 편집하는 단계에서는 더 미묘하고 복잡한 설명이 필요합니다.

Mesh to MetaHuman 기능 활용 전략

앞서 설명한 '버텍스의 시맨틱 중요성' 때문에, 에픽게임즈는 Mesh to MetaHuman의 자동 리깅 서비스를 통해 1차 피팅과 배치를 처리하는 것을 강력히 권장합니다.

  • 스무딩 현상: 이 피팅 과정에서 사용자의 메쉬는 어느 정도 '매끄럽게' 다듬어집니다. 만약 뾰족한 귀처럼 인간의 특징과 거리가 먼 형태를 가지고 있다면, 이 스무딩 현상은 더욱 두드러지게 나타납니다.
  • 스무딩 해결 방안:
    1. Expression Editor에서 재보정: Mesh to MetaHuman으로 생성된 결과물을 Expression Editor의 뉴트럴 포즈 편집 모드로 가져와, 스무딩으로 사라진 특징들(예: 뾰족한 귀, 독특한 흉터 등)을 선택적으로 다시 살려냅니다. (Expression Editor 사용자에게 권장되는 방식)
    2. 재스컬프팅 후 재제출: MetaHuman 토폴로지로 변환된 메쉬를 다시 스컬프팅하여 특징을 살린 후, 버텍스 위치를 엄격하게 제한하는 템플릿 메쉬에서 컨폼(Conforming from a Template Mesh) 옵션을 사용해 자동 리깅을 다시 제출합니다.

Expression Editor에서 MetaHuman DNA 로드하기

DNA 파일(*.dna)을 준비했다면, 다음 절차에 따라 로드합니다.

  1. Maya에서 Expression Editor 창을 엽니다.
  2. Home 탭으로 이동합니다.
  3. 경로 텍스트 필드 옆에 있는 폴더 아이콘을 클릭합니다.
  4. 준비된 DNA 파일을 선택하고 Open을 클릭합니다.

이 작업이 완료되면 해당 DNA의 복사본이 메모리에 로드되어 현재 세션에서 사용할 수 있게 됩니다. 하지만, 이 단계까지는 Maya 씬에 아직 눈에 띄는 변화는 일어나지 않습니다. 로드된 DNA를 기반으로 보정 작업을 시작할 준비가 된 상태입니다.

Q. 시멘틱 중요성 부분이 이해가 잘 안 감. 그것이 왜 그런 용어로 쓰이는 것인지? 글고 이해좀 가게 뒷배경 등 포함해서 좀 더 풀어서 설명.

'시맨틱 중요성(Semantic Significance)' 개념에 대해 더 깊이 파고들어 보겠습니다. 이 용어가 왜 사용되었는지, 그리고 그 배경에 어떤 기술적 원리가 있는지 풀어서 설명해 드리겠습니다. 3D 아티스트의 관점에서 이해하기 쉽도록 비유를 들어 설명해 드릴게요.

1. 왜 '시맨틱(Semantic, 의미론적)'이라는 용어를 사용할까요?

가장 핵심적인 질문입니다. 간단히 말해, MetaHuman의 얼굴 버텍스는 단순히 3D 공간의 좌표(X, Y, Z)가 아니라, 각각이 고유한 '의미'와 '역할'을 부여받았기 때문입니다.

'시맨틱(Semantic)'은 '의미론'이라는 뜻입니다. 언어학에서 단어의 의미를 연구하는 분야죠. 예를 들어 '사과'라는 단어는 [사과]라는 소리와 '둥글고 붉은 과일'이라는 의미가 결합된 것입니다.

이 개념을 3D 모델에 적용해 보겠습니다.

  • 일반적인 3D 모델: 버텍스는 그저 좌표값입니다. 우리는 스컬프팅 툴로 이 버텍스를 밀고 당기며 형태를 만듭니다. 버텍스 10번이 코끝에 있든, 턱에 있든 상관없이 우리는 형태만 봅니다.
  • MetaHuman 모델: 버텍스 10번은 **'왼쪽 눈꺼풀의 정중앙 가장자리'**라는 **'의미(역할)'**가 코드 레벨에서부터 부여되어 있습니다. 이것은 단순한 좌표가 아니라, 얼굴 리깅 시스템 전체가 "버텍스 10번은 왼쪽 눈꺼풀 중앙이다"라고 약속하고 인지하는 **'고유명사'**와 같습니다.

따라서 '시맨틱 중요성'이란 **"각 버텍스에 부여된 고유한 의미(역할)가 시스템 전체에 지극히 중요하니, 절대 훼손해서는 안 된다"**는 강력한 규칙을 의미합니다.

2. 기술적 배경: 왜 이런 시스템을 만들었을까요?

MetaHuman의 강력함은 바로 이 '시맨틱 중요성'에 기반한 '표준화''데이터 기반 자동화' 에 있습니다.

  1. 방대한 데이터와 표준화된 '마스터 키':
  2. 에픽게임즈는 수많은 실제 사람들의 얼굴을 3D로 스캔했습니다. 그리고 이 모든 다양한 얼굴 형태를 표현할 수 있는 **하나의 표준화된 얼굴 토폴로지(메쉬 구조)**를 만들었습니다. 이것이 바로 '마스터 키'입니다. 키가 하나지만 수많은 문을 열 수 있는 것처럼, 토폴로지는 하나지만 수많은 얼굴을 표현할 수 있습니다.
  3. 모든 것은 '지도'에 기록되어 있다:
  4. 이 표준 토폴로지 위에서, "버텍스 512번은 코끝", "버텍스 2048번부터 2055번까지는 윗입술의 경계선"과 같이 모든 버텍스의 역할이 '지도'처럼 명확하게 정의되어 있습니다. MetaHuman의 자동 리깅 시스템, 얼굴 표정 솔버(Solver), 언리얼 엔진의 컨트롤러 등 모든 관련 기술은 이 지도를 기반으로 작동합니다.
  5. 시스템의 약속:
  6. 예를 들어, '미소' 표정을 만드는 로직은 다음과 같이 작동합니다.

*"사용자가 '미소' 컨트롤러를 움직이면, **입꼬리 역할을 하는 버텍스 그룹(예: 3010~3020번)*에 연결된 조인트를 위로 당겨라."

  1. 이것은 시스템 전체의 약속입니다.

3. 아티스트에게 이것이 왜 중요한가: 비유로 이해하기

'시맨틱 중요성'을 무시하고 작업하면 어떤 일이 벌어질까요?

비유 1: 정교한 마리오네트 인형극

MetaHuman은 줄 하나하나가 특정 관절에 정확히 연결된 매우 정교한 마리오네트 인형이라고 상상해 보세요.

  • 올바른 상태: '오른손을 드는 줄'을 당기면 오른손이 올라갑니다.
  • 시맨틱이 훼손된 상태: 당신이 인형을 '수리'하면서 '오른손을 드는 줄'을 끊어 '오른쪽 귀'에 잘못 붙였다고 합시다. 이제 인형 조종사가 '오른손을 드는 줄'을 당기면 어떻게 될까요? 오른손은 가만히 있고, 오른쪽 귀가 엉뚱하게 펄럭일 것입니다.

여기서,

  • 인형 조종사: MetaHuman 컨트롤 리그(Control Rig)
  • 줄: 조인트와 로직
  • 줄이 연결된 부위(손, 발): 시맨틱 의미가 부여된 버텍스 그룹

스컬프팅 과정에서 입꼬리 버텍스를 뺨 쪽으로 밀어버리는 것은, 바로 이 마리오네트의 줄을 엉뚱한 곳에 붙이는 행위와 같습니다. 시스템은 여전히 "입꼬리 줄 당겨!"라고 명령하지만, 줄이 뺨에 가 있으니 뺨이 이상하게 딸려 올라가는 결과가 나옵니다.

결론: 단순한 스컬프팅이 아닌, 시스템의 '설계도'를 수정하는 행위

결론적으로, MetaHuman의 뉴트럴 포즈를 수정하는 것은 단순히 점토를 주무르는 스컬프팅이 아닙니다. 그것은 MetaHuman이라는 거대하고 자동화된 시스템의 핵심 '설계도'를 직접 건드리는 행위입니다.

각 버텍스의 위치를 바꾸는 것은 그 버텍스의 '의미'와 '역할'을 바꾸는 것과 같으며, 이는 전체 자동화 시스템의 오작동으로 이어집니다. 눈, 코, 입 주변처럼 복잡하고 중요한 부분일수록 이 '시맨틱 중요성'이 훨씬 더 크기 때문에 더욱 조심스럽게 다뤄야 하는 것입니다.

이것이 Mesh to MetaHuman 기능을 먼저 사용하라고 권장하는 이유입니다. 자동화 시스템이 먼저 이 '지도'에 맞게 최적으로 버텍스를 배치해주면, 아티스트는 그 기반 위에서 최소한의 수정만으로 원하는 결과를 안전하게 얻을 수 있기 때문입니다.

Q. 델타 최소화라는 것의 의미가 좀 더 정확히 뭘 뜻하는 건지 풀어서 설명. 일종의 공통화된 일반화된 얼굴표정 법칙 같은 게 있는데 이게 나름 여러 사람의 형태로 보존되어 있음. 그런데 그 일반화된 모습과 다른 극값이 있는 모델링이나 변형이 있는 경우 그것이 일반적인 형태의 변형과 차이(Delta)가 많아 문제가 생길 수 있다는 것을 인지하라 이뜻인가?

"일종의 공통화된 일반화된 법칙(MetaHuman 데이터베이스) 같은 게 있는데, 그 일반화된 모습과 다른 극값이 있는 모델링(내 캐릭터)의 경우, 그 차이(Delta)가 많아 문제가 생길 수 있다는 것을 인지하라."

이것이 완벽한 요약입니다. 이제 이 개념을 3D 아티스트의 작업 과정에 빗대어, 왜 '조인트와 버텍스 간의 간극'이라는 형태로 나타나는지, 그리고 왜 '살덩어리가 붕 떠서 움직이는' 문제가 발생하는지 좀 더 깊이 있게 풀어서 설명해 드리겠습니다.

'델타(Delta)'의 정체: 이상과 현실의 차이

Mesh to MetaHuman 기능이 수행하는 작업을 두 단계로 나누어 생각해 보면 쉽습니다.

  1. 1단계: 이상적인 '뼈대' 찾기 (이상)
  2. 사용자가 만든 독특한 얼굴 메쉬가 들어오면, MetaHuman 시스템은 먼저 데이터베이스에서 **가장 유사한 '이상적인 얼굴 뼈대(Rig)'**를 찾아냅니다. 이 뼈대는 수많은 실제 데이터를 기반으로 만들어졌기 때문에, 조인트의 위치, 움직임의 가중치(weight) 등이 아주 이상적으로 설정되어 있습니다. 이 뼈대만 사용하면 어떤 표정을 지어도 완벽하고 부드럽게 움직입니다.
  3. 2단계: 내 캐릭터의 '피부' 씌우기 (현실)
  4. 하지만 이 이상적인 뼈대는 사용자가 만든 캐릭터의 모습과 100% 일치하지 않습니다. 사용자의 캐릭터는 광대가 더 튀어나왔거나, 턱이 더 뾰족할 수 있죠. 시스템은 캐릭터의 고유한 '형태(Likeness)'를 보존해야만 합니다. 그래서 이상적인 뼈대 위에 사용자의 메쉬(피부)를 최대한 원본에 가깝게 다시 씌웁니다.

바로 이 지점에서 '델타(Delta)'가 발생합니다.

예를 들어, 데이터베이스의 이상적인 뼈대는 '광대뼈 조인트'가 피부 표면에서 5mm 아래에 위치해야 가장 자연스럽다고 계산했습니다. 하지만 사용자의 캐릭터는 광대가 아주 높아서, 그 위치에 피부 표면(버텍스)이 있으려면 뼈대에서 8mm나 떨어져 있어야 합니다.

이때 발생하는 **이상적인 조인트 위치와 실제 버텍스 위치 간의 차이, 즉 3mm의 '간극(gap)'**이 바로 '델타'입니다. 이 델타값은 각 버텍스마다 'offset(이격값)' 정보로 저장됩니다.

비유로 이해하기: 기성복과 맞춤 정장

이 과정을 옷에 비유하면 아주 명확해집니다.

  • 이상적인 뼈대 (Rig): 백화점에 있는 완벽한 비율의 '마네킹'
  • 사용자 메쉬 (Mesh): 아주 근육질인 운동선수를 위해 제작된 '맞춤 정장'
  • 델타 (Delta): 마네킹에 맞춤 정장을 입혔을 때, 마네킹의 몸과 정장 옷감 사이에 생기는 '헐렁한 공간'

마네킹(이상적인 뼈대)은 표준 체형이지만, 맞춤 정장(내 캐릭터)은 어깨가 훨씬 넓고 허리는 잘록합니다. 이 정장을 마네킹에 입히면 어깨 부분은 마네킹의 몸에 딱 붙지 않고 **붕 떠 있게 됩니다. 이 공간이 바로 '델타'**입니다.

문제 발생: '살이 붕 떠서 움직이는 이유'

이제 이 마네킹의 팔을 움직여 본다고 상상해 보세요.

마네킹의 어깨 관절은 몸에 붙어서 자연스럽게 움직입니다. 하지만 그보다 몇 센티미터 바깥에 떠 있는 정장의 어깨 부분은 어떻게 될까요? 마네킹의 움직임을 따라가긴 하지만, 몸에 착 붙어서 늘어나는 게 아니라, 헐렁한 공간을 유지한 채 붕 떠서 펄럭이듯 부자연스럽게 움직일 겁니다.

이것이 바로 '델타가 클 때 표정을 지으면 여분의 살덩어리가 붕 떠서 움직이는' 문제의 정체입니다.

  • **조인트(뼈)**는 자기 계산대로 움직이는데,
  • **버텍스(피부)**는 조인트로부터 멀리 떨어진 '델타'값만큼의 간극을 유지한 채 움직임을 따라가려다 보니, 마치 피부가 뼈와 따로 노는 것처럼 보이는 것입니다. 스킨 웨이트가 제대로 안 잡힌 모델처럼 '수영하는(swimming)' 현상이 나타나는 것이죠.

해결책과 아티스트의 선택

결국 아티스트는 두 가지 선택을 하게 됩니다.

  1. 유사성을 약간 포기하고 안정성을 택한다: MetaHuman Creator에서 Global Delta 파라미터를 조절해 '맞춤 정장'을 '마네킹' 몸에 최대한 딱 붙게 줄입니다. (캐릭터의 고유한 특징이 일부 사라짐)
  2. 유사성을 지키고 수작업으로 안정성을 확보한다: 일단 델타가 있는 상태로 시작한 뒤, Expression Editor 같은 툴을 사용해 특정 표정을 지을 때 문제가 되는 부분을 미세하게 수작업으로 보정합니다. (더 높은 퀄리티를 위한 전문가의 선택)

따라서 '델타 최소화'는 단순히 기술적인 권장사항을 넘어, 자동화된 시스템의 편리함과 아티스트가 추구하는 캐릭터 고유성 사이에서 어떻게 균형을 맞출 것인가에 대한 중요한 워크플로우 지침이라고 할 수 있습니다.