본문 바로가기

언리얼엔진

2. 블루프린트 클래스 계층구조 / Static Mesh Actor 생성하기

블루프린트 클래스 계층구조

계층 구조

상위 클래스에서 하위 클래스로 내려올수록 점점 구체화된다.

 

- Object : 블루프린트에 최상위 계층

- Actor : 씬(레벨)에 배치될 수 있는 최상위 클래스

- Pawn : 조작할 수 있는 액터

- Character : 물리적인 이동이 가능

 

※Component : 구성요소, 부품

- Actor Component : 액터가 가지는 구성요소, 단순 수치(데이터)를 가진다

- Scene Component : Transform(위치)를 가진다

 

- Controller

- Player Controller : 게임을 하는 플레이어라고 볼 수 있음. Controller는 기본적으로 하나만 존재.

                                  Player가 조작할 Pawn을 선택하는 느낌.

※Posses : 소유, 점유하다. 언리얼엔진에서 빙의한다는 말로 번역되있음.

                  따라서 플레이어가 조작할 대상(Pawn)에 빙의하여 조작한다는 느낌이다.


블루프린트 클래스를 통해 액터(Actor) 만들어보기

블루프린트 클래스 클릭

콘텐츠 브라우저1 창에서 우클릭 - 목록에 있는 블루프린트 클래스를 눌러준다.

여기서 블루프린트 클래스라고 하는데, 이 클래스는 C++에서 우리가 사용했던 class와 같다고 보면 된다.


액터 생성

블루프린트 클래스를 누른 뒤 나온 부모 클래스 선택 창에서 우리가 이번에 만들어 볼 Actor를 선택한다.


콘텐츠 브라우저1에 생성됨

이번엔 BP_Cube라는 이름으로 지었다. 확장자나 따로 붙는 내용이 없기 때문에, 다른 에셋들과 이름이 겹치는 것을 방지해주기 위해서 접두어를 붙여주는 작명방식을 사용하는 것이 좋다.


우리가 만든 BP_Cube에셋을 살펴보기 전에 먼저 에셋 에디터가 실행되는 위치를 바꿔줄 것이다.

편집 - 에디터 개인설정을 통해서 위와같은 창이 뜨면, 일반 / 외형 탭에서 에셋 에디터 실행위치를 Main Window로

바꿔줄 것이다.

New Window는 새창에 띄우고, Cotent Browser는 콘텐츠 브라우저 창에 띄운다는 것이라 잘 쓰이지는 않는다고 한다.


이제 아까 만든 BP_Cube를 더블클릭하면 Main Window에 BP_Cube창이 만들어지면서 클래스 디폴트 탭이 보인다.

스크립트나 변수가 없는 액터는 저렇게 블루프린트 전용 데이터로 기본값만 표시가 될텐데, 세부사항을 보기위해

풀 블루프린터 에디터 열기를 눌러준다.


풀 블루프린트 화면 알아보기

풀 블루프린트 에디터 화면

- 컴포넌트 : 컴포넌트를 추가 및 제거

- 내 블루프린트 : 블루프린트로 만든 클래스의 변수, 함수 등등을 확인하고 편집할 수 있음

- 뷰포트 : 시각적으로 어떤 형태를 나타내고 있는지 보고 조정할 수 있다. 기본적으로 흰 구체가 보이는데,

                이는 현재 아무 것도 없다는 것이다. 흰 구체는 중심을 나타내고 있다고 보면 된다.


무언가 볼 수 있게 만들어 보기 위해서 컴포넌트를 추가할 것이다.

컴포넌트에서 컴포넌트 추가 - Static Mesh를 추가해준다.


Cube로 이름을 지어줌

 Cube로 이름을 변경해줬다. 컴포넌트를 추가하면 DefaultSceneRoot 컴포넌트의 자식으로 추가가 된 것을 볼 수 있다.

 

기본적으로 트랜스폼을 담고 있는 SceneComponent가 생성이 되어있는 것인데, Static Mesh를 추가해주었으므로

Cube를 클릭 후 DefaultSceneRoot의 위에 드래그 앤 드롭해주면 Cube(Static Mesh Component)가 새로운

Root Component로 바뀌게 된다.


이후에 뷰포트와 디테일을 보면 뷰포트에서는 흰 구체가 사라졌고, 디테일 / 트랜스폼에서는 스케일만 보인다.

