본문 바로가기

모델링

어색하지않은 바닥 텍스처 만들기 (하)

안녕하세요 아론입니다.

이번편은 전편에 블랜더를 이용해서 만든 ground텍스처를 이용하여 언리얼5기준으로 바닥 배치해볼 계획입니다.

 

1. 리소스 가져오기 및 머티리얼 생성

1. 이전 시간에 만든 ground 이미지를 GroundTexture라는 이름으로 수정하여 폴더 Texture에 가져옵니다.

2. 마우스 우측 클릭후 머티리얼을 새로 생성하고 이름은 MM_Ground라 지정합니다.

3. 머티리얼의 간단한 수정이 필요할때 매번 MM_Ground를 열어야할 필요성이 없기에 완성된 머티리얼을 캐싱하는 머티리얼 인스턴스

또한 마우스 우측 클릭으로 새로 생성하여 MI_Ground라 지정합니다.

4. 우리는 MM_Ground 머티리얼을 우선 시 작업해보겠습니다. MM_Ground를 더블클릭하여 머티리얼 그래프를 열어줍니다.

 

위 프로젝트는 제 토이 프로젝트 내에서 작업을 진행중이었기에 실습을 따라하시는분들 기준에서는 조금 다른 모습으로 보이실수있습니다.

 

2. 타일링 머티리얼 MM_Ground 만들기

우리는 바닥 전체를 Ground 텍스처 단일로 맵핑하는 머티리얼이 아닌 일정한 크기로 반복되는 패턴을 나타낼수있는

머티리얼을 MM_Ground로 만들어보려합니다.

1. 위 사진처럼 배치하기위해 마우스 우측클릭후 VectorParameter 입력하여 노드를 추가해줍니다.

2. 추가한 VectorParameter는 추후 머티리얼의 디자인을 간편하게 수정할 색상을 변수화 하는 과정입니다 변수가 헷깔리지않게

Color1, Color2로 이름을 수정합니다.

3. 하단 콘텐츠 드로어에서 GroundTexture를 머티리얼 그래프로 드래그 앤 드랍해서 가져옵니다.

4. 우리는 GroundTexture로 흰색은 Color1에 가까운 색상으로 표현할계획이고 검정색은 Color2에 가까운 색으로 표현할

계획입니다. 두색을 보간할 Lerp 노드를 추가합니다.

5. 위 자료 사진과 같이 Lerp, 텍스처 컬러를 이어주세요.

6. 좌측에 디테일 뷰의 도형을 큐브로 선택합니다.

 

Lerp 노드 설명

우리가 작업을 하기 이전 반드시 알아야할 노드 Lerp(선형보간)의 설명을 하겠습니다.

기본적으로 프로그래머에게는 선형보간은 아주 친숙한 함수입니다.

다크소울류와 같은 액션게임에서는 플레이어를 스무스하게 따라오는 카메라가 선형보간을 적용받고있습니다.

메이플 스토리의 플레이어를 뒤 따라오는 펫 또한 일정한 거리를 두고 플레이어를 따라오는 모습에서도 선형보간이 사용됩니다.

이와 같이 Lerp란 연출에서 다양한 모습으로 사용되지만 역할은 아주 간단합니다.

 

주워지는 매개값 A를 시작값으로, B는 도착값이라 지정했을시 (alpha)0부터1까지의 실수값으로 보간(맵핑)하여 

원하는 값을 반환하는것이 Lerp 선형보간의 역할의 끝입니다.

 

이를 공식으로 표현하면 더욱 쉽습니다.

A 초기값 , B 도착값 , alpha 원하는 값

1. A - B = C

2. C * alpha + A = 결과값

 

위 공식을 기준으로 수를 대입하여 보여드리겠습니다.

 ex) A가 3, B가 23이라면

0.5에 기준하는 값이 무엇인가?

 

1. (B)23-(A)3 =  20(C)

2.  (20 * 0.5) + 3(A) = 13

즉 3에서23을 보간했을 시 0.5에 해당하는 중간값은 13인걸 알수있습니다.

0.5보간된값이 13이 맞는지 의심이 되면 0부터 1까지를 모두 출력해볼까요?

 

0.0 = 0

0.1 = 5

0.2 = 7

0.3 = 9

0.4 = 11

0.5 = 13

0.6 = 15

0.7 = 17

0.8 = 19

0.9 = 21

1.0 = 23 

 

이와 같이 일차원의 경우를 기준으로 설명드렸을 시 암산으로도 선형보간의 값을 구하기는 쉽지만

이를 2차원 또는 color와 같이 3,4차원의 실수값을 가진다면 Lerp라는 함수의 도움이 필요로합니다.

색상으로 Lerp를 표현한다면 0,0,0의 흰색은 Color1의 녹색이 표현되고 1,1,1의 검정은 파란색으로 표현될겁니다.

그리고 alpha를 ground텍스처의 컬러값으로 이어줬기때문에 단색이 아닌 ground의 질감으로 출력됩니다.

 

다음은 우리가 만든 머티리얼을 랜드스케이프를 새로 배치하여 적용시켜보겠습니다.

 

3. 랜드스케이프 생성 및 머티리얼 인스턴스 셋팅

1. 기본 생성된 바닥은 아웃라이너에서 클릭하여 삭제합니다.

