Unity 검색

장편 애니메이션을 위한 Ziva: 스타일라이즈드 시뮬레이션 및 머신러닝에 최적화된 워크플로

2022년 12월 16일 산업 분야 | 18 분 소요
Ziva for feature animation: Smooth simulation and machine learning-ready workflows | Hero image
Ziva for feature animation: Smooth simulation and machine learning-ready workflows | Hero image
공유

Is this article helpful for you?

Thank you for your feedback!

안녕하세요. Unity 아트 툴을 연구하는 시니어 솔루션 엔지니어 브라이언 앤더슨입니다. 제 전문 분야는 3D 캐릭터 작업이며 Ziva VFX와 같은 툴의 기능 세트와 디자인에 관한 협업도 함께 진행하고 있습니다.

이 블로그에서는 Ziva 기술을 사용한 이족 보행 장편 애니메이션과 스타일라이즈드 에셋에 대한 베스트 프랙티스와 워크플로를 공유하려 합니다. 구체적으로는 Ziva VFX와 시뮬레이션 기반 파이프라인의 잠재적 이점을 살펴보겠습니다.

그럼 시작합니다.

빠른 시뮬레이션

모든 아티스트는 3D 캐릭터가 고객에게 매력적으로 다가가기를 원하며 많은 경우 그러한 과정에서 상당한 변형이 이루어집니다. 하지만 최근까지도 연조직의 유기적이고 동적인 프로퍼티를 사실적이고 자동화된 방식으로 표현하기란 거의 불가능에 가까웠습니다.

수년에 걸쳐 캐릭터 리깅 작업을 진행해 온 사람으로서 분명히 말씀드리면, 저는 애초에 시작되지 않았어야 할 바디 변형과 관련된 문제를 해결하기 위해 단 한 번도 필요 이상의 시간을 허비하고 싶지 않았습니다. 시뮬레이션 작업은 제작을 시작할 수 있는 견고한 기반 레이어를 마련하고 아트 방향성을 더할 수 있다는 점에서 일반적인 셰이프 보정 방법의 훌륭한 대안이 될 수 있습니다.

바로 여기에 Ziva VFX가 필요합니다. 일반적인 바디 변형을 수동으로 조정할 필요 없이 캐릭터가 더 사실적이고 매력적인 방식으로 움직이도록 하는 데 필요한 핵심 문제를 해결할 수 있기 때문입니다.

Ziva VFX is used for deformation and simulation of characters and creatures in games, television, and film.
Ziva VFX는 게임과 TV, 영화 속 캐릭터와 생명체의 변형 및 시뮬레이션에 사용됩니다.

시뮬레이션 기반 워크플로를 사용하면 캐릭터 아티스트는 시간 소모가 큰 정교한 샷 조형 또는 교정 셰이프의 필요성을 대폭 줄일 수 있습니다. 그 대신 Ziva VFX에서는 물리학 법칙을 활용하고 과학 및 공학적 측면에서 유한 요소법을 도입하여 고성능 동역학을 구현합니다.

Ziva VFX 한 눈에 보기

Ziva VFX는 Autodesk Maya 플러그인으로 작동하는 시뮬레이션 툴입니다. 게임이나 영화 및 TV에서 인간과 같은 디지털 캐릭터나 용, 공룡, 거대 상어와 같은 가상의 생명체를 만드는 데 사용됩니다.

이 기술을 사용하면 물리 효과를 모사하고 근육, 지방, 피부 등 대부분의 연조직 머티리얼을 시뮬레이션할 수 있습니다. 따라서 보다 향상된 제어력과 속도, 정밀성을 갖춘 더 생생하고 사실적인 캐릭터를 만들 수 있습니다.

The ZivaVFX user interface with Maya can be seen on the far right-hand side.
Maya에서 Ziva VFX 사용자 인터페이스는 맨 오른쪽에 위치합니다.

Ziva VFX를 사용해야 하는 이유

일반적인 VFX(비주얼 이펙트) 프로젝트와 달리 장편 애니메이션에 캐릭터 변형을 시뮬레이션하는 경우는 흔치 않습니다. 대신, 에셋 제작 단계에서 노동 집약적인 조형과 아트 작업이 수작업으로 이뤄집니다.

