Blend Shape
❗️ 주의사항 Blend Shape는 단순하게 한 두개의 표정을 섞는 기능이 아닙니다. 다양한 표정들이 서로 다른 수치를 가지고 겹쳐져 표현되기 때문에 가능한 많은 테스트를 하며 작업하셔야 만족스러운 결과물을 얻을 수 있습니다.
📘 시작하기에 앞서 파일을 다운로드 합니다. Blendshape_creatorsBaseSet_zepeto.zip.
베이스 메쉬에서 표정이 될 메쉬를 복사합니다.
해당 표정 이름을 입력합니다.
표정 메쉬를 먼저 선택한 다음, 베이스 메쉬를 선택합니다.
선택이 된 상태에서 windows -> Animation Editors -> Shape Editor 창으로 들어갑니다.
Create Blend Shape 버튼을 누르면, 아래 이미지와 같이 'blendShape1'이라는 이름의 블랜드 쉐입이 생성됩니다. 'blendShape1'에는 방금 제작한 표정이 포함되어 있습니다.
컨트롤 바를 이용해서 0.000 -> 1.000 변화를 체크하며 다양한 표정을 제작합니다.
모든 표정이 제작 완료 되었다면 순서대로 선택한 후 베이스 모델을 선택합니다. 앞서 했던 방식대로 블랜드 쉐입을 생성합니다.
blendShape1로 생성된 블랜드 쉐입 이름을 ZEPETO로 수정합니다.
❗️ 주의사항 이름이 다를 경우 작동하지 않습니다.
기본 메시를 선택하고 입력 화면에서 'zepeto' 블렌드 셰이프가 연결되어 있는지 확인하여 작업이 완료되었음을 확인합니다. 다음 단계는 리깅입니다.
- 블랜드 쉐입은 베이스 메쉬 vertex와 표정 메쉬 vertex의 이동값을 이용해서 표정을 만들어 내는 작업입니다.
- 표정 메쉬들은 기준이 되는 베이스 메쉬와 UVS를 제외한 모든 카운트와 vertex 넘버링이 같아야 합니다. (베이스모델을 복사해서 사용하는 것이 좋습니다)
- 베이스 메쉬와 표정 메쉬의 vertex 넘버링이 달라지면 블랜드 쉐입이 작동하지 않습니다.
- 하나의 표정을 완성하고 끝내는 것이 아니라, 서로 영향을 주는 표정들은 같이 적용을 시킨 후 최적의 형태를 찾아야 합니다.
- 표정 메쉬들의 나열 순서를 지켜주셔야 합니다.
- 표정 메쉬들의 네이밍이 제공된 것과 같아야 작동합니다. (대소문자 포함)
- 다른 컨텐츠들과 마찬가지로, 블랜드 쉐입이 포함된 컨텐츠 또한 보이지 않는 부분은 mask에 Black으로 칠해주는 과정이 필요합니다.
제작 완료 후, 컨버팅할 시 Unity 최신 버전(2020)을 사용합니다. (구 버전으로 컨버팅하면 블랜드 쉐입 정보 값이 빠진채로 컨버팅됩니다)
inbetween을 제외한 구현 가능한 표정 갯수는 71개입니다. inbetween은 상황에 따라 추가하거나, 제거 할 수 있어 유동적입니다. (단 제공된 inbetween 리스트 이외의 표정은 작동하지 않습니다)
eyebrow
- 눈썹의 경우 눈동자와 겹치는 부분에 유의 하며 작업합니다.
- Left, Right 로 나누어진 표정의 경우, 두 표정에 모두 적용시킨 다음 문제점이 없는지 체크합니다.
- 귀가 있는 디자인의 경우, 귀와 관련된 애니메이션 키가 따로 제공되지 않기 때문에 움직임을 별도로 추가해서 작업합니다.
jawOpen
- 가장 중요한 KEY 표정입니다.
- 입과 관련된 다양한 표정들을 테스트할 때, jawOpen을 함께 사용하며 다듬어야 합니다.
cheek
- cheekPuff = 볼에 바람을 넣는 표정입니다. (jawOpen을 함께 조정하면서 단독 사용 시 보이지 않는 입 안쪽 면도 정리합니다. 해당 표정이 다른 표정과 섞였을 때, 이 부분에서 디테일 차이가 크게 나타납니다.)
- cheekSquint = 볼을 씰룩 거리는 표정 좌, 우 입니다.
eye
- eye와 관련된 표정들은 eyebrow와 이동 영역이 겹쳐지는 경우가 많기 때문에, 두 가지 타입을 함께 적용 시키며 최적의 값을 찾습니다.
jaw
- jaw 표정들은 아래 턱을 이동하는 표정들입니다. (jawOpen과 함께 테스트합니다.)
mouth
- 가장 많은 종류를 가지고 있는 표정입니다. 함께 적용시켜 체크해야 하는 항목 또한 가장 많습니다.
- mouthClose를 단독 사용하면 형태가 이상해지는 특수한 표정입니다. jawOpen과 함께 적용할 때만 완성됩니다. 항상 함께 적용시켜 형태를 다듬어야 합니다.
- mouthFunnel 은 '우', 'Woo' 표정입니다.
- mouthPucker 는 '오', 'Oh' 표정입니다.
- mouthShrugLower 와 mouthShrugUpper 또한 함께 적용해보며 자연스럽게 다듬어야 합니다.
- 아래 4개의 표정은 하나의 표정을 나눠 놓은 표정입니다. 항상 동시에 적용해서 제작해야 합니다.
inbetween
- inbetween은 두 가지 표정이 적용되었을 때, 해결할 수 없는 부분들을 보완해 주는 특수한 표정들 입니다.
- 표정의 이름에 포함되어 있는 표정이 함께 사용됐을 때만 작동합니다.
- 표정의 개수가 늘어날수록 데이터가 무거워지기 때문에 최소한의 표정에만 추가해서 대응합니다.
- 현재는 eyeBlink 와 연계된 표정들에만 사용하고 있습니다.
- 사용하지 않아도 되는 inbetween 표정들은 제거해도 무방합니다.
animator
- 이 표정들은 애니메이션을 제작하는 크리에이터에게 제공되는 좀 더 세분화 된 표정입니다.
- 눈썹의 움직임을 세개의 부위로 나눠서 제작합니다.(A, B, C)
- cheekPuff 표정을 좌우로 나눠 놓은 표정입니다.
Unity로 작업물을 가져온 뒤에 두 가지 옵션을 체크합니다.
- FBX 파일을 클릭 후, 옵션에서 Import Blendshapes를 활성화합니다.
- Material 네이밍 뒤에 (NoColor)를 추가합니다.
❗️ 주의사항 If NoColor를 추가하지 않으면 헤어 컬러 값과 혼합되어 값이 변경됩니다.
두 가지 항목이 모두 체크되었다면 컨버팅을 진행하시면 됩니다.