[뉴미디어서비스팀 윤형진]
AI 기술이 발전함에 따라 게임이나, 영상 쪽에서 사용되는 언리얼5 등의 제작 엔진에서도 관련된 기술을 적용하려는 움직임이 많이 보이고 있습니다.
그 중에서 오늘 소개 드릴 것은 언리얼 5.2 부터 추가된 ML Deformer 입니다.
폴리곤으로 이루어진 3D 캐릭터의 전체 근육과 살, 옷 시뮬레이션 등의 데이터를 이용해 머신러닝하여 실시간에서도 고퀄리티의 캐릭터를 빠르게 돌릴 수 있는 기법 입니다.
[배경]
3D 게임에서 캐릭터의 애니메이션은 Skeletal animation 기반으로 구동 됩니다.
수천, 많게는 수만개로 이루어진 폴리곤을 효율적으로 움직이려면 각각의 버텍스를 컨트롤 하는 것보다, 각각의 관절에 해당하는 위치에 본을 심어 넣어서 해당 본의 가까이에 있는 폴리곤들에게
영향력을 행사하여 움직이는 구조입니다.
이 방법은 빠르고 효율적으로 캐릭터의 움직임을 표현해주지만 고퀄리티의 세밀한 표현을 하기에는 한계점이 명확합니다. 본의 위치에 기반해서 버텍스들을 움직여주기 때문에, 특정한 근육의 표현(팔을 구부렸을 때 이두박근이 튀어나온다던지), 옷의 주름 접히는 표현이 어렵습니다.
고퀄리티의 표현을 위해선 마야나 후디니, 마블러스 디자이너 같은 DCC(Digital Content Creation) 툴에서 각각의 버텍스들을 시뮬레이션하여 렌더링에 이용하곤 합니다.
하지만 이 방법은 부하가 커서 게임 같은 실시간 프로그램에는 사용이 어렵고, 한장씩 렌더링해서 영상 제작등에 사용됩니다.
그래서 이러한 문제점을 해결하고자 나온 것이 언리얼 5.2 부터 적용된 ML Deformer 입니다.
실시간 게임엔진에서 고퀄리티의 시뮬레이션을 표현하기 위해 시뮬레이션 데이터를 학습하여 디포메이션 모델의 근사치를 계산하는 방식입니다.
ML 디포머는 내부적으로 언리얼의 신경망 추론(Neural Network Inference, NNI) 시스템과 디포머 그래프(Deformer Graph) 시스템을 사용하여 GPU 로 프로세싱 됩니다.
훈련 데이터 생성을 위해 Maya 용 플러그인과 함께 제공되며, 마야에서 생성된 훈련 데이터를 사용해 언리얼에서 학습 하고 결과를 계산해줍니다.
[본론]
ML 디포머 제작 프로세스
ML 디포머가 어떻게 작동되는지 프로세스를 예제 제작으로 알아보도록 하겠습니다.
- 플러그인 다운로드
- ㅇEpic Launcher 의 마켓플레이스로 이동하여 ML Deformer 플러그인을 다운로드 합니다.
2. 마야에서 훈련시킬 메시를 지정하고 훈련데이터를 생성합니다.
여기선 예제를 위하여 팔 형상의 실린더 메시를 배치하여 제작하였습니다.
3. 언리얼에 훈련시킬 메시 및 훈련 데이터 임포트
마야에서 생성한 메시와 훈련데이터를 임포트 합니다.
4. ML 디포머 툴 안에서 훈련 설정을 하고 훈련을 진행합니다.
5. 훈련된 결과를 확인합니다.
왼쪽이 스켈레탈 애니메이션, 가운데가 훈련된 데이터, 오른쪽이 시뮬레이션 데이터 입니다. 시뮬레이션 데이터대로 잘 훈련되어 있는 모습을 확인 할 수 있습니다.
이렇게 훈련된 데이터를 이제 언리얼에서 실시간으로 사용할 수 있습니다.
위 내용을 활용한다면 아래와 같이 자연스러운 옷 시뮬레이션이 적용된 캐릭터를 실시간으로 실행되도록 제작이 가능합니다.
[결론]
예제 제작을 통해 ML 디포머가 어떻게 동작 하는지를 알아보았습니다.
언리얼 뿐만 아니라 여러 개발 툴에서 하나 둘씩 AI기술이 들어와 정착하는 것 같습니다.
개발자 입장에서는 매일 매일 신기술이 나오니 새로운 것을 자주 해볼 수 있어서 직업적인 만족도가 큰 것 같습니다.
그럼 다음에 또 좋은 기술들로 찾아뵙겠습니다.
감사합니다.