애셋 익스포트

ㄴ 프로젝트 내의 애셋은 .uasset 파일로 저장되어 있는데 (언리얼 엔진 전용 파일 포맷) 다른 언리얼 프로젝트에서 사용하려면 이 파일을 옮기면 된다.

ㄴ 애셋 유형에 따라 익스포트 가능한 파일 유형이 다르다. (FBX, OBJ, COPY 등)

 

레퍼런스 대체 툴

ㄴ 중복되는 애셋 전부를 선택하고 Asset Actions -> Replace References 

ㄴ 선택된 애셋 중 하나의 애셋만 남기고 제거하므로 조심해서 사용해야 한다.

 

애셋 이주

ㄴ 여러 프로젝트에서 같은 애셋을 이용할 때 이주 툴을 사용하여 에셋을 관련 레퍼런스 및 종속성과 함께 복사할 수 있다.

 

애셋 메타데이터

ㄴ 애셋 생성자의 이름, 프로젝트에서 애셋을 사용하려는 목적, 팀의 워크플로에서 애셋의 상태 등의 정보가 포함될 수 있다.

ㄴ 타사 애플리케이션에서 생성한 메타데이터를 애셋과 함께 언리얼 에디터로 임포트할 수도 있다.

ㄴ 런타임 게임플레이 코드에서 직접 액세스할 수는 없지만 언리얼 에디터에서 에셋 관리 작업을 스크립팅하는데 사용할 수 있다. (에디터 스크립팅 유틸리티 플러그인 설치가 필요)

ㄴ 프로젝트 세팅 -> game -> Asset Manager -> Asset Registry -> 메타데이터 태그 설정에서 특정 메타데이터 태그로 애셋을 필터링할 수도 있다.

 

자동 리임포트

ㄴ 외부 컨텐츠 제작 패키지에서 작업하여 저장한 변경사항을 별다른 사용자 입력 없이도 엔진에 자동 반영되도록 하는 기능. 사용자가 지정한 폴더 세트에 대해 소스 컨텐츠 파일의 변경사항을 모니터링하여 파일 변경이 있었으면 변경된 파일을 해당 애셋에 다시 임포트

ㄴ  editor preference -> Loading & Saving -> Auto Reimport 항목

 

클래스 뷰어

ㄴ Tools -> Class Viewer

ㄴ 사용할 수 있는 모든 클래스들을 보여준다. 필터링해서 볼 수도 있다.

 

프로퍼티 매트릭스

ㄴ 다수의 오브젝트나 액터의 프로퍼티를 한번에 편집할 수 있다.

'언리얼 5 > 정리' 카테고리의 다른 글

액터 종류  (0) 2022.10.18
레벨, 월드 세팅, 월드 파티션  (0) 2022.10.15
기초 지식 - 에디터 종류  (0) 2022.10.14
기초 지식 - 기본적인 용어 정리  (0) 2022.10.14
라이팅 설정  (0) 2022.10.05

일부 툴과 에디터는 플러그인을 설치하여 프로젝트에 필요한지에 따라 활성화 또는 비활성화할 수 있다.

 

레벨 에디터

ㄴ 레벨의 플레이 공간을 정의할 수 있다. 프로젝트를 열때 자동으로 켜진다.

 

스태틱 메시 에디터

ㄴ 스태틱 메시의 형태, 콜리전, UV 매핑 프리뷰, 스태틱 메시 에셋의 LOD 제어

 

머터리얼 에디터

ㄴ 메시의 시각적 형태를 제어할 수 있는 머터리얼을 편집

 

블루프린트 에디터

ㄴ 비주얼 스크립팅을 위한 UI를 제공함

 

피직스 에셋 에디터

ㄴ 스켈레탈 메시에 사용되는 콜리전과 피직스를 정의하는 데 사용된다.

 

비헤이비어 트리 에디터

ㄴ 비헤이비어 트리, 블랙보드, 태스크, 데코레이터, 서비스를 사용하여 AI를 생성할 수 있다.

 

나이아가라 에디터

ㄴ 파티클 효과 편집

 

UMG UI 에디터

ㄴ 위젯 블루프린트 에디터에서 비주얼 레이아웃 편집과 그래프를 이용해 스크립트 기능을 사용할 수 있다. 

