UDN
Search public documentation:

TerrainAlphamapsKR
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 홈 > 터레인 시스템 > 터레인 알파맵: 외부에서 만든 텍스처 레이어 알파맵 사용하기

터레인 알파맵: 외부에서 만든 텍스처 레이어 알파맵 사용하기


문서 변경내역: David Green 원저.

개요


기본적으로, 터레인은 3D 평면 메시 객체로써 그 크기는 x*y 버텍스로 표시됩니다. 렌더링되는 사면체의 실제 수는 x-1 * y-1 이므로 크기가 256x256 의 터레인은 257x257 크기의 하이트맵이 필요합니다. Terrain Properties (터레인 프로퍼티) 대화 상자에서 터레인 크기는 패치 수 또는 사면체의 수 (NumPatchesX 및 NumPatchesY) 로 지정되며, 이것은 버텍스 카운트 -1 과 동일합니다.

알파맵 개요


예를 들면 흙, 풀, 바위와 같이 터레인에서 여러 텍스처의 레이어화를 지원하기 위해 각 레이어는 터레인의 어디에 텍스처가 블렌드되는지 결정하는 알파맵 을 사용합니다. 알파맵은 각 텍스처 블렌드의 가중치를 정의하기 때문에 때때로 가중치 (weight) 맵 이라고도 합니다. 알파맵은 본질적으로 이미지의 알파 채널과 유사한 회색조 마스크입니다.

각 터레인 레이어의 알파맵은 아래에 있는 터레인 하이트맵 또는 메시와 동일한 크기로, 알파맵의 1 픽셀은 터레인 1 개의 버텍스에 해당합니다. 따라서 텍스처 레이어간에 블렌딩은 터레인 메시 버텍스 사이의 거리의 제한됩니다. 즉, 128x128 크기의 터레인은 고정된 블렌드 129x129 픽셀의 알파맵을 지원합니다. 터레인의 DrawScale3D.X/.Y 값은 각 블렌드 영역의 크기를 결정합니다. 따라서 DrawScale3D.X/.Y 가 256 이면 터레인 텍스처 레이어 블렌드 크기는 256 Unreal Units 가 됩니다. 즉, 알파맵의 1 픽셀은 터레인에서 DrawScale3D.X/.Y 크기에 해당합니다.

TerrainAlphamap.gif

각 알파맵의 픽셀 값은 터레인에서 동등한 수를 버텍스에 적용되는 텍스처의 불투명 블렌드 비율을 결정합니다. 1 : 1 대응 블렌드 값을 제공하기 위해 알파맵과 하이트맵의 해상도는 반드시 동일해야 하는 이유는 이 때문입니다. 엔진이 터레인 트라이앵글을 렌더링하는 경우 레이어 알파맵의 각 행과 열을 차례로 읽어 하이트맵 각 버텍스의 각 텍스처에 대한 블렌드 값을 가져옵니다. 알파맵 값이 0(Black) 이면 그 버텍스에서 텍스처 블렌드가 발생하지 않고, 127(Gray) 의 경우 50 % 의 텍스처 블렌드, 255(White) 의 경우 100 % 텍스처 블렌드가 해당 버텍스에서 발생합니다.

VertexAlphaBlend.gif

터레인 메시 버텍스 사이에서 발생하는 텍스처 블렌딩은 선형 그레디언트이고 급격한 변화하지 않습니다. 즉, 텍스처 레이어는 아래의 텍스처 버텍스에서 버텍스로 매끄럽게 블렌딩됩니다. 한 쌍의 터레인 트라이앵글(사각형)의 예제 이미지에서 볼 수 있듯이 맨위 왼쪽의 터레인 버텍스는 완전히 백색에 상응하는 알파맵 값 (255) 을 가진 반면 다른 2 개의 트라이앵글의 버텍스는 완전히 검정색에 상응하는 알파맵 값 (0) 을 가졌습니다. 이 텍스처 레이어는 버텍스에서부터 버텍스까지의 그레디언트처럼 터레인 트라이앵글의 표면에 걸쳐 부드럽게 블렌딩됩니다. 이 예제에서, 아래의 텍스처는 파란색이고 레이어된 텍스처는 노란색이므로 하얀색 알파맵 값은 100 % 노란색과 검정색 알파맵 값을 100 % 파란색으로 렌더합니다. 트라이앵글의 표면은 항상 노란색에서 파란색으로 매끄러운 그레디언트를 보여줍니다.

