본문 바로가기
프로젝트A

얼굴의 개선

by IX. 2023/09/02 22:49:13

9.2

기본의 모델은 잘 작동하지만 다양성이 부족하다.

한쪽눈만 감는다던가, 눈썹이 좌우비뚤게 움직이는 처리가 추가로 필요하다.

또한 얼굴은 캐릭터마다 미묘하게 다르기 때문에, 이에 대한 성형키도 필요하다.

작업의 시작은 언제나 리스트업이다.

진단을 해보자.

  • 눈썹의 모델링이 이마로부터 좀 뜨는 문제가 있다. 눈썹의 모양을 입체적으로 만들자.
  • 눈썹의 표현 중 Sad와 Angry를 L,C,R 3단계로 분류해야 한다.
  • 눈을 감고 뜨는 표현 도 L,C,R 3단계로 분류해야 한다.
  • 가느다란 눈에 대한 성형키가 필요하다.
  • 홍채 하트 표현은 삭제. 굳이 사용할 곳이 없다.
  • 눈알 메쉬는 너무 들어가 있다. 조금 꺼내자.
  • 눈 광채 표현은 캐릭터성과 연관이 있으니 각도에 따른 움직임은 없애자.
    • 광채 높낮이 조절이 필요하다. 컨트롤러에 포함되어야 한다.
  • 화난 표정을 지을 때, 눈앞머리가 들어가는 표현이 필요하다.
    • 이 표현은 '매서운 눈'에선 많이 표현되지 않아야 한다.
  • 얼굴이 좀 더 긴 캐릭터에 대한 성형키가 필요하다.
  • 눈이 얇은 캐릭터에 대한 성형키가 필요하다. (이는 새로운 셰이프키 없이 조합형으로 만들자)

적어놓고 보니 꽤 많다.

하나 하나 체크해보자.

 

눈썹의 모델링이 평면적이라 조금 수정했다. 하지만 셰이프키가 들어간 모델에서는 메쉬의 구조를 수정할 경우 일이 다소 커진다. 셰이프키까지 모두 수정해줘야 하는 것이다.

테스트를 하기 위해 컨트롤러를 미리 준비해둔다. 아직은 모두 작동하지 않지만, 이렇게 껍데기를 만들어두면 작업할 때 할 일도 체크가 되고 정서적으로도 안정이 된다(?)

원래는 눈썹을 L,C,R로 나누려 했지만, 그냥 의문을 가진 것 같은 눈썹을 추가했다.

눈감기는 예정대로 L,C,R로 구분

성형키는 3개로 구성된다. 얼굴형과 눈매, 그리고 얇기.

캐릭터가 그렇게까지 많지는 않기 때문에 이 정도면 충분할 것이다.

눈을 크게 떴을 때 비는 부분이 있어서 수정

이히히히히히히-

웃을 때 아래 속눈썹이 맞지 않는 부분을 수정

이제 광채와 홍채 부분을 수정해야 한다. 

이 부분은 셰이더 코드와 관련이 있으니 내일 해보자.

 

9.3

홍채관련 부분을 삭제하고 광체의 제어부를 조금 수정

예전처럼 많이는 움직이지 않고 아주 약간만 움직인다. 이 쪽이 느낌은 더 좋은 것 같다.

추가로 눈물의 셰이프키를 추가

유니티에서 셰이프키와 머티리얼 파라메터를 어떻게 연결할 것인가? 에 대해 고민.

언리얼은 머티리얼 커브를 켜주면 되는데 유니티는 어떻게 할까? 싶어서 자료를 뒤져보니 그냥 블렌드 셰이프의 인덱스와 파라메터를 연동시켜 주는 컴포넌트를 만들어 붙이면 될 것 같다.

데이터는 엉망이지만, 어쨌거나 표정은 잘 넘어오는 것을 확인

그래서 이걸 하기 위해 VSCode를 켰는데 대에 왜 인텔리전스(자동완성)가 안먹는 거야! 싶어서 한참을 찾았다.

인터넷을 뒤져도 답이 안나왔으나, 결국은 공식 매뉴얼에 해결책이 나와있었다... 매뉴얼을 잘 읽자.

이 패키지의 버전이 2.0.18이었다. 20으로 업데이트 해주니 잘된다.

블렌드 셰이프키는 잘 되지만 인덱싱으로밖에 제어가 안된다. 뭐...데이터가 넘어올 때 알파벳 순으로 재정렬되는 것도 아니니 상관없을 것 같기는 하다. 일단은 패스.

 

이제 데이터를 커브로 넘기기 위해 약간의 테스트가 필요하다. 확인한 값은 0-100에 매핑되었다.

이 값은 마이너스가 가능할까? 100을 넘길 수는 있을까?

유니티도 최신버전은 꽤 느리다....

둘 다 가능하긴 하다. 하지만 그리 권장하지는 않는 것 같다. 슬라이더는 0-100사이만 UI를 표시해 준다.

그럼 블렌더에서도 0-1에 값을 매핑하는 편이 좋겠다.

Job키는 성형키이고, 아래로는 모두 셰이더 관련 커브. 모두 셰이더의 파라메터와 매핑될 값들이다.

이걸 사용하는 건 좀 더 미래의 일이 될 것이다.

얼굴의 셰이더는 복잡하다. 대신 많은 걸 표현해준다.

입은 전체적인 모양을 관할하는 Mask와 안쪽의 모양을 Offset이동시키는 Inner레이어로 분리되어 있다.

하지만 이 구조는 품에 비해 효과가 적다고 느껴진다. 삭제해야 할까...?

 

9.4

입에 사용되는 텍스처는 2가지이다. 마스킹은 입의 모양과 윤곽선을 담당한다. 컬러맵은 Inner레이어이다. 

그런데..흠... inner레이어가 가져다주는 잇점이 별로 크지 않아 보인다. 측면이 완벽히 커버되는 것도 아니고...

그냥 삭제해보자. 덕분에 노드는 꽤 깔끔해졌다. 샘플러가 하나 줄어든 것이 매우 흐뭇.

이제 미뤄왔던 일을 해야 할 시간이다. 블렌더는 셰이프키가 존재하는 한 서브디비전을 합칠 수가 없다.

뭐..사실 당연한 이야기이긴 하다. 폴리구조가 달라졌으니까. 그래도 어쩐지 똑똑한 블렌더라면 해줄 수 있을 거라 믿었는데!

 

때문에 셰이프 키 이전은 수동으로 해야 한다. 원리는 단순.

셰이프키를 베이킹해서 하이폴리 모델에 새로운 셰이프키로 추가한다. 

드라이브가 다 깨지므로 이것까지 수동으로 해주어야 한다.

덤으로 얼굴 모델이 바뀌었으니, 셰이더에 연결된 드라이브의 키값도 바뀐다. 모두 수동이다.

제발 한 번만 하기를.

아우.... 노말도 깔끔하지 않다. 다시 정리해주자.

섬~ 웨어~ 오버 더 렌보~♬

다음은 cc본 확인. 몸에 붙인 본들이 베이킹된 애니메이션키와 함께 잘 넘어가는가 테스트.

야호.. 잘 넘어온다.

본 갯수는 대략 90개. 생각보다는 많지 않다!

블렌드 셰이프키도 알맞게 넘어왔다.

이제 밑작업은 끝난 것 같다. 캐릭터 제작에 들어가 보자.