ㄴ 스크립트 기능으로 위젯 블루프린트 자체적으로 플레이어 캐릭터의 레퍼런스를 얻어 체력과 체력 bar를 바인딩 할 수 있다.

 

https://docs.unrealengine.com/5.0/ko/umg-ui-designer-quick-start-guide/

 

UMG UI 디자이너 퀵스타트 가이드

언리얼 엔진 4 에서 언리얼 모션 그래픽 사용 시작 안내입니다.

docs.unrealengine.com

 

폰트 에디터

ㄴ 폰트와 폰트 페이스 에셋을 다룬다.

ㄴ 폰트 페이스 애셋은 폰트를 임포트할 때 생성되며, 폰트 애셋에서 참조할 수 있는 폰트 데이터를 저장한다.

ㄴ 폰트 페이스 애셋을 열면 Hinting 및 Loading Policy 세팅에 접근할 수 있다.

 

시퀀서 에디터

ㄴ 인게임 시네마틱을 제작할 수 있는 특수한 멀티트랙 에디터입니다. 

ㄴ 레벨 시퀀스(Level Sequences) 를 생성하고 트랙(Tracks) 을 추가하여 씬의 콘텐츠를 결정하는 각 트랙의 구성을 정의할 수 있습니다. 트랙은 애니메이션(캐릭터 애니메이팅), 트랜스포메이션(씬 안의 사물 이동), 오디오(음악 또는 사운드 이펙트 포함) 등으로 이루어질 수 있습니다.

 

애니메이션 에디터

ㄴ 스켈레톤 에셋, 스켈레탈 메시, 애니메이션 블루프린트, 그 외 다양한 애니메이션 애셋을 편집하는데 사용된다.

 

컨트롤 릭 에디터

ㄴ 엔진 내에서 캐릭터를 직접 리깅할 수 있는 애니메이션 툴을 제공한다. 리깅 및 애니메이팅 작업에 외부 툴을 이용할 필요가 없다.

 

사운드 큐 에디터

ㄴ 몇 가지 사운드 에셋을 조합하고 혼합하여 사운드 큐로 저장된 하나의 혼합된 출력을 생성할 수 있다.

 

미디어 에디터

ㄴ 외부 미디어의 URL이나 파일을 정의하여 엔진 내에서 재생할 수 있다.

 

nDisplay3D 환경설정 에디터

ㄴ 파워월, 돔, 곡면 화면 같은 여러 동기화된 디스플레이 장치(엔진 내에 존재하는)에서 언리얼 엔진 씬을 렌더링할 수 있다.

 

DMX 라이브러리 에디터

ㄴ 라이브 이벤트 산업에 사용된다.

'언리얼 5 > 정리' 카테고리의 다른 글

레벨, 월드 세팅, 월드 파티션  (0) 2022.10.15
애셋과 레퍼런스  (0) 2022.10.14
기초 지식 - 기본적인 용어 정리  (0) 2022.10.14
라이팅 설정  (0) 2022.10.05
컨테이너  (0) 2022.09.15

 

오브젝트

ㄴ UObject를 상속받는 클래스

ㄴ UObject에는 가비지 컬렉션, UProperty, 로딩 및 저장 직렬화 기능이 구현되어 있음

 

클래스

ㄴ C++나 블루프린트로 생성될 수 있다.

ㄴ 특정 액터나 오브젝트의 행동과 프로퍼티를 정의한다.

 

블루프린트 클래스

콘텐트 제작자가 기존의 클래스 위에 다른 함수성을 쉽게 (비주얼 스크립팅) 추가할 수 있도록 해주는 애셋

 

게임플레이 클래스

각 게임플레이 클래스 소스 파일 위에는, 클래스에 대해 (자동 생성되는) 제너레이티드 헤더 파일을 포함시켜 줘야 한다.

ㄴ A 접두사 : 스폰 가능한 오브젝트(액터)의 서브클래스들에 붙음

ㄴ U 접두사 : 월드에 직접 인스턴싱 될 수 없는 오브젝트, 보통 액터에 포함되는 컴포넌트를 의미함

ㄴ 클래스 헤더 : 각 게임플레이 클래스 소스 파일 위에는, 클래스에 대해 (자동 생성되는) 제너레이티드 헤더 파일을 포함시켜 줘야 한다.

#include "ClassName.generated.h"

 