TriangleVertexBlend.gif

Unreal Engine 3의 터레인 시스템에서 하이트맵 또는 알파맵 모두 Generic Browser? 에서 보이지 않습니다. 이것은 이전 엔진 버전과의 다른 점입니다.

터레인 레이어 설정


Unreal Engine 3 의 터레인 시스템은 TerrainLayerSetup 객체의 Height (높이)와 Slope (기울기) 프로퍼티를 사용하여 가장 일반적인 터레인 텍스처 레이어링에 대한 기본 요구 조건을 지원합니다. 이들은 procedural layer setups (절차적 레이어 설정) 라고 불립니다.

본 TerrainLayerSetup 예제에서 나타나듯이 터레인의 레이어링은 2 개의 레이어로 구성되어 있으며 하위 레이어 [1] 는 솔리드 베이스 레이어로 설정하고 상위 레이어 [0] 의 기울기를 0 에서 45 도로 제한합니다 (MaxSlope.Enabled = True, MaxSlope.Base = 0.5. 여기서 0.5 = 45 도를 의미함). 이것은 초원의 평지 텍스처와 유사합니다.

UE3TLSetup.gif

TerrainLayerSetup 에서 여러 항목이 존재하는 경우 그들은 위 방향으로 레이화되어 텍스처 레이어가 아래에서(가장 높은 항목 번호) 위(항목 번호 [0])로 렌더링됩니다. 위의 TerrainLayerSetup의 예제에서 항목 [0] 는 항목 [1] 의 위에 렌더링됩니다.

절차적 TerrainLayerSetup 은 평지(높이에 의한), 절벽면(기울기에 의한), 눈 덮인 산 정상(높이에 의한)에 대한 레이어링 스타일을 터레인에 쉽게 제공할 수 있습니다. 그러나 산 능선 또는 하천에 의한 절단과 같은 복잡한 지질적 텍스처 레이어링을 만들 수는 없습니다. 또한 지질 시스템의 높이와 기울기가 전역에 걸쳐 달라질 수 있는 구불구불한 하천과 도로에 대한 텍스처 레이어를 만들 수 없습니다. 이러한 복잡한 텍스처 레이어의 유형에 대해서는 UnrealEd 에서 수동으로 레이어를 페인트하거나 외부에서 제작된 알파맵 파일을 사용하는 것이 좋습니다.

텍스처 레이어를 손으로 페이트하거나 외부 알파맵을 레이어로 가져오기할 경우 TerrainLayerSetup 은 반드시 단일 레이어 스타일이어야 합니다. 절차적 다중 레이어 스타일은 가능하지 않습니다.

산 능선(전문 용어로는 Dendritic (모수 분기하는 형태)의 능선과 Stratigraphic (층서학의) 능선)은 풍화 작용에 노출된 비침식된 단단한 암석입니다. 하천에 의한 절단은 산간을 흐르는 강 같은 물줄기 침식에 의해 발생합니다. 이 튜토리얼에서 사용하는 터레인 알파맵 예제에서는 텍스처링의 능성 지질적 유형이 표시됩니다.

외부 알파맵 제작하기


외부 알파맵은 타사 터레인 하이트맵 소프트웨어를 사용하거나 페인트 소프트웨어를 사용하는 실력 좋은 아티스트에 의해 제작될 수 있습니다.

타사 터레인 하이트맵 소프트웨어 응용 프로그램에는 HMES, Leveller, Terragen, World Machine 등의 다수가 있습니다. 각 응용 프로그램에 의해 알고리즘적으로 생성될 수 있는 하이트맵 또는 알파맵의 유형은 다양합니다. 여기에서는 어떤 특정 패키지를 권장하지 않습니다. 내부적으로 터레인을 개발하는데 무슨 패키지를 사용하는지는 스튜디오 아트 팀장의 판단에 달려있습니다.

아티스트의 경우, 손으로 페인트하는 알파맵을 위한 가장 일반적인가장 일반적인 소프트웨어 프로그램으로는 아마도 Adobe PhotoShop 이고, 그 다음으로는 Corel PhotoPaint, PaintShopPro 등과 같은 다른 페인트 소프트웨어가 있습니다.

