Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

For me

[Unreal Engine 3D] Animation - 1 본문

Unreal Engine/이론

[Unreal Engine 3D] Animation - 1

GiveZero 2023. 1. 31. 14:33

 

상태를 나누어 (State Pattern) 애니메이션을 적용

 

만약 Bool 형식으로 관리를 하게 된다면?

- 되긴 됨

- 하지만, 게임이 복잡해지면 점프 + 죽음 => 죽었다가 점프를 하게 될 수 있음

 

Unreal 엔진에서는 그래프로 상태를 관리 가능함

 

 

이동

각각 Moving 과 NotMoving으로 나누어 관리함

 

EventGraph - UpdateMovement

위의 사진과 같이 Speed가 0이상이면 Moving이 True로 설정됨

Idle → MoveStart , MoveStop → MoveStart  => Moving

MoveStart Idle , MoveStart  → MoveStop  => Not Moving

 

Animation Montage

 

Anim Montage를 만듦

Animation Montage를 사용하는 이유는?

스테이트 머신 확장 없이 특정 상황에서 원하는 애니메이션을 발동시키는 애니메이션 몽타주 기능 제공 (콤보공격 활용 가능)

입력이 들어올 때마다 연속된 모션을 가능케 하도록 기능 구현

 

애니메이션을 Cached 화 시켜 사용 가능 (임시 저장)

spine_01 기준으로, 위 아래를 설정하게 됨

(이동하는 다리, 총을쏘는 상체)

 

Fire Input

Blend Space

앞을 바라보고 있을때 0도

뒤를 바라보고 있을때 180도 (시계방향)

뒤를 바라보고 있을 때 -180도 (반시계방향

-180 ~ 180 도 각

 

다음과 같이 Move, MoveStart, MoveStop 설정

 

 

캐릭터 회전 (RootBone Rotation)

a각도만큼 회전시, Rootbone을 a각도만큼 다시 돌려놓는다.

이렇게 진행하여도 화면을 회전했을때, Mesh는 가만히 있음

 

이걸 왜 사용?

많은 FPS게임을 보면, 화면이 움직이는대로 캐릭터가 돌아가는것이 아닌, 어느정도 돌아갔을 때 캐릭터가 회전하는것을 확인할 수 있음.

처음에 업로드한 영상을 확인하면, 일정 화면이 돌아갔을 때 캐릭터가 회전하는 애니메이션을 볼 수 있음

 

 

3가지 변수를 사용

Character Yaw - 마우스로 회전하는 각도

Prev Character Yaw - 이전 프레임의 회전 각도 ( 더갔는지, 덜갔는지 체크 )

Root Yaw Offset - 다시 돌아가기위한 Yaw값

 

흰색 박스

Prev Character, Character Yaw값을 두프레임에 걸쳐 관리하고, 최종 Yaw값을 Set한다.

 

빨간색 박스

최종 Yaw값을 Set값

Root Yaw Offset - (Character Yaw - PrevCharacter Yaw)

=> 180도 만큼 회전하면, 다시 -180도만큼 회전하기 위함

 

이후 Mesh 회전 애니메이션을 위해

다음과 같이 상태를 구분해 줄것이다.

 

상체는 움직이지 않아도 되니 기본 Idle 애니메이션만 가지게 되고,

 

하체는 

다음과 같이 애니메이션을 구상한다.

 

이 때, 회전하는 애니메이션은

Rotation Curve(-90 ~ 90)과

Turning Curve MetaData를 사용하게 될것인데,

 

Turning이라는 값이 1이면 회전

Turning이라는 값이 0이면 회전 X

 

이후 UpdateTurnAnimation Function에서 관리

먼저, Turning(>0) 값을 불러오고

 

Seq 1

prev Rotation Curve 와 , Roation Cuirve값을 세팅하고,

Root Yaw offset = Root Yaw offset + ( Roation Curve- Prev Rotation Curve)

작업을 통해 실제로 Mesh를 회전시킨다. 

 

Seq 2 

Root Yaw 값이 항상 -90 ~ 90 사이를 유지하기 위한 작업

 

 

에임 오프셋

FPS게임에서 캐릭터가 조준하는 지점을 Mesh가 직접 바라볼 수 있도록 애니메이션을 구상한다.

애니메이션 샘플들을 덧붙이는 과정이다.

 

BlendSpace와 AimOffset의 차이점?

AimOffset은 애니메이션 샘플들을 덧붙이는 과정이 가장 큰 차이점

BlendSpace는 진짜 애니메이션들을 프레임단위로 섞는것

 

 

'Unreal Engine > 이론' 카테고리의 다른 글

[Unreal Engine 3D] Animation - 2  (0) 2023.01.31
[Unreal Engine 3D] Character Control  (0) 2023.01.27
[Unreal Engine UI] 1) UI 화면 만들기  (0) 2023.01.25
[Unreal Engine] 9) Particle  (0) 2023.01.25
[Unreal Engine] 8) LandScape  (0) 2023.01.25