ㄴ 클래스 선언 : UCLASS 매크로를 사용하여 엔진 및 에디터 전용 속성을 전달한다.

클래스 지정자나 메타데이터 지정자가 전달된다.

UCLASS([specifier, specifier, ...], [meta(key=value, key=value, ...)])
class ClassName : public ParentName
{
    GENERATED_BODY()
}

 

에디터에서 C++ Classes 폴더에서 C++ 클래스를 추가할 수 있고, 여기서 부모 클래스를 지정하면서 만들 수 있다. 접두사는 에디터가 부모 클래스 종류를 보고 알아서 붙여준다.

자동으로 만들어지는 헤더 파일에는 UCLASS와 GENERATED_BODY 매크로가 자동으로 포함되어 있다.

헤더에서는 새로 추가할 프로퍼티들 윗줄에 UPROPERTY 매크로를 추가해줘야 한다.

 

클래스를 설계할 때 C++ 전용 / 블루프린트 전용 / 혼합형 으로 만들 수 있다.

C++ 전용으로 만든 클래스를 블루프린트 클래스가 상속받도록 하면 블루프린트로 확장할 수 있지만 해당 클래스에서 생성한 함수, 변수, 컴포넌트는 블루프린트에 접근할 수 없다. 다음과 같은 지정자가 있어야 한다.

ㄴ 이벤트 함수에는 UFUCTION 매크로와 BlueprintNativeEvent 지정자

ㄴ 프로퍼티에는 UPROPERTY 매크로와 BlueprintReadOnly 혹은 BlueprintReadWrite 지정자

ㄴ UCLASS 매크로에는 Blueprintable 지정자

 

C++ 클래스를 상속받는 블루프린트 클래스를 생성하면, 블루프린트 관리 창에서 상속한 클래스에서 만든 프로퍼티, 함수들이 보인다. 이벤트 그래프나 Construction Script를 활용하여 기존 함수의 기능들을 오버라이딩 할 수 있다.

 

액터

ㄴ 액터 인스턴스는 SpawnActor로 생성한다.

ㄴ 레벨에 배치할 수 있는 모든 오브젝트 (유니티의 게임오브젝트 역할)

ㄴ 액터 자체에는 트랜스폼 정보가 없지만 루트 컴포넌트로 씬 컴포넌트를 가진다면 액터가 트랜스폼 정보를 활용할 수 있다.

ㄴ 가비지 컬렉팅 대상이 아니므로 Destroy를 사용하여 명시적으로 소멸시켜줘야 한다.

 

컴포넌트

ㄴ 액터에 서브 오브젝트로 붙을 수 있는 특수한 타입의 오브젝트

일반적인 서브 오브젝트의 기본 작동방식과는 상반되게, 액터 안에 서브 오브젝트로 생성된 컴포넌트는 인스턴스로 생성됩니다. 특정 클래스의 액터 인스턴스 각각은 컴포넌트의 고유 인스턴스를 별도로 갖는다

 

핵심 컴포넌트 3가지

UActorComponent  : 액터 컴포넌트

ㄴ 기능만 가지고 있는 컴포넌트, 모든 컴포넌트의 베이스 클래스

USceneComponent : 씬 컴포넌트

ㄴ 트랜스폼 정보가 있는 컴포넌트(계층 구조를 이룰 수 있는), 액터 컴포넌트의 자식 클래스

UPrimitiveComponent : 프리미티브 컴포넌트

ㄴ 씬 컴포넌트의 자식 클래스, 그래픽적 표현을 갖는 컴포넌트 (메시, 콜리전, 빌보드, 파티클 시스템 등)

컴포넌트가 매 틱마다 업데이트 되려면 액터 컴포넌트가 등록되어 있어야 한다. 액터가 스폰될 때 해당 액터의 서브 오브젝트로 생성되는 컴포넌트는 자동으로 등록되지만 게임 중간에 생성되는 컴포넌트는 수동 등록해줘야 한다. RegisterComponent 함수를 사용한다.

 

ㄴ 액터의 서브클래스

ㄴ 주로 플레이어나 NPC로 사용됨

ㄴ 폰의 서브클래스로 DefaultPawn이나 SpectatorPawn을 사용할 수도 있다.

 

캐릭터

ㄴ 폰의 서브클래스

 

