UDN
Search public documentation:

FoliageKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 포울리지 (Foliage)

포울리지 (Foliage)


Foliage_Scene.jpg

문서 변경내역: Jack Porter 작성. 홍성진 번역.

개요


과거 언리얼 엔진 3 에는 포울리지(초목) 볼륨과 터레인 데코레이션과 같은 구형 포울리지 시스템이 있었으나, 유연성이 별로라 퍼포먼스도 그다지 좋지 않았고, 언리얼 라이트매스와도 잘 어울리지 않았었습니다.

새로운 포울리지 시스템을 통해 랜드스케이프, 스태틱 메시, 레거시 터레인의 메시 세트를 빠르게 칠하거나 벗겨낼 수 있습니다. 이 메시들은 하드웨어 인스턴싱을 사용하여 렌더되는 일괄(batch) 그룹 속에 자동으로 묶이는데, 드로 콜 하나만으로 여러 인스턴스를 렌더할 수 있다는 뜻입니다.

포울리지 편집 모드


포울리지 편집 모드는 언리얼 에디터의 왼쪽 위 구석에 있는 [모드] 툴바 중 포울리지(foliage) 버튼을 누르면 활성화됩니다.

FoliageMode.png

이 모드를 활성화시키면 포울리지 편집 모드 창이 나타납니다.

FoliageWindowInitial.png

메시 리스트


처음에는 나열된 포울리지 메시가 없습니다. 포울리지를 칠하기 전, 콘텐츠 브라우저에서 스태틱 메시를 끌어다가 포울리지 편집 모드 창의 메시 리스트 부분에 놓아야 합니다.

FoliageWindowDrag.png

드래그를 시작하면 메시 아이콘과 다수의 파라미터가 표시됩니다. 여러 개의 스태틱 메시를 끌어 메시 리스트에 놓으면 됩니다.

FoliageWindowAfterDrag.png

메시 리스트의 각 메시에는 세 가지 모드가 있는데, 메시 이름 왼편의 버튼으로 접근 가능합니다. (메시 리스트 모드) 첫째 모드는 메시 이름과 아이콘만 보이는 접힌 모드입니다. 둘째 모드는 페인트 세팅 모드로, 레벨에 인스턴스를 놓는 방식을 조절하는 파라미터가 있습니다. 셋째 모드는 인스턴스 세팅 모드로, 레벨에 이미 놓인 인스턴스의 작동방식을 제어합니다. 이들 각각에 대해서는 아래에 차차 설명하도록 하겠습니다.

페인트 세팅이나 인스턴스 세팅 모드에 있을 때는, 메시 아이콘 상단에 버튼이 셋 나타나기도 합니다.

<- 이 버튼은 현재 레벨에 이미 놓인 모든 메시 인스턴스를 현재 콘텐츠 브라우저에 선택된 스태틱 메시로 싹 갈음합니다.
X 이 버튼은 메시 리스트에서 메시를 없앨 뿐 아니라, 현재 레벨에 이미 놓여 있는 이 메시의 인스턴스도 전부 없앱니다.
돋보기 이 버튼은 콘텐츠 브라우저에서 스태틱 메시 위치를 찾아 보여줍니다.

포울리지 툴


포울리지 창 상단에 버튼을 선택하여 사용할 수 있는 툴이 넷 있습니다.

페인트 툴 페인트 툴, 월드에/서 포울리지를 더하거나/빼는 데 사용되는 툴입니다.
재적용 툴 재적용 툴, 월드에 이미 칠해진 인스턴스의 파라미터를 변경하는 데 사용됩니다. 2011년 10월 빌드에 처음 등장했습니다.
선택 툴 선택 툴, 이동이나 삭제 등의 작업을 위해 개별 인스턴스를 선택하는 데 사용되는 툴입니다. 2011년 9월 빌드서부터 사용 가능합니다.
페인트 선택 툴 페인트 선택 툴, 페인트 브러시를 사용하여 다수의 인스턴스를 선택하는 데 사용됩니다. 2011년 9월 빌드서부터 사용 가능합니다.

