상세 컨텐츠

본문 제목

Hiking: Procedural Animation을 활용한 등산 시뮬레이션 프로젝트 - (0)

Computer Graphics/Hiking

by Banjosh 2025. 4. 3. 14:40

본문

게임 엔진 프로젝트를 마치고 이번에는 새롭게 애니메이션 프로젝트를 진행해보려 한다.

프로젝트 주제

Procedural Animation을 통해 스켈레탈 메시 애니메이션 캐릭터가 등산하는 시뮬레이션을 완성하는 것이 목표이다. 다양한 상황을 연출할 예정이며, 이를 구현하기 위해 다음과 같은 기술들을 사용할 예정이다.

  • Foot IK
  • Target-based IK
  • Full-Body IK
  • Step Planning & Foot Trajectory
  • Animation Layer
  • Pose Snapshot
  • Ragdoll

Procedural Animation이란?

미리 만들어진 애니메이션 클립 없이, 코드나 알고리즘을 통해 실시간으로 애니메이션을 생성하는 기술이다.

대표적인 기술로 IK(Inverse Kinematics)가 있으며, 물리(Physics)나 수학적 계산을 이용하는 방식도 있다. 주변 환경과 상호작용 하는 애니메이션을 실시간으로 만들 수 있다는 장점이 있고 그 예시로는 발 디디기, 피격, 흔들림 등이 있다.


IK(Inverse Kinematics)란?

IK는 역운동학(Inverse Kinematics)으로, 자식 계층의 위치를 통해 부모 계층의 각도를 구하는 기술이다. 반대 기술인 FK(Forward Kinematics)는 부모 계층의 각도를 통해 자식 계층의 위치를 구한다.

 

FK와 IK의 차이 참고 영상 (1:25~)

https://www.youtube.com/watch?v=c1iv0dbtMJ4

 

프로젝트에서 사용할 기술

Foot IK

기존 애니메이션은 지형 지물과 상호작용하지 않아 어색할 수 있다. Foot IK는 발을 지면에 맞춰 이동한 후 부모 관절들을 자연스럽게 조정하여 이를 해결하는 기술이다.

  • 구현 단계
    1. Raycast로 지면의 높이와 노말 벡터 계산
    2. 지면에 맞게 발의 위치 및 각도 조절
    3. 기존 애니메이션과 IK를 자연스럽게 블렌딩

Foot IK 적용 영상 (적용 전 00:00, 적용 후: 20:37)

https://www.youtube.com/watch?v=rGB1ipH6DrM

 

Target-based IK

캐릭터의 특정 부위가 지정된 타겟에 접근하면, 해당 부위를 타겟 위치에 맞추고 부모 관절들도 자연스럽게 이동시키는 기술이다.

Foot IK와 비슷한 개념이지만 다른점은 Foot IK는 지면이라는 동적인 대상에 대해 작동하는 것이고 Target-based IK는 타겟을 정해놓고 해당 타겟에게만 작동하는 IK이다. 작동원리는 Foot IK와 비슷하다.

 

손에 Target-based IK를 적용한 모습 (00:00 ~ 00:31) 

https://www.youtube.com/watch?v=_clM46cN_DY

 

 

Full-Body IK

Full-Body IK(FBIK)는 여러 개의 IK 체인을 사용하여 하나의 IK 처리로 인해 다른 체인들이 영향을 받게 하여 전신의 움직임을 자연스럽게 구현하는 기술이다.

  • 왜 Full-Body IK가 필요한가?
    • 단일 IK 체인은 전신에 영향을 주지 못하기 때문에 여러 IK 체인을 이용해 전체적인 움직임에 자연스러움을 추가하기 위해서이다.
    • 체인이 1개만 있을 경우 Foot IK는 발에 적용되는 IK의 효과가 하체에서 끝나고 Target-based IK(Hand)도 어깨에서 끝나게 된다. 만약 여러개의 IK 체인을 사용하는 경우 발에 IK를 단독으로 적용하는 경우에도 자연스럽게 상체까지 움직이는 애니메이션을 만들 수 있다.
  • 중요한 점
    • IK 체인 구성과 가중치 조절
      • 아무래도 여러 개의 IK 체인을 쓰다보니 IK 체인을 몇 개 쓸지, 각 IK 체인의 solve 순서는 어떻게 할지, 각 IK 체인 간의 가중치는 얼마나 둘지를 잘 정해야 자연스러운 움직임을 보일 수 있을 것이다.
    • 균형 유지 (무게중심 고려)
      • 무게 중심을 고려한 움직임을 통해 캐릭터가 균형을 잘 잡는 느낌을 주면, 더 자연스러운 움직임이 연출 될 것이다. 혹시라도 균형을 잃는 경우엔 쓰러지거나 자세를 바꿔 균형을 잡는 형식으로 처리하면 좋을 것이다.
    • 관절 각도의 제한
      • 신체의 관절은 가동 범위가 존재하기에 IK 체인의 가중치에 맞게 움직이겠다고 멋대로 관절을 꺾어버리면 안된다. 각 관절의 자연스러운 관절 각도를 고려해 움직여야 한다.
    • 성능 최적화
      • 아무래도 여러개의 IK 체인의 계산을 해야하다 보니 구현시 많은 계산량을 최소화할 수 있는 방법을 찾아봐야 할 것이다.

