11.2. 3차원 맵 뷰
QGIS는 3차원 맵 뷰를 통해 3차원 가시화를 지원하고 있습니다.
메뉴를 통해 3차원 맵 뷰를 생성, 관리하고 열 수 있습니다:메뉴 항목을 클릭하면 새 3차원 맵 뷰를 생성할 수 있습니다. 도킹 가능한 QGIS 플로팅 패널이 나타날 것입니다. (그림 11.23 을 참조하세요.) 새 3차원 맵 뷰는 2차원 주 맵 캔버스와 동일한 범위와 뷰를 가지고 있으며, 뷰를 3차원으로 전환하기 위한 탐색 도구 집합을 제공합니다.
메뉴 항목을 클릭하면 3차원 맵 뷰 관리자로 들어갑니다. 여기에서 3차원 맵 뷰를 열고, 복제하고, 제거하고, 재명명할 수 있습니다.
3차원 맵 뷰를 하나 이상 생성했다면,
메뉴를 통해 그 목록이 표시됩니다. 이 메뉴를 클릭하면 목록을 켜고 끌 수 있습니다. 목록을 끈 상태라도, 프로젝트를 저장하면 목록도 저장될 것입니다.
3차원 맵 뷰 패널의 최상단에 다음과 같은 도구들이 있습니다:
Toggle On-Screen Notification: (맵 뷰를 더 쉽게 조정하기 위한) 탐색 위젯을 켜고 끕니다.
Identify: 지형에서 클릭한 포인트 또는 클릭한 3차원 피처(들)에 대한 정보를 반환합니다. 더 자세한 정보는 피처 식별 를 참조하세요.
Animations: 애니메이션 플레이어 위젯을 켜고 끕니다.
Export 3D Scene: 현재 뷰를 (
.obj
파일 형식의) 3차원 신(scene)으로 내보내, 블렌더 등의 응용 프로그램에서 후처리할 수 있게 해줍니다. 지형 및 벡터 피처를 3차원 객체로 내보냅니다. 레이어 속성 및 맵 뷰 환경 설정 을 무시하는 내보내기 설정에는 다음이 포함됩니다:Set View Theme: 미리 정의된 맵 테마 에서 맵 뷰에 표시될 레이어 집합을 선택할 수 있도록 해줍니다.
Options 메뉴는 다음과 같은 단축키를 제공합니다:
3차원 렌더링에 음영 표시, 아이돔(Eye Dome) 조명, 또는 앰비언트 어클루전(ambient occlusion) 과 같은 시각 효과를 추가합니다.
2D map view follows 3D camera / 3D camera follows 2D Map view: 각각 2차원 맵 뷰가 3차원 카메라를 따르도록 그리고/또는 3차원 카메라가 2차원 맵 뷰를 따르도록 뷰를 동기화합니다.
Show visible camera area in 2D map view: 2차원 맵 뷰에 카메라의 가시 영역을 표시합니다.
Configure: 3차원 맵 뷰의 환경을 설정 합니다.
11.2.1. 신(scene) 환경 설정
3차원 맵 뷰는 사용자가 지정할 수 있는 몇몇 기본 설정으로 열립니다. 기본 설정을 사용자 지정하려면 3차원 맵 뷰 패널 최상단에 있는 Options 메뉴를 펼친 다음 버튼을 누르면 3D configuration 창이 열립니다.
3차원 환경 설정 대화창에는 3차원 신을 정밀 조정할 수 있는 다양한 옵션들이 있습니다:
11.2.1.1. 지형
Terrain: 자세한 내용으로 들어가기 전에, 3차원 뷰에서의 지형은 지형 타일들의 위계로 표현되기 때문에 카메라가 지형에 가까이 갈수록 세부 사항이 충분하지 않은 기존 타일은 더 자세한 정보를 가진 더 작은 타일로 대체된다는 사실을 기억해야 합니다. 각 타일은 표고 래스터 레이어에서 추출한 메시 도형과 2차원 맵 레이어에서 추출한 텍스처로 이루어져 있습니다.
Type: 표고 지형의 유형을 다음 유형들 가운데 하나로 선택할 수 있습니다:
Flat terrain: 평면 지형
DEM (Raster Layer): DEM을 불러옵니다.
Online 서비스: Mapzen 도구로 생성한 표고 타일 을 불러올 수 있습니다. 자세한 내용은 https://registry.opendata.aws/terrain-tiles/ 를 참조하세요.
Mesh: 메시 데이터셋을 불러옵니다.
Elevation: 지형을 생성하기 위해 사용되는 래스터 또는 메시 레이어를 지정합니다. 래스터 레이어는 표고를 나타내는 밴드를 담고 있어야 합니다. 메시 레이어의 경우, 꼭짓점의 Z값을 사용합니다.
Vertical scale: 수직축 용 축척 인자를 설정합니다. 축척을 증가시키면 지형의 높이를 과장하게 될 것입니다.
Tile resolution: 각 타일에 사용하기 위해 지형 래스터 레이어에서 얼마나 많은 샘플을 추출할지 설정합니다. 16px이란 값은 각 타일의 도형이 16x16 픽셀의 표고 샘플로 이루어질 것이라는 의미입니다. 해상도 값이 높을수록 더 자세한 지형 타일을 생성하지만, 그에 비례해서 렌더링 복잡도도 더 높아집니다.
Skirt height: 가끔 지형 타일들 사이에서 작은 틈이 보일 수도 있습니다. 이 값을 높이면 지형 타일 주위로 수직 장벽(“스커트”)을 추가해서 틈을 숨길 것입니다.
Offset: 지형을 위아래로 이동시킵니다. 예를 들어 신에 있는 다른 객체들의 지반(ground level)을 기준으로 지형 표고를 조정할 수 있습니다.
지형의 높이와 (예를 들어 상대 수직 높이만 이용하는 점구름(point cloud) 같은) 사용자 신에 있는 레이어의 높이가 불일치하는 경우 이 옵션이 유용할 수 있습니다. 이런 경우 지형 표고를 사용자 신에 있는 객체들의 표고와 일치하도록 조정하면 탐색 경험이 향상될 것입니다.
메시 레이어를 지형으로 사용하는 경우, (와이어프레임 표시, 삼각형 평활화, 상세 사항 수준 등을 설정하는) Triangles settings 및 Rendering colors settings 를 (렌더링 색상을 균일하게 할지 또는 색상표 기준 으로 할지를) 환경 설정할 수 있습니다. 메시 레이어 3차원 속성 에서 자세한 내용을 설명하고 있습니다.
Terrain shading: 사용자가 지형 렌더링 방법을 선택할 수 있습니다.
셰이딩(shading) 비활성화 - 맵 텍스처만을 기준으로 지형 색상을 결정합니다.
셰이딩 활성화 - 퐁 셰이딩 모델(Phong’s shading model)을 이용, 맵 텍스처, 지형 법선 벡터(normal vector), 신 조명(들) 및 지형 소재(terrain material)의 Ambient 및 Specular 색상과 Shininess 를 계산해서 지형 색상을 결정합니다.
11.2.1.2. 조명
Point lights 를 최대 8개 추가할 수 있습니다: 점조명(point light)은 마치 광구(光球)처럼 모든 방향으로 빛을 발해 일정 영역을 빛으로 채웁니다. 객체가 빛에 가까울수록 밝게 보이고, 객체가 빛에서 멀어질수록 어둡게 보입니다. 각 점조명의 위치(X, Y 및 Z), 색상(Color), 광도(Intensity) 및 감쇠율(Attenuation)을 설정할 수 있습니다.
Directional lights 를 최대 4개 추가할 수 있습니다: 지향조명(directional light)은 사용자 객체에서 아주 멀리 떨어진 거대한 손전등과 비슷한 조명을 모방합니다. 마치 태양처럼 언제나 초점이 맞춰진, 절대 감쇠하지 않는 조명이죠. 지향조명은 단일 방향으로 평행한 광선을 발하지만 그 빛은 영원히 나아갑니다. 각 지향조명의 방향(Azimuth), 고도(Altitude), 색상(Color) 및 광도(Intensity)를 설정할 수 있습니다.
11.2.1.3. 음영
Show shadows 옵션을 체크하면 사용자 신에 음영을 표시하는데, 다음을 지정해야 합니다:
Directional light: 지향 조명의 방향을 지정합니다.
Shadow rendering maximum distance: 너무 멀리 있는 객체의 음영까지 렌더링하는 일을 피하려면, 특히 카메라가 지평선을 따라 위를 바라보고 있는 경우 최대 거리를 지정해야 합니다.
Shadow bias: 맵 크기의 차이 때문에 일부 영역이 다른 영역보다 더 어둡게 보이는 자체음영(self-shadow) 효과를 피하려면 음영 편향을 설정해야 합니다. 값이 낮을수록 좋습니다.
Shadow map resolution: 음영을 더 선명하게 만듭니다. 해상도 파라미터를 너무 높게 설정하면 성능에 악영향을 미칠 수도 있습니다.
11.2.1.4. 카메라와 스카이박스
이 탭에서는 카메라, 3차원 축, 탐색 동기화 및 스카이박스 같은 서로 다른 파라미터를 제어할 수 있습니다.
Camera 파라미터 그룹은 대화창에서 정의한 기본 카메라 설정 가운데 일부를 무시합니다.
Show 3D Axis: 3차원 축 도구를 활성화하려면 이 옵션을 체크하십시오. 이 파라미터 그룹은 축 유형 및 축 위치를 설정할 수 있게 해줍니다.
축 유형을 Coordinate Reference System 유형으로 설정하면 직교 축(orthogonal axis)을 표현할 것입니다.
축 유형을 Cube 유형으로 설정하면 3차원 정육면체를 표현할 것입니다. 정육면체를 이용하면 카메라 뷰를 변경할 수 있습니다. 예를 들어, north 면을 클릭하면 카메라가 북쪽에서 바라보도록 설정됩니다.
팁
3차원 축의 위치 및 유형, 그리고 카메라 뷰를 빠르게 설정하려면 3차원 축을 오른쪽 클릭하면 됩니다.
Navigation Synchronization 파라미터 그룹은 2차원 뷰가 3차원 카메라 위치를 따르도록 또는 3차원 카메라 위치가 2차원 뷰를 따르도록 하는 또는 쌍방향으로 동기화하는 옵션을 제공합니다. 마지막 옵션을 선택하면 2차원 맵 뷰 위에 3차원 카메라의 시야 범위를 표시합니다.
Show skybox: 신에 스카이박스 렌더링을 활성화하려면 이 옵션을 체크하십시오. 스카이박스 유형은 다음 가운데 하나로 설정할 수 있습니다:
Panoramic texture: 하늘 풍경을 360° 제공하는 단일 파일입니다.
Distinct faces: 신을 담고 있는 육면체의 각 면을 각각의 텍스처 파일로 제공합니다.
스카이박스의 텍스처 이미지 파일은 디스크에 저장된 파일일 수도, 원격 URL일 수도, 또는 프로젝트에 내장되어 있을 수도 있습니다. (프로젝트 내장 파일에 대한 더 자세한 내용은 내장 파일 선택기 를 참조하세요.)
11.2.1.5. 고급
Map tile resolution: 2차원 맵 이미지의 너비와 높이를 지형 타일의 텍스처로 이용합니다. 256px이란 각 타일을 256x256 픽셀 크기의 이미지로 렌더링할 것이라는 의미입니다. 픽셀값이 높을수록 더 자세한 지형 타일을 생성하지만, 그에 비례해서 렌더링 복잡도도 더 높아집니다.
Max. screen error: 지형 타일을 더 자세한 타일로 (그리고 그 반대로) 교체하는 역치(threshold)를 결정합니다. 즉 3차원 뷰가 얼마나 빨리 더 상세한 타일을 사용할 것인가를 결정하는 것이죠. 이 값이 낮을수록 신의 세부 사항이 더 자세해지지만, 그에 반비례해서 렌더링 복잡도는 더 높아집니다.
Max. ground error: 지형 타일이 더 상세한 타일로 더이상 나눠지지 않는 해상도를 결정합니다. (타일을 나눠봤자 더 자세한 사항이 나오지도 않겠지요.) 이 값은 타일 위계의 심도(depth)를 제한합니다. 이 값이 낮을수록 위계가 늘어나지만, 그에 반비례해서 렌더링 복잡도는 더 높아집니다.
Zoom levels: 확대/축소 단계의 개수를 보여줍니다. (Map tile resolution 과 Max. ground error 값에 따라 달라집니다.)
Show map tile info: 지형 타일에 대한 경계(border) 및 타일 개수를 포함하는 정보를 켜고 끕니다. (지형에 문제가 있을 때 파악하고 해결하는 데 유용합니다.)
Show bounding boxes: 지형 타일의 3D 경계 상자(bounding box)를 켜고 끕니다. (지형에 문제가 있을 때 파악하고 해결하는 데 유용합니다.)
Show light sources: 광원 위치에 구체를 표시해서 신 내용에 따라 광원을 더 쉽게 배치/재배치할 수 있습니다.
Show frames per second (FPS): 초당 프레임 수(frames per second)를 표시합니다.
Show debug overlay: 유용한 디버그 및 프로파일 작업 정보를 표시하는 시각적 오버레이를 켜고 끕니다. 이 옵션을 이용하면, 특히 프레임 그래프와 신 그래프를 빠르게 살펴볼 수 있습니다.
Show Eye Dome Lighting (EDL): 심도 인식(depth perception)을 향상시켜주는 후처리 효과입니다. 각 픽셀의 심도(카메라로부터의 거리)를 이웃 픽셀들의 심도와 비교한 다음 해당 심도의 차이에 따라 강조시킵니다. 경계를 돋보이게 만드는 효과가 있습니다. 신 전체에 영향을 끼치며, 화면 공간 앰비언트 어클루전(Screen Space Ambient Occlusion) 과 함께 사용할 수 있습니다. 다음 파라미터들을 제어할 수 있습니다:
Lighting strength: 심도를 보다 더 인식할 수 있도록 대조를 증가시킵니다.
Lighting distance: 사용된 픽셀이 중심 픽셀로부터 벗어난 거리를 나타내어 경계를 더 진하게 보이도록 합니다.
Ambient Occlusion (SSAO): 화면 공간 앰비언트 어클루전도 앰비언트 조명에 보다 덜 노출된 영역에 더 어두운 음영을 적용해서 심도 인식을 향상시키는 후처리 효과입니다. 신 전체에 영향을 끼치며, 아이돔 조명 과 함께 사용할 수 있습니다. 다음 파라미터들을 제어할 수 있습니다:
Radius: 앰비언트 어클루전을 얼마나 멀리까지 계산할지 지정합니다.
Intensity: 효과를 얼마나 강력하게 적용할지 (값이 높을수록 더 어두워집니다) 지정합니다.
Occlusion threshold: 효과를 나타내기 위해 이웃 포인트들을 얼마나 많이 어둡게 해야 할지 지정합니다. (값이 50% 미만일 경우 산출물이 더 어두워질 것이지만, 어클루전 범위가 더 늘어날 수도 있습니다.)
11.2.3. 애니메이션 생성하기
애니메이션은 특정 시간대 카메라 위치의 키프레임 모음을 기반으로 합니다. 애니메이션을 생성하려면:
Add keyframe 버튼을 클릭하고 Keyframe time 을 초 단위로 입력하면, Keyframe 콤보박스가 타임셋(time set)을 표시합니다.
탐색 도구를 이용해서 현재 키프레임 시간과 관련된 위치로 카메라를 이동합니다.
이전 단계를 반복해서 필요한 만큼 많은 (시간과 위치를 가진) 키프레임을 추가합니다.
애니메이션을 미리보기하려면 버튼을 클릭하십시오. QGIS가 타임셋에 맞춰 카메라 위치/회전을 사용해 이를 각 키프레임 사이에 삽입해서 신(scene)을 생성할 것입니다. 애니메이션을 위한 다양한 Interpolation 모드를 사용할 수 있습니다. (linear, inQuad, outQuad, inCirc 등등… 더 자세한 내용은 https://doc.qt.io/qt-5/qeasingcurve.html#EasingFunction-typedef 를 참조하세요.)
시간 슬라이드 바를 움직여서 애니메이션을 미리보기할 수도 있습니다. Loop 체크박스를 체크하면 애니메이션을 반복 실행할 것입니다. 이때 버튼을 누르면 애니메이션을 정지합니다.
Export animation frames 버튼을 클릭하면 신을 나타내는 이미지 모음을 생성합니다. Template 에서 파일명을, Output directory 에서 저장할 디렉터리를 지정할 수 있을 뿐만 아니라, Frames per second 에서 초당 프레임 개수를, Output width 와 Output height 에서 산출 이미지의 너비와 높이도 설정할 수 있습니다.
11.2.4. 3차원 벡터 레이어
벡터 레이어 속성 패널의 3D View 부분에 있는 Enable 3D Renderer 를 활성화하면 3차원 맵 뷰에 표고값을 가진 벡터 레이어를 표시할 수 있습니다. 3차원 벡터 레이어의 렌더링을 조정할 수 있는 몇 가지 옵션을 설정할 수 있습니다.