시각적인 측면을 생각하면, 시뮬레이션에서 흔히 보이는 마이크로폼과 세밀한 근육 효과를 장편 애니메이션에 적용하면 다소 산만하게 보일 수 있습니다. 프로젝트의 일반적인 디자인 문법과는 어울리지 않는 셈이죠.

워크플로 살펴보기

시뮬레이션 기술을 스타일라이즈드 캐릭터에 적용하는 것이 무엇을 의미하는지 알아보겠습니다.

먼저, 명확한 실루엣과 깔끔한 라인으로 형태를 단순하게 유지하는 등의 다양한 목표가 있을 것입니다. 그리고, 캐릭터 파이프라인의 단계를 계속 이동할 것입니다. 이를 위해 시뮬레이션을 파이프라인의 끝부분에서 앞부분, 즉 사전 제작의 에셋 제작 단계로 이동합니다. 그런 다음 이 작업물을 사용해 시뮬레이션 가능한 캐릭터를 제작하고, 마지막으로 데이터를 PSD(Pose Space Deformer)로 수집하거나 머신러닝(ML)을 사용하여 시뮬레이션 시스템을 최대한 활용합니다.

시뮬레이션 시스템을 사용하면 자동화를 추가해 수작업으로 가능한 수준보다 많은 수정 및 결합 셰이프를 생성하고, 변형 품질의 기본 수준을 높일 수 있습니다. 이러한 프로세스를 통해 Ziva VFX가 지향하는 목표는 피부 클러스터의 일반적인 초기 수준을 뛰어넘는 고품질, 고정확도의 변형 기본 수준을 위한 전반적인 워크플로를 개선하는 것입니다.

얻을 수 있는 이점

손상된 변형을 수정하며 아까운 시간을 소모할 필요 없이 캐릭터 아티스트가 아트 제작에 집중할 수 있으며, 그 결과 화면에 더 뛰어난 캐릭터를 구현할 가능성이 커집니다.

방법은 다음과 같습니다.

Ziva VFX로 스타일라이즈드 시뮬레이션 만들기

Blue Sky Studios에서 진행한 작업에서 영감을 얻은 장편 애니메이션 스타일의 아래 원본 캐릭터 디자인을 사용하여 전체적으로 분석해 보겠습니다.

A simple Maya wrap deformer attaches character geometry to tissue objects so they can deform together.
함께 변형할 수 있도록 간단한 Maya 랩 디포머로 캐릭터 지오메트리를 조직 오브젝트에 연결합니다.

컨트롤 릭으로 시작한 다음 뼈대 지오메트리를 만들어 릭에 바인딩하고, 이 뼈대 주위에 조직을 모델링하고 조직을 시뮬레이션합니다. 함께 변형할 수 있도록 간단한 Maya 랩 디포머를 추가하여 캐릭터 지오메트리를 조직 오브젝트에 연결할 수 있습니다.

연결이 완료되면 해당 데이터를 수집할 수 있으며 이를 위한 최고의 방법은 머신러닝을 사용하는 것입니다. 머신러닝을 바탕으로 변형 시스템의 장점을 활용해 셰이프와 조합을 수없이 많은 방식으로 수정할 수 있습니다.

PSD로 셰이프를 추출하여 릭 시스템에 바로 추가할 수도 있습니다. 시뮬레이션의 일관성 덕분에 이는 효과적으로 작동합니다. 모든 셰이프가 하나의 시스템에서 유래하며 하나의 규칙 세트를 가집니다. 이러한 교정 셰이프를 시스템에서 추출하고 PSD를 사용하여 다시 합치면 해당 조합은 문제없이 함께 작동하게 됩니다.

캐릭터 제작

다음으로는 캐릭터 제작을 살펴보겠습니다. 캐릭터 제작은 단순한 박스 모델링의 로우폴리 워크플로로 시작했습니다. 디자인을 구상한 후에 세부 요소를 추가하여 더 구체화하였습니다. 다음 단계는 리깅 작업을 위한 준비입니다.

변형 친화적 모델을 얻기 위해 제작 표준에 맞춰 표면 토폴로지를 새로 디자인하였으며, 손가락과 발가락은 펼치도록 제작해 시뮬레이션에 용이하게 만들었습니다. 그 결과 캐릭터의 기본 자세가 충돌 전 상태로 되었습니다. 이렇게 하면 바인드에 충분한 공간이 확보되도록 최종적으로 랩 디포머를 사용하여 메시를 시뮬레이션 조직에 연결할 때에도 유용합니다.

 The surface topology was redesigned to production standards for a clean, deformation-friendly, fully-rigged model.