Full-Body IK가 적용된 애니메이션 (27:33 ~ 27:59)

https://www.youtube.com/watch?v=Z8eqaFG7lZQ

 

Step Planning & Foot Trajectory

  • Step Planning: 발을 언제, 어디로 움직일지 결정하는 기술
  • Foot Trajectory: 발이 움직일 때의 궤적을 결정하는 기술

IK와 Step Planning, Foot Trajectory를 섞는다면, 애니메이션 클립이 없더라도 아래와 같은 애니메이션을 만들 수 있다.

 

적용 예시 영상

https://www.youtube.com/watch?v=e6Gjhr1IP6w

 

Animation Layer

애니메이션을 여러 층(Layer)으로 나눠 각 층의 모션을 혼합하거나 덮어 씌우는 기술이다.

  • 예시
    • 하체는 걷기, 상체는 총 들기 → 총을 들고 뛰는 애니메이션
  • 중요한 점
    • 애니메이션을 여러 층으로 분리한 뒤 하나의 애니메이션으로 합칠 때 합쳐지는 애니메이션들의 자연스러운 조화가 중요하다. 예를 들면 뛰는 하체와 총을 들고 있는 상체는 서로 리듬감이 다를 수 있는데 이를 층별로 가중치를 두어 블랜딩을 하거나 FBIK와 같은 Procedural 보정을 추가하여 자연스럽게 처리해야 한다. 

 

Pose Snapshot

현재 애니메이션 포즈를 저장해 다른 애니메이션 적용 후 원래 상태로 복원할 때 사용한다. 주로 피격 후 원상복구 시 사용된다.

 

Ragdoll

캐릭터의 본마다 물리 엔진의 Rigidbody와 Joint를 연결하여 물리적으로 움직이는 시스템으로, 쓰러지는 연출을 자연스럽게 만든다.

  • 장점: 현실적이고 다양한 연출 가능
  • 단점: 제어 어려움, 애니메이션 복귀가 중요 (FBIK와 혼합하여 처리)

 

프로젝트 연출 리스트

  1. 경사지고 험한 지형 등반
  2. 경사로의 바위나 벽을 손으로 짚는 애니메이션
  3. 균형 잃을 때 한 발 뒤로 물러나기, 실패하면 넘어지기
  4. 앞에 있는 바위를 손으로 짚고 몸 끌어올리기
  5. 굴러오는 돌에 부분 피격 발생 시 피격 리액션 후 애니메이션 복원
  6. 굴러오는 돌에 정통으로 맞고 다운 후 손과 무릎 지지를 이용해 일어나기
  7. 벽을 등반하거나 로프를 타는 추가 상황 구현

위의 연출 리스트들을 Procedural Animation 기반으로 구현을 할 예정이다.

 

 

진행 계획

  1. DX11 공부 및 리팩토링
  2. Skeletal Mesh Animation 구현
  3. IK 학습 및 구현 (Foot IK → Target-based IK → Full-Body IK)
  4. 연출 리스트 1~4 구현
  5. Ragdoll 및 Pose Snapshot 구현
  6. 연출 리스트 5~6 구현
  7. 자연스러운 움직임 보정 및 최적화
  8. 추가적인 상황 부여 및 구현

계획은 대체적으로 애니메이션의 기본인 Skeletal Animation 부터 Procedural Animation의 기본적인 상황들을 연출해보고, Procedural Animation에 대한 이해도가 오른 경우 이를 활용해 연출할 수 있는 상황을 만들어 구현해볼 예정이다.

이 과정에서 기본적인 구현 후 애니메이션의 자연스러운 움직임에 대한 연구를 통해 연출 상황을 구현할 예정이고, 최적화에 대한 고민도 빼놓지 않을 예정이다.