UE5에서 '블루프린트'라는 단어는 두 가지 다른 의미로 사용될 수 있다. 하나는 UE5의 비주얼 스크립팅 언어 또는 에셋의 특정 타입을 의미하며, 다른 하나는 블루프린트 클래스 또는 블루프린트 에셋을 의미한다.
액터는 레벨에 배치할 수 있는 물체다. 이 물체는 C++클래스의 인스턴스이거나 블루프린트 클래스의 인스턴스가 될 수 있다.
두 경우 모두 액터 클래스를 반드시 상속해야 한다. C++와 블루프린트 클래스 사이의 차이점은 무엇일 까?
또한 블루프린트 클래스는 C++ 클래스나 다른 블루프린트 클래스를 상속할 수 있다.
호출될 때 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 값이 절반이므로 이를 상쇄 시킬 수 있다. 결국 서로 다른 프레임 속도로 게임을 실행하는 플레이어들의 결과가 같아지게 된다.
엑터 컴포넌트는 액터 안에 존재해야만 하는 엔티티며, 엑터의 로직을 여러 엑터 컴포넌트에 분산시킬 수 있다. 이 블루 프린트에서는 시각적으로 표현된 4개의 액터 컴포넌트를 볼 수 있다.
컴포넌트 창을 살펴보면, 뷰포트 창에서 살펴본 것 보다 더 많은 액터 컴포넌트를 볼 수 있다. 일부 액터 컴포넌트는 시각적으로 표현되지 않고 순수하게 C++나 블루프린트 코드로만 구성돼 있기 때문이다.
컴퓨터에서 3D물체를 시각적으로 표현하려면 3D 메시와 머티리얼이라는 두 가지 재료가 필요하다. 3D 메시를 사용하면 물체의 모양과 크기를 지정할 수 있는 반면에 머티리얼을 사용하면 색상, 시각적 톤 등을 지정할 수 있다.
메시는 여러 정점, 엣지, 면으로 구성된다. 정점은 단순히 X,Y,Z축의 위치를 나타내는 3D좌표이다. 엣지는 두 정점 사이를 연결한 선이고, 면은 3개 이상의 엣지를 연결한 것이다. 위 그림에서 메시의 개별 정점, 엣지, 면을 볼 수 있으며 각 면은 해당 면에 반사되는 빛의 양에 따라 흰색과 검정색 사이의 색상이 적용돼있다.
머티리얼을 사용하면 메시를 어떻게 표현할지 지정할 수 있다. 메시의 색상을 지정하거나 표면에 텍스처를 적용해 그릴 수 있으며, 각각의 정점을 조작하는 것도 가능하다. 메시를 만드는 일은 블랜더나 마야 같은 다른 소프트웨어에서 작업해야한다.
UE5에서는 액터 컴포넌트 클래스를 상속하는 메시 컴포넌트를 통해 메시를 추가할 수 있다. 여러 종류의 메시 컴포넌트가 있는데 가장 중요한 두 가지 메시 컴포넌트는 애니메이션이 없는 메시(큐브, 스태틱 레벨 지오메트리)에 사용하는 스태틱 메시 컴포넌트와 애니메이션을 갖는 매시(이동 애니메이션을 재생하는 캐릭터)에 사용할 스켈레탈 메시 컴포넌트이다. ThirdPersonCharacter 블루프린트 클래스는 이동 애니메이션을 재생하는 캐릭터 메시를 표시하기 위해 스켈레탈 메시 컴포넌트를 포함한다.
맵에 있는 이 물체의 스태틱 메시 컴포넌트와 관련된 메시 및 머티리얼을 모두 살펴보자
적용된 머티리얼은 보면 이 머티리얼은 다른 머티리얼의 자식 머티리얼이므로 그 부모 머티리얼을 선택해야 한다. 그 부모인 M_Solid를 살펴보도록 하자!
1.그래프: 에디터 가운데 그래프 창이 위치한다. 블루 프린트 에디터의 이벤트 그래프 창과 비슷하게 머티리얼 에디터 그래프 창 또한 노드 기반으로 동작하며, 핀으로 연결된 노드를 찾을 수 있다. 여기는 실행 핀이 없고 입력과 출력 핀만 존재한다
2.팔레트: 화면 오른쪽에 팔레트 창이 있다. 여기서 그래프 창에서 사용할 수 있는 모든 노드의 검색이 가능하다. 그래프 창에서 오른쪽 마우스를 눌러 추가할 노드를 검색할 수 있다.
3.뷰포트: 여기서 머티리얼의 결과를 미리 볼 수 있다. 구체, 큐브, 평면과 같은 기본 모양이 어떻게 나타나는지 확인할 수 있다.
4.디테일: 블루프린트 에디터와 비슷하게 머티리얼 에셋이나 그래프 창에서 현재 선택된 노드의 세부 설정을 볼 수 있다.
5.툴바:화면 상단에 툴바 창이 있다. 툴바에서 머티리얼에 반영한 변경 사항을 저장하고 적용할 수 있으며 그래프 창과 관련된 여러 동작을 수행할 수 있다.
UE5의 모든 머티리얼 에디터에서 해당 머티리얼 에셋의 이름을 가진 노드를 찾을 수 있는데 여기서 이 노드의 핀을 다른 노드에 연결해 머티리얼과 관련된 여러 파라미터를 지정할 수 있다.
위 그래프에서 Roughness핀에 0.7이라는 이름을 가진 노드가 연결된 것을 볼 수 있다. 이 노드는 상수 노드이며 관련된 숫자 값ㅇ르 지정할 수 있다. 단일숫자, 2차원벡터, 3차원 벡터, 4차원 벡터에 대한 상수 노드를 생성할 수 있다.
머티리얼은 여러 입력 파라미터를 갖는다. 그 중 가장 중요하다고 할 수 있는 몇 가지 파라미터를 살펴보자