11.2. 3Dマップビュー

3次元可視化サポートは3Dマップビューによって提供されます。 ビュー ► 3Dマップビュー ► メニューから、3Dマップビューの作成や管理を行ったり、3Dマップビューを開くことができます:

  1. new3DMap 新規3Dマップビュー をクリックすると、新しい3Dマップビューを作成できます。ドッキング可能なフローティングのQGISパネルが現れます( 3Dマップビューダイアログ 参照)。これは2Dのメインマップキャンバスと同じ範囲とビューを持っており、このビューを3次元に変化させるためのナビゲーションツール群があります。

  2. 3Dマップビューを管理 をクリックすると、3Dマップビューマネージャが表示されます。ここでは、3Dマップビューの表示、複製、削除や名前の変更ができます。

  3. 1つ以上の3Dマップビューを作成すると、ビューが 3Dマップビュー のメニュー内にリスト表示されます。これをクリックすることで、表示・非表示を切り替えられます。たとえビューが非表示であっても、プロジェクトを保存することで、3Dマップビューは保存されます。

../../../_images/3dmapview.png

図 11.23 3Dマップビューダイアログ

3Dマップビューパネルの上部には、以下のツールがあります。

  • pan カメラコントロール: カメラの角度と方向を維持しながらビューを移動させます

  • zoomFullExtent 全域表示: ビューをレイヤ全体の範囲にサイズ変更します

  • 3dNavigation 画面操作を切り替え: (マップビューの操作を簡単にするための)ナビゲーションウィジェットを表示/非表示にします

  • identify 地物情報表示: クリックされた地点の地形情報、もしくはクリックされた3次元地物の情報を表示します(詳細については 地物の識別 を参照)

  • measure 計測ライン: ポイント間の水平距離を測定します

  • play アニメーション: アニメーションプレーヤー ウィジェットを表示/非表示 にします

  • saveMapAsImage 画像として保存...: 現在のビューを画像ファイル形式でエクスポートします

  • 3d 3Dシーンの出力 :現在のビューを3Dシーン( .obj ファイル)として出力し、Blender等のアプリケーションで後処理できるようにします。地形とベクタ地物が3Dオブジェクトとしてエクスポートされます。エクスポート設定には以下のものが含まれ、レイヤの プロパティ やマップビューの 設定 を上書きします。

    • シーン名 と出力先 フォルダ

    • 地形解像度

    • 地形テキスチャの解像度

    • モデルスケール

    • checkbox エッジのスムージング

    • checkbox 法線をエクスポート

    • checkbox テキスチャをエクスポート

  • showPresets ビューテーマの設定 :定義済みの マップテーマ から、から、マップビューに表示するレイヤの組み合わせを選択できます。

  • options オプション メニューには、以下のショートカットがあります:

  • dock 3Dマップビューを合体: ドッキング可能なウィジェットからトップレベルウィンドウへと切り替えます

11.2.1. シーン設定

3Dマップビューはデフォルトの設定で開かれますが、設定のいくつかはカスタマイズが可能です。設定を変更するためには、3Dキャンバスパネルの上部にある options オプション メニューを展開し、 options 設定 ボタンを押すことで、 3Dコンフィグレーション ウィンドウを開きます。

../../../_images/3dmapconfiguration.png

図 11.24 3Dコンフィグレーションダイアログ

3Dコンフィグレーションウィンドウには、3Dシーンを微調整するためのさまざまなオプションがあります。

