본문 바로가기

UnrealEngine

[UE] SimpleGrassWind 함수와 LandScape 활용

WorldPositionOffset 함수

  • WorldPositionOffset을 통해 메시의 vertex를 조작하기 위한 특수 함수가 들어있다.

SimpleGrassWind 함수

  • 전체 바람과 장면에서 일어나는 모든 일을 전체적으로 제어할 수 있도록 시스템을 구현한다.
  • 머티리얼 파라미터 컬렉션 ⇒ 머티리얼 안의 파라미터 값을 설정
WindIntensity(바람 세기, Scalar) 메시에 대한 바람의 영향력을 조절
WindWeight(바람 가중치, Scalar) 메시의 vertex가 바람에 얼마만큼 반응할지를 조절하는 회색조 맵
WindSpeed(풍속, Scalar) 바람의 속도 조절
AddtionalWPO(부가 WPO, Vector3) 부가적인 월드 포지션 오프셋 망이나 함수를 받는다.

 

SimpleGrassWind 함수로 바람 만들기

  1. Vertex Color ⇒ vertex의 색상 제어. R채널 연결
  2. CollectionParameter ⇒ 컬렉션 매개변수 입력. 컬렉션 매개변수의 디테일에서 컬렉션에 Wind 머티리얼 파라미터를 할당.

 

Vertex Color

메시 페인트 모드

  • 원하는 인스턴스를 선택한 후 메시 페인트 모드를 실행
  • 검은색으로 색칠된 부분은 변화가 없고, 흰색으로 색칠된 부분은 변화가 있다.

⇒ 위의 Wind 머티리얼의 SimpleGrassWind 함수에서 사용되는 색과 동일한 색 혹은 그 색이 포함된 색은 변화 있음. 따라서 모든 색이 포함된 흰색(1, 1, 1)은 항상 변화를 보인다.

 

LandScape

  • 데이터를 텍스쳐로 저장하여 메시보다 메모리 사용량이 좋음. LOD로 사용된다.
  • 텍스쳐는 밉맵이라고 표현. 즉 랜드스케이프로 제작된 지형은 텍스쳐로 저장돼서 밉맵 사용 가능.
  • 하이트 맵을 가져와서 적용시켜도 된다.

새로운 레벨을 생성하여 바닥을 삭제한 뒤 랜드스케이프로 새로운 바닥을 생성.

 

  • 섹션 크기: 7 바이 7 쿼드. 7칸이 하나의 섹션.
  • 컴포넌트 별 섹션: 한 컴포넌트에 들어가는 섹션 개수. 2X2는 4개의 섹션을 의미.
  • 버텍스와 버텍스의 간격이 스케일. 스케일 100은 100Cm 즉, 1M를 의미함.
  • 섹션이 작을수록 LOD 전환 시 빨라짐. LOD의 기본값은 -1이며 수치에 변화를 주면 달라짐. -1을 권장.
  • 위의 사이즈가 면적대비 효율적인 추천사이즈
  • 스컬핑 기능을 이용하여 지형 제작 시작
  • 드래그하며 지형을 제작하고, Shift + 드래그는 드래그 기능의 반전
  • 다양한 기능을 사용하여 지형을 제작할 수 있음

LandScape

  1. 콘텐츠 폴더에서 랜드스케이프머티리얼 폴더 생성
  2. 원하는 텍스처를 머티리얼 에디터에 드래그하여 레이어에 배치
  3. 각각의 텍스처를 블렌딩 하기 위해 Layer Blend함수 추가
  4. Layer Blend함수 디테일 창에서 배열 엘리먼트를 개수에 맞게 추가한 뒤 레이어 이름 입력
  5. 제작한 머티리얼을 저장한 뒤 랜드스케이프에 적용

이후 랜드스케이프의 페인트에서 레이어를 할당. 할당된 레이어 옆의 +를 클릭 후 웨이트 블렌딩된 레이어(노멀)를 선택하여 경로 지정 후 저장. 할당 후 각각의 머티리얼을 선택 후 브러시로 칠할 수 있음

 

UV Tiling

  • 랜드스케이프 머티리얼 에디터에서 단축기 u를 누르면 나오는 텍스쳐 코디네이터 (Landscape layer Coords 검색 후 사용)
  • 생성된 하나의 노드를 모든 텍스처 샘플에 연결해도 가능하지만, 텍스처 별로 해상도가 다르기 때문에 복제하여 각각의 텍스처에 연결.

랜드스케이프로 만든 지형

⇒ 3D 그래픽에서 재질은 현실과 다른 점을 인지해야 함. 좀 더 복잡하고 다양한 재질을 만들어 표현.