본문으로 바로가기
반응형

원문링크 : https://gamemakers.jp/article/2022_09_06_16709/

일본 최대 규모의 게임 업계 컨퍼런스 「CEDEC2022」가, 2022년 8월 23일(화)부터 8월 25일(목)까지의 일정으로 개최되었습니다. 마지막 날인 8월 25일에는, 제니맥스·아시아 주식회사(Tango Gameworks) 프로그래머 고마타 마사루씨가, 「Ghostwire : Tokyo의 표현을 지원하는 프로시절 애니메이션」이라고 제목을 붙인 강연을 진행했습니다. Ghostwire: Tokyo를 위해 개발한 4 가지 프로시절 애니메이션 기법 에 대해 설명한 본 강연을 소개합니다.

TEXT / 가후페이, EDIT / 카미야마 다이키


목차

    1. 본 작품을 위해 개발된 기술
    2. 손 표현을 풍부하게하는 보조 본(HelperJoint) 시스템
    3. 수많은 캐릭터에 이용되는 스윙 체인
    4. 인간형에 적용하는 2족 보행 IK
    5. 개와 고양이를 위한 4족 보행 IK

Technology developed for this work

「Ghostwire: Tokyo(이하, 본작) 는, 2022년 3월에 발매된 Garden-type paranormal 액션・어드벤처로, 포토 리얼한 그래픽스가 특징인 작품입니다.

 

 

본 강연에서는 「보조본 시스템- auxiliary bone system」 「체인 모양의 흔들림-chain-like swinging object」 「2족 보행 IK-bipedal walking IK」 「4족 보행 IK-」 의 4종류의 기술 토픽을 다루고 있습니다.

개발에 사용된 DCC 툴은 Maya 2018과 Unreal Engine 4 (이하, UE4)입니다만, 강연의 내용은 특정의 툴에 관계없이 적용이 가능합니다.

이번 소개하는 기술 자체는 DCC 툴, 게임 엔진 에 관계없이 실장 가능. 본작에서는 DCC 툴에는 Maya, 게임 엔진에는 커스터마이즈한 UE4를 사용

손 표현을 풍부하게하는 보조 본 (HelperJoint) 시스템

처음 소개된 것은 HelperJoint 라는 보조본 시스템입니다. 보조본 시스템은 메쉬의 미세한 변형을 제어하기 위한 부차적인 본을 제어하는 ​​구조로, 손목본의 회전에 의한 팔의 비틀림 보정이나 무릎의 찌그러짐 방지 등에 자주 사용되고 있습니다.

HelperJoint라는 제어 기능은 " 특정 본의 포즈를 입력으로 하고 다른 대상을 제어하는 ​​기능 "으로 설계되었습니다.

대상 본의 상태와 연동하여, "보조 본", "블렌드 셰이프", "재료 파라미터"가 제어된다. 보조본 시스템은 일반적으로 프로시절 애니메이션에 포함되는 경우는 적지만, 특정 규칙에서 실시간으로 애니메이션을 출력하고 있다는 점에서는 유사하다고 볼수 있다

일반적으로, 1인칭 시점에서의 게임에 있어서 손의 표현은 중요시되는 케이스가 많습니다만, 본작에는 특정 타겟을 지정하는 액션이 ​​존재하기 때문에 지극히 리얼한 손의 표현이 요구되고 있었습니다.

본작에서는, HelperJoint를 이용해 블렌드 셰이프등을 본의 움직임과 연동시키는 것으로, 본 애니메이션 만으로는 만들기 어려운 디테일한 표현을 실현하고 있습니다.

플레이어의 손바닥 공격에 HelperJoint를 적용한 예. 손목 부분의 구부러짐이 매끄러워진 것 외에, 손가락의 긴장이 크게 두드러지고 있다. 블렌드 셰이프나 머티리얼의 노멀맵 제어를 손의 본의 움직임에 연동시킴으로써 실현하고 있다

HelperJoint는 DCC 툴과 게임 엔진에서 동일한 동작을 하도록 구현되어 있으며, 아티스트만으로 워크플로우 가 완결되는 궁리가 실시되고 있습니다. DCC 툴내에 HelperJoint 전용 툴 을 작성해, 아티스트가 미리 준비한 보조 뼈나 블렌드 셰이프, 머티리얼을 바탕으로, HeplerJoint로 입력 이 되는 뼈의 설정이나 출력처의 설정을 실시합니다.

거동을 공통화시키는 것으로, DCC 툴상에서 만든 설정을 게임 엔진측에서 조정하는 수고를 줄일 수 있다

HelperJoint 툴에서는, 입력이 되는 뼈의 설정이나 출력처의 설정을 실시한다. 출력처가 되는 보조골 등은 사전에 작성해 둘 필요가 있다