플레이어 컨트롤러

ㄴ 주로 플레이어를 나타내는 캐릭터나 폰을 Possess(빙의)한다.

플레이어의 입력을 게임 안의 상호작용으로 변환

멀티플레이어 게임의 주요한 네트워크 상호작용 지점

 

AI 컨트롤러

ㄴ 사용자는 플레이어 컨트롤러를 사용하여 폰을 제어하고 AI 플레이어는 AI 컨트롤러를 사용하여 폰을 제어한다.

 

플레이어 스테이트

게임 참여자의 스테이트를 말한다.

ㄴ 멀티플레이어 게임의 경우 모든 컴퓨터에 모든 플레이어의 플레이어 스테이트가 존재한다.

 

게임 모드

ㄴ 플레이 중인 게임의 규칙을 설정한다.

ㄴ 멀티플레이어 게임의 경우 게임 모드는 서버에만 존재한다.

ㄴ 하나의 레벨에는 하나의 게임 모드만 존재할 수 있다.

 

게임 스테이트

게임 내의 모든 클라이언트에 복제할 정보가 들어 있는 컨테이너 (서버가 모든 클라이언트에 전달해야 할 정보)

멀티플레이어 게임의 경우 게임 스테이트에 대한 로컬 인스턴스가 각 플레이어의 컴퓨터에 하나씩 있고, 로컬 게임 스테이트 인스턴스는 서버의 게임 스테이트 인스턴스에서 업데이트된 정보를 가져온다.

 

브러시

ㄴ 큐브, 구체와 같은 3D shape을 묘사하는 액터

ㄴ Gemoetry Mode에서 진행

레벨 및 오브젝트의 초기 프로덕션 단계에서 프로토타입을 빠르게 제작하는 데 유용하지만 레벨 디자인의 최종 방식으로는 권장되지 않는다.

 

볼륨

ㄴ 연결된 효과에 따라 용도가 달라지는 바운드된 3D 공간

ㄴ 투명벽, 트리거를 만들 수 있다.

 

레벨과 월드

ㄴ 레벨은 작은 단위의 게임플레이 영역이고 월드는 레벨들의 컨테이너

ㄴ 각 레벨은 .umap 파일로 저장됨

ㄴ 월드 세팅의 일반적인 세팅 그룹에는 게임 모드와 탐색에 영향을 주는 등의 세팅이 있다. 기타 좀 더 특수한 세팅은 게임의 라이팅, 오디오, 피직스 등을 환경설정하는 데 사용된다.

'언리얼 5 > 정리' 카테고리의 다른 글

애셋과 레퍼런스  (0) 2022.10.14
기초 지식 - 에디터 종류  (0) 2022.10.14
라이팅 설정  (0) 2022.10.05
컨테이너  (0) 2022.09.15
AI Controller & Behavior Tree  (0) 2022.09.14

Stack O Bot 프로젝트 애셋을 이용해 3인칭 캐릭터 게임의 기본기를 익힌다.

 

캐릭터 블루프린트 클래스

ㄴ 어떤 skeletal mesh를 사용할 것인지

 

애니메이션 블루프린트 클래스

ㄴ 애니메이션 상태 머신

 

캐릭터 블루프린트에 spring arm과 카메라 컴포넌트 추가하기

 

캐릭터 auto possess player 속성을 player 0으로 지정하면 게임 시작할때 자동으로 attach 됨

ㄴ 어떤 playerController가 해당 캐릭터(폰)을 possess 할 것인지를 지정하는 옵션

 

Input Action & Input Mapping Context

캐릭터에 사용할 mapping, 아날로그 스틱에는 modifier로 dead zone을 추가한다.

 

캐릭터 블루프린트의 이벤트 그래프에 input 로직을 구성 (상하좌우 이동, 회전)

 

1. 카메라 구성 방법 - Over the shoulder Camera

ㄴ 3인칭 게임 fps 게임 등에서 기울이기를 하면 카메라 시점이 좌우로 이동하는 기능을 구현할 때 사용

 

action value type - digital (기울이기 키를 토글식으로 사용할 경우)

trigger pressed 설정하면 계속 누르고 있어도 한 번만 발동

 

카메라의 부드러운 감속을 위한 타임라인 노드를 추가 (카메라 위치를 blend 하기 위한 계수로 사용됨)

 