깔끔하고 변형 친화적이며 완전히 리깅된 모델을 위해 프로덕션 표준에 맞춰 표면 토폴로지를 새로 디자인했습니다.

릭은 오픈소스 리깅 시스템인 mGear를 사용하여 만들었습니다. 조인트의 분리된 계층 구조로 인해 게임 엔진과 Ziva RT(Ziva의 머신러닝 소프트웨어로 아직 개발 단계)에서 이를 사용할 수 있습니다.

여기서는 장편 애니메이션용 컨트롤 세트로 제작했습니다. 스키닝은 ngSkinTools로 완성한 후 Maya skinCluster로 다시 전환했습니다. 헬퍼 조인트가 몇 개 있으나 이는 팔다리의 회전을 위한 것입니다.

The rig has a separate hierarchy for joints so that it’s game-engine friendly
게임 엔진에 대한 친화성을 높이기 위해 릭에는 조인트의 분리된 계층 구조가 있습니다.

시뮬레이션 준비

시뮬레이션 입력을 구성하는 것부터 시작합니다. 뼈대 오브젝트는 지오메트리 입력이며 시뮬레이션을 구동합니다. 여기서는 해부학적으로 정확한 골격 대신 뼈대 디자인에 대한 스톱모션 기반 접근 방식을 사용하여 단순한 기본 요소 몇 가지로부터 셰이프를 모델링하였습니다.

이미지에서 볼 수 있듯이 다수의 연결점에 틈을 남기고 뼈대를 조정하였습니다. 이렇게 하면 시뮬레이션 중에 모션 범위를 넓히고, 잠재적인 충돌 문제를 피할 수 있습니다.

Leaving space at major intersections allows the simulation more room to work.
주요 교차점에 공간을 두어 시뮬레이션 작동을 위한 여유 공간을 증대합니다.

실루엣을 더 효율적으로 제어하기 위해 팔꿈치와 무릎에 유동적 뼈대 뚜껑도 추가했습니다. 시뮬레이션 중에 구부러진 팔다리를 만드는 데 꼭 필요한 작업입니다.

시뮬레이션이 이루어질 조직의 경우, 각 조직은 확립된 뼈대 지오메트리에 기반해 움직입니다. 하지만 변형은 완전히 시뮬레이션을 바탕으로 제어됩니다.

조직 모델은 몸체부에 따라 분할되고 외피 아래와 뼈대에 맞게 조정됩니다. 이처럼 조직을 분할하면 시뮬레이션 결과에 영향이 나타나진 않지만 더 쉽게 씬을 구성할 수 있습니다. 부위를 복사하고, 붙여 넣고, 저장하고, 로드하려는 경우 부분별로 간편하게 수행할 수 있습니다.

Tissues are segmented in a modular design, by body zones, for better management.
관리가 용이하도록 바디 구역에 따라 모듈 단위 디자인으로 조직이 분할됩니다.

일부 조직의 평가를 해제하여 시뮬레이션 속도를 높일 수 있습니다. 바디를 분할하면 캐릭터의 한 부분을 선택하여 연관된 시뮬레이션 컴포넌트를 더 쉽게 확인할 수 있습니다.

내부를 보면 뼈대 주변이 비어 있도록 조직 오브젝트가 모델링되어 있으며, 이 작업을 신중하게 진행하여 뼈대와의 충돌을 피하는 것이 중요합니다.

Tissue objects are modeled to be hollowed out around the bones: It’s important to do this cleanly and avoid any collisions with the bones.
뼈대 주변이 비어 있도록 조직 오브젝트가 모델링되어 있으며 이 작업을 깔끔하게 진행하여 뼈대와의 충돌을 피하는 것이 중요합니다.

입력을 모델링했으니 릭의 조인트에 뼈대 지오메트리를 바인딩할 수 있습니다. 이 작업은 비교적 빠르고 직관적이지만 반복 프로세스이기도 하므로 필요에 따라 시뮬레이션을 테스트하고 조정해야 합니다.

이제 릭의 여러 영역을 사용해 뼈대 디자인을 테스트하고, 시뮬레이션 결과를 살펴보고, 뼈대 모델 편집을 시작할 수 있습니다. 이러한 작업을 테스트 내내 수차례 수행하여 바디 시뮬레이션을 얻게 됩니다.

