14.4. 3차원 심볼 생성

Style Manager 를 통해 3차원 맵 뷰 에서 렌더링될 모든 도형 유형의 3차원 심볼을 생성하고 저장할 수 있습니다.

다른 항목들과 마찬가지로, 3d 3D Symbols 탭을 선택하고 symbologyAdd 버튼 메뉴를 확장해서 다음을 생성할 수 있습니다:

14.4.1. 포인트 레이어

../../../_images/3d_point_symbol.png

그림 14.33 3차원 포인트 심볼의 속성

  • 포인트 심볼에 사용할 서로 다른 유형의 3차원 Shape 을 정의할 수 있습니다. 3차원 형태는 주로 프로젝트 좌표계를 참조하는 단위를 가진 차원으로 정의됩니다. 다음과 같은 유형을 정의할 수 있습니다:

    • 반경(Radius)으로 정의되는 구(Sphere) 형태

    • Cylinder defined by a Radius and Length

    • 크기(Size)로 정의되는 정육면체(Cube)

    • 상단 반경(Top radius), 하단 반경(Bottom radius) 그리고 길이(Length) 로 정의되는 원뿔(Cone) 형태

    • 크기(Size)로 정의되는 평면(Plane)

    • 반경(Radius) 과 작은 반경(Minor radius)으로 정의되는 Torus (원환면) 형태

    • 3차원 모델 파일을 사용하는 3D Model: 지원 포맷은 파면(wavefront) .obj, .glTF.fbx 파일을 포함합니다. 모델은 디스크 상에 저장된 파일일 수 있고, 원격 URL일 수도 있으며, 프로젝트에 내장 되어 있을 수도 있습니다. https://plugins.qgis.org/wavefronts 에 있는QGIS 허브에서 커뮤니티가 생성한 모델들을 공유하고 있습니다.

    • 빌보드 높이(Billboard height)와 (일반적으로 마커 심볼 을 바탕으로 하는) 빌보드 심볼(Billboard symbol)로 정의되는 빌보드(Billboard). 이 심볼의 크기는 정적입니다. 3차원 점구름 형태를 가시화하는 데 편리합니다.

  • 고도 클램핑(Altitude clamping)은 Absolute, Relative 또는 Terrain 가운데 하나로 설정할 수 있습니다. 3차원 벡터의 높이 값이 0에서 시작하는 절대 측정값으로 제공되는 경우 Absolute 설정을 사용할 수 있습니다. Relative 또는 Terrain 설정은 기저 지형 표고에 지정한 표고값을 추가합니다.

  • 음영 속성을 정의할 수 있습니다.

  • Transformations 프레임에서 심볼에 아핀 변환을 적용할 수 있습니다:

    • Translation: x, y, z 축에서 객체를 이동시킵니다.

    • Scale: 3차원 형태의 크기를 조정합니다.

    • Rotation: x, y, z 축을 중심으로 3차원 형태를 회전시킵니다.

14.4.2. 라인 레이어

../../../_images/3d_line_symbol.png

그림 14.34 3차원 라인 심볼의 속성

  • WidthHeight 설정 밑에서 벡터 라인의 Extrusion 을 정의할 수 있습니다. 라인이 Z값을 가지지 않을 경우, 이 설정을 통해 3차원 부피를 정의할 수 있습니다.

  • 사용자가 래스터 표고 데이터 또는 기타 3차원 벡터를 포함시킨 경우, Altitude clamping 을 통해 3차원 라인의 기저 지표면에 상대적인 위치를 정의하십시오.

  • Altitude binding 설정은 피처를 어떻게 지형에 고정시킬지를 정의합니다. 피처의 모든 Vertex 를 지형에 고정시키거나, 또는 Centroid 를 고정시킬 것입니다.

  • checkboxRender as simple 3D lines: 단순 3차원 라인으로 렌더링할 수도 있습니다.

  • 음영 속성을 정의할 수 있습니다.

14.4.3. 폴리곤 레이어

../../../_images/3d_polygon_symbol.png