over the shoulder 카메라를 위한 이벤트 로직

 

2. 카메라 구성 방법 - Freely Rotating Camera

 

캐릭터 블루프린트 -> Use Controller Rotation Yaw 끄고

character movement 컴포넌트의 OrientRotationtoMovement 키기

spring arm의 Use Pawn Control Rotation 키기

 

MyGameMode 에 MyPlayerController 세팅해서 카메라 회전 범위를 지정할 수 있다.

 

애니메이션을 위한 블렌드 스페이스

2D 블렌드 스페이스는 파라미터 두 개, 1D 블렌드 스페이스는 파라미터 한 개

아래 예제는 Idle 애니메이션과 Run 애니메이션을 Horizontal Axis Value에 기반해 섞는다. (0 ~ 500)

애니메이션 블루프린트에서는 애니메이션 클립 대신에 블랜드 스페이스를 사용할 수 있다.

ctrl 키를 누른 상태로 마우스를 움직여 value에 따른 애니메이션을 확인할 수 있다.

 

애니메이션 블루프린트

애니메이션 블루프린트는 이벤트 그래프나 애니메이션 그래프를 사용할 수 있다.

ㄴ 블렌드 스페이스를 애니메이션 그래프에서 추가한다. 블렌드 스페이스를 제어할 값을 변수로 승격시킨다.

ㄴ 이벤트 그래프에서 이 변수를 제어하여 값을 update 해주기만 하면 된다.

ㄴ 매 틱마다 Pawn의 movement 컴포넌트의 velocity의 xy값만으로 벡터의 크기를 구하고 이 값을 변수에 저장

 

break 노드는 여러 속성을 가진 객체를 분리시킨다.

 

캐릭터의 최대 이동 속도를 블렌드 스페이스에 맞추는 작업도 필요

ㄴ 캐릭터 블루프린트 -> 캐릭터 무브먼트 -> max walk speed 속성

ㄴ 블렌드 스페이스 값의 단위가 cm/s 인 듯하다..

 

블렌드 스페이스와 상태 머신, 기울이기 구현

노드의 return value 부분을 우클릭하여 split 할 수 있다.

 

상태 머신 하나로 관리한다
상태 머신 내부의 동작들은 트랜지션으로 연결되어 있다.
각 동작 상태들은 클립 하나로 표현되거나 블렌드 스페이스로 표현될 수 있다.

 

매 틱마다 Calc Lean 함수를 호출하여 기울기 값을 얻는다. 이전 프레임의 회전 값과 현재 프레임의 회전 값을 비교하여 기울기 값을 구한다.

 

Jump 추가, Jump 느낌 수정하기

ㄴ 캐릭터의 Jump를 사용하되 캐릭터 블루프린트 -> Character Movement 컴포넌트 -> Jump 관련 속성들을 수정하여 점프의 느낌을 다르게 만들 수 있다.

 

Jump 애니메이션, 캐시 포즈

캐시 포즈를 사용하여 땅에 붙어있을때의 state machine과 점프했을 때의 state machine을 분리 시킬 수 있고, 트랜지션이 간단해진다.

 

Conduit

ㄴ 한개의 상태에서 여러 개의 상태 중 하나로 선택하여 전이함

ㄴ 트랜지션 조건에 따라 정해짐

Land에서 LandRun으로 전이될지 LandIdle로 전이될지 결정하는 변수는 MovementInput으로 정한다.

 

제트팩 추가하기

started : 최초의 trigger 발동되는 순간 한 번 호출, Completed : 트리거가 끝날 때 (키를 누르고 있다가 뗄 때)

 

Jump 이벤트의 트리거가 아닌 Started에 연결함으로써 캐릭터의 MovementMode에 따라 Jump를 할 수도 있고 Jetpack을 토글할 수도 있다.

 

매 틱마다 호출되는 UpdateJetpack 함수
인자 두개를 받아 Jetpack의 상태를 조정하는 Toggle Jetpack 함수

 

FX, SFX, 메타사운드 트리거

 

오디오 컴포넌트의  Execute Trigger Parameter 노드를 사용하면 메타사운드에서 트리거를 호출할 수 있다.

ToggleJetpack 에서 소리 재생 중(이미 활성화 된 상태)에 Deactive된 경우에는 메타사운드 에셋의 JetpackOff 트리거를 발동시켜 바로 불이 꺼지는 사운드가 들리도록 한다.

 

