언리얼 5

231016 랜드스케이프

슬뷔 2023. 10. 16. 11:10

Landscape 레벨 생성

 

액터 배치

DirectionalLight 추가

SkyAtmosphere 추가

랜드스케이프 모드로 변경

* 지형을 구성하고 있는 것에서 제일 작은 사각형 하나를 쿼드라고 부른다.

* 멀리서 보면 조금 더 두꺼운 사각형을 섹션이라 부른다

* 섹션들이 모여서 컴포넌트가 된다

https://docs.unrealengine.com/5.0/ko/landscape-technical-guide-in-unreal-engine/

 

랜드스케이프 테크니컬 가이드

랜드스케이프 야외 터레인의 구성 및 치수에 관해 알아봅니다.

docs.unrealengine.com

 

https://ansohxxn.github.io/ue4%20lesson%203/ch2-1/

 

Ch2-1. 지형과 식물 : 랜드스케이프 - 지형 생성(섹션, 컴포넌트)

인프런에 있는 배틀로얄 게임을 만들어보며 배우는 언리얼 게임 개발 강의를 듣고 정리한 필기입니다. 😀 강의 들으러 가기

ansohxxn.github.io

* 전체 해상도

섹션과 컴포넌트의 수에 따라 결정한다. 즉 전체 지형의 가로 세로의 격자 개수이다.
전체 해상도가 57 X 57 이라는 얘기는 전체 지형의 가로는 격자 57칸, 세로는 격자 57 칸이라는 얘기이다.
여기에 각각 Scale을 곱하면 5700cm X 5700cm 즉 이 지형은 57^2 ㎡  크기의 지형이라는 얘기다.

 


MT_Landsccape 생성

  • 텍스처 이미지를 3차원 공간의 폴리곤에 입히기 위해 변환 기준이 되는 2차원 좌표계다.
    • 좌표값들은 0 ~ 1 사이의 float 값(비율)으로 표현한다.
    • 엔진마다 (0,0) 원점의 기준이 다르다. 언리얼의 경우 좌측 상단이 원점이다.
  • 3 D 모델을 u, v 이렇게 2 개의 축(0~1)을 가지는 2 차원 그림으로 나타낸 것이라고 생각하면 될 것 같다.
    • 지구를 uv 매핑하면 세계 지도가 되고, 정육면체를 uv 매핑하면 전개도가 되듯이.

 

Multiply 로 0.1 / 0.01 등 곱해서 적용하게 되면 자연스럽게 변한다. 

격자 하나하나가 텍스쳐이다.

 

Layer Blend 는 attributes 로 받는다.

그렇기 때문에 디테일 -> 머티리얼 -> 머티리얼 어트리뷰트 사용 체크

MT_Landscape 의 Layer Blend 노드의 디테일에서 레이어를 추가해주고 이름을 설정해준다.

그러면 랜드스케이프에 레이어가 생성이된다.

레이어에 + 버튼 -> 레이어 인포생성 -> Weight Blended Layer 클릭 -> Landscape 폴더의 LandInfo 에 저장

 

*  레이어 인포 오브젝트란 랜드스케이프 레이어에 대한 정보가 들어있는 애셋이다.

모든 랜드스케이프 레이어에는 레이어 인포 오브젝트가 할당되어 있지 않고서는 페인트가 불가능하다.

 

  • 레이어 인포 유형
    • 1️⃣ 웨이트 블렌딩된 레이어(Weight-Blended)
      • 일반적으로 이 유형을 사용한다.
      • 레이어 순서에 상관 없이 마지막에 칠한 텍스처가 가장 가중치가 높다고 판단되어 렌더링 된다.
      • 웨이트 블렌딩된 레이어는 일반적인 유형의 레이어로 서로 영향을 끼칩니다: 웨이트 블렌딩된 레이어를 칠하면 다른 모든 웨이트 블렌딩된 레이어의 웨이트를 낮춥니다. 예를 들어, 진흙을 칠하면 풀밭이 제거되고, 풀밭을 칠하면 진흙이 제거됩니다.
    • 2️⃣ 웨이트 블렌딩 되지 않은 레이어(Non Weight-Blended)
      • 포토샵 레이어 같은 유형
      • 레이어 순서와 상관 있다. 현재 가장 밑에 있는 레이어는 3 레이어인 Sand 이다. Sand 가 보이려면 위의 3 개의 텍스처는 칠해지지 않아야 한다.
      • 웨이트 블렌딩되지 않은 레이어는 서로간에 독립적이어서, 하나를 칠해도 다른 레이어의 웨이트에 영향을 끼치지 않습니다. 좀 더 고급 이펙트에 사용되는데, 이를테면 눈을 다른 레이어에 블렌딩할 때, 풀이냐 진흙이냐 돌이냐 눈이냐 하는 대신, 웨이트 블렌딩되지 않은 눈 레이어를 사용하여 “풀, 진흙, 돌” 과 "눈덮인 풀, 눈덮인 진흙, 눈덮인 돌" 사이를 블렌딩할 수 있습니다.

 

