오픈 월드 툴 팁과 정보

오픈 월드 툴을 최대한 활용하는 방법에 대한 팁과 정보 모음입니다.

Windows
MacOS
Linux

T_Tip-Trick_Header.png

다음 섹션에서는 오픈 월드 툴을 한계까지 사용하는 데 대한 팁과 정보를 몇 가지 살펴보겠습니다. 이 팁과 정보는 2015 년 GDC 에서 카이트 데모를 제작한 에픽 개발자들이 오픈 월드 툴을 사용하면서 얻은 경험을 통한 것입니다. 이 글은 단계별 튜토리얼이 아니라 이러한 기법을 여러분의 프로젝트에 어떻게 적용할 것인지를 좀 더 높은 수준에서 살펴본 것이라는 점, 유념해 주시기 바랍니다.

오픈 월드 툴 사용법 관련 좀 더 기본적인 정보는 프로시저럴 폴리지 퀵스타트 또는 그래스 툴 퀵스타트 문서를 참고해 주시기 바랍니다.

그래스 툴 폴리지 메시 컬링

그래스 툴의 컬링을 조정하여 매우 먼 거리에 있는 스태틱 메시를 렌더링하도록 할 수는 있지만, 너무 높게 하면 비디오 카드 및/또는 UE4 에디터 세션 크래시가 날 수 있으니 주의하시기 바랍니다.

프로젝트에서 그래스 툴을 사용할 때 일정 거리 이상의 스태틱 메시가 표시되지 않는 것을 보셨을 것입니다. 이를 일컬어 컬링이라 하며, 카메라에서 일정 거리 이상에 있는 오브젝트의 렌더링을 하지 않음으로써 프로젝트의 렌더링 부하를 줄이는 데 도움이 되는 최적화 기법입니다. UE4 안에서는 그래스 툴이 스태틱 메시 렌더링을 멈추는 방식을 여러가지로 조정할 수 있습니다. 첫 번째로 랜드스케이프 그래스 타입 액터에서 Grass Varieties 섹션 아래 Start / End Cull Distance 옵션을 설정하여 그래스 툴이 스태틱 메시를 컬링하는 실제 거리를 정하는 방법입니다.

Grass_Tool_Cull_Distance.png

위 그림은 카이트 데모의 일부 그래스에 사용되었던 들판의 풀 스태틱 메시에 사용된 컬링 세팅입니다. 아래 그림은 그래스에 사용된 스태틱 메시의 원래 세팅 6,500 에서 30,000 으로 하여 보다 먼 거리에서도 렌더링되고 있습니다.

Default of 6,500

Set to 30,000

위의 비교 스크린샷을 자세히 살펴보면, End Cull Distance 수치를 아무리 크게 한다 하더라도 사용되는 스태틱 메시는 일정 지점이 지나면 더이상 렌더링되지 않는 것을 볼 수 있습니다. 스태틱 메시가 더욱 멀리까지 렌더링되도록 하려면, 다음과 같은 콘솔 명령에 소수점까지 입력해 줘야 합니다.

Foliage.MinimumScreenSize 0.0001

