본문 바로가기
메타버스기반게임콘텐츠기획/스터디(언리얼 프로젝트)

언리얼 초보의 레벨 만들기 4 - 레벨 만들면서 알게 된 점, 필요한 팁 (액터 고정, 콜리전?, 머티리얼 색 바꾸기/글씨 넣기)

by Queenut 2022. 2. 10.

언리얼 초보의 레벨 만들기 1: https://queenut-01.tistory.com/104

언리얼 초보의 레벨 만들기 2: https://queenut-01.tistory.com/105

언리얼 초보의 레벨 만들기 3: https://queenut-01.tistory.com/106

에 이어서...

 

10. 액터 고정

스케일 고정은 해당 액터의 트랜스폼에서 할 수 있다.

 

그렇다면 위치와 회전은?

디테일의 피직스에서 할 수 있다.

바닥이나 벽면같이 움직이지 않을 액터들에 대해 잠금해두면 혹시 움직일까봐 액터 선택할때 조마조마하지 않아도 된다!

 

 

 

 

11. 콜리전.

쓰레기봉투가 있다. 다른 것은 움직이지 못하지만 하나 만큼은 작아서 데굴데굴 굴러다니게 만들고 싶다.

-그럼 물리연산만 체크하면 될까? 바닥을 뚫고 사라짐...

-그럼 콜리전을 추가하면 될까?

 

피직스 혹은 콜리전과 관련된 변화

1. 트랜스폼 모빌리티가 무버블이다.

 