JetpackOff 트리거가 발동될 때 실행되는 노드들 (메타 사운드)

 

TryGetPawnOwner로 Pawn을 얻고, BP_StackBot으로 캐스팅하여 Jetpack의 활성화 여부 변수를 얻어 애니메이션 블루프린트 내의 변수인 IsHovering?을 세팅하는데 사용한다.

창 -> 환경 라이트 믹서

ㄴ 직선광, 구름, 안개 등 다양한 환경 효과를 생성할 수 있다.

ㄴ 기본적으로 모든 조명은 리얼타임이다.

ㄴ ctrl + L 누른 상태에서 마우스 드래그로 조명(태양)의 위치를 조정할 수 있다.

 

에셋 임포트

ㄴ 컨텐츠 -> Props 폴더에 메시, 머터리얼, 텍스처를 저장

 

static mesh의 물리 시뮬레이션 설정하기

ㄴ 디테일의 physics 속성 -> Simulate Physics

 

고차원 메시(폴리곤 수가 많은)를 임포트할 때는 나나이트 빌드 세팅을 체크하자

ㄴ 임포트하는데 시간이 다소 발생, 큰 파일 크기

ㄴ 거리에 따라 필요한 만큼의 삼각형만 렌더링하는 기술(LOD)?

 

머터리얼 에디터

ㄴ 머터리얼의 색상, 거칠기, 노멀 맵을 정한다.

 

1 누른 상태에서 좌클릭 -> 상수 노드

3 누른 상태에서 좌클릭 -> 벡터 노드

알파벳 L 누른 상태에서 좌클릭 -> 알파 선형 보간 노드

 

texcoord 노드

ㄴ 타일링 uv 스케일 설정

 

LandscapeGrassOutput 노드 & LandscapeLayerSample 노드

ㄴ 폴리지 -> 랜드스케이프 그래스 타입 애셋 생성

 

Named Reroutes 노드 : 같은 이름을 지정하면 직접 연결하지 않아도 연결된 것으로 처리

 

랜드스케이프 그래스와 폴리지

텍스처가 검은색일 때 머터리얼을 마스킹하기

ㄴ 블렌드 모드를 Masked 모드로 바꾸고 텍스처를 Opacity Mask에 연결

 

 

Foliage 모드에서 static mesh를 한 번에 그릴 수 있다.

 

네이밍 컨벤션

블루프린트 BP_

스태틱 메시 SM_

머터리얼 M_

텍스처 T_

폴리지 F_

스켈레탈 메시 SKM_

애니메이션 블루프린트 ABP_

 

블루프린트 액터에서 속성을 바꾸면 씬 내의 모든 액터에 바뀐 속성이 적용됨 (유니티 프리팹 같은? 개념)

유니티와 달리 게임 오브젝트(블루 프린트)가 비어있는 상태로 시작하는 것이 아니라 어느 정도 형태가 정해진 상태(폰, 액터, 캐릭터 등)로 시작함

 

Select Mode -> LandScape 

ㄴ 랜드 스케이프를 만들 수 있다.

ㄴ 스컬프팅 : 영역의 높낮이 브러싱 (shift 누르면 낮출 수 있다)

 

게임모드, 폰, 플레이어 컨트롤러

ㄴ 기본적으로 자동으로 스폰되는 디폴트 액터, 아웃라이너에 노란색 글씨로 뜸

 

월드 세팅으로 게임모드를 설정하면 해당 레벨에만 게임모드가 적용되지만 프로젝트 세팅에서 설정하면 모든 맵에 적용됨

 

player start 액터를 사용하여 캐릭터가 스폰될 위치를 정할 수 있다. End 키를 눌러 스폰 위치를 바닥에 스냅시킬 수 있다.

 

디폴트가 캐릭터(폰의 자식)가 아닌 폰인 이유는 폰에 AI controller를 붙일 여지가 있기 때문인 것 같다.

 

플레이어 컨트롤러의 이벤트 그래프

ㄴ BeginPlay는 스폰될 때 한 번

ㄴ Event Tick은 업데이트될 때마다

 

플레이어 컨트롤러 컴포넌트 속성에 마우스 커서를 표시할 것인지 체크하는 속성이 있다.

 