Foliage.MinimumScreenSize 명령은 스크린 스페이스에서 스태틱 메시가 컬링되는 크기를 늘이거나 줄입니다. 카메라에서의 거리와 아울러 스크린 스페이스 크기도 사용되는 이유는, 카메라에서 너무 멀리 있어 너무 작게 보이는 오브젝트를 실수로 렌더링하지 않도록 하기 위함입니다. 이 세팅은 누군가 실수로 특정 메시 컬 디스턴스 설정을 빼먹은 경우 프로젝트의 퍼포먼스 저하를 방지하기 위한 정도로 생각해 보시면 됩니다. 명령을 입력하려면 물결표(~) 또는 역 어포스트러피(`) 키를 눌러 UE4 에디터의 언리얼 콘솔을 띄웁니다. 언리얼 콘솔이 열리면 UE4 에디터 하단에 아래 그림과 같은 것이 열리는 것이 보일 것입니다.

UE4_Console.png

콘솔에 Foliage.MinimumScreenSize 0.0001 명령을 입력한 뒤 Enter 키를 쳐 명령을 적용합니다. 그래스 맵 리빌드 이후, 뷰포트 안에서 보면 사용된 스태틱 메시가 이제 전보다 멀리까지 렌더링되는 것이 보일 것입니다.

UE4_Foliage_Command.png

컬 디스턴스 세팅을 0.0001 에서 0.00000001 까지 다양하게 한 경우의 비교 이미지입니다.

Original Settings of 0.0001

Max Settings of 0.00000001

참고로 기본값 0.0001 보다 큰 값을 사용하면 퍼포먼스 문제가 생길 수 있습니다. Foliage.MinimumScreenSize 를 키우려면 테스트를 거쳐 컬링의 변화가 프로젝트 전반적인 퍼포먼스에 큰 영향을 끼치지는 않는지 확인하시기 바랍니다.

프로시저럴 폴리지 볼륨 기반 마스킹

나무 숲 전체를 절차적 생성 방법으로 만들 수 있다면 엄청난 시간 절약이 가능하겠지만, 특정 영역에는 특정 나무만 스폰되도록 제한하려면 어떻게 해야 할까요? 그 방법은 '프로시저럴 폴리지 볼륨'을 여러 개 사용하거나, 폴리지 툴을 사용해서 원하는 나무를 배치하거나, 여러가지 있습니다. 하지만 프로젝트의 복잡도와 유지비가 심해집니다. 다행히도 폴리지 타입 에는 할당되어 있는 스태틱 메시 배치를 랜드스케이프 머티리얼의 특정 레이어에 제한시키는 옵션이 있어서, 페인팅시 그 레이어가 노출될 때 해당 폴리지 타입만 스폰되도록 할 수 있습니다.

어떤 방법을 사용하든 상관없이, 항상 레벨의 프로시저럴 폴리지 볼륨 을 선택하고 재시뮬레이션 버튼을 클릭해야 업데이트가 되어 변경내용을 확인할 수 있을 것입니다.

T_Resim_Button.png

아래 그림은 매우 간단한 랜드스케이프 머티리얼 구성으로, 각기 다른 세 가지 텍스처가 사용된 세 종류의 폴리지 타입입니다. 보시면 레이어 블렌드 의 각 입력에 이름이 고유하게 되어 있습니다. 중요한 부분인데, 폴리지 타입이 제한되는 랜드스케이프 터레인 레이어를 연동시켜 주는 것이 바로 이 이름이기 때문입니다.

T_Landscape_Material.png

랜드스케이프 머티리얼 구성이 완료되었으면, 폴리지 타입에 올바른 랜드스케이프 레이어가 연동되도록 구성을 해 줘야 합니다. 아래 그림에서 보면, 랜드스케이프 머티리얼의 특정 레이어에 할당된 스태틱 메시의 배치를 제한시키도록 폴리지 타입 구성을 한 예제를 확인할 수 있습니다.

T_Restrict_To_Landscape_Layers.png

이렇게 직접 구성하려면, 폴리지 타입 안에서 다음 작업을 해 줘야 합니다:

  1. 고급 표시 화살표 아이콘을 펼쳐 랜드스케이프 레이어 옵션을 노출시킵니다.

  2. 엘리먼트 라는 단어 바로 옆에 있는 더하기 부호를 눌러 배열에 새 항목을 추가시킵니다.

  3. 랜드스케이프 머티리얼에 이 폴리지 타입을 제한시키고자 하는 레이어 이름을 입력합니다.

머티리얼 및 폴리지 타입 구성을 완료했으면, 랜드스케이프 터레인에 머티리얼을 할당했는지 확인하고 평소처럼 랜드스케이프 칠을 시작합니다. 칠을 할 때, 또는 지금까지 한 작업을 확인하고자 할 때, 레벨의 '프로시저럴 폴리지 볼륨'을 선택한 다음 재시뮬레이션 버튼을 눌러 업데이트하고 변경사항을 적용합니다. 완료되면, 스폰된 폴리지는 다음 그림에서처럼 연동되어있는 랜드스케이프 텍스처에 한정될 것입니다.

T_Content_Breakdown.png

위 그림을 자세히 살펴보면, 모든 것이 예상대로 절차적 생성되었지만 스폰된 메시 중 어느 것도 서로 섞여있지는 않는 것을 볼 수 있습니다. 예를 들어, 잎이 있는 나무는 랜드스케이프의 풀 텍스처가 적용된 곳에만 스폰됩니다. 자세히 살펴보면, 덤불과 소나무에도 똑같은 일이 벌어지는 것이 보입니다.

그래스 툴용 텍스처 기반 마스킹

폴리지 메시의 스폰 여부를 제어하는 방법 중 또 한가지는, 텍스처를 마스크로 사용하여 특정 영역에 폴리지 메시를 스폰시킬지 말지 오픈 월드 툴에 알려주는 것입니다. 다음 그림은 텍스처 기반 마스킹을 보여주는 매우 간단한 머티리얼 데모입니다.

T_Texture_Based_Masking.png

이 그림 저 왼쪽에서부터 시작해서 World Position Scaling 섹션이 있습니다. 이는 마스크 텍스처의 월드 스페이스 스케일을 조절하여 랜드스케이프 터레인에 맞게끔 조절하는 옵션입니다. 왼쪽으로 이동하면, 폴리지 배치 위치 및 두 랜드스케이프 텍스처 사이의 블렌딩을 정의하는 데 사용된 마스크 텍스처가 있습니다. 마스크 텍스처의 각 채널이 어떻게 사용되었는지는 다음과 같습니다:

  • 빨강 채널: 이 채널은 랜드스케이프의 어디에 풀 메시를 배치할지와 함께, 랜드스케이프 베이스 텍스처의 블렌딩 방식을 정의하는 데도 사용됩니다.

  • 초록 채널: 이 채널은 랜드스케이프 어디에 바위 메시를 스폰시킬지 정의하는 데 사용됩니다.

마지막으로, 그림 저 멀리 오른쪽에는 메인 머티리얼 노드와 Grass Output 이 있습니다. 메인 머티리얼 노드는 다른 표준 머티리얼과 똑같은 방식으로 구성되어 있습니다. 하지만 Grass Output 은 텍스처 기반 마스킹과 비슷한 방식으로 구성되어 있는데, 핵심 차이점은 머티리얼에 마스크가 적용 또는 미적용된 부분을 사용해서 (그냥 다른 텍스처를 보여주는 대신) 스태틱 메시를 스폰시키거나 말거나 한다는 점입니다. 이 머티리얼이 UE4 에서 랜드스케이프에 적용되면, 다음 그림에서 마스크 텍스처를 뺀 것과 비슷해 보이는 결과를 얻게 됩니다. 마스크 텍스처는 어느 마스크 색이 랜드스케이프에 어떤 작업을 하고 있는지 보여주기 위해 구석에 배치되었습니다.

T_Masking_In_Action.png

위 그림에서 풀 스태틱 메시는 대부분의 경우, 마스크 텍스처의 빨강 채널을 사용하는 영역에만 스폰되는 반면, 바위는 마스크 텍스처의 초록 채널을 사용하여 스폰됩니다. 이미 눈치채셨을 수도 있지만, 풀과 바위는 이를 스폰하는 마스크 텍스처 영역 안에 완전히 포함되어 있지 않습니다. 이는 의도된 것으로, 스태틱 메시 배치가 지글거릴 수도 있고, 오프셋을 적용하여 조금 더 자연스러워 보이도록 만들 수 있기 때문입니다.

그래스 툴용 수학 기반 마스킹

마스킹에 텍스처를 사용하는 것은 편리하고 빠를 수는 있지만, 퍼포먼스상의 이유로 여분의 텍스처 데이터를 감당할 수 없거나, 배치에 그만큼 신경쓰고 싶지 않은 경우가 있을 수 있습니다. 그런 경우 텍스처 대신 머티리얼 에디터에서 Math 함수를 만들어 배치에 힘을 실어주면 됩니다.

T_Math_Based_Masking.png

위 그림에서 지난 번 예제의 머티리얼을 가지고 와 풀과 바위 스폰 방식을 변경했습니다. 이 예제에서 풀과 바위는 Checker Pattern 머티리얼 함수를 사용하여 체크무늬로 스폰시켜 배치를 제어하고 있습니다. 바위에 One Minus 를 추가하여 풀이 스폰되지 않는 곳에 바위를 스폰시키고 있습니다. 랜드스케이프에 적용하면 다음과 같은 모습일 것입니다:

T_Check_Pattern.png

그래스 툴용 노 랜덤 배치

제대로 조정한 상태에서의 그래스 툴은 들판에 자라는 작물같은 것을 흉내내는 데도 사용할 수 있습니다. 아래 그림에서 그러한 예제를 확인할 수 있습니다:

T_Spawing_In_Row.png

그래스 툴이 이와 같이 작동하도록 하려면, Use Grid 가 체크되었는지, Placement Jitter0 으로 설정되었는지, Grass Density 가 100 미만으로 설정되었는지 확인하세요. 첫 그림에서 본 결과를 낸 랜드스케이프 그래스 타입 구성 방법은 다음 그림과 같습니다.

T_LGT_Crops_Setup.png

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