그림 14.35 3차원 폴리곤 심볼의 속성

  • 다른 심볼들과 마찬가지로, Height 를 좌표계 단위로 정의할 수 있습니다. 또한 dataDefine 버튼을 사용해서 사용자 정의 표현식, 변수, 또는 속성 테이블의 항목으로 값을 덮어쓸 수도 있습니다.

  • Extrusion 을 사용하면 폴리곤에서도 누락된 Z값을 압출할 수 있습니다. 또 압출 과정에서 벡터 레이어의 값을 이용하기 위해 dataDefine 버튼을 사용하면 각 폴리곤 별로 서로 다른 결과값을 얻을 수 있습니다:

    ../../../_images/3d_extrusion.png

    그림 14.36 데이터 정의 압출

  • 앞에서 설명한 대로 Altitude clamping, Altitude binding 을 정의할 수 있습니다.

  • Culling mode: 심볼에 컬링 모드를 정의할 수 있습니다. 다음 가운데 하나로 설정할 수 있습니다:

    • No Culling: polygonZ/멀티패치(multipatch) 데이터의 꼭짓점들이 일관성 있는 순서로 (예를 들어 시계 방향 또는 반시계 방향으로) 되어 있지 않은 경우 누락된 것으로 보이는 표면을 방지하는 데 이 모드가 도움이 될 수 있습니다.

    • Front: 정면(front-face) 컬링

    • Back: 배면(back-face) 컬링

  • Rendered facade: 표시할 면(face)을 결정합니다. No facades, Walls, Roofs, 또는 Walls and roofs 가운데 하나를 선택할 수 있습니다.

  • checkbox Add back faces: 각 삼각형에 대해, 정확한 법선(normal)으로 정면 및 배면을 모두 생성합니다. 이때 꼭짓점 데이터의 개수가 늘어나 성능이 저하될 수도 있습니다. (예를 들어 꼭짓점 순서가 일관적이지 않은 데이터 때문에 발생한) 음영 문제를 해결하는 데 이 옵션을 사용할 수 있습니다.

  • checkbox Invert normals (experimental): 시계 방향/반시계 방향 정면 꼭짓점 순서를 해결하는 데 유용할 수 있습니다.

  • 음영 속성을 정의할 수 있습니다.

  • checkbox Edges: 이 옵션을 활성화하면 심볼 경계를 표시하며, 경계의 WidthColor 를 설정할 수 있습니다.

힌트

3차원 데이터를 최적으로 렌더링하기 위한 조합

Culling mode, Add back faces 그리고 Invert normals 모두 3차원 데이터가 올바르게 보이지 않을 경우 3차원 데이터의 모양을 수정하기 위한 설정들입니다. 일반적으로 데이터를 불러올 때 먼저 culling mode=backadd back faces=disabled 를 시도해보는 것이 좋습니다. 가장 효율적인 방법이기 때문입니다. 렌더링 결과가 올바르게 보이지 않는다면 culling mode=no cullingadd back faces=enabled 를 시도해보십시오. 다른 조합들은 좀 더 고급 사용자를 위한 것으로, 입력 데이터셋이 얼마나 섞여 있느냐를 기반으로 하는 몇몇 시나리오에서만 유용합니다.

14.4.4. 텍스처에 음영 만들기

음영 작업은 다른 상황에서는 신(scene)의 조명 때문에 보이지 않을 수도 있는 객체의 3차원 세부 사항을 드러내는 데 도움이 됩니다. 궁극적으로, 피처를 시각화하기 위한 적절한 신 조명을 설정하느라 고민할 필요 없이 3차원 심볼을 더 쉽게 작업할 수 있습니다.

QGIS에서는 다양한 음영 기법을 사용하는데, 그 사용성은 심볼의 도형 유형에 따라 달라집니다:

  • Realistic (Phong): 거친 표면의 Diffuse 반사와 광택이 있는 (Shininess) 표면의 Specular 반사를 조합해서 표면이 빛을 반사하는 방식을 설명합니다. 신 전체에 확산되는 소량의 빛을 연산에 넣을 수 있는 Ambient 옵션도 포함하고 있습니다. 3차원에서 반쯤 투명한 객체를 렌더링하려면 Opacity 슬라이드 바를 이용하십시오. 더 자세한 내용은 https://en.wikipedia.org/wiki/Phong_reflection_model#Description 페이지를 읽어보세요.

  • Realistic Textured (Phong): 이미지를 Diffuse Texture 로 이용한다는 점을 제외하면 Realistic (Phong) 과 동일합니다. 이미지는 디스크 상에 저장된 파일일 수도 있고, 원격 URL일 수도 있으며, 프로젝트에 내장 되어 있을 수도 있습니다. Texture scaleTexture rotation 을 설정해줘야 합니다. 반쯤 투명한 3차원 객체를 렌더링하려면 Opacity 슬라이드 바를 이용하십시오.

  • CAD (Gooch): 이 기법은 경계선이 계속 강조되고 시각적으로 두드러져 보이도록 음영이 중간 톤으로만 발생하게 해줍니다. Diffuse, Specular, Shininess 옵션 외에, (조명을 바라보는 표면을 위한) Warm 색상 및 (조명 반대 방향을 바라보는 표면을 위한) Cool 색상을 정의해야 합니다. 또한 AlphaBeta 속성이 확산(diffuse) 색상이 차가운 색상과 따뜻한 색상에 각각 미치는 상대적 기여도를 제어합니다. https://en.wikipedia.org/wiki/Gooch_shading 페이지도 읽어보세요.

  • Embedded Textures: 3차원 모델 형태를 가지고 있는 내장 텍스처

14.4.5. 응용 프로그램 예시

앞에서 설명한 설정들을 자세히 알아보려면, https://app.merginmaps.com/projects/saber/luxembourg/tree 페이지에 있는 파일들을 다운로드 받아보십시오.