마우스 커서가 Visible 채널과 충돌하는 위치로 캐릭터를 이동시키는 그래프

 

Input

 프로젝트 세팅 -> Input 에서 Action이나 Axis에 매핑을 추가한 뒤 플레이어 컨트롤러의 이벤트 그래프에서 해당 입력과 관련된 노드를 추가해 사용할 수 있다.

ToggleInput Action을 마우스 좌클릭에 매핑하고 이벤트 그래프에 추가해 눌린 도중에만 캐릭터가 움직이도록 함

 

Skeletal Mesh와 Skeleton

skeletal mesh에는 머터리얼 슬롯, LOD 세팅, 포스트 프로세스 애니메이션 블루프린트 속성을 지정할 수 있다.

 

텍스처 애니메이션

알파 마스킹 텍스처(texture atlas) 와 FlipBook 노드를 이용하여 텍스처 애니메이션을 쉽게 구현할 수 있다.

 

언리얼은 왼손 좌표계를 사용하고 X 축이 앞방향 Z축이 윗방향이다.

 

캐릭터 블루프린트는 character movement 컴포넌트를 갖고 있는데 여기에서 캐릭터의 이동 방향에 따라 캐릭터가 자동으로 회전하도록 (진행방향을 바라보도록) 설정할 수 있다.

 

애니메이션 시퀀스와 애니메이션 블루프린트

애니메이션 fbx 에셋을 임포트하면 생김

 

특정 스켈레톤 대상으로 애니메이션 블루프린트를 생성한다.

 

애니메이션 블루프린트에 GroundSpeed 변수를 만들고 캐릭터의 velocity를 계속 udpate하게 만들고

애니메이션 트랜지션이 일어나게 하는 조건으로 이를 사용할 수 있다.

 

 

블렌드 스페이스1D를 사용하여 걷기와 뛰기의 애니메이션을 블렌딩할 수 있다.

언리얼5 에는 본을 기반으로 애니메이션을 축의 알맞은 지점에 정렬하는 분석 기능이 있다.

 

AI Controller

AI Controller 블루프린트에서 AI MoveTo 노드를 사용해 ai를 NavMeshBoundsVolume 안에서 이동시킬 수 있다.

 

AI의 메시를 플레이어와 구별하기 위해 BP_Bot의 Construction Script에서 Create Dynamic Material Instance 노드를 사용하여 mesh -> 0번째 머터리얼(몸체)의 색상을 설정할 수 있다.

 

파티클

Niagara System을 추가하여 파티클을 제작하고 애니메이션 특정 프레임에 재생되도록 애니메이션에 추가

사운드

meta sound 플러그인을 사용하여 사운드를 만들고 애니메이션 특정 프레임에 재생되도록 애니메이션에 추가

 

애니메이션 특정 프레임에 효과음과 파티클 이펙트를 재생

 

후기

블루프린트 만으로도 이벤트 시스템이나 머터리얼, 플레이어 컨트롤러를 제어할 수 있다는 점이 놀랍다..

씬에 개체들을 추가해나감에 따라 점점 프레임이 떨어진다.. 답답하다..

 

언리얼 4와 비교했을 때 언리얼 5의 가장 큰 특징은 나나이트와 루멘인 듯하다. 본인 그래픽카드가 1060 3gb이고 하드디스크를 사용하고 있어서 그런지 이 속성들을 켜고 작업하기에는 버겁다. 이것들을 끄고 작업을 하더라도 단순한 샘플 프로젝트의 러닝패스를 따라가는데 어려움이 있다.  언젠가 그래픽카드를 약간 업그레이드하고 SSD를 구매할까 생각중이다.

Directional Light (평행광)

SkyLight (Ambient Light : 주변광)

 

평행광과 주변광의 영향을 받지 않는 아이템들은 Unlit이거나 Emmisive이다.

 

밝은 장소와 어두운 장소로 이동할 때 눈에 들어오는 밝기가 서서히 바뀌는 연출 

ㄴ PostProcessVolumed의 Exposure 속성

 

라이트 섀프트

ㄴ Directional Light -> Light shafts 속성

ㄴ 빛 번짐 효과를 제어할 수 있다.

 

다이나믹 라이트와 스태틱 라이트