HelperJoint 도구에서는 입력에 사용할 매개 변수에 세 가지 옵션이 있습니다. 그 중에서 가장 많이 사용되는 오일러각에 의한 제어에는 짐벌록에 의한 플립이 발생하는 문제가 존재하지만, 회전축을 분해하는 순서를 지정 가능하게 함으로써 이것을 해결했습니다.
※짐벌 록:회전축이 겹쳐 버리는 것으로, 회전의 자유도가 내려 버리는 것

입력과 출력의 관계로 곡선을 설정할 수 있습니다. 오일러 각도, 2개의 뼈의 거리를 입력으로 했을 경우, 복수의 키로 세세하게 커브를 만드는 것도 가능해진다

HelperJoint의 동작은 Maya 내에서 사용자 정의 노드 로 구현됩니다. HelperJoint의 수만큼 HelperJoint 노드가 만들어져 도구의 설정이 반영되는 형태입니다.

퍼포먼스를 낮추지 않기 때문에, 변열 평가하도록 구현되고 있다. 커브를 설정하면 HelperJoint 노드와 대상 노드 사이에 AnimCurve 노드를 삽입하여 커브를 반영합니다.

UE4 측에서는 AnimBlueprint의 커스텀 노드 로서 HelperJoint가 구현되고 Maya에서 가져온 설정 데이터가 반영됩니다. 또, 보조골 시스템의 참고로 한 타사 사례로서, 스퀘어 에닉스의 「 KineDriver 」를 들 수 있었습니다.

차세대를 고려한 새로운 보조 뼈 시스템 개발 - CEDEC2019

수많은 캐릭터에 이용되는 체인 모양의 흔들림

두 번째는 흔들림 의 구현입니다. 뼈 물리 등으로 불리는 사슬 모양으로 연결된 여러 뼈를 흔들기 위한 구조는 업계에서도 널리 보급되고 있습니다.

본작에서는, 일반적인 흔들림에 대응하는 「 JointChainPhysics 」와, 특수 케이스에 사용하는 「 JointChainDelayed 」의 2종류의 시스템을 개발했습니다.

플레이어 캐릭터 에 JointChainPhysics를 적용한 예. 의상 부품의 흔들림에 대량의 JointChainPhysics가 설정되어 있다

적용 전(오른쪽), 적용 후 비교(왼쪽)

JointChainPhysics는 주인공 의상과 고양이 꼬리, 부유하는 적의 다리 등 본작에 등장하는 대부분의 캐릭터에 적용됩니다. 자연스러운 흔들림에 의해 캐릭터에 딱딱함이나 싸움을 느끼게 하지 않고, 애니메이션 전체의 퀄리티를 끌어 올리고 있습니다.

JointChainPhysics 는 Stiffness(강성)와 Damping(감쇠)을 고려한 스프링 물리 를 베를레 적분(위치 기반)으로 구현하고 있습니다. 구현 자체는 " Kawaii Physics "와 유사한 부분도 많다는 것.

콘스트레인트는 뼈의 길이와 콜리전 22개. UE4에서도 동일한 동작을 위해 AnimBlueprint의 사용자 정의 노드로 구현되었습니다.

흔들림의 설정에 관해서는, 기본적으로 캐릭터 아티스트만이 담당합니다. 스켈레톤 에 흔들림용 뼈를 추가하고 UE4에서도 AnimBlueprint에 전용 노드를 추가하면 준비 완료. 거동은 에디터 로 확인하면서 조정 가능하게 되기 때문에, 엔진상에서 프리뷰하면서 제작을 실시할 수 있는 구조가 되고 있습니다.

한편, 스프링 물리와 같은 오버슈트(지나쳐)가 불필요하고, 체인의 선단이 근원에 대해서 지연되는 움직임만을 표현하고 싶은 경우에서는, JointChainPhysics가 아니라, Delay 파라미터에 의한 지연 흔들림 기능 「 JointChainDelayed 」를 사용합니다 .

JointChainDelayed 는 원 파라미터 때문에 조정이 간단하고, 고속·고주파인 이동이라고 하는 조정이 어려운 케이스에서도 취급하기 쉬운 것이 특징입니다.

게임 내에서는 고속으로 이동하는 '가마키'라는 캐릭터에 적용하고 있다. 머리를 움직이면 몸통과 꼬리가 늦어집니다.

인형 대상에 적용하는 2족 보행 IK

계속해서 2족 보행 IK 에 대해 소개되었습니다. 2족 보행 IK에 관해서는 수많은 사례가 공개되어 있어 그 중에서도 캡콤이 과거에 실시한 강연 을 특히 참고했다고 한다.