https://ansohxxn.github.io/ue4%20lesson%203/ch2-3/

 

Ch2-3. 지형과 식물 : 랜드스케이프 - 페인트, 머테리얼, UV 좌표, 노말맵, 레이어 인포

인프런에 있는 배틀로얄 게임을 만들어보며 배우는 언리얼 게임 개발 강의를 듣고 정리한 필기입니다. 😀 강의 들으러 가기

ansohxxn.github.io

 

노말맵

울퉁 불퉁함을 보여주기 위해서 모델 위에 씌여지는 특별한 텍스처 이미지

더보기

노말 맵핑 (Normal Mapping)은 폴리곤의 법선 벡터 (Normal Vector)의 값을 사용하여 로우 폴리곤의 그래픽 환경에서 입체감 및 질감을 구현하는 방법이다. 물체의 질감을 폴리곤으로 표현하기엔 연산량을 많이 차지하는데 이걸 텍스쳐로 대신하는 표현해주는 일종의 “눈속임” 기술이다. 물체의 표면에 굴곡이 있을 때 그 굴곡 때문에 표면의 방향이 바뀌고 그 방향에 따라 빛이 다르게 반사되기 때문에 보는 사람이 그 굴곡을 느낄 수 있다. 결국 표면 질감에서 중요한건 진짜 굴곡이 아닌 반사각이기 때문에 3D그래픽으로 물체를 표현할 때 표면을 실제로 굴곡이 있는 형태로 만들지 않고, 평면으로 만들고 그 위에 어떤 각도로 보일지 그려놓으면 하나의 폴리곤으로 굴곡이 있는 표면을 표현할 수 있다.

  • 진짜로 모델을 울퉁불둥하게 세밀하게 만들어버리면 폴리곤 수가 너무 많아지고 라이트 연산이 어마어마 할 것이다. 성능도 떨어지게 된다.
    • 따라서 폴리곤을 늘리지 않고 텍스처 이미지(노말맵)에 울퉁 불퉁한 정보들을 하나의 2D 그림(노말맵)에 저장해두고 이를 통하여 빛 연산을 계산한다.
  • 푸르딩딩한 파란색인 텍스처 맵이다.
    • 노말 맵은 울퉁불퉁함 즉, 들어가고 나오고에 대한 정보를 가진다. 따라서 0 ~ 1 의 Z 값을 가진다. (바깥 표면 계산이므로 사실 들어간 부분에 대한 정보는 넣지 않는다. 즉 음수는 없음)
    • XYZ 를 RGB 에 대응시키면 Z 는 B 에 대응되어 Z 가 Blue 가 되버린 것 뿐이다.
      • -1~1 을 0~255 에 대응시키는데 사실상 음수는 쓰이지 않으므로 대략 127~128 정도부터가 z = 0 에 대응한다.
  • 레드 하이라이트가 어느쪽에 생기는지에 따라 노말 X 방향이 어딘지도 알고 그린 하이라이트가 어느 방향으로 생기는지에 따라 노발 Y 방향도 알 수 있다.
    • Y 컴포넌트 하이라이트를 뒤집어서 아티스트가 보기 쉽게 해주기도 한다.

 


높이맵 활용하는 쉐이더 맵핑기법 (POM, Parallax Occlusion Mapping) -> 노말맵핑보다 상위버전 ?

https://online.ts2009.com/mediaWiki/index.php/Parallax_Occlusion_Map

 

Parallax Occlusion Map - TrainzOnline

Parallax Occlusion Mapping (POM) is a high-end GPU fragment shading technique which effectively adds a true height value to each texel. Normal Mapping In normal mapping, the lighting on each fragment is modified to act as if the surface was oriented in a d

online.ts2009.com

노말맵핑의 단점

-> 가까이서 옆으로 보면 평면인게 티가 난다.

 

 

하이트맵이란?

Vertex는 X, Y 이동은 불가능하고 Z 축 위 아래로만 이동이 가능하다. 

전체 랜드스케이프의 Vertex 의 Z 축 정보를 Vertex마다 0~255 (알파) 범위의 값으로 저장하여 하나의 그림에 담아 표현한 것을 하이트맵이라고 한다. 

즉 하나의 랜드스케이프의 전체적인 높낮이 정보를 담고 있는 2D 그림이다. 

하늘에서 수직으로 바라보는듯한 지형의 지도라고 생각하면 된다.

* 하이트맵의 크기는 적용할 랜드스케이프의 전체 해상도와 일치하게 만들어야 한다.