페인트 툴


Paint Tool

포울리지 모드가 활성 상태일 때, 투명한 구체형 브러시를 레벨에 그려 포울리지 브러시가 작동중임을 나타냅니다. Ctrl 키를 누르고 마우스 클릭을 하면 브러시 영역에 포울리지가 추가되고, Ctrl+Shift 키를 누르면 포울리지가 지워집니다.

메시를 페인트할 때 엔진은 구체 내부에 보는 방향과 평행하게 라인 트레이스(선 추적)를 여러 번 합니다. 즉 구체에 보이는 표면이면 무엇이든 포울리지 인스턴스 대상이 될 수 있다는 뜻입니다.

지울 때, 삭제 대상 인스턴스는 구체 내부에서 임의로 선택됩니다.

메시 리스트에 선택된 메시

메시 리스트를 클릭하면 메시를 선택하거나 (주황) 해제할 수 있습니다. 에디터 뷰포트에서 칠할 때는 선택된 메시만 영향을 받습니다. 이미 레벨에 있는 다른 스태틱 메시의 포울리지 인스턴스는 어떤 영향도 받지 않으며, 메시 리스트에 선택되지 않은 항목의 인스턴스도 레벨에 추가되지 않습니다.

아래는 두 메시를 선택한 예제입니다. SBananaPlant_01 메시는 선택되지 않았기에 레벨에 있는 것에 칠해지거나 지워지지 않습니다.

FoliageWindowTwoSelected.png

브러시 세팅

  • Brush Size 는 브러시의 크기로, 언리얼 유닛(단위)입니다.
  • Paint Density 는 Ctrl 사용시 추가시킬 인스턴스의 밀도 목표치입니다.
    • 0 에서 1 까지의 값으로, 1 이면 각 메시에 대한 Mesh 프로퍼티에 나열되어 있는 최대 밀도로 메시 인스턴스를 칠합니다 (아래 참고).
    • 브러시 안의 메시 밀도가 이미 이 값보다 크면, 메시는 추가되지 않습니다.
  • Erase Density Ctrl+Shift 를 사용하여 인스턴스를 지울 때 인스턴스의 밀도 목표치입니다.
    • 0 에서 1 까지의 값으로, 0 이면 메시가 없음을 뜻합니다. 이 밀도보다 메시의 수가 적다면, 메시가 더이상 지워지지 않습니다.
    • 모든 인스턴스를 완전히 지우지 않고도 이미 칠한 메시를 옅게 만들 수 있습니다. * Filter 로는 인스턴스 위에 어떤 종류의 오브젝트를 놓을지 제어할 수 있습니다.
    • 참고로 포울리지 구체 브러시는 필터 타입에 일치하지 않는 오브젝트 위에 있을 때는 사라집니다.
    • 또 한가지, 활성 스트리밍 레벨에 있는 오브젝트 위에만 칠할 수 있습니다.

태블릿 압력 감지 역시 지원됩니다. 펜 압력으로 다른 모든 파라미터를 고려한 이후 추가/제거되는 포울리지 수를 변조시킬 수 있습니다.

페인트 세팅

페인트시 메시 리스트의 각 메시에는 그 메시에 대한 인스턴스를 어찌 놓을지를 결정하는 프로퍼티가 여럿 있습니다. 이 프로퍼티는 중간의 페인트 브러시 아이콘을 눌러 열어볼 수 있습니다.

Paint Settings Mode

