주제: AI로 고퀄리티 모션 만들기 - 지형 적응형 실시간 IK 모션 생성 기술
강연자 : 유문원 - 엔씨소프트 / NCSOFT
발표분야 : 비주얼아트&사운드, 프로그래밍
권장 대상 : Technical Artist, 툴 프로그래머, AI Researcher
난이도 : 기본적인 사전지식 필요
[강연 주제] 최근 게임 시장에서 애니메이션 품질에 대한 기대가 높아지면서 모션 생성 기술에 대한 연구가 활발히 진행되고 있습니다. 이 세션에서는 NCSOFT Motion AI팀에서 연구 중인 지형 적응형 실시간 모션 생성 기술에 대해 소개합니다.
Machine learning 기반의 이 기술은 다양한 지형 환경에 맞추어 새로운 모션을 생성할 수 있으며 실시간 동작을 고려하여 설계 되었습니다. 모션 학습 및 생성을 위한 machine learning 적용 사례와 실시간 게임 적용을 위한 최적화 과정에 대한 설명이 준비되어 있습니다.
금일(24일), 경기도 성남시 판교에서는 NDC(Nexon Developers Conference)의 1일 차 행사가 진행됐다. 1일 차에는 총 29개의 강연이 준비되었으며, 엔씨소프트의 유문원 연구원은 금일 오후 넥슨 1994홀에서 연단에 올라 ‘AI로 고퀄리티 모션 만들기 - 지형 적응형 실시간 IK 모션 생성 기술’라는 주제로 강연을 진행했다.
해당 강연에서는 엔씨소프트 내 게임 AI 랩에서 재직 중인 유문원 연구원이 모션 제작에 AI를 적용하는 방법과 그간 겪어온 시행착오에 대해 논했다.
■ 주제1 - 'AI'로 '사람다운' 모션을 만들 수는 없을까?
게임 AI는 3가지로 분류할 수 있다. 실제로 게임을 플레이하는 AI, 게임 기획 단계에서 접목 및 활용하는 AI, 그리고 리소스 제작을 위한 AI. 엔씨소프트는 3가지 파트에 전담팀을 두어 연구를 진행하고 있으며, 모션 AI는 리소스 제작을 위한 AI에 속한다.
일반적으로 사람들은 AI에 대해 커다란 기대감을 품고 있다. 아이언맨에 등장하는 비서 JARVIS처럼 목표만 알려주면 스스로 해결하는 걸 떠올린다. 알파고처럼 특정 분야에서는 사람보다 나은 모습을 보이는 경우가 실제로 있다.
하지만, AI는 만능이 아니다. 사람처럼 자연스럽게 행동하지 않기 때문이다. 딥마인드 강화학습 기반 운동 모션 생성 영상을 보면, ‘장애물을 피한다’는 목표에만 집중한 나머지 캐릭터가 사람답지 않게 달리는 모습을 볼 수 있다. 목표 자체는 훌륭하게 완수했지만, ‘사람다움’이 결여된 것이다.
이는 목표와 과정의 차이다. 알파고는 ‘승리’가 목표였고, 위의 언급된 AI는 ‘빠르게 달리는 것’이 목표였다. 하지만, 결과적으로 알파고의 ‘다름’은 참신함으로 인식됐고, 영상 속 달리기의 ‘다름’은 이상함으로 인식됐다.
엔씨소프트 모션AI 팀에서는 AI 기능 중 목표 달성보다 사람과 비슷하게 자연스러움을 추구하는 게 좀 더 가치가 있겠다고 판단하고, 연구에 착수했다.
고퀄리티 모션을 활용하면 플레이어의 몰입감을 높일 수 있다. 이를 위해 보통 ‘모션 캡쳐’를 활용한다. 세밀한 모션 캡쳐가 이루어지면 품질은 굉장히 좋지만, 노력이 많이 들어간다. 엔씨소프트의 모션 캡쳐 팀장은 “10초 분량의 작업물을 만들어내기 위해 적게는 1일, 많게는 3일을 투자해야 한다”고 말하기도 했다. 즉, 게임의 모든 모션을 일일이 캡쳐해 제작하는 건 사실상 불가능에 가깝다.
그렇다면, AI에게 고퀄리티 모션을 배우게 하고, 새로운 모션까지 만들어달라고 하는 건 어떨까?
■ 주제2 - 퀄리티와 제작 속도를 모두 잡다
엔씨소프트 모션 AI팀은 게임 속 지형 환경에 대응하는 모션 제작에 착수했다. 언차티드4에서 볼 수 있는 자연스러운 암벽 등반 모션보다 한발 더 나아간 모습을 선보이는 것이 목표였다. 해당 과제를 해결하기 위해선 기본적으로 ‘원하는 벽을 잡기 위해 팔을 움직여 손 끝의 위치를 맞춘다’는 움직임이 필요했고, 이를 위해 인버스 키네마틱스(Inverse Kinematics) 기술이 활용됐다.
등반하는 팔의 움직임을 도식적으로 그려보면, 3개의 관절과 손에 해당하는 엔드 이펙터, 그리고 잡아야할 타겟으로 나눠진다. 현실에서 사람들은 타겟을 잡기 위해 엔드 이펙터를 자연스레 움직인다. 하지만, 이 동작을 수학적으로 재현하려면 관절의 ‘값’들을 모두 알아야 한다. 심지어 문제에 따라서 ‘해’가 없을 수도, 혹은 무수히 많을 수도 있다. 아울러 타겟을 잡아내는 ‘해’ 중 어떤 게 가장 자연스러울지도 고민해야 한다.
이런 인버스 키네마틱스 문제를 푸는 방법은 크게 두 가지로 나눠진다. 별도의 연산 없이 만들어내는 Analytical Approach는 제작 속도가 굉장히 빠르지만, 자연스레 품질이 떨어진다. Numerical Approach는 목표지점까지의 움직임을 일일이 계산하기에 품질이 굉장히 좋아지지만, 역시나 제작 속도가 급격히 느려진다.
엔씨소프트 모션 AI팀의 목표는 ‘공성전 플레이에서 성벽 모양에 맞게 캐릭터 벽을 오르는 수준의 연출’과 더불어 ‘빠른 작업 속도’까지 갖추는 것이었다. 이를 달성하기 위해선 기존 방법만으로는 힘들었다.
그들은 AI 학습을 통해 직면한 과제에 도전했다. 하지만, 학습을 하려면 데이터가 필요하다. 사람이 공부를 하기 위해 책이 필요하듯, 모션을 만들기 위해선 방대한 양의 고퀄리티 모션 데이터가 필요했다.
영국의 아이키네마 측 ‘등반 모션’을 활용해 제작에 임했다. 우선 시작점과 도착점을 손과 발로 나눠 찍었다. 엔드 이펙터를 랜덤하게 변형하고, 여기에 다양한 응용 모션을 생성했다. 이를 통해 양질의 데이터를 얻을 수도 있었다.
문제는 인풋에 비해 요구되는 아웃풋이 너무나 컸다는 점이다. 인풋은 고작 3개의 축에 8개의 점을 찍은 좌표값일뿐인데, 아웃풋은 그 500배 이상의 값을 요구했다.
이를 해결하기 위해 문제를 조금 쪼갰다. 우선 경로 개념을 추가했고, 목적 위치를 설정했다. 경로를 출력한 뒤 순간 위치를 입력하면 시간 독립적 포즈를 출력하도록 제작했다. 이렇게 쪼개니 데이터값이 확연히 줄어들었다.
■ 주제3 -100명도 거뜬한 똑똑한 '퍼포먼스', CPU 활용이 비결
모션 데이터를 신경 네트워크에 넣으면 학습을 진행하게 된다. 실제 클라이언트에서는 아주 적은 연산으로 모션 데이터를 만들어내는 게 우리의 목적이었다. 즉, ‘훈련 과정’에는 오랜 시간이 필요하지만, 실제 시행 단계에서는 아주 가볍게 활용되도록 제작하고자 했다.
최근 그래픽 좋은 게임들이 PC 자원 중 CPU를 일부분 유휴자원으로 남겨둔다는 걸 발견했다. 이 유휴자원을 어떻게 활용할지 고민했고, 이 유휴자원을 AI 활용에 이용하기로 했다. 보통 GPU에서 연산을 많이 하는데, 우리는 CPU로 방향을 잡았고 인텔 OpenVINO 툴킷을 활용해 성능을 한층 향상시켰다.
아울러 잦은 연산이 필요한 만큼, 동일한 연산을 모아 한번에 처리하도록 설계했다. 캐릭터가 여려명이 있을 때 각각의 Solver로 처리할 필요 없이, 병렬화를 통해 일괄 처리해 부담을 줄였다.
제작에는 언리얼 엔젠4 트레이스를 활용했다. 손발의 목적 위치를 벽면과의 충돌점으로 설정했다. 8개의 점이 생성되고, 인공지능이 적정 경로를 생성해준다. 이후 커브 피팅으로 보다 깔끔하게 다듬어준다. 경로 생성은 최초 한번만 이루어지나, 포즈 생성은 매 프레임 이루어진다.
언리얼 투본 IK를 활용해 품질을 비교해보기도 했다. 언리얼은 엔드 이펙트를 두개만 쓰는데, 다리가 너무 뻣뻣하다든지, 팔이 어색하게 뒤로 꺾인다던지 하는 모습을 종종 보인다. 언뜻 보기엔 잘 작동하지만, 상대적으로 다소 아쉬운 모습을 보였다.
이후 100명을 아바타를 동시에 시뮬레이션했는데, 프레임 연산시간이 1ms 내외로 나와 퍼포먼스 부담이 상당히 적은 것으로 드러났다.
하지만, 아직 어느 정도 보안이 필요한 상황이다. 현재로서는 지형의 세세한 모양을 고려하지 않기에 몸 일부분이 벽 속으로 파묻히는 현상이 일어나기도 한다. 목표 지점의 위치만 고려하기 때문에 발생한다. 벽면 매쉬를 전부 고려핟게 한다든지, 초기 점을 8개에서 더욱 늘려 정확도를 늘린다든지 하는 해결방안이 필요하다.