Unity 검색

VFX character headshot (source: Sakura Rabbit)
VFX character headshot (source: Sakura Rabbit)

이번 게스트 포스팅에서는 사쿠라 래빗(@Sakura_Rabbiter)이 아트 제작에 접근하는 방식을 공유하고 Unity에서 사실적인 캐릭터를 제작하는 데 필요한 팁을 이야기합니다.

최근 들어 시간적 여유가 생겨서 캐릭터 제작에 관한 글을 써 보면 어떨까 하는 생각이 들었습니다. 여러 캐릭터를 최근에 연달아 제작했기 때문에 전체 제작 프로세스에 상당히 익숙해져 있는 상태입니다. 세계관의 아트 디자인이나 캐릭터 배경, 캐릭터 구현 기술 등에 대해 말하는 것이 아닙니다. 그런 주제를 다루는 글은 수없이 많기 때문에 여기서는 언급하지 않을 예정입니다.

그렇다면 무슨 주제가 남아 있을까요? 고심한 끝에 Unity 에디터에서 사실적인 캐릭터를 제작하는 방법에 대해 글을 써 보기로 했습니다.

제가 왜 이런 주제를 떠올렸는지 궁금하실 겁니다. 왜냐하면 바로 제가 이 기술을 처음부터 익히느라 힘겨운 과정을 거쳤기 때문입니다. 여러분이 제 실수를 본보기 삼아 작업에서 오류를 줄일 수 있기를 바라며 이 글을 씁니다.

그럼 시작해 보겠습니다.

Alt text: GIF showing 3D rotation of VFX character in Unity (source: Sakura Rabbit)

15단계 프로세스

캐릭터 모델 구현 프로세스에는 보통 다음 단계가 필요합니다.

  1. 3뷰 드로잉 →
  2. 프로토타입 모델 →
  3. 고정밀도 모델 →
  4. 로우 폴리곤 토폴로지 →
  5. UV 분할 →
  6. 노멀 맵 베이킹 →
  7. 매핑 →
  8. 스킨 리깅 →
  9. 골격 및 버텍스 애니메이션 →
  10. 엔진 내 셰이더 →
  11. 엔진 내 렌더링 →
  12. 엔진 내 실시간 물리 →
  13. 애니메이션 애플리케이션 및 애니메이터 →
  14. 캐릭터 컨트롤러/AI 구현 →
  15. 특수 효과, 음성, 음향 효과 등

총 15가지 단계입니다. 프로세스가 복잡해 보일 수 있지만 캐릭터 디자인 관점에서 이 모든 요소와 디테일이 게임 엔진에서 캐릭터가 최종적으로 표현되는 방식에 영향을 미칩니다. 따라서 최종 제품에서 원하는 효과를 구현하려면 이렇게 많은 단계가 필요합니다. 전체 프로세스에는 오랜 시간이 소요되며 모든 단계가 매우 중요하고 특정한 순서로 완료되어야 합니다. 어떤 단계를 제대로 완료하지 않거나 절차를 무시하려 한다면 최종 결과물이 직접적인 영향을 받을 것입니다.

GIF that starts close in on VFX character’s knit hat within the Unity Editor and zooms out to show full face and hair (source: Sakura Rabbit)

먼저 아트 제작의 예비 준비 작업을 살펴보겠습니다. 위에서 이야기한 15단계는 다음의 주요 4단계로 요약할 수 있습니다.

원본 드로잉 → 모델링 → 애니메이션 → 렌더링

훨씬 더 간단하죠? 이제 본론으로 들어가겠습니다. 제가 직접 겪으며 배울 수 있었던 내용이 여러분의 프로젝트에도 유용하길 바랍니다.

Image framing VFX character from the shoulders up within the Unity Editor (source: Sakura Rabbit)

시작하기 전에 먼저 몇 가지 체크포인트를 설정해야 합니다. 버텍스 수, 맵 크기, 뼈대 개수 등 일반적인 항목은 차치하고, 다음과 같은 부분에 집중해 보겠습니다.

  • 이 캐릭터에 인체 골격을 입히려 합니다. 이어지는 AI 구현에 영향을 미치기 때문이죠. 인체 골격이 유용한 이유는 모션 캡처 기기나 인터벌 애니메이션 라이브러리를 사용해 컨트롤러나 AI에서 사용 가능한 일련의 고품질 애니메이션을 빠르게 제작할 수 있기 때문입니다.
  • 캐릭터에 적용하려는 머티리얼 효과를 사전에 계획하는 작업도 필요합니다. 원하는 효과를 제작하려면 UV, 에지 배포, 매핑 같은 예비 단계가 반드시 필요합니다. 이러한 요소를 모델과 애니메이션을 완료한 다음에 고려한다면 디자인을 다시 작업하게 될 확률이 높습니다. 나중에 작업이 늘어나지 않도록 효과를 미리 고려해 두는 것이 좋습니다.
  • 캐릭터의 일부 물리 효과를 위해 특정 컴포넌트의 물리적 프로세싱이 필요하며 이 작업은 독립적으로 완료해야 합니다. 이 또한 미리 고려해야 할 부분입니다.

