[UE5] 언리얼 기초 다지기

칼든개구리·2024년 12월 18일
0

[언리얼TO리얼]

목록 보기
33/42

블루프린트 액터

UE5에서 '블루프린트'라는 단어는 두 가지 다른 의미로 사용될 수 있다. 하나는 UE5의 비주얼 스크립팅 언어 또는 에셋의 특정 타입을 의미하며, 다른 하나는 블루프린트 클래스 또는 블루프린트 에셋을 의미한다.

액터는 레벨에 배치할 수 있는 물체다. 이 물체는 C++클래스의 인스턴스이거나 블루프린트 클래스의 인스턴스가 될 수 있다.
두 경우 모두 액터 클래스를 반드시 상속해야 한다. C++와 블루프린트 클래스 사이의 차이점은 무엇일 까?

  • C++클래스에서 프로그래밍 로직을 추가하면 블루프린트 클래스를 생성하는 것과 비교해 더욱 고급인 엔진 기능을 사용할 수 있다.
  • 블루프린트 클래스에서는 3D 메시나 트리거 박스 콜리전과 같은 해당 클래스의 시각적 컴포넌트를 쉽게 살펴보고 편집할 수 있으며 에디터에 노출시킨 C++ 클래스에 정의된 속성도 변경할 수 있다. 이 방법을 사용하면 훨씬 쉽게 속성을 변경할 수 있다.
  • 블루프린트 클래스에서는 프로젝트의 다른 에셋을 쉽게 사용할 수 있다. 반면 C++에서는 다른 애셋을 사용할 수 있지만 블루프린트에 비해 좀 더 복잡하다.
  • 블루프린트 비주얼 스크립팅에서 동작하는 프로그래밍 로직은 C++클래스에서 실행되는 로직과 비교할 때 성능 측면에서 속도가 더 느리다.
  • 소스 버전 관리 플랫폼에서 두 명 이상의 사용자가 동시에 C++ 클래스를 작업할 때 충돌 없이 관리 할 수 있다. 반면 블루프린트 클래스는 텍스트 파일 대신 바이너리 파일로 변환된다. 따라서 두 명 이상의 사용자가 동일한 블루프린트 클래스 편집할 때 소스 버전 관리 플랫폼에서 충돌이 발생할 수 있다.

또한 블루프린트 클래스는 C++ 클래스나 다른 블루프린트 클래스를 상속할 수 있다.

Tick 함수

호출될 때 Delta Seconds라는 이름의 파라미터를 제공한다. 이 플로트 파라미터는 이전 프레임이 렌더링된 이후로 지난 시간의 양을 의미한다. 게임이 30 fps의 속도로 실행되면 렌더링 되는 각 프레임 사이의 간격은 평균 1/30초이며 대략 0.033초이다. 프레임 1이 렌더링된 후 프레임 2가 0.2초 후에 렌더링됐다면 Delta Seconds는 0.2초이다. 프레임 3이 프레임 2보다 0.1초 후에 렌더링됐다면 프레임 3의 Delta Seconds는 0.1초가 된다.
Delta Seconds 파라미터가 왜 중요할까? 다음 시나리오를 살펴보자
Tick 이벤트를 사용해 프레임이 렌더링될 때마다 z축으로 1 유닛(언리얼 기준 1cm)씩 위치를 증가시키는 블루프린트 클래스를 작성했다. 여기서 문제에 직면한다. 실제 플레이어들은 서로 다른 프레임 속도로 게임을 실행할 가능성이 있다. 60FPS의 속도로 게임을 실행하는 플레이어는 30FPS의 속도로 게임을 실행하는 플레이어보다 두 배 더 많이 Tick 이벤트를 호출하며 이 때문에 블루프린트 클래스는 결국 두 배 더 빠른 속도로 이동한다. 바로 이 때 Delta Seconds가 중요한 역할을 한다. 60FPS의 속도로 실행되는 게임은 더 작은 Delta Seconds 값을 갖고 Tick 이벤트가 호출되기 때문에(렌더링 되는 프레임의 사이 간격이 더 작다) 이 값을 z축의 위치를 변경하는데 사용할 수 있다. 60FPS의 속도로 실행되는 속도로 실행되는 게임에서 Tick 이벤트가 두 배 더 많이 실행되겠지만, Delta Seconds 값이 절반이므로 이를 상쇄 시킬 수 있다. 결국 서로 다른 프레임 속도로 게임을 실행하는 플레이어들의 결과가 같아지게 된다.

🙆ThirdPersonCharacter


엑터 컴포넌트는 액터 안에 존재해야만 하는 엔티티며, 엑터의 로직을 여러 엑터 컴포넌트에 분산시킬 수 있다. 이 블루 프린트에서는 시각적으로 표현된 4개의 액터 컴포넌트를 볼 수 있다.

  • UE5 마네킹을 보여주는 스켈레탈 메시 컴포넌트
  • 플레이어에게 게임 화면을 보여주는 카메라 컴포넌트
  • 캐릭터의 방향을 알려주는 화살표 컴포넌트
  • 이 캐릭터의 충돌 범위를 지정하는 캡슐 컴포넌트

컴포넌트 창을 살펴보면, 뷰포트 창에서 살펴본 것 보다 더 많은 액터 컴포넌트를 볼 수 있다. 일부 액터 컴포넌트는 시각적으로 표현되지 않고 순수하게 C++나 블루프린트 코드로만 구성돼 있기 때문이다.

메시와 머티리얼의 사용법 탐험