바디 시뮬레이션 시간

시뮬레이션 컴포넌트를 보면 조직을 변형하는 사면체 메시와 시뮬레이션을 결속하는 몇 개의 연결점을 확인할 수 있습니다. 주목할 점은 이 예시에서 Ziva VFX의 QuasiStatic Integrator가 사용되었다는 것입니다. 

Simulation components
시뮬레이션 컴포넌트

목표는 조직 변형을 해결하는 것이며, 빠른 모션으로 인한 흔들림과 같은 2차 물리 효과가 아닙니다. 그러한 효과는 QuasiStatic Integrator를 사용해 제거되겠지만, 필요할 경우 나중에 샷 단위 시뮬레이션 파이프라인으로 해결할 수도 있습니다. 이것이 바로 시뮬레이션을 사용하여 구현하려 하는 동작, 즉 블렌드 셰이프 추출 또는 머신러닝입니다.

아래에서 다리가 앞쪽으로 130도 개별 회전하며 골반 조직에서 큰 변형이 일어나는 것을 볼 수 있습니다. 변형이 잘 지탱하고 있음을 알 수 있으며, 이제 캐릭터 변형에 따라 구조감이 실현되었습니다.

또한 변형 전체에서 적절한 충돌과 깔끔한 지오메트리가 존재합니다. 뼈대 골조의 틈은 시뮬레이션이 작동할 수 있도록 트인 공간을 남겨 회전 범위를 확장합니다.

다리가 앞쪽으로 130도 개별 회전하며 캐릭터의 골반 조직에서 큰 변형이 발생합니다.

보시다시피 볼륨이 자연스럽게 몸통으로 퍼지면서 하체 변형이 가슴 쪽까지 쭉 밀려 올라갑니다. 중간 부분에서는 미끄러지듯 움직이는 연결부가 작용하며, 여기서 조직은 척추를 따라 미끄러져 올라가서 가슴 쪽으로 압축됩니다. 적절하게 구현된 바람직한 사례라 할 수 있습니다.

모션 발생 시 설정

모션이 발생하면 캐릭터에서 달성해야 하는 스타일에 부합하도록 몇 가지 요소가 적용됩니다. 이는 단순한 형태, 깔끔한 라인과 실루엣, 우수한 볼륨 보존이라는 특성을 가집니다.

 In motion, you can see some of the goals coming through to match the style.
모션 발생 시 스타일에 부합하도록 몇 가지 목표가 적용됩니다.

하지만 특히 엉덩이와 같은 매우 큰 변형이 일어나는 영역에서의 물리적 감각, 방대한 변형 감쇠, 매우 깔끔한 변형 표면 등 기타 요소도 존재합니다.

손 시뮬레이션 알아보기

이 캐릭터의 손은 짤막하고 두꺼워서 까다로운 사례입니다. 저는 해부학적으로 정확한 골격의 법칙을 따르는 것이 아니라, 뼈대 일부를 제거하고 밀집을 최소화하여 시뮬레이션 작동을 위한 여유 공간을 주었습니다. 이 덕분에 부드럽고 말랑말랑한 손 동작이 가능합니다.

The hands of the character are short and thick, which makes for a difficult use case.
이 캐릭터의 손은 짤막하고 두꺼워서 까다로운 사례입니다.

손의 뼈대 디자인은 손바닥과 손가락이라는 두 가지 주요 부분으로 나뉩니다. 손바닥은 외피와 유사하며, 각 손가락의 밑부분은 시뮬레이션의 앵커 지점으로 작동하도록 남겨집니다. 한편, 손가락 끝은 가운데에 아무것도 없는 유동적 뼈대입니다.

When posing the hand, the position and orientation of the fingers are locked between bone areas, and the transition is handled by the simulation.
손 포즈를 취할 때 손가락의 위치와 방향은 뼈대 영역 사이에 고정되며 시뮬레이션에서 전환이 처리됩니다.

이제 뼈대가 조직에 어떤 영향을 미치는지, 모션 발생 중에 어떻게 표시되는지 확인할 수 있습니다. 손가락을 보면, 손가락 끝에서 손바닥으로 향하는 전환 영역 전체에서 부드러운 결과가 나타납니다. 큰 변형이 일어나는 영역에서 해상도를 높이기 위해 사면체 메시에 커스텀 맵을 칠했는데, 이 이미지에서 눈에 잘 띕니다.

