도서 정리/유니티로 만드는 게임 개발 총론
[유니티로 만드는 게임 개발 총론]3장. 애니메이션 메커니즘
dukh
2023. 8. 30. 11:17
본문의 모든 내용과 이미지의 저작권은 '페니 드 빌' 저자의 유니티로 만드는 게임 개발 총론 도서에 있습니다.
3-1. 게임의 시각적 메커니즘
- 애니메이션은 컴퓨터 게임에서 시각적 측면의 토대가 되는 하부 메커니즘
- 조금씩 다른 이미지들을 연속으로 바르게 보여줘서 움직이는 듯한 효과를 주는 기법
- 전통적 애니메이션은 이미지를 각각 손으로 그려 차례대로 보여주는 방식
- 움직임이 부드러우려면 초당 24프레임, 한 그림 당 2프레임 차지, 12장의 그림이 필요
- 현대의 컴퓨터 게임은 보통 30~100, 혹은 그 이상의 프레임률을 수용
- 컴퓨터 게임 초창기에는 미리 제작한 아트 애셋을 저장할 메모리와 아트 애셋을 제작할 수 있는 드로잉 프로그램이 없었기 때문에 알고리즘을 활용해서 즉석에서 오브젝트를 그렸음
- 1974년에 읽기 전용 메모리가 게임에 도입되면서 그래픽을 미리 제작해 저장 가능해 짐
- 미리 제작한 그래픽을 2차원 비트맵, 스프라이트라고 칭함
1. 스프라이트
- 다른 요소와 구분되는 2D 텍스처, Material도 이에 해당
- 많이 사용할수록 실행의 효율성이 떨어짐
- 유니티에서 Material을 적용하면 추가적인 로드가 발생 - 드로우콜(Draw call)
- 게임 환경 내에서 메시의 폴리곤 개수가 많아져도 드로우콜이 많아짐
2. 텍스처 아틀라스
- 텍스처 안에 여러 개의 이미지를 조합해 넣는 것
- ex) 512x512의 이미지에 32x32의 이미지를 여러 개 조합해 붙임
- 이미지 각각이 서로 겹치지 않게 배치해야 함
- 텍스처 아틀라스에서 작은 이미지들은 저마다 픽셀 좌표, 폭, 높이를 갖고 있음
- 필요한 이미지를 뽑아서 쓰기 편함
3. 애니메이션에 사용되는 스프라이트
- 기술적으로는 게임에서 사용되는 모든 2D 이미지가 스프라이트이지만, 게임 오브젝트의 특정 움직임을 나타내는 2D 애니메이션을 뜻하는 경우가 많음
- 이 경우, 구체적인 제스처에 움직임을 넣기 위해 조합되는 이미지들의 집합으로 구성
3-2. 3D 애니메이션
- 운동학을 이용해 실시간으로 애니메이션을 연산하는 방식은 프로세서에 심한 부하를 줌
- 애니메이션을 미리 제작해두고 같은 동작을 정확히 같은 방식으로 수없이 반복
- 애니메이션 재활용을 통해 게임의 성능을 높이고 개발 예산을 줄임
- ex) 사다리를 오르는 애니메이션을 건물을 오르는 애니메이션으로 재사용
- 플레이어가 어떤 행동을 취할지 예상할 수 없기 때문에 여러 애니메이션을 따로 만들고 조합
- 모든 애니메이션의 시작과 끝을 같게 해야 애니메이션이 연결될 때 자연스러움
- 유니티에서는 3D 환경에서 애니메이션 간의 자연스러운 전환을 위한 기능을 제공
3-3. 생체 역학
- 인간과 동식물 같은 생물 시스템의 역학적 운동을 연구하는 학문
- 생물 시스템의 운동 방법을 묘사하는 애니메이션을 만들려면 생체 역학에 대한 이해가 필요
- 휴머노이드 애니메이션 워킹 그룹은 인간 골격의 표준 규격을 제공하는 국제적인 프로젝트
- 다양한 프로그램에서 일관성 있게 사용 가능
- 유니티에서는 'Ragdoll' 이라는 컴포넌트로 관절의 움직임을 지원
- 운동학에서는 운동의 원인은 염두에 두지 않고 오브젝트의 운동만을 설명하며 거리, 방향, 속도에 관련된 선형 및 회전 운동을 다룸
- 운동학에는 정운동학과 역운동학이라는 두 가지 관점이 있음
1. 정운동학(Forward kinematics)
- 주어진 관절의 각도, 회전, 마디의 길이를 통해 분절된 오브젝트 끝 부분의 최종 위치를 계산
- ex) 관절의 회전, 각도, 뼈 마디 길이를 통해 캐릭터의 손이 어디에 있는지 계산 가능
- 계산엔 벡터가 사용 됨
2. 역운동학(Inverse kinematics)
- 게임에서 캐릭터를 환경과 연결 시킴
- 정운동학과 반대로 손의 위치가 특정 위치에 놓이려면 관절의 각도가 몇이어야 하는 지를 구함
- ex) 게임에서 캐릭터가 물체를 집어 들 때, 물체의 위치에 손이 놓여야 하므로 손의 위치에 맞게 나머지 요소를 계산
- 관절은 여러 각도를 취할 수 있기 때문에 정운동학에 비해 복잡함
3-4. 애니메이션 관리
- 2D, 3D에 따라 애니메이션을 관리하는 방법이 달라짐
1. 단일 2D 스프라이트 액션
- 텍스처 아틀라스를 주로 사용
- 한 캐릭터에 대한 모든 애니메이션을 하나의 텍스처 아틀라스에 보관하기도 함
- 정확한 시점에 텍스처의 정확한 부분이 표시되도록 픽셀을 철저하게 관리해야 함
2. 단일 3D 애니메이션
- 텍스처 아틀라스와 동일한 방식으로 다수의 개별 애니메이션을 정의하는 3D 애니메이션 트랙을 사용
- 2D와는 다르게 오브젝트의 각 부위 별로 다른 애니메이션을 제작하여 관리
- 어색한 동작이 나올 위험성이 있지만, 훨씬 다양한 애니메이션을 구현할 수 있음
애니메이션 블렌딩
- 3D 환경에서 서로 다른 애니메이션의 서로 다른 부분을 조합하는 기능
- 1번 애니메이션과 2번 애니메이션의 시작과 끝 모션이 다르더라도 부드럽게 연결해 줌
3-5. 2차 애니메이션
- 1차 애니메이션에서 비롯된 움직임, 또는 다른 서브 오브젝트들의 움직임
- ex) 캐릭터가 걸으면 머리카락이 움직임, 무기를 발사하면 반동이 생김
- ex) 나무가 바람에 흔들림, 강물이 흐름
- 2차 애니메이션이 너무 정교하면 프로세서에 부하를 주므로 생략하기도 함