ㄴ 모바일 환경에서는 static light를 굽는 것이 퍼포먼스 향상에 좋다.

 

루멘 (언리얼 5에 도입)

ㄴ 리얼타임 글로벌 일루미네이션 시스템

ㄴ 소프트웨어 레이트레이싱 혹은 하드웨어 레이트레이싱을 사용할 수 있다.

 

'언리얼 5 > 정리' 카테고리의 다른 글

기초 지식 - 에디터 종류  (0) 2022.10.14
기초 지식 - 기본적인 용어 정리  (0) 2022.10.14
컨테이너  (0) 2022.09.15
AI Controller & Behavior Tree  (0) 2022.09.14
충돌과 UI  (0) 2022.09.14

언리얼에서는 C++의 STL 컨테이너 대신 자체 컨테이너를 제공한다

다양한 플랫폼의 빌드에서 생기는 문제를 피할 수 있다.

 

vector <-> TArray

unordered_map <-> Tmap

string <-> FString

 

'언리얼 5 > 정리' 카테고리의 다른 글

기초 지식 - 기본적인 용어 정리  (0) 2022.10.14
라이팅 설정  (0) 2022.10.05
AI Controller & Behavior Tree  (0) 2022.09.14
충돌과 UI  (0) 2022.09.14
애니메이션  (0) 2022.09.13

AIController

캐릭터 클래스 안에는 APawn의 멤버 AIControllerClass와 AutoPossessAI가 있다.

AIControllerClass = AMyAIController::StaticClass();
AutoPossessAI = EAutoPossessAI::PlacedInWorldOrSpawned;

 

AIController 클래스의 OnPossess 함수

ㄴ Possess 하기 시작하는 순간에 호출되는 함수

 

AIController 클래스의 OnUnPossess 함수

ㄴ Possess 끝날 때 호출되는 함수

 

Behavior Tree와 BlackBoard

BlackBoard : AI에서 사용할 데이터를 모아놓는 저장소

Behavior Tree : BlackBoard에 저장된 데이터를 기반으로 AI가 어떻게 동작할지 결정하는 트리

 

MyAIController 클래스에 두개의 멤버 추가

 

Wait과 MoveTo 사이에 오는 노드 실행에 실패하면 다음 노드 (MoveTo)는 실행되지 않는다.

시퀀스 노드는 왼쪽에서 오르쪽으로 자식 노드를 순서대로 실행한다.

Wait과 Move To 사이에 올 노드에서는 PatrolPos 값을 블랙보드에 갱신하는 작업을 해야 한다. 이것은 BTTaskNode 를 상속받는 클래스로 구현한다.

ExecuteTask 함수를 오버라이드한다.

이 노드를 가지는 OwnerComp는 BehaviorTreeComponent가 될 것이고, ExecuteTask 구현부에서 트리와 연관된 블랙보드에 키-값을 세팅한다.

 

주기적으로 주변을 탐색하여 행동을 결정하는 기능을 구현할 때 (서비스)

ㄴ BTService 클래스를 구현, 실행 주기를 정할 수 있음

 

일정 주기로 주변을 탐색하여 Target 키에 값을 갱신하는 SearchTarget 서비스
데코레이터 정의
블랙보드 키의 상태에 따라 성공 실패 여부가 결정되는 데코레이터 TargetOn, TargetOff

데코레이터는 조건에 따라 노드의 성공 실패 여부를 결정한다.

데코레이터를 양쪽 selector에 추가하여 분기문으로 동작하게 한다.

 

키의 상태만으로 성공 실패를 결정하지 않고 구체적으로 성공 실패를 결정하기 위한 데코레이터는 BTDecorator를 상속받는 클래스를 사용해야 한다.

CanAttack 이름의 노드를 가지는 데코레이터

데코레이터 생성을 위해 BTDecorator 클래스를 상속받는 클래스를 생성한다.

bool 값을 반환하는 함수를 재정의해야 한다. 여기서 반환하는 bool 값이 true면 왼쪽 자식 노드가 성공이다.

 

'언리얼 5 > 정리' 카테고리의 다른 글

라이팅 설정  (0) 2022.10.05
컨테이너  (0) 2022.09.15
충돌과 UI  (0) 2022.09.14
애니메이션  (0) 2022.09.13
Unreal의 기초  (0) 2022.09.12

+ Recent posts