이러한 체크포인트를 숙지했다면 이제 구현할 단계입니다. 다음과 같은 방법으로 시작합니다.

원본 드로잉

캐릭터 제작 프로세스를 원활하게 진행하려면 첫 단계인 원본 드로잉에는 매우 신중하게 임해야 합니다. 이 단계를 사전에 제대로 완료하지 못하면 후속 단계에서 구조나 효과에 그 영향이 미치게 됩니다. 이어질 작업을 손쉽게 진행하려면 다음과 같은 내용에 유의해 드로잉을 진행하세요.

  • 모델: 모델링에 적합하도록 그려야 합니다. 이를테면 드로잉 구조가 모델링 시 구현하기 어려운지 파악하거나, 로우 폴리곤 토폴로지를 만들 때 특정 구조에서 에지를 배포하기 어려운지 등을 확인합니다.
  • 애니메이션: 마찬가지로 애니메이션에 적합하도록 드로우해야 합니다. 애니메이션의 특정 부분에서 리깅이 어려운지, 어떤 구조가 인체 골격을 준수하지 않는지 등을 살펴봅니다.
  • 셰이더: 이제 셰이더 구현을 고려해야 합니다. 드로우하는 머티리얼 효과의 셰이더를 구현하기 어려운지, 성능은 어떨지, 머티리얼은 어떻게 분류해야 하는지, 특수 효과가 수반되는지, 몇 개의 패스를 사용해야 구현할 수 있는지 등을 자문해 보세요.
  • 물리: 시뮬레이션된 계산이 필요한 구조는 무엇인지, 모션이 어떻게 실행되는지 등을 확인합니다.

이러한 부문을 주의하며 그리면 후속 단계에서 작업을 간소화할 수 있습니다.

팁: 신체 드로잉에서 3D 모델링 소프트웨어를 사용하면 프로세스에 도움이 됩니다. 효율성을 개선할 수 있을 뿐 아니라 구조 및 원근 관계를 올바르게 정립할 수 있습니다.
Image showing multiple angles of a VFX character (source: Sakura Rabbit)

모델링

모델링에도 동일한 규칙이 적용되며 다음 단계를 고려해야 합니다. 모델링을 적절하게 처리하는 것은 필수이며, UV 매핑, 에지 배포, 머티리얼 분류 같은 요소도 사전에 계획해야 합니다. 렌더링을 진행하기 전에 애니메이션 프로세스를 거쳐야 하므로 모델링은 가장 중요한 부분입니다. 렌더링에서 문제가 발생하면 모델링 및 애니메이션 프로세스를 다시 작업해야 합니다.

  • 매핑: 매핑에 적합한 모델을 만들어야 합니다. UV를 공유할 수 있는 구조는 무엇이 있는지, 맵의 픽셀을 최대한 활용할 수 있는지, 어떤 컴포넌트에 알파가 필요한지 등을 검토합니다.
  • 애니메이션: 블렌드 셰이프에서 얼굴 표정을 생성하는 방식과 UV에 맞게 모델을 나누는 방식을 고려해야 합니다. 애니메이션이 필요한 신체 구조도 식별하고 모델의 리깅이 더 자연스럽도록 에지를 배포하는 방식도 결정해야 합니다.
  • 셰이더: 셰이더 구현에서 특수 효과를 제공할 수 있도록 UV를 배열하는 방식에 대해 생각하고 모델링 머티리얼을 분류할 때 분리해야 하는 머티리얼을 식별해야 합니다.
  • 물리: 마찬가지로 시뮬레이션된 효과를 더 자연스럽게 표현하려면 에지를 적절하게 배포해야 합니다.

모델을 제작할 때 재작업을 피하는 최고의 방법은 후속 단계를 고려하고 사전에 계획을 세우는 것입니다.

팁: ZBrush 또는 기타 소프트웨어에서 하이 폴리곤 모델을 드로우할 때 미세한 디테일 텍스처를 포함할 필요는 없습니다. 직접 베이킹을 통해 맵으로 만들어진 후에는 해상도 제한 때문에 디테일의 효과가 상당히 저하됩니다. 이러한 디테일은 셰이더에서 Mask ID를 사용해 분리하고 Detail Map을 통해 추가해야 합니다. 메인 맵에 포함하지 않도록 주의하세요.
Image showing the artistic details of a stone structure (source: Sakura Rabbit)

셰이더에서 디테일을 직접 추가하는 방법이 권장됩니다.

GIF showing closeup of the VFX character’s face with water dripping down (source: Sakura Rabbit)

애니메이션

모델 리깅 시 모델을 원래대로 보존하려면 파일을 .obj 포맷으로 하나씩 익스포트한 다음 애니메이션 소프트웨어로 임포트하는 것이 바람직합니다. 그런 다음 모델의 노멀 방향, 파일 레이어, 셰이더 할당을 확인해 문제가 있는지 파악합니다. 문제가 없다면 모델 리깅으로 넘어가면 됩니다.

뼈대 위치는 관절의 자연스러운 움직임을 좌우하므로 모델 리깅에서 핵심적인 역할을 합니다. 다시 강조하자면 상당히 중요합니다. 스킨 가중치는 문제가 없지만 뼈대 위치가 잘못되었다면 문제가 발생합니다.