프로퍼티 설명
Density / 1Kuu² 1000uu² 당 밀도 - 1000x1000 언리얼 유닛 영역마다, 이 메시에 대해 놓을 인스턴스 수입니다.
Radius 반경 - 이 메시의 인스턴스 사이에 둘 최소 간격입니다. (2011년 10월 빌드 이후로 정상 작동합니다.)
Align to Normal 노멀에 맞춤 - 포울리지 메시의 방향을 수직으로 맞출지, 아니면 놓으려는 표면의 노멀 방향에 맞출지 입니다.
Max Angle 최대 각 - 0 이 아니면 노멀에 맞출 때 따를 최대 각을 나타냅니다. 예를 들어 땅의 경사가 30° 이고 Max Angle 을 10° 로 설정했다면, 포울리지가 땅의 방향을 따르긴 하되 수직에서 그 방향으로 10° 까지만 눕습니다. 경사가 5° 인 곳에 인스턴스를 놓는다면, 각이 10° 미만이기에 포울리지는 5° 경사에 맞게 놓입니다.
Uniform Scale 균등 스케일 - 인스턴스의 X Y Z 스케일을 독립적으로 조절할 것인가 입니다.
Scale Min/Max 최소/최대 스케일 - 인스턴스는 최소 최대 스케일 범위에서 임의로 스케일됩니다.
Random Pitch ± 랜덤 피치 ± - 지정한 ± 각도만큼 편차를 두어, 모든 인스턴스가 똑같은 방향을 향하지 않도록 합니다.
Ground Slope 땅 경사 - 0 이 아닐 경우, 칠하는 표면의 경사가 이 각도보다 심하면 포울리지 인스턴스를 놓지 않습니다. 음수 값이면 지정된 각보다 경사가 심한 면에만 포울리지 인스턴스를 놓습니다.
Height Min/Max 최소/최대 높이 - 지정하면 월드 공간 Z (높이) 값이 이 범위 밖일 경우, 인스턴스가 적용되지 않습니다.
Landscape Layer 랜드스케이프 레이어 - 입력하면 랜드스케이프 레이어에 지정된 밀도에다 다른 모든 파라미터를 적용한 값에 비례하여 포울리지 인스턴스를 칠합니다.

재적용 툴


재적용 툴

재적용 툴은 월드에 이미 놓인 인스턴스에 대한 파라미터를 선택적으로 변경할 수 있도록 해 주는 툴입니다.

재적용 세팅

사용가능한 세팅은 페인트 툴과 매우 비슷하나, 왼쪽에 재적용할 파라미터를 선택하는 체크박스가 있다는 것이 다릅니다:

재적용 체크박스

체크박스를 설정하면 기존 인스턴스에 브러시를 칠할 때 해당 파라미터가 재적용됩니다. 대부분의 세팅은 페인트 툴을 사용할 때와 비슷하며, 약간의 차이는 있습니다:

밀도 조정 기존 인스턴스에 대한 밀도 곱수입니다. 슬라이더를 2.0 으로 설정하면, 지정된 영역 안의 인스턴스 수가 배로 늡니다. 0.5 로 칠하면 인스턴스 수가 절반만 남습니다.
땅 경사 땅 경사 조건을 만족하지 않는 인스턴스를 제거합니다. 인스턴스가 새로 추가되지는 않습니다.
높이 최소/최대 높이 범위 조건을 만족하지 않는 인스턴스를 제거합니다. 인스턴스가 새로 추가되지는 않습니다.
랜드스케이프 레이어 지정된 레이어 밀도에 비례해서 인스턴스를 제거합니다. 인스턴스가 새로 추가되지는 않습니다.

선택 툴

선택 툴

선택 툴이 활성화되면 개별 인스턴스에 클릭하여 선택할 수 있습니다. Ctrl+클릭하면 다중 선택 가능합니다. 인스턴스가 선택되었을 때 할 수 있는 작업은:

액션 결과
위젯 축 끌기 선택된 인스턴스는 위젯 모드별로 위젯을 따라 움직이거나 회전되거나 스케일 조절됩니다.
Alt + 위젯 축 끌기 선택된 인스턴스를 먼저 복제한 다음 위젯을 따라 움직입니다.
Delete 키 선택된 인스턴스는 삭제됩니다.
End 키 선택된 인스턴스를 바닥에 끌어붙여 봅니다. 원래 이 세팅이 켜진 상태인 경우 노멀에 정렬됩니다.

Selection Tool

페인트 선택 툴