The bones influence the tissues when moving the character’s hand.
캐릭터의 손이 움직일 때 뼈대가 조직에 영향을 미칩니다.

이 예시에는 볼륨 증가를 보여 주는 포즈가 나와 있습니다. 압축을 통해, 주먹을 조이면 손 전체 셰이프가 바뀌는 걸 볼 수 있습니다. 옆에서 보면 윤곽이 더 뚜렷하며, 앞에서 보면 만화 느낌의 둥근 주먹입니다.

A pose that shows volume buildup by compression
압축에 의한 볼륨 증가를 보여 주는 포즈입니다.

포즈 평가

손 포즈가 캐릭터의 나머지 부분에 미치는 영향은 우리가 느끼는 것보다 큽니다. 아래 이미지에서 손가락 포즈로 인해 손바닥 면이 손목으로 밀려 내려갑니다.

이 영향으로 손목 셰이프가 바뀌고, 그에 따라 팔이 팔꿈치로 쭉 밀려 올라갑니다. 이제 팔 아래쪽 전체가 연결된 느낌이 나며 또렷하고 유기적인 셰이프가 만들어졌습니다.

Poses on the hand affect the rest of the character’s deformation.
손 포즈가 캐릭터의 나머지 부분 변형에 영향을 미칩니다.

시뮬레이션 통계

전체 시뮬레이션 빌드를 다시 살펴보면, 손과 발을 추가했음에도 컴포넌트 수가 관리 가능한 수준이며 시뮬레이션 시간은 전신에 대해 프레임당 20초 미만입니다.

위 이미지와 같이 팔과 같은 중점 영역으로 평가를 제한하면 시뮬레이션 시간을 프레임당 2~3초로 줄일 수 있습니다. 즉, 로컬에서 시뮬레이션 디자인과 테스트 반복 속도가 더 빨라집니다.

또한 QuasiStatic Integrator를 사용하면 직접 반복 적분기에 비해 시뮬레이션 속도가 대폭 높아집니다. 이 캐릭터에서 시뮬레이션 속도는 동역학을 통해 기본 적분기를 사용할 때보다 약 30% 향상되었습니다.

결론

요약하자면, 우리의 목표는 시뮬레이션을 캐릭터 파이프라인의 끝부분에서 앞부분으로 이동하여 캐릭터 변형을 생성하는 데 사용하는 것입니다. 이 시뮬레이션은 캐릭터가 움직이는 방식에 대한 라이브러리 역할을 합니다.

시뮬레이션에 직접 머신러닝을 적용하거나 셰이프를 PSD 교정 시스템으로 추출하여 포즈 데이터를 수집할 수 있습니다. 이후 캐릭터 아티스트는 전체 바디의 변형을 수동으로 보정하는 대신, 기존 방법으로 아트 방향성에 맞는 셰이프를 조금만 추가하면 됩니다. 셰이프 데이터가 릭에 추가되면 모든 사람에게 도움이 되는 것이 일반적입니다.

보다 깔끔한 표면에 머티리얼과 그루밍, 의상 등을 작업할 수 있게 되고, 리깅 및 캐릭터 아티스트는 손상된 변형을 수정하는 대신 아트 제작에 훨씬 더 많은 시간을 들일 수 있습니다. 또한, 애니메이션 부서에서는 정확성이 뛰어난 변형 및 교정이 가능하며 통합 시스템과 수월하게 연동되는 에셋을 확보하게 됩니다.

이러한 시스템 유형에서 머신러닝을 사용하면 캐릭터에 통합하기 어려운 바디의 전체 상호 작용 영역을 넘나드는 모든 종류의 멋진 변형 효과를 캡처할 수 있습니다.

제가 진행한 전체 SIGGRAPH 2022 프레젠테이션에서 스타일라이즈드 캐릭터의 시뮬레이션에 사용되는 기술을 더 자세히 알아볼 수 있습니다. Ziva VFX에 대한 자세한 내용을 확인하려면 전문가에게 문의하세요.

2022년 12월 16일 산업 분야 | 18 분 소요

Is this article helpful for you?

Thank you for your feedback!

관련 게시물