11.2.1.1. 地形

  • 地形 :まず、3Dビューの地形は地形タイルの階層によって表現されることに注意してください。カメラが地形に近づくと、十分なディテールを持たない既存のタイルはよりディテールの細かい小さいタイルに置き換えられます。各タイルは、標高ラスタレイヤに由来するメッシュジオメトリと、2Dマップレイヤに由来するテクスチャを持っています。

    • 地形は以下の があります。

      • 平らな地形

      • 読み込まれた DEM ラスタ

      • オンライン サービスは、Mapzen ツールによって作成された 標高タイル を読み込みます。 -- 詳細については https://registry.opendata.aws/terrain-tiles/ を参照してください。

      • 読み込んだ メッシュ データセット

    • 高さ :地形の生成に使用するラスタレイヤまたはメッシュレイヤを選択します。ラスタレイヤには標高を表すバンドが含まれている必要があります。メッシュレイヤは、頂点のZ値が使用されます。

    • 鉛直スケール: 垂直軸のスケール係数です。スケールを大きくすると、地形の高さが誇張されます。

    • タイル解像度: 各タイルに使用する地形ラスタレイヤのサンプル数です。値が16の場合、各タイルのジオメトリは16x16の標高サンプルで構成されます。数値を高くするとより詳細な地形タイルが作成されますが、レンダリングが複雑になります。

    • スカートの高さ: 地形のタイル間に小さな亀裂が見られることがあります。この値を上げると地形タイルの周りに垂直方向の壁("スカート")が追加され、亀裂を隠すことができます。

    • オフセット: 地形を上下に移動します。例えば、シーン内の他のオブジェクトのグラウンドレベルに応じて地形の標高を調節するために使います。

      これは、地形の高さとシーン内のレイヤの高さの間に相違がある場合に便利です(例:相対的な垂直方向の高さのみを持つ点群など)。この場合、地形の高さをシーン内のオブジェクトの高さと一致するように手動で調整すると、ナビゲーションの操作性を向上できます。

  • メッシュレイヤを地形として使用する場合には、 三角形設定 (ワイヤフレームを表示、スムース三角形、詳細水準)と、 レンダリング色設定 (単一色または カラーランプ に基づく色)の設定ができます。詳細は メッシュレイヤの3Dビュープロパティ のセクションを参照してください。

  • unchecked 地形シェーディング: 地形のレンダリング方法を選択できます。

    • シェーディングが無効 - 地形の色はマップテクスチャからのみ決定されます

    • シェーディングが有効 - 地形の色はPhongのシェーディングモデルを使用して決定されます。マップテクスチャ、地形の法線ベクトル、シーンの光源、地形マテリアルの 環境光の色鏡面光の色シャイネス(輝き) が考慮されます。

11.2.1.2. 光源

光源 タブでは、 symbologyAdd メニューをクリックして以下の光源を追加できます。

  • 最大8つの 点光源 : 空間に広がる光の球のように、全ての方向に光を放ちます。光源に近い物体は明るく、遠いものは暗くなります。点光源は設定位置( XYZ)と、 強度Attenuation(減衰) を持ちます。

  • 最大4つの 方向光源 :これは、オブジェクトから非常に遠く離れた場所にある巨大なフラッシュライトからの光を再現したもので、(例えば太陽のように)常に集中していて弱まることがありません。この光源はある一つの方向に平行な光線を放出しますが、光は無限遠まで届きます。方向光源は 方位角(Azimuth) を指定して回転させることができ、 高度強度(Intensity) の設定があります。

../../../_images/3dmapconfiguration_lights.png

図 11.25 3D光源コンフィグレーションダイアログ

11.2.1.3.

unchecked 影を表示 をチェックすると、シーンに影を表示します。次の設定があります:

  • 方向光源

  • シャドーレンダリングの最大距離 :特にカメラが水平方向を向いている場合に、遠すぎるオブジェクトの影をレンダリングしないようにするための距離。

  • シャドーバイアス :マップサイズの違いによりエリアの一部が他よりも暗くなるセルフシャドウ効果を回避するための値です。小さいほど良いです。

  • シャドー解像度 :影の見た目をよりシャープにします。解像度パラメータを非常に大きくした場合、パフォーマンスが低下することがあります。

11.2.1.4. カメラとSkybox

このタブでは、カメラ、3D軸、ナビゲーションの同期やSkyboxといったさまざまなパラメータを制御できます。