2. 상단 선택모드를 클릭하고 랜드스케이프를 선택합니다.

3. 랜드스케이프 생성을 누릅니다.

4. 생성이 완료되었다면 하단 콘텐츠 드로어에서 이전에 만들어둔 MI_Ground를 더블클릭합니다.

 

 

5. 우측 디테일 일반의 부모를 방금 만들었던 MM_Ground를 찾아서 선택합니다.

6. 우측 디테일 파라미터 그룹의 Color1, Color2를 활성화합니다

7. 원하는 두가지 섞을 색상을 선택합니다.

8. 현제 상태를 저장하고 닫기를 누릅니다.

 

4. 랜드스케이프 머티리얼 적용

1. 아웃라이너에서 이전에 생성한 랜드스케이프를 선택

2. 디테일에서 랜드스케이프 머티리얼을 방금 디자인한 MI_Ground를 선택

 

이때 보시면 우리가 원하는 방향과는 같이 타일링이 이루어지는 바닥 타일은 만들어졌지만

촘촘한 바닥 타일이 오히려 어색해보이는 감이 있습니다.

 

이유는 바닥에 비해 타일 패턴이 촘촘히 박혀있는 모습, 그리고 우리가 만든 강한 강한것도 있겠네요

이를 보안하기위해 MM_Ground를 조금더 수정해보겠습니다.

MM_Ground를 더블 클릭하여 머티리얼 그래프를 열어줍니다.

 

5. 월드좌표 기준의 노이즈 패턴 머티리얼 리터치

1. 머티리얼 그래프가 열였다면 새로운 노드 Absolute World Position 노드를 생성합니다.

이때 만약 노드가 검색해도 나오지않는다면 "World"를 먼저 입력하면 나타날수있습니다.

2. xyz를 다음 새로 추가하는 노드 Mask를 생성하여 이어줍니다.

이때 xy 출련단을 이어주셔도 상관없습니다. 바닥 타일을 기준으로 하는 지금의 머티리얼은

z축의 정보가 필요없기 때문이죠, 오히려 xy를 이어주는게 정확한 답이 될것입니다.

이는 월드 좌표 기준의 포지션을 마스크를 통해서 특정 부분만 나타내게 만들어줍니다.

이때 마스크의 컬러 채널은 진짜 컬러 채널을 의미하는게 아니라 절대 월드 좌표에 의해

xy축의 투영을 의미하기도 합니다.

3. 여기서 수학 나누기 노드를 새로 생성하여 이어줍니다.

4. 스케일러 파라미터를 새로 추가하고 이름을 size라 지정하고 3000정도로 지정합니다.

3,4를 하는이유는 타일의 사이즈를 매핑하여 노이즈 텍스처의 uv로 넘겨주기위함 입니다.

 

Absolute World Position

절대 월드 좌표 노드의 설명을 넘어갈수없습니다.

그래픽스를 피라미드로 표현하자면 가장 바닥이 되는 존재의 역할입니다.

해당 노드는 말 그대로 월드 좌표를 필요로 할때 사용됩니다.

해당 좌표를 픽셀로 나타내는 노드이며 사용하면 픽셀 또는 버택스가 좌표 어디에 위치하는지 알수있게 됩니다.

 

절대 월드 좌표만을 이은 머티리얼

해당 노드의 이해를 위해서는 간단합니다 위와 같이 절대월드좌표만을 이은 머티리얼을 새로 만들어서 랜드스케이프에 적용하면됩니다.

이때 주의하실점은 머티리얼 그래프의 좌측에 미리보기는 오히려 저희를 혼란스럽게 만들수있습니다.

이렇게 만든 머티리얼의 모델을 0,0,0 좌표 기준에서 좌우로 움직여보면 해당 색상이 계속 바뀌는것을 보실수있습니다.

이 뜻은 모델의 머티리얼이 월드 좌표를 기준으로 영향 받고있구나를 알수있습니다.

이렇게 색상으로 반환된 노드에서 마스크 노드를 이어서 사용하면 해당 색상을 가려지기에 투영의 역할로 같이 사용되는경우가 많습니다.

 

6. MI_Ground 셋업

1. MI_Ground를 더블 클릭합니다.

2. 디테일 size 체크버튼 활성화.

3. 사이즈를 크게 늘려서 타일링 범위를 증가

4. ctrl + s 맥이면 command + s 를 눌러서 저장

5. 나가서 맵 확인.

 

7. 끝 마무리

자 이러면 우리가 원했던 것과 같이 타일링을 조절하며 처음보다는 안전정인 모습으로 바닥을 완성 시킬수있었습니다.

 

저는 오늘은 바닥을 만들었던것 보다 절대 월드 좌표 노드의 설명, 러프의 설명들이 마음에 드네요

저도 기준을 설명하는것이 어려웠는데 저만의 기준을 다시한번 정의할수있어서 뜻깊은 시간이었던것 같습니다.

 

만약 위 자료사진과 다르게 타일사이가 층이 졌다면 seamless 텍스처가 아닐수 있기에

이전 seamless 텍스처 생성방법을 상 페이지에서 다시한번 확인해보시기 바랍니다.

다음에도 재미있는 글 올리도록 하겠습니다 감사합니다~

 

'모델링' 카테고리의 다른 글

어색하지않은 바닥 텍스처 만들기 (상)  (0) 2023.08.22