팁: 뒤쪽 가운데에 있는 볼기뼈를 예시로 사용하겠습니다. 자연스러운 움직임을 구현하려면 뼈대 위치가 정확해야 합니다. 그렇지 않으면 모션 캡처 기기를 사용하거나 다른 애니메이션에 적용할 때 애니메이션이 변형됩니다.
Cross-section image of VFX character animation displaying the hip bone movements and how to manipulate them in Unity (source: Sakura Rabbit)

이제 작업의 거의 마지막 단계에 왔습니다. 그렇지만 아직 마음을 놓기는 이릅니다. 제작 프로세스에서 다음과 같은 여러 문제를 고려해야 합니다.

  • 모델: 모델을 다시 확인해 노멀의 방향을 제대로 정렬했는지, 소프트 및 하드 에지가 양호한지, 모델 컴포넌트와 머티리얼을 올바르게 분류했는지, 블렌드 셰이프가 필요한 컴포넌트를 결합했는지, 머티리얼과 명명은 올바른지 파악합니다.
  • 애니메이션: 현재 뼈대 구조가 엔진의 휴머노이드 요구 사항에 부합하는지 확인합니다.
  • 셰이더: 효과가 필요한 구조가 분할되었는지 다시 확인합니다.
  • 물리: 시뮬레이션에서 뼈대를 사용하는 부분과 버텍스를 사용하는 부분을 식별합니다.

이제 엔진을 사용하기 전에 필요한 모든 예비 작업을 완료했습니다. 다음은 모델 맵의 전체 세트를 Unity로 임포트하고 사전에 작업한 모든 내용을 병합해야 합니다.

팁: 스킨 가중치를 작업할 때 스키닝 소프트웨어와 엔진을 전환하며 효과를 테스트할 수 있습니다. 캐릭터가 애니메이션화되면 문제를 더 쉽게 식별할 수 있습니다. 아래 예시 이미지를 참조하세요. 캐릭터가 움직일 때 어깨뼈가 특정 각도에 도달하면 글리치(glitch)가 생기는 것을 볼 수 있습니다. 버텍스 가중치가 충분히 매끄럽지 않기 때문에 이런 현상이 발생합니다.
GIF of VFX character dancing in Unity Editor window (source: Sakura Rabbit)

렌더링

앞에서 설정한 체크포인트 덕분에 구현 프로세스가 간소해졌습니다.

모델 제작 프로세스에서 머티리얼을 이미 분류했으므로 셰이더의 경우 분리된 컴포넌트의 머티리얼을 독립적으로 설정하거나 생성하면 됩니다. 인체 골격 표준을 사전에 설정해 둘 것이므로 애니메이션 단계에서 Unity의 휴머노이드를 직접 사용할 수 있습니다. 이렇게 하면 애니메이션 작업에서 많은 시간이 절약됩니다.

워크로드를 더 줄이기 위해 모션 캡처를 적용할 수도 있습니다. 제작한 블렌드 셰이프가 ARKit 명명 규칙을 충족한다면 얼굴 모션을 직접 캡처하고 얼굴 블렌드 셰이프의 애니메이션을 제작할 수도 있습니다.

팁: 리깅을 위해 Advanced Skeleton을 사용하는 경우 Unity로 임포트할 때 캐릭터의 어깨뼈 및 어깨 노드 정렬이 잘못될 가능성이 높습니다. 휴머노이드 인터페이스에서 수동으로 조정해 이 문제를 해결합니다.
GIF of VFX character dancing within an animated, outdoor set in a Unity Editor window (source: Sakura Rabbit)

여기까지입니다. 요약하자면 원본 드로잉, 모델링, 애니메이션, 렌더링에 이르는 전체 캐릭터 제작 프로세스에서 결과 지향적 접근 방식을 사용하며 원하는 결과물을 구현하기 위한 단계를 결정해 놓는 것이 좋습니다. 그리고 다음 작업과 현재 단계에서 무엇을 주의하며 진행할지 알 수 있도록 전체 제작 프로세스를 완전히 이해하고 있어야 합니다.

GIF of VFX character dancing in live, complete scene on city streets (source: Sakura Rabbit)

제 게시물이 유용하다면 공유해 주세요.

/ / /
(^_^) Sakura Rabbit 樱花兔

사쿠라 래빗의 캐릭터 아트는 유니티에서 발행한 전자책 집중 탐구 가이드: Unity 고급 시각 효과 제작(영문)의 표지를 장식했으며 여기에서 무료로 읽어 보실 수 있습니다. 사쿠라 래빗에 대한 자세한 내용은 Twitter, Instagram, YouTube 그리고 이 글이 처음 게재된 FanBox 페이지를 참조하세요. Made with Unity 개발자들의 더 많은 블로그 게시물은 여기에서 확인하세요. Unity 전문 지식을 커뮤니티와 공유하고 싶다면 7월 11일까지 유나이트 2023 Call for Proposals에 제출하시기 바랍니다.

2023년 5월 29일 게임 | 14 분 소요
관련 게시물