座標参照系という単語を聞いたときに、何を思い浮かべますでしょうか?実はこの単語はハイコンテクストで、業界によってそれの指す意味が変化します。この記事では、そんな座標参照系について、ゲーム開発者の目線で違いや特長について説明していきます。なお、本稿における「座標参照系」とは、ArcGIS で一般的に利用される「座標系」と同義です。
この記事は、ArcGIS Blog 「A Guide to Coordinate Reference Systems for Game Developers」を基に翻訳したものです。
座標参照系(CRS)は、ゲームエンジン の開発者や GIS の専門家にとって馴染み深いものですが、それぞれ非常に異なる文脈で使用されます。ゲーム開発者にとって、CRS はオブジェクトがワールド空間内で正確に配置されるために重要です。一方、GIS の専門家にとっては、オブジェクトが実際の位置に対して正確に配置されることが重要です。では、ゲームエンジンを使用して地理空間アプリケーションを構築する際に、これらの異なるアプローチはどのように関連しているのでしょうか?つまり、ワールド空間ではなく地球表面上の空間データの位置に依存するアプリケーションの場合です。
このブログでは、デカルト座標系、地理座標系、および投影座標系についての情報を共有し、それらがどのように関連しているかを説明します。これにより、ArcGIS Maps SDKs for Game Engines を使用して、実世界の地理データを用いた没入型でインタラクティブな 3D 体験を作成するのに役立てていただけます。
デカルト座標系は、Unity や Unreal Engine で作成されるワールド空間の基本です。これらのゲームエンジンは異なる軸の規則に従っていますが、ArcGIS Maps SDKs for Game Engines は、好みのエンジンに関係なく同じマッピング アプリケーションを作成できるように設計されています。デカルト座標系は、直交基準に関連して指定された3つの相互に鉛直な座標軸または方向ベクトルの交点から距離を測定します。軸の規則と空間の方向は基底の構成要素であり、これらのゲームエンジンは、回転軸を中心に時計回りに正回転する左手座標系を採用しています。以下の画像は、Unity での上方向ベクトルの周りの回転が +Z 軸が +X 軸に移動するのに対し、Unreal Engine では +X 軸を +Y 軸に移動させることを示しています(図1)。
これらの 2 つのシステムの違いは、基準が座標に異なる順序を割り当てるため、軸が一意に記述されることです。したがって、XYZ 軸はしばしばその方向ベクトルの対応物で呼ばれます。例えば、Unreal Engine では XYZ 軸は前方、右、および上方向のベクトルに対応し、対照的に Unity では右、上、および前方のベクトルに対応します。これは、ジオリファレンスと呼ばれるプロセスを通じて、座標系間で空間データとゲーム オブジェクトを正確に整列させるために重要です。空間データは、地球の形状に似た表面上での計算を容易にする角度単位で位置を定義する座標系としばしば整列されます。ArcGIS Maps SDKs for Game Engines はこれらのシステムを統合し、グローバルおよびローカルの実世界の領域で空間問題を正確に解決するために使用できるマッピング アプリケーションを作成することを可能にします。次に、地理座標系とそれがゲームエンジンのワールド空間とどのように関連しているかを詳しく見てみましょう。
地球の形状は、前科学時代にまで遡る研究努力によって徹底的に調査され、測地学として知られる分野が確立されました。測地学者は、球体や楕円体を使用して地球の形状を近似するいくつかのモデルを開発しました。これらの規則的な形状は幾何学的な問題を単純化するために好まれますが、地球の表面は質量分布の変動により不規則であることが判明しています。その結果、ジオイドと呼ばれる表面モデルは、平均海面を近似することで地球の形状を正確に表現します。ジオイドは正確な標高値を取得するために使用できますが、表面の不規則性のため、マッピングや空間問題の解決には理想的ではありません。そのため、ジオイドに対する高さの変動を最小限に抑えるように最適化された基準楕円体が最終的に好まれます。
楕円体自体は、空間フレームが実世界の空間に結び付けられるまで十分に有用ではありません。楕円体を地球に固定する水平基準面や鉛直基準面など、測地基準によって識別されるさまざまな空間フレームがあります。これらの基準面や空間フレームの組み合わせにより、複合座標参照系(CCRS)が定義されます。このシステムは、2 次元の地理座標系(GCS)と鉛直座標系(VCS)を統合して 3 次元の CRS を作成するために使用できます。GCS は、座標を測地緯度(φ)および経度(λ)として定義することが多いです。したがって、地表の点は、緯度と経度の値に対してそれぞれ赤道面および本初子午線からの角度単位で距離を測定します(図2)。対照的に、VCS は、測地(楕円体)または重力に関連する高さを測定する高さと深さの値の原点を定義します。測地高度は、衛星が基準楕円体から地球の地形までの距離を計算することによって提供され、楕円体が地表の地形の上にある場合は負の値になることがあります。しかし、正確な高さの測定が必要なアプリケーションでは、重力に関連する値または直交値が好まれます。これは、楕円体を使用する代わりに、ジオイドから地球の地形までの高さを測定するためです。さらに、ジオイドと楕円体の間の差がわかれば、海抜高度と測地高度を関連付けることができます。この差はジオイド高と呼ばれ、負の値はジオイドが楕円体の下にあることを示します(図3)。
空間参照フレームには、それぞれ一意の Well-Known ID(WKID)が割り当てられています。これらの値は、ArcGIS Maps SDKs for Game Engines がアプリケーション内のデータ レイヤーやオブジェクトを正確にジオリファレンスするために必要です。以下に、水平および鉛直座標系の一般的な WKID をいくつか示します。
名称 | 座標系 | WKID |
Earth Gravitational Model 1996 | 鉛直(重力関連) | 5773 |
Earth Gravitational Model 2008 | 鉛直(重力関連) | 3855 |
World Geodetic System 1984 | 鉛直(楕円体) | 115700 |
World Geodetic System 1984 | 水平(地理) | 4326 |
China Geodetic Coordinate System 2000 | 水平(地理) | 4490 |
Web Mercator / Pseudo-Mercator | 水平(投影) | 3857 |
Plate Carrée | 水平(投影) | 32662 |
日本測地系2011 (JGD2011) ※追記 | 水平(地理) | 6668 |
ArcGIS Maps SDKs for Game Engines を使用すると、アプリケーションで使用する 2 次元または 3 次元の CRS を定義できます。これは、グローバルまたはローカルのマップ タイプを選択してマップの表示方法を決定し、ユーザー インターフェイスを介して、または Unity および Unreal Engine SDK 用の強力な C# または C++ API を使用して、マップのサポートされているシステムの WKID を選択することで行われます。上記の表から、World Geodetic System 1984(WGS84)は、水平および鉛直の測地基準点だけでなく、基準楕円体を記述するために使用できます。ArcGIS Maps SDKs for Game Engines は、空間データをレンダリングするための基準としてWGS84楕円体を使用します(図4)。この楕円体は、地球の質量中心に位置する右手系の直交座標系を使用して定義されます。このようなシステムを説明するために使用される用語は、地心地球固定座標系(ECEF)であり、長方形座標が楕円体に変換され、空間問題の解決を容易にします。WGS84 鉛直測地基準系は測地高度を取得するために使用できますが、より高い精度が必要な場合は、代わりに Earth Gravitational Model(EGM)を使用できます。EGM は、楕円体ではなく地球の重力の等ポテンシャル面に基づく鉛直空間フレームです。このモデルは、WGS84 に対するグローバルな鉛直基準面を作成することを目的として開発されました。したがって、EGM は WGS84 楕円体に関連しており、EGM によって定義されたジオイドを使用して楕円体高度と海抜高度の間のグリッド変換を可能にします。
ArcGIS Maps SDKs for Game Engines は、特に指定がない限り、現在 EGM96 をデフォルトの鉛直座標系として使用しています。これを地理的な水平基準点およびグローバル マップ タイプと組み合わせて、3 次元のCRS を作成できます。この構成では、ほとんどの重力関連データ レイヤーが WGS84 楕円体からの海抜高度でレンダリングされます。ただし、グリッド変換を行うことで楕円体高度でレンダリングすることもできます。座標系およびグリッド変換に関する詳細情報は、ArcGIS Maps SDKs for Game Engines for Unity および Unreal Engine の各ドキュメント ウェブサイトで確認できます。ブログの次のセクションでは、ローカル マップ タイプで 2 次元マップを作成するために好まれる投影座標系を紹介します。
地図は、地理システムを平面、円錐、円筒などの展開可能な面に投影または平坦化することによって、地球の表面を 2 次元で表現するために使用されます。このプロセスには、測地測定値をイースティングとノーシングと呼ばれる地図座標に変換する数学的な公式が含まれます。これらは、地図を西から東、北から南に分割する垂直および水平の線を記述し、グリッドを形成します。投影システムを使用する利点は、長方形の座標が計算と情報の表示を簡素化できることです。一方、角度座標から長方形座標への変換は、使用される投影法に応じて地図の変形を引き起こすエラーを導入するという欠点があります。等角、等面積、等距離、方位角など、保存される空間特性に応じて異なる結果をもたらすいくつかの地図投影法があります。ArcGIS Maps SDKs for Game Engines を使用すると、投影システムを使用して地図を作成でき、投影法の選択が地図上の位置の精度を決定します。
広く使用されている等角円筒図法の例として、メルカトル図法があります。これは方向、角度、形状を保持しますが、赤道からの距離が増すにつれて面積が歪みます。この投影法は、グローバル マッピングや航海図に理想的な楕円体の公式を使用しており、WGS84 測地基準に基づくWebメルカトル システムのような適応をもたらしました(図5)。地理システムと同様に、投影システムにも識別のための固有の WKID があります。ArcGIS Maps SDKs for Game Engines を使用すると、投影システムの WKID が指定されている場合、地図座標を使用して 2 次元または 3 次元の CRS を定義できます。Web メルカトル システムは、その効率性から特に注目されており、Web マップやサービスで一般的に使用されています。ただし、球面の公式と楕円体の測地基準(WGS84)を組み合わせているため、最大 40 キロメートルの歪みを生じる可能性があります。
Web メルカトルとは対照的に、正方形図法(Plate Carrée)は等距円筒図法であり、高緯度および低緯度で大きな歪みを引き起こしますが、グリッド内の平行線は互いに同じ距離を保ちます(図5)。ArcGIS Maps SDKs for Game Engines を使用する場合、ローカル マップ タイプの地理システムにはデフォルトで正方形図法投影が実行されます。ただし、地図に投影システムの WKID が指定されており、ローカル マップ タイプが使用されている場合、地図は同じ空間フレームで表示されます。ArcGIS Maps SDKs for Game Engines Unity および Unreal Engine を使用して投影地図がどのように表示されるかについての追加情報は、各ドキュメント ウェブサイトで確認できます。
座標参照系は、2 次元および 3 次元のアプリケーションを作成するために不可欠です。ArcGIS Maps SDKs for Game Engines は、Unity およびUnreal Engine SDK 用の強力な C# または C++ API を使用して、好みの空間フレームで地図を作成できるように、さまざまな CRS を幅広くサポートしています。さらに、ユーザー インターフェイスを介してノーコード オプションも利用でき、ベースマップまたは地図に追加された最初のデータ レイヤーの空間フレームを使用して地図が自動的に作成されます。これにより、地図と空間データの両方が同じ空間フレームにあることで、精度が確保されます。ただし、異なる空間フレームのデータ レイヤーを地図に追加する場合、ArcGIS Maps SDKs for Game Engines はデータを地図の空間フレームに自動的に投影し、精度の低下を最小限に抑えます。
ArcGIS Maps SDKs for Game Engines の今後の変更には、ノーコード体験を向上させるために、地図の好みの空間フレームを指定できる強化されたユーザー インターフェイスが含まれます。これらの変更により、水平および鉛直の空間フレームのための好みのWKIDを入力することで地図の作成が容易になります。追加の改善点には、楕円体高度と重力関連高度の間の自動変換が含まれ、どちらの鉛直座標系でもレイヤーを組み合わせることができるようになります。また、ArcGIS Maps SDKs for Game Engines の GIS 機能を活用して独自のアプリケーションを作成するための新しい Unity および Unreal Engine のサンプルも提供されます。
ArcGIS Maps SDKs for Game Engines Unity および Unreal Engine の使用を開始したい場合は、各ドキュメント ウェブサイトをご覧ください(日本語のドキュメントは関連リンクを参照)。無料アカウントにサイン アップし、アプリの構築を開始するために必要なすべての情報にアクセスする方法を学ぶことができます 。
ArcGIS Developers 開発リソース集 (Unity)
ArcGIS Developers 開発リソース集 (Unreal Engine)
ArcGIS コミュニティ ブログ (arcgis-gameengine-sdk)