언리얼엔진/블루프린트

보간과 타임라인을 이용한 움직이는 발판

season97 2023. 10. 8. 18:41

◈ 올라타면 움직이는 발판 만들기

 

BP_FirstPersonCharacter에 형변환?

▶ 언리얼 블루프린트의 형변환

 

ㆍ 상속을 라이브로 받을수 있다. 부모와 자식 관점에서 생각할 수 있다.

 

ㆍ 블루프린트 내에서 엑터는 서로간의 부모가 될 여지가 있다.

 

ㆍ 각각의 자식들이 다른 속성을 상속하는 계층구조를 가질 수 있다.

 

※ 차량을 예시로 들면

1.   차량이 있다.. 차량은 메인 엑터다.. 차량 엑터에는 가속,감속,브레이크 등 몇가지 파라미터가 존재한다.

2.   이륜차 또는 4륜차의 2가지 자식 엑터의 속성이 다르다.

3.   이륜차에는 기어가 있다. 사륜에도 기어가있다. 그럼 이 둘은 같은기어인가?

→ 다른기어다. 내가 상속받는 혹은 상속을 주는 엑터에 따라 내 속성이 바뀐다 라는 개념

 

 

▶ 타임라인

타임라인 노드 더블클릭 시 나오는 화면

※ 움직임을 주고싶다면?

 

→ 바로 이전글에서 작성한 보간, 델타등을 활용한 움직임을 주는 방법이 정석 방법이다.

→ 불규칙한 움직임을 주고싶다면 반드시 위 방법을 사용해야 한다.

→ 하지만 규칙적이고 간단한 움직임이라면?

 

※  엔진에선 관련 노드로 기능을 지원하고 있다.

 

→  트랜스폼에 관련된 노드는 아니지만 트랜스폼에 쓰기 좋아서 많이 언급되는 "타임라인"

→  원래는 애니메이션에 쓰라고 있는 노드다.

→  움직임에 규칙성이 있다면 타임라인을 사용하는 것이 좋다.

 

ㆍ 타임라인이란 주로 애니메이션을 통한 자연스러운 움직을을 표현할 때 사용한다.

 

ㆍ 특수 노드로써 엔진에서 사용할 수 있는 부드러운 처리에는 모두 적용할 수 있다.

 

ㆍ 간단한 애니메이션 처리 역시 타임라인을 이용하면 편리하다.

 

※ 언리얼엔진에서 애니메이션은 크게 타임라인과 애니메이션 블루프린트로 구분됨

1. 타임라인: 간단한 값에 변화를 주기 적합

2. 애니메이션 블루프린트 : 캐릭터 기반의 애니메이션이나 시네마틱을 위한 애니메이션을 다룰 때 적합하며 스켈레탈 메시의 애니메이션을 제어할 수 있는 기능이 있다.

 

 

 

 

 

▶ 보간

 

보간을 위한 컴포넌트 추가

 

시작과 끝점 위치 지정

 

 

시작과 끝지점을 넣어주기

 

※ 이렇게 해서 플레이어가 올라 타면 지정한 지점으로 발판이 이동하고 내려오면 다시 원래자리로 돌아가는 노드를 만들어 봤다. 

 

 

ㆍ 보간이란 두 점 또는 두 상태 사이의 중간값을 추정하는 과정을 말한다. 수치해석학의 한 종류

 

ㆍ 보간의 종류에는 선형보간, 구면보간, 포물선, 다항식, 스플라인 등등이 있다.

 

ㆍ 게임에선 선형보간, 이중선형보간, 구면보간 정도를 많이 사용한다.

 

 

▶ 보간의 종류

 

1. 선형보간

 

ㆍ 선형보간은 가장 간단한 형태의 보간 방법으로 두 점 사이의 직선 경로로 이동하는 방식

 

ㆍ 예를들어 시작점 A와 종료점 B가 있을때 선형보간을 통해 C의 경로를 찾을 수 있다. 

 

ㆍ 이 위치를 업데이트 해줌으로 특정 지정을 왔다갔다 하게 만들수 있다.

 

ㆍ 오디오 볼륨을 조절하는 UI를 만들던가 위 예시와 같은 이동발판등에 활용할 수 있을거 같다.

선형보간 예시와 식

 

 

2. 이중선형보간

 

ㆍ 이중선형보간은 2D공간에 대한 선형 보간 확장

 

ㆍ 4개의 점 (각각 (x0,y0) , (x1,y0), (x0, y1), (x1,y1)) 과 해당 점들에 대응하는 값을 가지고 있을 때 좌표 (x,y)에 대응하는 값을 추정할 수 있다.

 

ㆍ 텍스처 매핑 또는 화면 해상도 조정과 같은 2D이미지 처리에 사용된다고 한다.

이중 선형 보간 예시와 식

 

 

 

3. 구면보간

 

ㆍ 구면 선형 보간은 두 벡터 사이를 구면경로로 이동하며 주로 부드러운 회전 상태간의 전환에 사용됨.

 

ㆍ 캐릭터가 뒤를 돌 때 부드럽게 뒤를 돌게 하기 위해 사용한다.

 

ㆍ 시작회전과 목표 회전 사이에 중간 회전상태들을 구해 서서히 이동시키는 방식이다

구면보간 예시

 

 

※ 언리얼엔진에서는 관련된 함수나 노드로 기능을 지원하니 쉽게 사용할 수 있다.

 

ㆍ 선형 보간은 위에서 사용했으니 구면보간의 노드

구면보간

ㆍ 이중선형보간은 Lerp를 여러개 사용해서 구현할 수 있다.