페인트 선택 툴

페인트 선택 툴로는 페인트 툴에서도 사용되는 둥근 브러시를 사용하여 여러 인스턴스를 동시에 선택할 수 있습니다. 메시 리스트 선택 / 필터 세팅이 보통의 메시 페인팅에서와 마찬가지로 적용됩니다. 칠할 때 Shift 키를 누르고 있으면 인스턴스를 선택 해제합니다. 선택하고나서 보통의 선택 툴로 전환하면 위에 나열된 작업 중 일부를 할 수 있습니다.

페인트 선택 툴

인스턴스 세팅 모드


주: 이 모드는 2011년 7월 QA 빌드에 추가되었습니다.

인스턴스 세팅 모드

프로퍼티 설명
인스턴스 카운트 현재 스트리밍 레벨에 이 메시의 인스턴스가 현재 몇이나 되는가를 나타냅니다.
클러스터 카운트 현재 스트리밍 레벨에서 이 메시의 인스턴스를 렌더하는 데 사용된 클러스터 수를 나타냅니다. 인스턴스 그룹은 렌더링 효율 향상을 위해 한 번의 드로 콜로 한꺼번에 렌더되는데, 이를 클러스터라 부릅니다. 클러스터 할당은 클러스터에 있는 인스턴스 수와 월드 스페이스 내 클러스터 반경에 따라 자동으로 결정됩니다. 다음 두 파라미터로 이 기능을 조절할 수 있습니다.
클러스터 당 인스턴스 클러스터 당 인스턴스 최대 수를 설정합니다. 하나의 클러스터 내 모든 인스턴스는 항상 한 번의 드로 콜로 렌더되는데, 트라이앵글 총 갯수는 메시 당 폴리곤 수 곱하기 클러스터 당 인스턴스 수 입니다. 이상적인 수치는 메시의 폴리곤 카운트에 따라 다릅니다.
클러스터 반경 인스턴스를 새로운 클러스터에 할당하기 전 클러스터가 최대로 늘어날 수 있는 크기입니다. 이 수치를 줄이면 클러스터 갯수는 늘지만 클러스터의 바운딩 박스가 작아지므로 오클루전 효율이 좋아집니다.
컬링 시작 거리 인스턴스가 사라지기 시작하는 월드 유닛 단위 거리입니다. 머티리얼에서 설정해야 하는 것입니다. 자세한 것은 아래 컬링 부분을 참고하세요.
컬링 끝 거리 인스턴스가 완전히 컬링되는 월드 유닛 단위 거리입니다. 머티리얼에 개별 인스턴스가 사라지도록 구성되지 않은 경우, 전체 클러스터가 한꺼번에 사라졌나 나타났다 합니다. 자세한 것은 아래 컬링 부분을 참고하세요.

컬링


주: 이 기능은 2011년 8월 QA 빌드에 추가되었습니다.

포울리지 인스턴스가 드로 콜 한 번에 클러스터로 렌더되는 이유로, 각각의 클러스터는 오클루전에 따라 렌더되거나 말거나 둘 중 하나입니다. 컬링 끝 거리 파라미터에 값을 설정하면, 그 거리 너머에 있는 클러스터 역시도 컬링됩(가려집)니다. 하지만 이때문에 전체 클러스터가 거리 밖을 벗어남에 따라 급작스럽게 메시 그룹이 사라지게 되기도 합니다.

이러한 현상은 컬링 시작 거리 파라미터를 추가한 다음 머티리얼을 적절히 구성하는 방식으로 줄일 수 있습니다. 버텍스 셰이더에서 인스턴스별 페이드 인수가 계산되는데, 시작 위치에서는 1.0 으로 시작하여 끝 위치에서는 0.0 이 됩니다. 이 값이 Vertex Color 머티리얼 노드의 알파 채널에 있는 머티리얼로 전해집니다. 이를 오패시티나 마스킹 값에 연결해 주면, 그 값을 사용하여 컬링 끝 거리 위치에 이르러 렌더링 제외되기 전까지 천천히 사그라들게 만들 수 있는 것입니다.