Static Mesh Component를 만들어두고 아직 Static Mesh를 연결해주지 않아서 그렇기 때문이다.

따라서 먼저 외형을 만들어줄 것이다.


이제 우리가 만들었던 BP_Cube가 보있는 콘텐츠 브라우저1이 보일 것이다.

콘텐츠 브라우저1에서 우측 하단에 뷰 옵션 - 엔진 콘텐츠 표시를 체크해준다.


1. 소스패널을 눌러 소스패널을 표시하고

2. 엔진 콘텐츠를 클릭해준 뒤

3. BasicShapes 폴더를 들어간다.

 

스태틱 메시인 Cube를 사용하기 위해서 콘텐츠 폴더로 Cube를 옮겨주는데,

중요한 것은 여기서 꼭! 복사로 옮겨주어야 한다는 것이다.

엔진 콘텐츠의 폴더 안에 있는 것은 엔진 공용이라서 이동해버리면 찾을 수 없어지기 때문이다.


다시 BP_Cube의 풀 블루프린트 화면으로 돌아와서 아까 가져왔던 Cube StaticMesh를 Static Mesh 칸에 넣어준다.

이후에 아무것도 없는 뷰 포트에서 Cube가 보이는 것을 볼 수 있다.

 

StaticMesh : 기본적으로 삼각형들이 모여서 물체가 만들어지는데, 삼각형들이 모여서 그물처럼 보인다.

                        그래서 Mesh(그물)이라고 하는데, Static은 정적이라는 뜻으로 변화가 없는 물체를 말한다.


언리얼엔진4에서는 렌더링에서 PBR 기법을 사용한다.

PBR(Physics Based Rendering) : 물리 기반 렌더링

 

이제 BP_Cube에 머티리얼을 추가해주기 위해서 콘텐츠 브라우저1로 돌아간다.

우클릭 - 바로 보이는 머티리얼을 추가해주면 된다. 이름은 M_Cube로 변경해주었다.

그 후, 만들어진 M_Cube를 더블클릭하여 M_Cube의 에셋 에디터를 열어준다.


머티리얼 에셋 에디터 화면 살펴보기

기본 화면



BaseColor로 이름 변경을 해준다. 핀 5개가 보일텐데 바로 RGBW를 뜻한다.


원하는 핀과 저렇게 직접 연결하여서 색상을 바꿔주면 뷰포트의 머티리얼의 색상이 바뀌는 것을 볼 수 있다.

 

그런데 여기서 다른 핀으로 바꿔도 색이 그대로인 것을 볼 수있다.

Color는 float4로 RGBW의 값을 받는데, 하나의 색상만 받아와도 다른 모든 RGB의 값이 동일하게 바뀌기 때문이다.


이번에는 ScalarParamter를 추가해준 뒤, Metallic으로 이름을 변경해준다.

그리고 바로 M_Cube 리스트에서 이름이 같은 Metallic에 핀을 연결해줄 것이다.


Metallic끼리 핀을 연결해준 다음, Metallic의 디테일 창에서 Default Value를 통해 머티리얼의 광택효과를 나타낼 수 있다.

금속과 같은 효과를 나타낸다고 생각하면 된다.


마찬가지로 Roughness(거칠기의 정도)를 추가해줄 것이다.

ScalarParamter를 추가해주고, Roughness로 이름을 변경한다. 같은 이름의 러프니스에 핀을 연결해주면, 뷰포트에서

바로 머티리얼이 변하는 것을 볼 수 있다.

 

디테일 창을 살펴보면 Default Value가 0.0으로 되어있는데, 이는 거칠기가 0인 완전히 매끈하다는 것을 뜻하므로,

1.0으로 값을 변경해주면 반사되지 않는 흰 구체로 되돌아온다.


지금까지 물질의 속성을 기반으로 수치를 조절하면서 표현하는 것을 PBR(Physics Based Rendering) 방식을 알아보았다.

이렇게 만든 머티리얼을 BP_Cube의 머티리얼에 넣어주도록 하겠다.

추가해주면 뷰포트에서 Cube의 상태가 바로 변하는 것을 미리 볼 수 있다.


플레이 화면에서 확인하기

마지막으로 콘텐츠 브라우저1에서 완성한 BP_Cube를 뷰포트 화면에 드래그하여 놓으면,

우리가 만들었던 광택이 나면서 매끈한 머티리얼의 Cube를 직접 볼 수 있다!!