컴퓨터에서 3D물체를 시각적으로 표현하려면 3D 메시와 머티리얼이라는 두 가지 재료가 필요하다. 3D 메시를 사용하면 물체의 모양과 크기를 지정할 수 있는 반면에 머티리얼을 사용하면 색상, 시각적 톤 등을 지정할 수 있다.

👕메시

메시는 여러 정점, 엣지, 면으로 구성된다. 정점은 단순히 X,Y,Z축의 위치를 나타내는 3D좌표이다. 엣지는 두 정점 사이를 연결한 선이고, 면은 3개 이상의 엣지를 연결한 것이다. 위 그림에서 메시의 개별 정점, 엣지, 면을 볼 수 있으며 각 면은 해당 면에 반사되는 빛의 양에 따라 흰색과 검정색 사이의 색상이 적용돼있다.

🟢머티리얼

머티리얼을 사용하면 메시를 어떻게 표현할지 지정할 수 있다. 메시의 색상을 지정하거나 표면에 텍스처를 적용해 그릴 수 있으며, 각각의 정점을 조작하는 것도 가능하다. 메시를 만드는 일은 블랜더나 마야 같은 다른 소프트웨어에서 작업해야한다.

UE5에서는 액터 컴포넌트 클래스를 상속하는 메시 컴포넌트를 통해 메시를 추가할 수 있다. 여러 종류의 메시 컴포넌트가 있는데 가장 중요한 두 가지 메시 컴포넌트는 애니메이션이 없는 메시(큐브, 스태틱 레벨 지오메트리)에 사용하는 스태틱 메시 컴포넌트와 애니메이션을 갖는 매시(이동 애니메이션을 재생하는 캐릭터)에 사용할 스켈레탈 메시 컴포넌트이다. ThirdPersonCharacter 블루프린트 클래스는 이동 애니메이션을 재생하는 캐릭터 메시를 표시하기 위해 스켈레탈 메시 컴포넌트를 포함한다.

UE5에서 머티리얼 조작하기


맵에 있는 이 물체의 스태틱 메시 컴포넌트와 관련된 메시 및 머티리얼을 모두 살펴보자

🟢머티리얼


적용된 머티리얼은 보면 이 머티리얼은 다른 머티리얼의 자식 머티리얼이므로 그 부모 머티리얼을 선택해야 한다. 그 부모인 M_Solid를 살펴보도록 하자!

1.그래프: 에디터 가운데 그래프 창이 위치한다. 블루 프린트 에디터의 이벤트 그래프 창과 비슷하게 머티리얼 에디터 그래프 창 또한 노드 기반으로 동작하며, 핀으로 연결된 노드를 찾을 수 있다. 여기는 실행 핀이 없고 입력과 출력 핀만 존재한다
2.팔레트: 화면 오른쪽에 팔레트 창이 있다. 여기서 그래프 창에서 사용할 수 있는 모든 노드의 검색이 가능하다. 그래프 창에서 오른쪽 마우스를 눌러 추가할 노드를 검색할 수 있다.
3.뷰포트: 여기서 머티리얼의 결과를 미리 볼 수 있다. 구체, 큐브, 평면과 같은 기본 모양이 어떻게 나타나는지 확인할 수 있다.
4.디테일: 블루프린트 에디터와 비슷하게 머티리얼 에셋이나 그래프 창에서 현재 선택된 노드의 세부 설정을 볼 수 있다.
5.툴바:화면 상단에 툴바 창이 있다. 툴바에서 머티리얼에 반영한 변경 사항을 저장하고 적용할 수 있으며 그래프 창과 관련된 여러 동작을 수행할 수 있다.

UE5의 모든 머티리얼 에디터에서 해당 머티리얼 에셋의 이름을 가진 노드를 찾을 수 있는데 여기서 이 노드의 핀을 다른 노드에 연결해 머티리얼과 관련된 여러 파라미터를 지정할 수 있다.

위 그래프에서 Roughness핀에 0.7이라는 이름을 가진 노드가 연결된 것을 볼 수 있다. 이 노드는 상수 노드이며 관련된 숫자 값ㅇ르 지정할 수 있다. 단일숫자, 2차원벡터, 3차원 벡터, 4차원 벡터에 대한 상수 노드를 생성할 수 있다.

머티리얼은 여러 입력 파라미터를 갖는다. 그 중 가장 중요하다고 할 수 있는 몇 가지 파라미터를 살펴보자

  • BaseColor: 단순히 머티리얼의 색상을 의미한다. 일반적으로 물체에 특정 색상을 적용하거나 텍스트를 매핑하기 위해 단색이나 텍스처 샘플 노드를 이 핀에 연결한다.
  • Metallic: 이 파라미터는 물체의 표면에 얼마나 금속성을 나타낼지를 결정한다. 0(비금속)에서 1(완전 금속) 사이의 단일 상수 노드를 연결해 설정할 수 있다.
  • Specular:이 파라미터는 물체가 얼마나 많은 양의 빛을 반사할지 결정한다. 0(빛을 반사시키지 않음)에서 1(모든 빛을 반사시킴)사이의 단일 상수 노드를 연결해 이 파라미터를 결정할 수 있다. 물체가 이미 금속성을 많이 띠는 경우 이 값을 설정하더라도 변화가 거의 없거나 아예 없다
  • Roughness: 이 파라미터는 물체 표면에 반사되는 빛을 얼마나 산란시킬지를 결정한다(빛이 더 많이 산란될수록 물체가 주변의 빛을 덜 반사시킨다). 0(물체가 거울과 같은 효과를 낸다)에서 1)물체 표면의 반사가 흐려진다) 사이의 단일 상수 노드를 연결해 파라미터를 설정할 수 있다.
profile
메타쏭이

0개의 댓글