아래는 머티리얼 마스크에 페이드 인수를 곱해서, 포울리지 메시 나뭇잎이 완전히 사라질 때까지 옅어지게 하는 머티리얼 예제입니다.

컬링 머티리얼 예제

머티리얼과 버텍스 애니메이션

바람과 같은 이펙트를 시뮬레이션하는 버텍스 애니메이션은 Interactive Foliage Actor KR 문서의 설명대로 머티리얼을 잘 만들면 되기는 하지만, 포울리지 인스턴스에 제대로 작동하게 만들려면 머티리얼을 약간 수정해 줘야 합니다. Object World Position 머티리얼 노드를 통해 개별 인스턴스의 위치가 아닌 레벨의 InstancedFoliageActor 위치를 알 수 있습니다. 여기서 Object World Position 대신 Transform Position 노드를 사용하여 4상수벡터 (0,0,0,1) 을 로컬에서 월드 공간으로 변환합니다. 그렇게 하여 개별 인스턴스의 월드 좌표를 구할 수 있습니다.

스태틱 메시 세팅


포울리지에 사용할 스태틱 메시에 대해 주의를 요하는 스태틱 메시 에디터 세팅이 몇 가지 있습니다. 우선 스태틱 메시의 bUsedForInstancing (인스턴싱에 사용) 옵션을 켜 줘야 합니다. 스태틱 메시의 (LODInfo 아래 있는) Elements 배열에 항목이 딱 하나만 있도록도 해 줘야 합니다.

LOD

2011년 10월 빌드서부터 포울리지에 스태틱 메시 LOD 가 지원됩니다. 주의하실 점이 약간 있습니다:

  • 머티리얼에 Screen Door Fading 을 켜는 것을 추천합니다.
  • 라이트/섀도우맵이 모든 LOD 레벨에 공유되므로, 모든 LOD 에 같은 unwrapping 을 사용해야 합니다.
  • 현재 인스턴스의 클러스터 전부가 LOD 를 동시에 변경합니다. 앞으로 인스턴스별 거리 기반 페이딩을 지원할 수도 있습니다.

라이팅

각 개별 메시 인스턴스에는 라이트매스로 자체 생성된 섀도우 그리고/또는 라이트맵이 있어, 이들을 각각의 미리계산된 일괄작업(batch)에 대해 같이 타일링하여 일괄작업(batch)에 미리계산을 지원할 수 있습니다. 포울리지 인스턴스가 제대로 작동하게 하기 위해 미리계산된 라이팅에 대해서 체크해줘야 할 스태틱 메시 세팅이 몇 가지 있습니다. 라이트매스는 인스턴스 메시에 대한 섀도우맵을 생성시 그리 관대하지 못한지라, 세팅이 잘못되면 라이팅 이후 메시가 까맣게 나올 수 있습니다.

  • Light Map Coordinate Index - 라이트맵 좌표 인덱스 - 고유 UV 언래핑을 가진 적합한 UV 채널로 설정해야 합니다. 스태틱 메시 에디터의 "고유 UV 생성" 기능으로 고유 언래핑을 빠르게 생성할 수 있습니다.
  • Lightmap Resolution - 라이트맵 해상도 - (디폴트 크기가 100인) 클러스터 하나에 있는 인스턴스에 대한 모든 섀도우맵이 최대 텍스처 해상도(4096x4096)를 초과하지 않고 타일링 가능하게 하려면, 이 수치가 충분히 작아야 합니다.

2012년 3월 버전까지는 엔진에서 포울리지에 대한 섀도우맵과 라이트맵 할당에 약간의 버그가 있어, 완전히 그늘진 인스턴스에 빛이 먹기도 하고 그늘지지 않은 인스턴스에 잘못 그늘지던 문제가 있었습니다. 이 버그는 2012년 4월 버전에서 수정되었으며, 최대 라이트맵 해상도를 초과했을 때 경고가 뜨기도 합니다.