메쉬
언리얼 엔진은 두 종류의 메쉬 리소스가 있다.
static mesh
고정된 정점을 가진 스태틱 메쉬
skeletal mesh
관절 웨이팅이 포함되어 호환되는 관절 인덱스를 가진 스켈레톤으로 애니메이션 가능한 메쉬
메테리얼 슬롯
메쉬의 정점 및 기하구조들은 다른 메테리얼을 사용되는 그룹별로 그루핑되어있다.
n개의 메테리얼 그룹을 가지는 메쉬 리소스는 n개의 메테리얼 슬롯을 가지고 있고 각 슬롯에 장착된 메테리얼이 해당 그룹 기하구조들을 렌더링하는데 사용된다.
스켈레톤 슬롯
스켈레탈 메쉬 리소스의 경우 자신에게 적용할 스켈레톤을 넣을 수 있는 스켈레톤 슬롯이있다. 스켈레톤 리소스를 넣으면 해당 스켈레톤을 사용하여 애니메이션되게된다.
메테리얼
메테리얼은 셰이더를 기반으로 만들어져 여러 값과 텍스처들을 적용하고 이들을 메테리얼 그래프로 처리한 뒤 최종 연산 전 중간 값들에 적용하여 기하구조의 렌더링 방식을 나타내는 리소스이다.
언리얼의 기본 셰이더를 토대로한 메테리얼은 베이스 컬러(분산 반사율), 메탈릭, 거칠기, 노말등의 여러 픽셀 연산 중간 값들을 상수, 텍스처, 연산결과등으로 받고 이들로 렌더링 연산으로 마무리하여 최종 픽셀 색을 렌더링하는 방식으로 구현되어 있다. 텍스처등의 리소스는 드래그를 통해 메테리얼 그래프에 넣어 바로 적용시킬 수 있다.
스켈레톤
스케레톤은 애니메이션 관절의 계층구조와 트랜스폼으로 구성된 관절 리소스이다. 애니메이션 리소스를 임포트하기전 해당 애니메이션이 적용될 스켈레톤 리소스를 설정하며 임포트할 수 있다. 그러면 애니메이션 리소스의 스켈레톤 슬롯에 스켈레톤이 장착된채 임포트되며 해당 스켈레톤에 애니메이션들이 종속된다.
animInstance, 애니메이션 블루프린터
animInstance는 특정 스켈레톤에 대해 생성되며 해당 스켈레톤을 어떤 로직으로 애니메이션 시킬지를 총괄하는 리소스이다. c++클래스로는 animInstance를 상속하여 만들 수 있고 아니면 애니메이션 블루프린터라는 블루프린터 형태로도 만들 수 있다. 이 둘은 같은 리소스로써 사용된다. animInstance자손 c++ 클래스를 상속하여 애니메이션 블루프린터를 만들 수도 있다. 이 들은 다음 두가지 역할을 수행한다.
프로퍼티 컨트롤
animInstance(애니메이션 블루프린터)는 자신이 가지고 있는 여러 타입의 프로퍼티들로 자신의 애니메이션 상태머신의 트랜지션들을 적절히 컨트롤한다. 이때 animInstance는 업데이트 함수를 통해 자신이 속한 폰의 여러 정보들을 가져오고 이를 토대로 적절히 프로퍼티들을 수정하며 컨트롤한다.
애니메이터 상태머신
animInstance는 프로퍼티 컨트롤 뿐 아니라 애니메이터 상태 머신 자체도 자신이 정의하며 소유한다. 각 애니메이션 클립이 상태로 존재하며 그 사이 트랜지션들이 존재한다. 트랜지션들은 현재 프로퍼티 값들을 확인하여 상태들을 이동시키고 현재 상태에 해당하는 클립을 실행시킨다.
정리하면 animInstance또는 애니메이션 블루프린터는 스스로 자신이 속한 폰의 정보를 토대로 프로퍼티를 수정하고 이를 토대로 자신의 애니메이션 상태머신을 컨트롤하여 자신이 속한 스켈레톤을 애니메이션하고 최종적으로 스켈레탈 메쉬의 형태가 움직이게 된다.
보통 정석적으로는 c++ animInstance로 프로퍼티 정의 및 업데이트 함수를 통한 프로퍼티 컨트롤 구현하고 이를 상속한 애니메이션 블루프린터를 만들어 애니메이터 상태머신을 만드는 식으로 만든다.
이렇게 만들어진 animInstance또는 애니메이션 블루프린터를 액터의 스켈레탈메쉬 컴포넌트의 anim class 속성에서 선택해주면 해당 로직을 이용하여 해당 스켈레탈 메쉬가 애니메이션되게 된다.
'게임엔진 > 언리얼 엔진 5' 카테고리의 다른 글
[언리얼 엔진5][기초 2장] 충돌 감지 (0) | 2023.04.23 |
---|---|
[언리얼 엔진5][기초 1장] 엑터와 컴포넌트 (1) | 2023.04.13 |