알파맵을 손으로 페인트하는 경우, 하얀색이 터레인 텍스처 레이어를 표시하는 알파 채널 마스크 제작에서처럼 동일한 방식으로 하얀색을 검정색 배경에 브러시 작업합니다. 알고리즘으로 생성된 알파맵 사용의 장점은 보통 이들은 실제 터레인의 하이트맵과 함께 만들 수 있기 때문에 상당한 시간을 절약할 수 있을 뿐 아니라 아티스트가 직접 손으로 복제하기에는 복잡한 디자인도 만들 수 있다는 것입니다.

본 튜토리얼은 외부 알파맵을 제작 방법을 모두 다루지 않고 있습니다. 그 이유는 제작 방법은 현재 스튜디오 아트 파이프라인에 따라 다리고, 아트 부서 또는 레벨 디자이너가 하이트맵과 알파 맵을 손으로 또는 타사 소프트웨어를 사용하여 제작하는가에 따라 다르기 때문입니다. 본 튜토리얼용으로 만들어진 터레인 하이트맵과 알파맵 예제는 1 개의 응용 프로그램을 통해 알고리즘적으로 개발되었습니다.

외부 알파맵 형식


외부 알파맵 파일은 검정색은 100 % 투명, 하얀색은 100 % 불투명, 중간 회색의 레벨은 다양한 투명도를 나타내는 마스크 또는 알파 채널과 유사한 8 비트 회색조 이미지입니다. UnrealEd 가 알파맵을 가져오기 하는데 필요한 실제적인 파일 형식은 외부 하이트맵 파일 형식과 유사한 G16 .bmp 형식입니다. 하이트맵 또는 페인트 소프트웨어를 사용하여 8 비트 회색조 비트맵으로 외부 알파 맵을 만들 수 있지만 알파 맵을 UnrealEd 로 가져오기 전에 G16 형식 파일로 반드시 변환해야 합니다. 즉, 데이터의 8 비트 반드시 16 비트에 곱해져야 합니다((*256 또는 <<8). G16 알파맵의 16 비트 데이터는 UnrealEd 로 가져오기될 때 자동으로 원래의 8 비트로 변환됩니다. Raw-16 과 같은 16 비트 형식을 지원하는 소프트웨어에서 알파맵이 생성되는 경우 이것을 G16 으로 변환하면 직접 사용할 수 있고 데이터에 곱셈이 필요하지 않습니다.

외부 알파맵 파일은 반드시 항상 Terrain.NumPatchesX +1 x Terrain.NumPatchesY +1 크기인 터레인이어야 합니다. 예를 들면, 128x128 의 터레인은 129x129 크기의 알파맵을 필요로 하고, 256x256 크기의 터레인은 257x257 알파맵을 필요로 합니다. 부적절한 크기의 알파맵을 가져오기 하려는 경우에는 오류가 발생합니다.

2 제곱 크기 밖에 지원하지 않는 소프트웨어 프로그램에 의해 알파맵을 알고리즘적으로 생성하는 경우, 알파맵 이미지를 편집하고 가장자리에 추가 픽셀의 행과 열 추가하여 올바른 해상도로 조정해야 합니다. UE3 의 UnrealEd 에서 알파맵은 맨위 왼쪽에 정렬되기 때문에, 알파맵의 오른쪽과 아래쪽에 1 개의 행과 1 개의 열을 추가하여 터레인 메시처럼 동일한 수의 열과 행을 포함하게 합니다.

생성된 알파맵의 파일 형식에 따라 반드시 16 비트로 곱하거나 G16 로 변환해야 합니다. G16Ed 와 HMCS 처럼 G16 변환을 지원하는 여러 타사 도구가 있습니다.

외부 알파맵을 사용한 터레인 예제


소프트웨어 프로그램의 조합을 사용하여 다음 하이트맵은 UnrealEd 터레인용으로 제작하였습니다. 하이트맵은 Raw-16 으로 저장한 다음 G16 으로 변환되었습니다.

HMCSHeightmap.gif

사용자 지정 "능선" 알파맵은 하이트맵과 함께 알고리즘적으로 제작되었고 Raw-16 으로 저장된 다음, 페인트 소프트웨어에서 편집할 수 있도록 16 비트 회색조 TIF 로 변환되었습니다. 다음이 원래의 Raw-16 알파맵입니다.

HMCSAlphamap.gif

TIF-16 알파 맵은 다중 패스의 Intensity 와 Contrast 의 조합을 사용하여 밝기의 곡선 레벨을 증가시키기 위해 페인트 소프트웨어로 수정하였고, 그런 다음 TIF-16 으로 다시 저장되었고, 마지막으로 UnrealEd 로 가져오기할 수 있게 다시 한 번 G16 으로 변환하였습니다. UE3 의 UnrealEd 는 이전 Unreal Engine 버전 보다 더 높은 대비를 필요로 하므로 알파맵은 Unreal Engine 2 또는 2.5 에서 만든 것 보다 더 강렬할 필요가 있습니다. 최종 TIF-16 은 다음과 같습니다.

AlphamapFinal.gif

외부 알파맵을 사용하여 예제 터레인 제작하기


다음은 사용자 정의 외부 알파 맵을 사용하여 터레인를 제작하는 단계입니다.

UE3 터레인 설정 및 중요한 알고리즘적 터레인에 대한 추가 정보는 UDN 터레인 주제 를 참조해 주십시오.

1. 새로운 맵에 Terrain 액터를 삽입합니다. Terrain.NumPatchesX 와 Terrain.NumPatchesY 를 사용자 지정 하이트맵 G16 파일 -1 의 크기로 설정하고 하이트맵을 가져오기 합니다.

2. 태양광을 시뮬레이션하기 위해 DirectionalLight 를 삽입합니다. Movement.Rotation.Pitch 를 -45 도로 변경합니다.

3. 기본 풀용 새로운 TerrainMaterial 을 만듭니다. 적절한 텍스처를 지정합니다.

4. 능선 바위용 TerrainMaterial 을 만듭니다. 적절한 텍스처를 지정합니다.

5. 기본 풀 텍스처 레이어용 TerrainLayerSetup 을 만듭니다. 0 에서 30 도 사이를 진흙 기반과 대초원과 같이 필요한 경우 이것은 멀티 레이어 절차적 설정이 될 수 있습니다.

6. 능선 바위 텍스처 레이어용 TerrainLayerSetup 을 만듭니다. 이것은 반드시 별도의 단일 레이어 설정이어야 합니다. 다중 레이어 절차적 설정은 외부 알파맵 가져오기를 지원하지 않기 때문입니다.

7. 2 개의 TerrainLayerSetups 를 Terrain 액터의 Terrain.Layers 배열에 추가합니다. 이 대화 상자 배열 목록에서 레이어는 [0] 에서 위 방향으로 렌더됩니다. 따라서 레이어 [0] 은 기본 레이어가 되고 다른 모든 높은 숫자를 가진 레이어들은 그 위에 렌더됩니다.

UE3TerrainProperties.gif

8. 터레인 편집 대화 상자가 표시되게 하려면 Terrain Edit 모드로 이동하십시오. Import/Export 그룹에서 "Height Map Only" 와 "Into Current" 체크 상자를 선택하여 레이어 선택으로 가져오기 되도록 합니다. Class 드롭 다운 콤보 상자에서 가져오기할 "G16BMPT3D" 를 선택합니다. 이것이 가져오기할 G16 .bmp 입니다. 사용자 지정 알파맵을 받기 위해 능선에 대해 TerrainLayerSetup 을 선택하고(대화 상자에서 노란색 선택 색상으로 표시됨), Import 버튼을 선택합니다. 파일 대화 상자에서 외부 G16 알파맵 파일의 위치로 이동하고 이것을 엽니다. 알파맵 파일에 잘못된 파일 형식 또는 파일 크기와 같은 문제가 없으면 알파맵은 터레인 설정으로 로드되고 선택한 레이어에 적용됩니다. "Recache Terrain Materials" 버튼을 클릭하여 뷰포트에서 터레인을 업데이트합니다. 본 예제에서 Base TerrainLayerSetup 은 아이콘에 큰 크기의 "P" 로 표시되었듯이 흙과 풀의 다중 레이어 절차적 설정이고 알파맵이 가져오기된 Ridges TerrainLayerSetup 은 그 아래에 위치합니다.

UE3TerrainEditImport.gif

UnrealEd 에서 Build All 을 선택한 후, 최종 터레인은 다음과 같습니다. 바위 지형 능선으로 되어있는 것을 보실 수 있습니다.

UE3TerrainFinal.jpg