2. 피직스에 체크되어있다(어쩔때 가능하고 어쩔 때 불가능한거지?

 

3. 콜리전 프리셋에 변화가 있다

 

메쉬 에디터에서,

4. 콜리전에 변화가 있다.

 

 

 

 

12. 머티리얼의 색 바꾸기

색깔로 구분하는 퀴즈가 있다.

때문에 원하는 색의 머티리얼을 구해야하는데 쉽지 않았다.

항상 조금씩 아쉽거나, 질감이 맘에 들지 않곤 했기에 직접 만들어야 할 필요성을 느꼈다.

 

아주 간단한 수준으로 진행해서 피상적일 수 있다.

 

 

12-1. 머티리얼 인스턴스

머티리얼을 만지는 가장 쉬운 방법은 인스턴스를 생성하는 것이다.

 

먼저, '이거 색만 좀 바꾸고 싶은데...' 싶은 머티리얼을 찾는다.

보통 내가 주고 싶은 재질이나 느낌을 띠는 것을 찾았다.

색은 어떻게 바꾼다지만, 질감의 느낌은 따라할 수 없기 때문에 우선순위로 두었다.

 

그럼 친절하게 파라미터 그룹에 컬러가 있다.

컬러만 있는 것은 아니다.

 

만약 없다면?

부모 머티리얼을 찾아가자.

그럼 베이스에 연결된 Constant(대체로 Constant3Vector)가 있다. 

우클릭, 파라미터로 변환.

파라미터 이름은 직접 지정.

적용을 해주면 인스턴스에서 파라미터를 조정할 수 있게 된다.

 

 

다만 두 가지 문제가 생길 수 있는데....

1. 쉽게 조정할 수 있는 Constant가 없는 경우.

2. 부모 머티리얼의 색이 섞여서 원하는대로 나오지 않는 경우.

 

그러면 머티리얼을 그냥 새로 만드는 편이 더 낫다.

 

 

 

12-2. 새 머티리얼 만들기.

 

콘텐츠 브라우저에 우클릭으로 새 머티리얼을 만들고,

색을 변화시키는게 목적이므로 베이스 컬러에 Constant3Vector 노드를 연결한다.

 

그리고 아까 찾은 머티리얼에 들어가면 연결된 텍스처들이 많다. 다 가져오도록 하자!

아마, 찾은 머티리얼 또한 머티리얼 인스턴스일 경우가 많을 것이다. 

잘 만들어진 인스턴스의 파라미터 그룹엔 텍스처 맵이 있는데 그것을 찾아서(돋보기 아이콘을 누르면 해당 텍스처로 콘텐츠 브라우저가 이동한다.) 새롭게 만든 머티리얼에 드래그해 놓으면 된다.

 

그럼 이런 식으로 된다.

연결되는 베이스 컬러를 파라미터로 만들어두면 인스턴스를 생성해서 조정할 수 있다.

 

이 방법의 단점은 본래의 머티리얼이 가진 퀄리티가 확연히 낮아진다는 점이다.

 

 

 

20220210 업데이트

12-3. Albedo 수정.

에셋을 설치하며 만들어진 머티리얼 인스턴스를 열어보면 항상

Albedo란 파라미터가 있었다.

 

머티리얼을 생성하면 보이는 결과 노드에는 없는 항목이기에 그동안 건드리지 않고 넘어갔는데,

어떤 언리얼 영상을 보다가 알게 됐다.

(어떤 영상: https://www.youtube.com/watch?v=eK4mc-D82A8 : 레벨 만들기 2에서 소개한 데칼 영상)

 

Albedo는 그 머티리얼 인스턴스의 색을 나타내는, 베이스 컬러와 비슷한 역할이었다!

즉, Albedo를 바꾸면 머티리얼의 색을 바꿀 수 있다.

 

1. 파라미터 그룹에 Albedo텍스처 맵과 연결된 Albedo가 있다면.

포토샵을 통해 해당 텍스처의 색을 하얗게 만들거나, 그것이 어렵다면 그냥 흰색 PNG 파일을 넣어 바꾼다.

그러면 엔진 에디터를 통해 색을 섬세하게 조정할 수 있는 머티리얼 인스턴스가 된다.

그 후에, Albedo Tint를 조정하자.

 

2. 텍스처 맵만 있는데요.

그럼... 어쩔 수 없지...

부모 머티리얼에서 Albedo 파라미터를 만들 수 없다면 그때그때 색을 바꿔가며 색이 다른 PNG파일을 넣어야 한다.

 

 

머티리얼 자체의 질감도 챙기고, 색도 내 마음대로 할 수 있는 가장 좋은 방법이다.

 

 

 

13. 머티리얼에 글씨나 무늬 넣기.

특정 메시에 일정 행동을 거치고 나면 일정 무늬나 글씨가 떠올라야 했다.

나는 레벨이라 시스템적으로 어떻게 만드는지 모르지만,

일단 내가 할 수 있는 것을 마치고 넘겨야 겠다고 생각했다.

 

 

이번엔 피상적임을 넘어 꼼수에 가깝기 때문에 나같은 초보이면서, 급한 사람만 참고하길 바란다.

 

 * 앞서, 노드 개념 설명

(급한 사람은 구분선 아래로)

머티리얼의 결과 노드엔 여러가지 항목이 있다.

머티리얼 생성 시 기본 결과 노드.

언리얼 엔진 공식 홈페이지 참조.

베이스 컬러: 물리기반 측면에서 중요. 머티리얼의 전체적인 색을 정의하며, RGB(Vector3)값을 받아 각 채널 값을 0과 1 사이로 제한한다.

물리기반 측면에서 중요하다는 것은 빛의 작용에 대한 정의라는 뜻. 자연스러움을 더해주고 해당하는 모든 프로퍼티가 0에서 1사이의 값을 받지만 반드시 해당되는 것만 빛의 작용을 그리는 것은 아니다.

1. 텍스처를 연결하거나 Vector3값을 연결할 수 있다(동시엔 불가능).
2. 정해진 이미지에 색을 섞을 수 있다(흰 색이 변하고, 검정은 보존).
3. 검정색을 변화시키고 흰색을 보존하는 방법... 인데 노드 이름을 모르겠음.. / 출처: https://docs.unrealengine.com/4.27/ko/RenderingAndGraphics/Materials/MaterialInputs/

 

Metallic: 물리기반 측면에서 중요. 표면의 금속성 제어. 0은 비금속, 1로 갈수록 금속. 보통 순수한 금속, 돌은 0 혹은 1이지만 부식, 먼지 등의 혼합 표면을 만들 때 사이의 값을 가진다.

같은 머티리얼에 메탈릭만 변화를 준 모습. 좌측 0, 우측 1. 0일때 비금속, 1일때 금속성을 띤다.

 

스페큘러: 물리기반 측면에서 중요. 비금속 표면 머티리얼 편집시, 빛을 반사하는 성질을 조정할 때 사용한다. 0은 반사가 없고, 1로 갈수록 반사율이 높아진다. 난반사 머티리얼을 만들 때 사용하기보단, 노멀맵에 표현된 균열의 미세한 차폐나 그늘을 추가할 때 사용된다.

같은 머티리얼의 스페큘러 차이. 좌측 0, 우측 1. 0일때 매우 매트해보이고, 1로 갈수록 빛을 반사한다.

 

러프니스: 물리기반 측면에서 중요. 표면의 거칠고 부드러운 정도. 거친 재질은 빛이 보다 여러 방향으로 퍼지므로(난반사) 리플렉션이 얼마나 희미하거나 선명한지, 아니면 스페큘러 하이라이트가 얼마나 퍼져있는지 모여있는지로 확인된다. 또한 텍스처를 연결해 액터 표면에 텍스처가 나타나게 할 수 있다. 물리 기반이 어렵다면 보통 이걸 작업한다.

같은 러프니스의 머티리얼 차이. 좌측 0, 우측 1.

표면에 텍스처가 나타나게 한 다는 것이, 글씨 넣듯 선명하게 만드는 것이 아니다. 다만 텍스처 모양의 질감을 가진 것처럼 나타낼 뿐.

 

이미시브 컬러: Emissive: 방출되는 = 발광색. 빛을 뿜는 글로우 효과. 글로우 컬러와 글로우 부분을 제외하는 마스크 텍스처를 더해(Multiply) 1보다 더 큰 값을 가질 수 있는 프로퍼티. 1보다 커지면 글로우 밝기가 세진다.

보통 이미시브 컬러 노드 연결. 밝게 하고 싶은 마스크+색깔에 밝기 강도를 정할 Constant를 더하고 연결해준다.
이미시브 컬러 밝기 좌측 1, 우측 10.
이미지 자체를 밝게 하고 싶다면, 숫자를 연결해서 수치 입력하면 된다.

 

오파시티: Opacity = 불투명함. 0은 투명함, 1은 불투명함을 나타낸다.

처음 머티리얼을 만들땐 해당 프로퍼티가 비활성화되어 있다. 머티리얼 디테일 창의 Blend Mode를 Translucent, Additive, Modulated로 바꾸면 된다.

자세한 종류는 나중에!
검은 부분이 메쉬상에서 잘려나간다.
베이스 컬러 없이 오파시티만 연결했을 때. 잘려나가는 부분은 동일하다.
반대로 검은 부분을 남기고 싶다면 이렇게.
반투명하게 만들기.
???

 

오파시티 마스크: 불투명도 마스크. Blend Mode가 Masked일때만 사용 가능하다. 0~1 사이의 값. 다만, 오파시티와 달리 결과에는 다양한 농도의 그림자가 보이지 않는다. 철망이나 쇠사슬 담장같은 복합적인 입체면에 유용하다. Translucent보다 비용이 낮다.

Blend 설명때 다시.

 

노말: 같은 메시에 표면의 물리적 디테일을 더해주는 프로퍼티. 보통 적외선 체온계처럼 파란 바탕에 붉고 노랗고 초록색인 선이나 색이 그려져있고, 표면의 질감을 나타내기도 한다. 

 

월드 포지션 오프셋: 머티리얼을 통해 메시의 버텍스를 월드 스페이스에서 조작할 수 있다. 오브젝트를 움직이고, 모양을 바꾸고, 회전하는 등 여러 효과를 낸다.

물결치듯 흔들리는 나뭇잎 머티리얼과 같은 걸까?

 

Subsurface Color: Shading Model을 Subsurface로 할 때만 활성화. 머티리얼에 색을 추가해 빛이 표면을 통과할 때 색 변환 효과 시뮬레이션이 가능하다. 

 

앰비언트 오클루전: 표면의 틈 안에 벌어지는 자체 그림자 효과. 보통 AO맵이라고도 한다. (노말과 비슷?)

출처: https://docs.unrealengine.com/4.27/ko/RenderingAndGraphics/Materials/MaterialInputs/

 

굴절Refraction: 표면의 굴절 지수. 빛을 투과하는 유리잔이나 물과 같은 것에 사용. 

 

 

머티리얼의 표현식은 대부분 각각의 컬러 채널에 독립적으로 연산된다.

Add 노드를 통해 RGB1과 RGB2를 더하면 RGB1+RGB2가 아니라 R1+R2, G1+G2, B1+B2 인 것이다.

때문에 채널 수가 같아야 한다.

단, 단일 채널(스칼라)값+다수 채널일 경우에만 예외로 모든 채널에 스칼라 값을 동일하게 더해버린다.

 

 

 


 

원형이 되는 머티리얼은 가만히 두고, '무늬가 추가된 새 머티리얼'을 만들자.

12-2의 방법을 사용한다.

 

새 머티리얼을 만들고

이미시브 컬러에 표면에 드러내고 싶은 무늬 텍스처 연결!

 

다만 이 머티리얼은 언리얼 엔진에서 기본으로 제공되는 Cube 나 Plane에나 사용할 수 있다...

상호작용 후, 퍼즐을 풀기 위한 조각이 된다.

지금 이것은 텍스처 모양대로 '발광'하는 것이기 때문에 검은색을 나타낼 순 없었다...

아직 방법 못찾음...!

 

그래도 좀 넓적한 메시에는 쉽게 나타낼 수 있다.

다만 텍스처의 어느 부분에 글씨를 넣어야 나타날지는 셀프로 찾아야 했다...