../../../_images/3dmapconfiguration_camera.png

図 11.26 3Dカメラコンフィグレーションダイアログ

  • カメラ パラメータグループは、 設定 ► オプション ► 3D ダイアログで設定した デフォルトカメラ設定 の一部を上書きできます。

  • unchecked 3D軸を表示 にチェックを入れると、3D軸ツールを有効化します。このパラメータグループは、軸のタイプや位置を設定できます。

    • 座標参照系 タイプを使用すると、直交する軸で表現されます。

    • Cube タイプを使用すると、3Dキューブで表現されます。キューブの面は、カメラのビューの変更に使用できます: 例えば、 の面をクリックすると、カメラが北側から見るように設定されます。

Tip

3D軸を右クリックすると、カメラの位置やタイプ、ビューの設定を素早く行えます。

../../../_images/3dmapconfiguration_3daxis_menu.png

図 11.27 3D軸のコンテキストメニュー

  • ナビゲーションを同期 パラメータグループは、2D地図ビューを3Dカメラ位置に同期させたり、または3Dカメラ位置を2D地図ビューに同期させたり、あるいは双方向に同期させたりするオプションを追加します。一番下のオプションは、2Dマップビュー上に3Dカメラで見えている範囲を表示させます。

  • unchecked Skyboxを表示 にチェックを入れると、シーンのスカイボックスレンダリングを有効化できます。スカイボックスのタイプには、以下があります:

    • パノラマテキスチャ 単一のファイルで、360° の視界に適用されます

    • 面(Distinct faces) シーンを囲む箱の6つの側面それぞれのテクスチャファイルを指定します

    スカイボックスのテクスチャの画像ファイルには、ディスク上のファイル、リモートURL、プロジェクトに埋め込まれたファイル( 詳細はこちら )が使用できます。

11.2.1.5. 詳細設定

  • 地図タイルの解像度: 地形タイルのテクスチャとして使用される2D地図画像の幅と高さ。256pxは、各タイルが256x256ピクセルの画像にレンダリングされることを意味します。数値が高いほど詳細な地形タイルが作成されますが、レンダリングが複雑になります。

  • 最大 画面誤差: 地形タイルをより詳細なタイル(または簡略なタイル)と交換する際のしきい値を指定します。すなわち、3Dビューがより高品質なタイルにどれだけ早く切り替えるかの値です。数値が低いほど、レンダリングの複雑さを犠牲にしてもシーンの詳細度が高くなります。

  • 最大 地上誤差: タイルをより詳細なタイルへと分割する操作が停止する地形タイル解像度の値です(タイルを分割してもそれ以上のディテールが得られません)。この値はタイルの階層の深さを制限します。値が小さいと階層が深くなり、レンダリングが複雑になります。

  • ズームレベル: ズームレベルの数を表示します(マップタイルの解像度と最大地上誤差に依存します)。

  • unchecked ラベルを表示: マップラベルのオン/オフを切り替えます

  • unchecked 地図タイル情報を表示: 地形タイルに境界線とタイル番号を表示します(地形の問題のトラブルシューティングに役立ちます)

  • unchecked バウンディングボックスを表示する: 地形タイルの3Dバウンディングボックスを表示します(地形の問題のトラブルシューティングに役立ちます)

  • unchecked カメラのビューセンターを表示する

  • unchecked カメラの回転中心を表示

  • unchecked ライト源を表示 :光源の原点に球体を表示し、シーンコンテンツに対する光源の移動や配置を容易にします

  • unchecked FPSを表示

  • unchecked デバッグオーバーレイを表示: デバッグとプロファイルに関する便利な情報を表示するビジュアルオーバーレイです。これによって特にフレームグラフやシーングラフを素早く確認できます。

  • unchecked アイドーム照明(EDL)を表示: 奥行きの感覚を高めるポストプロセス効果です。各ピクセルの奥行き(カメラからの距離)は隣接ピクセルの奥行きと比較され、奥行きの差に応じて強調表示され、エッジが目立つようになります。これはシーン全体に影響し、 環境光遮蔽(Ambient Occlusion) と組み合わせることができます。以下のパラメータを制御できます:

    • 照明の強度: コントラストを増加させ、より奥行き間隔を高めます

    • 照明の距離: 使用するピクセルの中心ピクセルからの距離を表します。エッジを太くする効果があります。

  • スクリーン空間への unchecked 環境光遮蔽(Ambient Occlusion) の追加: 環境光に当たりにくい部分により暗い影を適用するポストプロセス効果で、こちらも奥行き感を高めます。これはシーン全体に影響し、 アイドーム照明 と組み合わせることができます。以下のパラメータを制御できます:

    • 半径: 環境光遮蔽を計算する距離

    • 強度(Intensity): 効果の強さ(値が大きいほど暗くなる)

    • 遮蔽閾値(Occlusion Threshold): 隣接点がいくつ遮蔽されると効果が現れるか(50%より低い値の場合、アウトプットは暗くなるが、遮蔽の範囲は広くなることがある)