캐릭터의 포즈나 애니메이션은 기울기 없는 발판을 전제로 작성되어 있기 때문에, 단차나 경사가 있는 발판에서는 다리가 공중에 떠오르거나 쏟아져 부자연스럽게 되어 버립니다. 2족 보행 IK는 2족 보행 캐릭터의 발의 거동을 지면에 대해 자연스럽게 보정하는 기능 입니다.

2 다리 보행 IK가 꺼져 있으면 다리가 계단에서 떠있어 사진 모드의 품질이 떨어집니다.

계단에서도 양 다리가 접지하고 있다. 기울이지 않는 상태를 전제로 한 모션에 보정을 가하는 형태로 실장

흔들림과 마찬가지로 2족 보행 IK는 AnimBlueprint의 커스텀 노드로 구현됩니다. 캐릭터에의 편입과 사용 장면의 한정은 각 캐릭터의 담당 프로그래머와 협력해 실시해, 파라미터 조정에 관해서는 IK 알고리즘에 대한 깊은 이해를 수반하기 위해 원칙적으로 코마타씨가 담당해, 마무리에 모션 아티스트가 종사한다고 하는 형태 되었다고합니다.

IK의 알고리즘에는 「 TwoBoneIK 」를 채용.

상자 정원 맵에서 다수의 캐릭터를 스폰 시키는 사정상 경량이어야 하는 점, 알고리즘이 심플하고 문제가 발생했을 때 조사가 용이하다는 것이 채용의 이유로 꼽혔습니다.

양발 바로 아래 지면의 정보로부터 발목이나 허리 높이 등을 보정한다. 급격한 높이 변화에 대응하기 위해 임계 감쇠와 속도 상한을 적용하여 부드럽게 하고 있다
※임계 감쇠:스프링 물리에 있어서, 오버슈트가 일어나지 않는 최단 시간으로 원래의 위치에 감쇠할 때의 감쇠 곡선

2족 보행 IK 파라미터의 대부분은 커브를 적용 가능하게 하는 것으로, 모션 중에 세세하게 값을 변화시킬 수 있도록 하고 있다

개와 고양이를위한 4 발 보행 IK

마지막으로 4발 보행 IK 가 소개되었습니다. 본작에 있어서 4족 보행 IK는 개와 고양이에 대해서 적용되고 있습니다.

4족 보행 IK도 2족 보행 IK와 마찬가지로 4족 보행 캐릭터의 발이 지면에 대해 자연스러운 위치가 되도록 보정하는 기능입니다. 이쪽은, 개나 고양이의 엉덩이나 꼬리가 지면에 따르도록 보정하는 역할도 담당하고 있습니다.

2족 보행 IK와 마찬가지로, 기울기 0을 상정한 모션에 대해서 보정하고 있다. 단차에 대해 다리가 떠오르고 부자연스러움이 줄어든다

앉은 자세에도 대응. 꼬리가 땅의 기울기에 부딪히도록 떨어졌습니다.

기본적인 구현은 2족 보행 IK와 동일하지만, 지면의 기울기와 높이를 바탕으로 골반골을 보정하고, 전신을 지면을 따라 기울임 으로써 자연스러운 4족 보행을 실현하고 있습니다 .

또한 4족 보행 IK는 2족 보행 IK와 동일한 워크플로우로 적용됩니다.

4족 보행 IK도 2족 보행 IK와 마찬가지로 발 바로 아래의 지면 정보를 바탕으로 보정한다. 지면의 높이로부터 골반골(이번은 루트골과 동일)의 기울기와 높이를 결정해, 전신을 지면을 따라 기울인다. 그런 다음 네 발 각각에 IK를 적용

4족 보행 IK의 알고리즘은 3개의 뼈를 제어하는 ​​편리하게 TwoBoneIK 이외의 선택이 필요했다. 거기서, 2족 보행 IK와 같은 이유로부터, 심플하고 경량인 「 FABRIK 」를 채용했습니다.

개나 고양이는 발 운반의 피치가 빠르고, 지터링의 거칠기가 보이기 어렵다는 특성으로부터, 간이한 실장이지만 매우 좋은 결과를 얻을 수 있었다고 하고 있습니다. 한편, 크고 느긋한 (또한, 스크린 차지하는 면적이 많은) 모션의 캐릭터에 적용하는 경우, 요구되는 퀄리티는 높아지는 것으로도 분석되고 있었습니다.

기존 기술을 자신의 개발 환경에 잘 튜닝시킨 Tango Gameworks. 코마타씨는 마지막으로, 각 기능에 피드백을 실시한 관계자나 세션 준비의 협력자, 그리고 4족 보행 IK의 실험대가 된 「우리의 고양이」에 사사를 말해, 강연을 마무리했습니다.

 

 

 

반응형