../../../_images/3dmap_edl_ssao.png

図 11.28 アイドーム照明(EDL)および環境光遮蔽(SSAO)を使用した3Dマップの点群レンダリング

左上から順に、両方なし -- SSAOのみ -- EDLのみ -- SSAOとEDL両方

  • unchecked シャドーマップのデバッグ: 影に使用する光源の視点から、シーンを赤と黒のイメージとしてレンダリングします(トラブルシューティング用)。ウィジェットは3Dマップビューに比例した 大きさ に設定され、指定した コーナー にドッキングされます。

  • unchecked 深度マップのデバッグ: シーンの深度マップをカメラに近いピクセルは暗い色の画像としてレンダリングします(トラブルシューティング用)。ウィジェットは3Dマップビューに比例した 大きさ に設定され、指定した コーナー にドッキングされます。

11.2.3. アニメーションの作成

アニメーションはキーフレーム(特定の時刻のカメラ位置)の集合に基づいています。アニメーションを作成するには、

  1. play アニメーション ツールをオンに切り替え、アニメーションプレイヤーウィジェットを表示させます

  2. symbologyAdd キーフレームを追加 ボタンをクリックして、 キーフレーム時間 を秒単位で入力します。キーフレーム コンボボックスには、キーフレーム時間の集合が表示されます。

  3. ナビゲーションツールを使用してカメラを移動させ、カメラ位置を現在のキーフレーム時間に関連付けます。

  4. 上の手順を繰り返して、必要な数のキーフレーム(時間とカメラ位置)を追加します。

  5. play ボタンをクリックして、アニメーションをプレビューします。QGISは設定したキーフレーム時間のカメラ位置/回転 を使用してシーンを生成し、キーフレーム間のカメラ位置/回転を補間します。アニメーションにはさまざまな 内挿 モードが利用可能です(例えば Linear(線形)、 InQuad、OutQuad、InCircなど -- 詳細は https://doc.qt.io/qt-5/qeasingcurve.html#EasingFunction-typedef を参照してください)。

    アニメーションは、時間スライダーを動かすことでもプレビューできます。 ループ のチェックボックスにチェックを入れると、 play ボタンをクリックしてアニメーションを停止するまでは、アニメーションを繰り返し再生します。

fileSave アニメーション出力フレーム を使用して、シーンを表す一連の画像を生成します。出力ファイル名の テンプレート出力フォルダ のほか、フレーム数/秒出力の幅出力の高さ を設定することができます。

11.2.4. 3Dベクタレイヤ

標高値を持つベクタレイヤは、ベクタレイヤのプロパティの 3Dビュー セクション内の Enable 3D Renderer をチェックすることで、3D マップビューに表示することができます。 3D ベクタレイヤのレンダリングを制御するためのオプションが多数用意されています。