(57)【要約】      （修正有）【課題】３Ｄ構造体のフットプリントを特定するための方法及び装置を提供する。【解決手段】方法は、３Ｄ構造体の多角形を形成する頂点及び辺を含む、３Ｄ構造体のためのメッシュデータを受け取ることと、候補ノードと候補線とを含む連結グラフを特定することとを含み、（ｉ）高さ閾値を下回る頂点を有する全ての辺を識別することと、（ｉｉ）識別された辺及びその頂点を２Ｄ面にマッピングすることとによって行われ、さらに、各候補ノードに対して、どの他の候補ノードが候補線によって候補ノードに接続されているのかを示す隣接リストを特定することと、連結グラフ及び隣接リストに基づいて、３Ｄ構造体のフットプリントを作成することと、を含む。このフットプリントは、候補ノードの選択に対応する頂点と、候補線の選択に対応する辺とを含む。【選択図】図３
2019164787.tif 000002
【特許請求の範囲】
【請求項１】
仮想環境における三次元（３Ｄ）構造体の二次元（２Ｄ）フットプリントを特定する方法であって、
前記方法は、プロセッサによって、少なくとも１つの３Ｄ構造体のためのメッシュデータを受け取ることを含み、前記メッシュデータは、前記少なくとも１つの３Ｄ構造体を形成する複数の多角形を形成するために複数の辺によって接続されている複数の頂点の位置を含み、
前記方法は、前記プロセッサによって、複数の候補ノードと複数の候補線とを含む連結グラフを特定することを含み、これは、（ｉ）高さ閾値を下回る頂点を有する前記複数の辺における全ての辺を識別することと、（ｉｉ）識別された前記辺及びその頂点を２Ｄ面にマッピングすることにより、前記複数の候補線と前記複数の候補ノードとを特定することとによって行われ、
前記方法は、前記プロセッサによって、隣接リストを特定することを含み、前記隣接リストは、前記複数の候補ノードにおける各候補ノードに対して、前記複数の候補ノードにおけるどの他の候補ノードが、前記複数の候補線における１つの候補線によって各候補ノードに接続されているのかを示し、
前記方法は、前記プロセッサによって、前記連結グラフ及び前記隣接リストに基づいて、前記少なくとも１つの３Ｄ構造体のフットプリントを作成することを含み、前記フットプリントは、前記複数の候補ノードからの候補ノードの選択されたグループに対応する頂点を含み、かつ、前記複数の候補線からの候補線の選択されたグループに対応する辺を含む、
仮想環境における３Ｄ構造体の２Ｄフットプリントを特定する方法。
【請求項２】
前記連結グラフを特定することはさらに、
互いに所定の距離内にある前記複数の候補ノードにおける候補ノードを合併することと、
互いに所定の距離内にあり、かつ、互いに関して所定の角度未満にある前記複数の候補線における候補線を合併することと、
のうちの少なくとも１つを含む、
請求項１に記載の方法。
【請求項３】
前記連結グラフを特定することはさらに、
各候補線上へ、前記複数の候補線における各候補線から所定の距離内にある前記複数の候補ノードにおける１つの候補ノードを動かすことと、
前記各候補線を、動かされた前記候補ノードにおいてそれぞれ１つの終端部を有する２つの候補線に分割することと、
を含む、
請求項１に記載の方法。
【請求項４】
前記連結グラフを特定することはさらに、
前記複数の候補線における２つの各候補線の交差点に位置する新たな候補ノードを作成することと、
前記２つの各候補線の各々を、作成された前記新たな候補ノードにおいてそれぞれ１つの終端部を有する２つの新たな候補線に分割することと、
を含む、
請求項１に記載の方法。
【請求項５】
前記連結グラフを特定することはさらに、
（ｉ）前記複数の候補ノードにおける１つの別の候補ノードに接続されているだけの、前記複数の候補ノードにおける１つの候補ノードと、（ｉｉ）前記複数の候補ノードにおける他の候補ノードに接続されていない、前記複数の候補ノードにおける１つの候補ノードとのうちのいずれかを除去することと、
除去された前記候補ノードに接続されている、前記複数の候補線におけるあらゆる候補線を除去することと、
を含む、
請求項１に記載の方法。
【請求項６】
前記少なくとも１つの３Ｄ構造体のフットプリントを作成することはさらに、
前記複数の候補ノードから開始候補ノードを選択することと、
前記複数の候補ノードから候補ノードの第１のシーケンスを順次選択することと、
を含み、候補ノードの前記第１のシーケンスにおける第１の候補ノードは、前記開始候補ノードに接続されており、候補ノードの前記第１のシーケンスにおける第１の候補ノード以外の各候補ノードは、候補ノードの前記第１のシーケンスにおける先行する各候補ノードに接続されており、
候補ノードの選択された前記グループは、候補ノードの選択された前記第１のシーケンスとともに、選択された前記開始候補ノードによって形成されている候補ノードの第２のシーケンスを含み、
候補線の選択された前記グループは、候補ノードの前記第２のシーケンスを順次接続する前記複数の候補線における候補線の第１のシーケンスを含む、
請求項１に記載の方法。
【請求項７】
候補ノードの前記第２のシーケンスの候補ノードの位置は、選択された前記開始候補ノードからスタートして、時計回りに動く、
請求項６に記載の方法。
【請求項８】
前記プロセッサによって、（ｉ）候補ノードの選択された前記グループ及び候補ノードの選択された前記グループに接続されている前記複数の候補ノードにおけるあらゆる候補ノードを、前記連結グラフの前記複数の候補ノードから除去し、かつ、（ｉｉ）候補線の選択された前記グループ及び候補線の選択された前記グループに接続されている前記複数の候補線におけるあらゆる候補線を、前記連結グラフの前記複数の候補線から除去することと、
前記プロセッサによって、前記除去後に、複数の候補ノード内に残存している候補ノード及び前記複数の候補線内に残存している候補線に応じて、前記連結グラフ及び前記隣接リストに基づいて、前記少なくとも１つの３Ｄ構造体のさらなるフットプリントを作成することと、
をさらに含む、
請求項６に記載の方法。
【請求項９】
前記少なくとも１つの３Ｄ構造体のフットプリントを作成することはさらに、
候補ノードの前記第２のシーケンスを順次接続する候補線の前記第１のシーケンスにおいて繰り返される候補線に対応する辺を前記フットプリントから除去することを含む、
請求項６に記載の方法。
【請求項１０】
前記プロセッサによって、前記少なくとも１つの３Ｄ構造体の作成された前記フットプリントを用いて、グラフィックスをレンダリングすることと、
前記プロセッサに動作可能に接続されている表示装置上に、レンダリングされた３Ｄグラフィックスを表示することと、
をさらに含む、
請求項１に記載の方法。
【請求項１１】
表示装置と、
メモリと、
前記表示装置と前記メモリとに動作可能に接続されているプロセッサと、
を備えている図形表示システムであって、
前記プロセッサは、少なくとも１つの三次元（３Ｄ）構造体のためのメッシュデータを受け取るように構成されており、前記メッシュデータは、前記少なくとも１つの３Ｄ構造体を形成する複数の多角形を形成するために複数の辺によって接続されている複数の頂点の位置を含み、
前記プロセッサは、複数の候補ノードと複数の候補線とを含む連結グラフを特定するように構成されており、これは、（ｉ）高さ閾値を下回る頂点を有する前記複数の辺における全ての辺を識別することと、（ｉｉ）識別された前記辺及びその頂点を二次元（２Ｄ）面にマッピングすることにより、前記複数の候補線と前記複数の候補ノードとを特定することとによって行われ、
前記プロセッサは、隣接リストを特定するように構成されており、前記隣接リストは、前記複数の候補ノードにおける各候補ノードに対して、前記複数の候補ノードにおけるどの他の候補ノードが、前記複数の候補線における１つの候補線によって各候補ノードに接続されているのかを示しており、
前記プロセッサは、前記連結グラフ及び前記隣接リストに基づいて、前記少なくとも１つの３Ｄ構造体のフットプリントを作成するように構成されており、前記フットプリントは、前記複数の候補ノードからの候補ノードの選択されたグループに対応する頂点を含み、かつ、前記複数の候補線からの候補線の選択されたグループに対応する辺を含む、
図形表示システム。
【請求項１２】
前記プロセッサはさらに、
互いに所定の距離内にある前記複数の候補ノードにおける候補ノードを合併するように構成されており、かつ、
互いに所定の距離内にあり、かつ、互いに関して所定の角度未満にある前記複数の候補線における候補線を合併するように構成されている、
請求項１１に記載の図形表示システム。
【請求項１３】
前記プロセッサはさらに、
各候補線上へ、前記複数の候補線における各候補線から所定の距離内にある前記複数の候補ノードにおける１つの候補ノードを動かすように構成されており、かつ、
前記各候補線を、動かされた前記候補ノードにおいてそれぞれ１つの終端部を有する２つの候補線に分割するように構成されている、
請求項１１に記載の図形表示システム。
【請求項１４】
前記プロセッサはさらに、
前記複数の候補線における２つの各候補線の交差点に位置する新たな候補ノードを作成するように構成されており、かつ、
前記２つの各候補線の各々を、作成された前記新たな候補ノードにおいてそれぞれ１つの終端部を有する２つの新たな候補線に分割するように構成されている、
請求項１１に記載の図形表示システム。
【請求項１５】
前記プロセッサはさらに、
（ｉ）前記複数の候補ノードにおける１つの別の候補ノードに接続されているだけの、前記複数の候補ノードにおける１つの候補ノードと、（ｉｉ）前記複数の候補ノードにおける他の候補ノードに接続されていない、前記複数の候補ノードにおける１つの候補ノードとのうちのいずれかを除去するように構成されており、かつ、
除去された前記候補ノードに接続されている、前記複数の候補線におけるあらゆる候補線を除去するように構成されている、
請求項１１に記載の図形表示システム。
【請求項１６】
前記プロセッサはさらに、
前記複数の候補ノードから開始候補ノードを選択するように構成されており、かつ、
前記複数の候補ノードから候補ノードの第１のシーケンスを順次選択するように構成されており、候補ノードの前記第１のシーケンスにおける第１の候補ノードは、前記開始候補ノードに接続されており、候補ノードの前記第１のシーケンスにおける第１の候補ノード以外の各候補ノードは、候補ノードの前記第１のシーケンスにおける先行する各候補ノードに接続されており、
候補ノードの選択された前記グループは、候補ノードの選択された前記第１のシーケンスとともに、選択された前記開始候補ノードによって形成されている候補ノードの第２のシーケンスを含み、
候補線の選択された前記グループは、候補ノードの前記第２のシーケンスを順次接続する前記複数の候補線における候補線の第１のシーケンスを含む、
請求項１１に記載の図形表示システム。
【請求項１７】
候補ノードの前記第２のシーケンスにおける候補ノードの位置は、選択された前記開始候補ノードからスタートして、時計回りに動く、
請求項１６に記載の図形表示システム。
【請求項１８】
前記プロセッサはさらに、（ｉ）候補ノードの選択された前記グループ及び候補ノードの選択された前記グループに接続されている前記複数の候補ノードにおけるあらゆる候補ノードを、前記連結グラフの前記複数の候補ノードから除去するように、かつ、（ｉｉ）候補線の選択された前記グループ及び候補線の選択された前記グループに接続されている前記複数の候補線におけるあらゆる候補線を、前記連結グラフの前記複数の候補線から除去するように構成されており、かつ、
前記プロセッサはさらに、前記除去後に、複数の候補ノード内に残存している候補ノード及び前記複数の候補線内に残存している候補線に応じて、前記連結グラフ及び前記隣接リストに基づいて、前記少なくとも１つの３Ｄ構造体のさらなるフットプリントを作成するように構成されている、
請求項１６に記載の図形表示システム。
【請求項１９】
前記プロセッサはさらに、
候補ノードの前記第２のシーケンスを順次接続する候補線の前記第１のシーケンスにおいて繰り返される候補線に対応する辺を前記フットプリントから除去するように構成されている、
請求項１６に記載の図形表示システム。
【請求項２０】
前記プロセッサはさらに、
前記少なくとも１つの３Ｄ構造体の作成された前記フットプリントを用いて、グラフィックスをレンダリングするように構成されており、かつ、
レンダリングされた３Ｄグラフィックスを表示するように前記表示装置を動作させるように構成されている、
請求項１１に記載の図形表示システム。
【発明の詳細な説明】
【技術分野】
【０００１】
分野
本明細書に開示されている方法及び装置は、三次元レンダリングに関し、より詳細には、三次元建物データに基づく、二次元建物フットプリントの効率的な特定に関する。
【背景技術】
【０００２】
背景
そうでないことが本明細書に記載されていない限り、この部分において記載されている要素は、本出願の特許請求の範囲に対する従来技術ではなく、この部分に含まれていることによって従来技術に認定されるものではない。
【０００３】
多くの近年のソフトウェアアプリケーションは、対象物及び場面の三次元表現をユーザーインタフェースの一部として表示する。三次元（３Ｄ）グラフィックスは、広範囲のアプリケーションにおいて使用される。これは、ビデオゲーム、シミュレーション、バーチャル・リアリティアプリケーション、地理空間情報アプリケーション及びマッピングとナビゲーション用のアプリケーションを含む。多くのアプリケーションにおいて、実世界環境及び位置の描写において３Ｄグラフィックスは、二次元（２Ｄ）グラフィックスより有用である。なぜなら、人間と実世界との間の自然の相互作用は三次元で生じるからである。
【０００４】
３Ｄグラフィックスは、典型的に、対象物及び他の構造体の形を３Ｄ仮想環境において形成する複数の多角形として作成される。近年の３Ｄグラフィックスにおいては、最終的な表示は、しばしば、付加的な図画での詳細を含む。これは、付加的な詳細及びリアリズムを提供するための多角形の簡素なレンダリングより進んでいる。特に、近年の３Ｄグラフィックスはしばしば、多数のグラフィック作用を含む。これは、プロセッサが、３Ｄ環境を表示するために多角形に適用する照明作用、テクスチャリング及び影効果を含むが、これに制限されない。例えば、レンダリングされた多角形は、典型的に、実世界における材料、例えば木、石、金属、布及びその他の多くの材料の見た目をシミュレートする１つ又は複数のテクスチャを得る。場面の見た目は、仮想光源によっても著しく影響される。仮想光源は場面を照明し、影効果に対する基礎を形成する。最終的に、多くの計算装置は二次元（２Ｄ）ディスプレイでグラフィックスを表示するだけであり、３Ｄグラフィックスは、表示のために、網目スクリーン化された２Ｄのピクセルアレイに変換される。２Ｄディスプレイは、３Ｄ場面の部分を、カメラが、実世界における３Ｄ場面の２Ｄ写真を撮るのと同様の方法で描写する。
【０００５】
３Ｄグラフィックスに対する１つの特定の有用なアプリケーションは、３Ｄナビゲーションマップアプリケーションにあり、これはスマートフォン、タブレットコンピュータ及び車内インフォティンメントシステムにおいて使用される。３Ｄ建物メッシュデータは、しばしば、この種の３Ｄナビゲーションマップアプリケーションに対するデータセットとして提供される。図１は、３Ｄ建物１２をレンダリングするための、３Ｄナビゲーションマップアプリケーションによって使用される例示的なポリゴンメッシュ１０を示している。しかし、この種の３Ｄナビゲーションマップアプリケーションにおいて使用されているデータセットは、しばしば、３Ｄ建物に対する２Ｄフットプリントを含まない、又は、いくつかの３Ｄ建物に対する過度に簡素化された２Ｄフットプリントしか提供しない。２Ｄフットプリントは、いくつかの特徴に対して、３Ｄナビゲーションマップアプリケーションにおいて極めて有用である。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、２Ｄフットプリントの正確な特定はいくつかの困難に直面している。第１に、この方法は一般的に、データセットの編集において付加的な労力を投入しないようにするために、かつ、既存のデータセットアップデートプロセスへの影響を最小化するために、（市販されているような）相対的に低い処理能力を有しかつ既存のデータセットを伴うハードウェアでのランタイムで動作する必要がある。しかし、多くのフットプリント作成方法は、効率的で、不正確であるか、正確で、非効率的であるかのいずれかである。従って、正確さと能力との間にはトレードオフが存在する。第２に、この方法は一般的に、別個の建物を含む入力データとともに動作する必要がある。しかし、多くの既存の方法は、別個の建物を含む入力データを処理することはできない。従って、正確かつ効率的である、２Ｄフットプリントを特定する方法を提供することは有利であろう。付加的に、この方法が、別個の建物を含む入力データを処理することが可能であるのはさらに有利であろう。
【課題を解決するための手段】
【０００７】
要約
仮想環境における三次元（３Ｄ）構造体の二次元（２Ｄ）フットプリントを特定する方法が開示される。この方法は、プロセッサによって、少なくとも１つの３Ｄ構造体のためのメッシュデータを受け取るステップを含み、このメッシュデータは、少なくとも１つの３Ｄ構造体を形成する複数の多角形を形成するために複数の辺によって接続されている複数の頂点の位置を含む。この方法はさらに、プロセッサによって、複数の候補ノードと複数の候補線とを含む連結グラフを特定するステップを含み、これは、（ｉ）高さ閾値を下回る頂点を有する複数の辺において全ての辺を識別すること、及び（ｉｉ）識別された辺及びその頂点を２Ｄ面にマッピングすることによって、複数の候補線と複数の候補ノードとを特定することによって行われる。この方法はさらに、プロセッサによって、隣接リストを特定するステップを含む。隣接リストは、複数の候補ノードにおける各候補ノードに対して、複数の候補ノードにおけるどの他の候補ノードが、複数の候補線における１つの候補線によって各候補ノードに接続されているのかを示す。この方法はさらに、プロセッサによって、連結グラフ及び隣接リストに基づいて、少なくとも１つの３Ｄ構造体のフットプリントを作成するステップを含む。フットプリントは、複数の候補ノードからの候補ノードの選択されたグループに対応する頂点を含み、さらにフットプリントは、複数の候補線からの候補線の選択されたグループに対応する辺を含む。
【０００８】
図形表示システムも開示されている。図形表示システムは、表示装置と、メモリと、表示装置とメモリとに動作可能に接続されているプロセッサを備えている。プロセッサは、少なくとも１つの三次元（３Ｄ）構造体のためのメッシュデータを受け取るように構成されており、メッシュデータは、少なくとも１つの３Ｄ構造体を形成する複数の多角形を形成するために複数の辺によって接続されている複数の頂点の位置を含む。プロセッサはさらに、複数の候補ノードと複数の候補線とを含む連結グラフを特定するように構成されている。これは、（ｉ）高さ閾値を下回る頂点を有する複数の辺における全ての辺を識別すること、及び（ｉｉ）識別された辺及びその頂点を二次元（２Ｄ）面にマッピングすることによって、複数の候補線と複数の候補ノードとを特定することによって行われる。プロセッサはさらに、隣接リストを特定するように構成されている。隣接リストは、複数の候補ノードにおける各候補ノードに対して、複数の候補ノードにおけるどの他の候補ノードが、複数の候補線における１つの候補線によって各候補ノードに接続されているのかを示す。プロセッサはさらに、連結グラフ及び隣接リストに基づいて、少なくとも１つの３Ｄ構造体のフットプリントを作成するように構成されており、フットプリントは、複数の候補ノードからの候補ノードの選択されたグループに対応する頂点を含み、さらにフットプリントは、複数の候補線からの候補線の選択されたグループに対応する辺を含む。
【０００９】
方法及び装置の上述した態様及び他の特徴を、添付図面を参照して以降の明細書において説明する。
【図面の簡単な説明】
【００１０】
【図１】例示的なポリゴンメッシュと、対応するレンダリングされた３Ｄ建物を示す図。
【図２】３Ｄ建物の二次元（２Ｄ）フットプリントを特定するように構成されている計算装置の概略図。
【図３】仮想環境における３Ｄ構造体のフットプリントを特定する方法を示す図。
【図４】図３の方法を用いて特定された例示的な３Ｄ構造体に対するフットプリントを示す図。
【図５】図３の方法によって使用され得る例示的なメッシュデータ表現を示す図。
【図６】連結グラフを特定するための例示的なプロセスを示す図。
【図７】初期化された連結グラフの例示的な簡素化を示す図。
【図８】図７の簡素化された連結グラフに対する例示的な修正を示す図。
【図９】図８の修正された連結グラフの例示的な補完を示す図。
【図１０】図９の補完された連結グラフに対する例示的な隣接リストを示す図。
【図１１】連結グラフと隣接リストとに基づいて少なくとも１つの３Ｄ構造体の２Ｄフットプリントを作成する例示的なプロセスを示す図。
【図１２】図９の補完された連結グラフからの２Ｄフットプリントの例示的な特定を示す図。
【図１３】作成された２Ｄフットプリントの例示的な後処理を示す図。
【発明を実施するための形態】
【００１１】
詳細な説明
開示の原理の理解を促進するために、図面に示され、以降の明細書において説明される実施形態を参照されたい。これによって、開示の範囲の制限が意図されているのではないということを理解されたい。さらに、本開示は、図示された実施形態に対してあらゆる変更及び修正を含み、さらに、本開示に関係する当業者にとって通常であるような、開示の原理のさらなる適用を含むということを理解されたい。
【００１２】
本明細書においては、用語「対象物」又は「３Ｄ対象物」は、比較的大きい仮想環境における１つの対象物のモデルを描写するために、仮想環境において多角形を形成する複数の頂点に対応するデータに関する。本明細書においては、用語「構造体」又は「３Ｄ構造体」は、地球の地表又は表面の仮想表現に基づくために、３Ｄ仮想環境において位置付けされ、配向される多角形の対象物に関する。構造体の共通の例は、建物、橋、モニュメント等の人造の対象物及び他の人工的な構造物の表現を含む。自然の構造体は、木及び草木、崖、露出している岩及び自然の特徴に対応する他の対象物の表現を含む。３Ｄ仮想環境における構造体は、地表の仮想表現の表面から延在する。各構造体を規定する多角形は、構造体の形を提供し、この構造体は、予期される方法で、地表から浮かび上がらせるために、所定の様式で配向もされている。ＯｐｅｎＧＬ  ３Ｄグラフィックス標準とコンパチブルなソフトウェア及びハードウェアを使用している計算装置のある実施形態においては、構造体の方位は、回転行列を使用して規定される。これは、地表と地表から延在する構造体における他の多角形を結び付ける構造体の基部を伴う構造体を配向する。例えば、建物を表現する３Ｄ対象物は基部を含み、この基部は、仮想環境における地表に結び付いている建物の基礎に対応する。地表から上方へ延在する構造体における多角形は、この多角形が建物の壁を描写していなくても、「壁」と称される。
【００１３】
本明細書においては、構造体に対して使用されている用語「フットプリント」は、構造体における多角形の頂点のセットに関する。これは、従来の二次元マップと同じように上から見下ろしたときに、構造体に対する最も外側の座標に対応し、これは、仮想環境における地表又は地面に交差する。例えば、構造体が仮想環境の地表上に位置する単純な立方体である場合、フットプリントは、上から見下ろしたときに、立方体の４つの底面の隅の位置と、辺とによって規定される。フットプリントは、地表レベルの上方又は下方にある最も外側の多角形の頂点を含まない。これは例えば、上から見下ろしたときに、建物の中心から延在するが地表に接触しない、張り出し及び他の突起によって形成されている構造体、又は、構造体の地表レベルの延在を超えて延在している地下部分を伴って形成されている構造体である。
【００１４】
計算システム
図２は、計算システム１０４（この計算システムは、本明細書において「図形表示システム」とも称される）を描写しており、これは、例えば地球の表面である地表の表現を含む３Ｄ仮想環境の図形表示を、構造体を包囲している領域及び構造体の壁を描写する多角形に適用される地表照明テクスチャ又は影テクスチャを伴って作成する。計算システム１０４は、プロセッサ１０８と、メモリ１２０と、ディスプレイ１４４と、任意選択的なポジショニングシステム１４８と、任意選択的なネットワーク装置１５２とを備えている。計算システム１０４のハードウェア実施形態は、パーソナルコンピュータ（ＰＣ）ハードウェアと、自動車において使用される組み込み計算ハードウェアを備えている組み込みシステムハードウェアと、スマートフォン及びタブレット計算装置を含むモバイル電子装置とを含むが、これに制限されない。
【００１５】
計算システム１０４においては、プロセッサ１０８は、１つ又は複数の集積回路を含み、これは、中央処理ユニット（ＣＰＵ）１１２及びグラフィックス・プロセッシング・ユニット（ＧＰＵ）１１６の機能を実行する。いくつかの実施形態においては、プロセッサはシステムオンチップ（ｓｙｓｔｅｍ  ｏｎ  ａ  ｃｈｉｐ（ＳｏＣ））であり、これは、ＣＰＵ１１２と、ＧＰＵ１１６と、任意選択的にメモリ１２０、ネットワーク装置１５２及びポジショニングシステム１４８を含む他のコンポーネントとの機能を、１つの集積装置に集積する。ある実施形態においては、ＣＰＵは、市販されている中央処理装置であり、これは、ｘ８６、ＡＲＭ、Ｐｏｗｅｒ又はＭＩＰＳ命令セットファミリ等の命令セットを実行する。ＧＰＵは、２Ｄグラフィックス及び３Ｄグラフィックスの表示のためのハードウェア及びソフトウェアを含む。ある実施形態においては、プロセッサ１０８は、ソフトウェアドライバを実行し、ＧＰＵ１１６におけるハードウェア機能を含み、これによって、ＯｐｅｎＧＬ、ＯｐｅｎＧＬ  ＥＳ又はＤｉｒｅｃｔ３Ｄグラフィックスアプリケーションプログラミングインタフェース（ＡＰＩ）を使用して、３Ｄグラフィックスを作成する。例えば、ＧＰＵ１１６は、１つ又は複数のハードウェア実行ユニットを含み、これは２Ｄグラフィックス及び３Ｄグラフィックスの処理及び表示のためにフラグメントシェーダーと頂点シェーダーとを実行する。動作中、ＣＰＵ１１２とＧＰＵ１１６とは、メモリ１２０から受け取った、格納されている、プログラムされた命令１４０を実行する。ある実施形態においては、格納されている、プログラムされた命令１４０は、動作システムソフトウェアと、３Ｄグラフィックスを作成する１つ又は複数のソフトウェアアプリケーションプログラムとを含む。この３Ｄグラフィックスは、マッピングアプリケーション、ナビゲーションアプリケーション、バーチャル・リアリティアプリケーション、ゲームアプリケーション、シミュレーションアプリケーション及び３Ｄグラフィックスを作成するように構成されているあらゆる他のソフトウェアを含む。少なくとも１つの実施形態においては、プロセッサ１０８は、マッピング及びナビゲーションプログラムを実行し、表示装置１４４を通じて、マップ及びマップ特徴に対応する２Ｄ及び３Ｄグラフィックアウトプットを作成する。プロセッサは、プログラムされた命令を、プロセッサに動作可能に接続されている１つ又は複数のメモリに格納することによって、かつ、ハードウェア機能をプロセッサ及び／又はセンサ若しくはデータ源からデータを提供する他の電子コンポーネント、電子機械コンポーネント若しくは機械コンポーネントに動作可能に接続することによって、ソフトウェア及びハードウェア機能を伴って構成され、これによって、プロセッサが、以降に記載するプロセス及びシステム実施形態を実行することができる。
【００１６】
メモリ１２０は、不揮発性メモリも、揮発性メモリも含む。不揮発性メモリは、ＮＡＮＤフラッシュメモリ等のソリッドステートメモリ、磁気記憶媒体及び光記憶媒体、又は、計算システム１０４が非活動化されたとき若しくは電力を失ったときにデータを保持するあらゆる他の適当なデータ記憶装置を含む。揮発性メモリは、計算システム１０４の動作中に、ソフトウェア並びにグラフィックデータ及びマップ特徴データを含むデータを格納する、静的及び動的なランダムアクセスメモリ（ＲＡＭ）を含む。プログラムされた命令１４０に対して付加的に、メモリ１２０は仮想環境データ１２４と、構造体モデル多角形データ１２８と、テクスチャデータ１３２とを含む。仮想環境データ１２４は仮想環境のモデルを含み、これは、仮想環境に位置付けされている多数の３Ｄ対象物のための、地上地形情報、座標及び方位データを含む。さらに仮想環境データは、付加的な環境データを含み、これは仮想環境を照明する仮想照明源を含む。構造体モデル多角形データ１２８は、多数の多角形から形成された三次元構造体のための複数のモデルを含む。このデータは、３Ｄ仮想環境における構造体の形を形成する、三角形等の一連の相互に連結されている多角形を規定する三次元座標を伴う頂点を含む。プロセッサ１０８は、各構造体モデルの相対的な大きさ及び方位を、このモデルが３Ｄ仮想環境に配置されるように調整するように構成されており、３Ｄ仮想環境は、１つの構造体モデルの多くのコピーと変形とを含み得る。テクスチャデータ１３２は、複数のテクスチャを含み、これらは典型的に、多角形構造体モデルに、より現実的な見た目を与えるために、３Ｄ仮想環境において構造体の表面にマッピングされる２Ｄイメージである。
【００１７】
計算システム１０４は、任意選択的なネットワーク装置１５２を含み、これは、データネットワーク（図示されていない）を介して、外部計算システムにデータを送信するように、かつ、外部計算システムからデータを受信するように構成されている。ネットワーク装置１５２の例は、有線ネットワークアダプタ、例えばイーサネット及びユニバーサル・シリアル・バス（ＵＳＢ）アダプタ、及び、無線ネットワークアダプタ、例えば３Ｇ又は４Ｇワイヤレスワイドエリアネットワーク（ＷＷＡＮ）、８０２．１１又はＢｌｕｅｔｏｏｔｈ（Ｒ）無線ローカルエリアネットワーク（ＷＬＡＮ）アダプタを含む。いくつかの実施形態においては、プロセッサ１０８は、メモリ１２０内に格納するために、仮想環境データ１２４、構造体モデル多角形データ１２８及びテクスチャデータ１３２を外部ネットワークから取り出す。いくつかの実施形態においては、メモリ１２０は、グラフィックデータを捕捉し、プロセッサ１０８は、メモリ１２０の内容を更新するために、ネットワーク装置１５２を通じて受け取った付加的なグラフィックデータを格納する。
【００１８】
計算システム１０４は、プロセッサ１０８に動作可能に接続されている任意選択的なポジショニングシステム装置１４８を含む。ポジショニングシステムの例は、グローバル・ポジショニング・システム（ＧＰＳ）受信器、固定されている無線送信機に関連して計算システム１０４の位置を識別する無線三角測量受信器及び慣性ナビゲーションシステムを含む。動作中、プロセッサ１０８は、マッピングソフトウェアアプリケーション及びナビゲーションソフトウェアアプリケーションを実行し、これは、ポジショニングシステム１４８から位置情報を取り出し、これによって計算システム１０４の地理的な位置を識別し、仮想環境の表示を、計算システム１０４の位置に対応するように調整する。ナビゲーションアプリケーションにおいては、プロセッサ１０８は、計算システム１０４の位置及び動きを、選択された目的地までのルートの作成及び３Ｄ仮想環境におけるこのルートの表示のために識別する。
【００１９】
計算システム１０４においては、ディスプレイ１４４は、計算システム１０４のハウジング内に組み込まれているＬＣＤ又は他の表示装置等の組み込まれた表示装置であるか、ディスプレイ１４４は、プロセッサ１０８から出力信号を受信し、３Ｄ仮想環境の表示を作成するために、有線又は無線インタフェースを通じて計算システム１０４に動作可能に接続されている外部の表示装置である。計算システム１０４が車内に組み込まれた計算装置である実施形態においては、ディスプレイ１４４はＬＣＤ又は他のフラットパネルディスプレイであり、これは車両のコンソールに配置されている、又はディスプレイ１４４はヘッドアップディスプレイ（ＨＵＤ）又は３Ｄ仮想環境をフロントガラス又は車両内の他のディスプレイ表面上に表示する他のプロジェクションディスプレイである。
【００２０】
効率的な建物フットプリント特定のための方法
３Ｄ構造体のフットプリントを特定するための種々の方法及びプロセスを以降で説明する。方法の説明においては、方法がいくつかのタスク又は機能を実行するという記述は、不揮発性のコンピュータ可読記憶媒体内に格納されているプログラムされた命令を実行するコントローラ又は汎用プロセッサに関する。この記憶媒体は、データを操作するために、又は、計算システム１０４内の１つ又は複数のコンポーネントを動作させて、タスク又は機能を実行するためにコントローラ又はプロセッサに動作可能に接続されている。特に、上述したプロセッサ１０８、ＣＰＵ１１２及び／又はＧＰＵ１１６は、このようなコントローラ又はプロセッサであってよく、実行されるプログラム命令は、メモリ１２０内に格納されている、プログラムされた命令１４０であってよい。付加的に、方法のステップは、図面に示されている順番又はステップが記載されている順番に関係なく、あらゆる可能な発生順で実行されてよい。
【００２１】
図３は、仮想環境において３Ｄ構造体のフットプリントを特定するための方法２００を示している。この方法２００は、プロセッサ１０８が特定の規定セットを効率的に実行すること、及び仮想環境における３Ｄ構造体のフットプリントを正確に特定することを可能にすることによって、計算システム１０４の機能を改善する。特に、この方法２００によって、プロセッサ１０８は、３Ｄ構造体のメッシュデータに基づいて、３Ｄ構造体の高い精度のフットプリントを作成することができる。この方法は、相対的に制限された処理能力を有し、かつ、３Ｄ構造体メッシュデータセットを使用する、組み込まれた装置及びモバイル装置で使用されるのに十分に効率的である。この３Ｄ構造体メッシュデータセットは、如何なる２Ｄフットプリント情報も含まない、又は、過度に簡素化された２Ｄフットプリント情報だけを含む。図４は、例示的な３Ｄ構造体３１２に対するフットプリント３１０を示している。これは、方法２００を用いて正確に特定されたものである。付加的に、この方法２００は、入力メッシュデータがあらゆる数の個々の別個にされた３Ｄ構造体を含む場合にも、プロセッサ１０８が、３Ｄ構造体のフットプリントを特定することを可能にすることによって、計算システム１０４の機能を改善する。特に、図４はさらに、例示的な３Ｄ構造体３２２に対して、方法２００を用いて正確に特定されたフットプリント３２０を示している。この３Ｄ構造体は、主要部分３２６から物理的に別個にされている部分３２４を含む。このようにして、この方法２００は、メッシュデータが多数の、別個にされた３Ｄ構造体を含む場合にフットプリントを特定することができない多くの既存の方法に対する利点を有する。
【００２２】
図３に戻る。この方法２００は、少なくとも１つの３Ｄ構造体のためのメッシュデータを受け取るステップで始まる（ブロック２１０）。特に、本明細書において詳細に説明された実施形態に関して、プロセッサ１０８は、少なくとも１つの３Ｄ構造体のためのメッシュデータを受け取るように構成されている。このメッシュデータは、少なくとも１つの３Ｄ構造体を形成する複数の多角形を形成するために、複数の辺によって接続されている複数の頂点に関する値を含む。ある実施形態においては、プロセッサ１０８は、メッシュデータ、特に構造体モデル多角形データ１２８をメモリ１２０から読み取るように構成されている。しかし、いくつかの実施形態においては、メッシュデータ及び／又は構造体モデル多角形データ１２８は、ネットワーク装置１５２を介して、必要に応じて、別個のサーバーからプロセッサ１０８へ流される。
【００２３】
メッシュデータは、頂点、辺等のあらゆる種々の既知のデータ表現を用いて、多くの形を取ることができる。これは、面−頂点メッシュ、ウイングド・エッジメッシュ、ハーフエッジメッシュ、クワッドエッジメッシュ、コーナー・テーブル、頂点−頂点メッシュ及びレンダダイナミックメッシュ等のポリゴンメッシュに相当する。図５は、方法２００によって使用され得る例示的なメッシュデータ表現を示している。特に、このメッシュデータは、３Ｄ頂点位置のアレイを含む：［Ｖ０；Ｖ１；Ｖ２；Ｖ３］。ここでは、各頂点は、（ｘ，ｙ，ｚ）等の位置ベクトルによって表現されている。付加的に、メッシュデータは、プリミティブインデックスアレイを含む：［０，１，２，０，２，３］。これは、プリミティブ（このケースでは三角形）がどのように頂点から構築されているのかを示している。図５の例において見て取れるように、４つの頂点Ｖ０，Ｖ１，Ｖ２及びＶ３が、２つの三角形を形成するために辺によって接続されている。
【００２４】
図３に戻る。この方法２００は、メッシュデータに基づいて連結グラフを特定するステップに続く（ブロック２３０）。特に、プロセッサ１０８は、複数の候補ノード及び複数の候補線を特定するように構成されており、このうちのいくつかは、３Ｄ構造体のフットプリントの辺及び頂点を形成してよい。「連結グラフ」は、複数の候補ノードと複数の候補線とを含む。いくつかの実施形態においては、候補ノードと候補線とは、仮想環境の地面と、少なくとも１つの３Ｄ構造体の多角形との交差点に対応していてよく、及び／又は、仮想環境の地面と、少なくとも１つの３Ｄ構造体の多角形との交差点付近に対応していてよく（すなわち、辺は、地表と交差する、又は地表との交差の所定の距離内にある）、及び／又は、所定の高さ値を下回る任意の位置を有する多角形の辺に対応していてよい（すなわち、辺は、地表の近くにある、地表と交差する、又は地表の下にある）。いくつかの実施形態においては、プロセッサ１０８は、連結グラフを種々の方法により簡素化する、修正する、又は、そうでない場合には処理するように構成されている。これはしばしば、より効率的かつ効果的に後続のステップが実行されることを可能にするために候補ノード及び候補線の数を変更することによって行われる。
【００２５】
図６は、連結グラフが特定されるステップ２３０の例示的な実行を示している。ステップ２３０の例示的な実行は、複数の候補ノード及び複数の候補線で連結グラフを初期化するステップで始まる（ブロック２３２）。これは、所定の高さ閾値よりも低い任意の位置又は仮想環境の地表からの所定の距離閾値内の任意の位置を有する全ての辺に対応する。特に、ある実施形態においては、プロセッサ１０８は、少なくとも１つの３Ｄ構造体のためのメッシュデータにおける全ての辺を識別するように構成されている。これは、所定の高さ閾値を下回る終端位置又は頂点を有する。特に、最終目標は、入力メッシュデータからフットプリントを作成することなので、地表よりはるかに高い辺を考慮に入れる必要はない。別の実施形態においては、プロセッサ１０８は、仮想環境の地表からの所定の距離閾値内に任意の位置を有する少なくとも１つの３Ｄ構造体のためのメッシュデータにおける全ての辺を識別するように構成されている。特に、いくつかの環境においては、地表よりはるかに低い辺を考慮に入れる必要はない。次にプロセッサ１０８は、その識別された辺及び頂点の全てを仮想環境の地表に一致する２Ｄ面にマッピングするように構成されている。プロセッサ１０８は、２Ｄ面にマッピングされた、識別された辺の頂点として複数の候補ノードを初期化するように構成されており、かつ、２Ｄ面にマッピングされた、識別された辺として複数の候補線を初期化するように構成されている。
【００２６】
図７は、例示的に初期化された連結グラフ４００を示しており、これは、１０個の候補ノードＮ０からＮ９と、９個の候補線Ｌ０からＬ８とを含む。特に、候補線Ｌ０は、候補ノードＮ０とＮ１との間に延在しており、候補線Ｌ１は、候補ノードＮ１とＮ２との間に延在しており、候補線Ｌ２は、候補ノードＮ２とＮ３との間に延在しており、候補線Ｌ３は、候補ノードＮ３とＮ０との間に延在しており、候補線Ｌ４は、候補ノードＮ４とＮ５との間に延在しており、候補線Ｌ５は、候補ノードＮ５とＮ６との間に延在しており、候補線Ｌ６は、候補ノードＮ６とＮ７との間に延在しており、候補線Ｌ７は、候補ノードＮ７とＮ４との間に延在しており、候補線Ｌ８は、候補ノードＮ８とＮ９との間に延在している。
【００２７】
図６に戻る。ステップ２３０の例示的な実行は、相互に近い任意の候補ノードを合併すること、及び／又は、実質的に平行でありかつ相互に近い任意の候補線を合併することによって、連結グラフを簡素化するステップに続く（ブロック２３４）。特に、プロセッサ１０８は、互いに所定の距離内にある任意の候補ノードを合併するように、及び／又は、互いに所定の距離内にあり、かつ、互いに所定の角度内にある任意の候補線を合併するように構成されている。全ての識別された辺が、２Ｄ地面に対してマッピングされているので、多くの候補ノードが相互に極めて近く、かつ、多くの候補線が実質的に平行でありかつ相互に極めて近いという可能性が非常に高い。このようなノード及び線を合併することによって、連結グラフが実質的に簡素化されてよく、それによって、方法２００の後のステップの効率及び正確さが改善される。少なくとも１つの実施形態においては、従来の二次元マップと同じように上から見下ろしたときに、合併されるべきノード又は線は、合併されるべきノード又は線の最も外側の位置に合併される。別の実施形態においては、合併されるべきノード又は線は、合併されるべきノード又は線の平均位置で合併される。
【００２８】
図７は、初期化された連結グラフ４００の例示的な簡素化４１０を示している。特に、見て取れるように、候補線Ｌ８は、候補線Ｌ０に実質的に平行であり、かつ、候補線Ｌ０に近い。同様に、候補ノードＮ８及びＮ９は、候補ノードＮ０及びＮ１それぞれに極めて近い。簡素化された連結グラフ４１０において、候補線Ｌ８は、除去されており、及び／又は、候補線Ｌ０と合併されている。同様に、候補ノードＮ８及びＮ９は、除去されており、及び／又は、候補ノードＮ０及びＮ１それぞれと合併されている。
【００２９】
図６に戻る。ステップ２３０の例示的な実行は、各候補線上へ各候補線に近い候補ノードを動かし、各候補線を２つの候補線に分割するステップに続く（ブロック２３６）。これら２つの候補線の各々は、各候補ノードで１つの終端部を有する。特に、プロセッサ１０８は、各候補線から所定の距離内にある任意の候補ノードを候補線上にある最も近い位置に動かすように構成されている。さらに、プロセッサ１０８は、各候補線を２つの候補線に分割するように構成されている。これら２つの候補線の各々は、動かされた各候補ノードで１つの終端部を有する。元来の３Ｄメッシュデータセットは、いくつかのモデリングエラーを含むことがあり、例えば２つの隣接する多角形は、同じ辺を共有しておらず、又は、そうでなければ複数の多角形が僅かに誤って並べられている。従って、簡素化された連結グラフが若干の間隙を、ノードと線との間に含むことがある。連結グラフにおけるこのようなエラーを修正することによって、方法２００の正確さが改善される。
【００３０】
図８は、簡素化された連結グラフ４１０に対する例示的な修正４２０を示している。特に、見て取れるように、候補ノードＮ４は、候補線Ｌ１に極めて近いが、直接的に候補線Ｌ１上に位置しておらず、モデリングエラーの可能性が暗示されている。修正された連結グラフ４２０においては、候補ノードＮ４は、候補線Ｌ１上の最も近い位置上に動かされる。付加的に、候補ノードＮ１とＮ２との間に延在する候補線Ｌ１は、２つの候補線Ｌ８とＬ９とに分割される。候補線Ｌ８は、候補ノードＮ１と動かされた候補ノードＮ４との間に延在している。同様に、候補線Ｌ９は、候補ノードＮ２と、動かされた候補ノードＮ４との間に延在している。最後に、候補ノードＮ４に接続されている候補線Ｌ４とＬ７とが、候補ノードＮ４の新たな位置の結果、長さ及び方位において調整される。
【００３１】
図６に戻る。ステップ２３０の例示的な実行は、２つの候補線のあらゆる交差点に位置する新たな候補ノードを作成し、２つの各候補線の各々を、各新たな候補ノードでそれぞれ１つの終端部を有する２つの新たな候補線に分割するステップに続く（ブロック２３８）。特に、プロセッサ１０８は、相互に交差し、その交差点で候補ノードを有していない、あらゆる候補線を識別するように構成されている。次に、交差している候補線の各セットに対して、プロセッサ１０８は、交差している候補線の交差点のポイントを計算し、計算された交差点のポイントで新たな候補ノードを作成するように構成されている。さらに、プロセッサ１０８は、各交差している候補線の各々を、新たに作成された候補ノードでそれぞれ１つの終端部を有する２つの候補線に分割するように構成されている。ある実施形態においては、プロセッサ１０８は、１つの別の候補ノードに接続されているだけのあらゆる候補ノード、又は、他の候補ノードに接続されていないあらゆる候補ノードを除去するように構成されている。さらにプロセッサは、除去された候補ノードに接続されている候補線も除去するように構成されている。これらの交差点は、２Ｄフットプリントの頂点であり得るので、候補ノードが交差点に含まれている場合に連結グラフはより完全になり、これによって、方法２００の正確さが改善される。
【００３２】
図９は、修正された連結グラフ４２０の例示的な補完４３０を示している。特に、見て取れるように、候補線Ｌ６と候補線Ｌ９とは相互に交差しているが、候補ノードは交差点に位置付けされていない。補完された連結グラフ４３０においては、新たな候補ノードＮ８が、候補線Ｌ６と候補線Ｌ９との交差点の位置で作成されている。付加的に、候補ノードＮ２とＮ４との間に延在している候補線Ｌ９が、２つの候補線Ｌ１０とＬ１１とに分割され、候補ノードＮ６とＮ７の間に延在している候補線Ｌ６が、２つの候補線Ｌ１２とＬ１３に分割されている。候補線Ｌ１０は、候補ノードＮ２と新たな候補ノードＮ８との間に延在している。候補線Ｌ１１は、候補ノードＮ４と新たな候補ノードＮ８との間に延在している。候補線Ｌ１２は、候補ノードＮ６と新たな候補ノードＮ８との間に延在している。最後に、候補線Ｌ１３は、候補ノードＮ７と新たな候補ノードＮ８との間に延在している。
【００３３】
図３に戻る。方法２００は、連結グラフに基づいて隣接リストを特定するステップに続く（ブロック２５０）。特に、連結グラフを特定した後、プロセッサ１０８は、連結グラフの各候補ノードに対して、どの他の候補ノードが、候補線によって各ノードに接続されているのかを特定するように構成されている。ある実施形態においては、プロセッサ１０８は、各連結グラフの各候補ノードに対して、どの候補線が各候補ノードを含むのかを特定し、その後、アレイを作成するように構成されている。このアレイは、各候補線に含まれている他の候補ノードに対するインデックスを含む。「隣接リスト」は、連結グラフの各候補ノードと対にされた接続されたノードの作成されたアレイを含む。
【００３４】
図１０は、テーブル５００の形態で示された、補完された連結グラフの例示的な隣接リストを示している。テーブル５００において示されているように、候補ノードＮ０が、候補ノードＮ１及びＮ３に接続していること、候補ノードＮ１が、候補ノードＮ０及びＮ４に接続していること、候補ノードＮ２が、候補ノードＮ３及びＮ８に接続していること、候補ノードＮ３が、候補ノードＮ０及びＮ２に接続していること、候補ノードＮ４が、候補ノードＮ１、Ｎ５、Ｎ７及びＮ８に接続していること、候補ノードＮ５が、候補ノードＮ４及びＮ６に接続していること、候補ノードＮ６が、候補ノードＮ５及びＮ８に接続していること、候補ノードＮ７が、候補ノードＮ４及びＮ８に接続していること、候補ノードＮ８が、候補ノードＮ２、Ｎ４、Ｎ６及びＮ７に接続していることが特定されている。
【００３５】
図３に戻る。方法２００は、連結グラフ及び隣接リストに基づいて少なくとも１つの３Ｄ構造体の少なくとも１つの２Ｄフットプリントを作成するステップに続く（ブロック２７０）。特に、プロセッサ１０８は、メッシュデータの少なくとも１つの３Ｄ構造体の２Ｄフットプリントに対応する頂点及び辺を識別するように構成されている。識別された頂点及び辺は、特定された隣接リストに基づいて、連結グラフの候補ノード及び候補線から選択されたものである。
【００３６】
図１１は、ステップ２７０の実行方法を示しており、ここでは、少なくとも１つの３Ｄ構造体の少なくとも１つの２Ｄフットプリントが識別される。ステップ２７０の例示的な実行は、連結グラフの候補ノードを開始ノードとして選択するステップで始まる（ブロック２７２）。特にプロセッサ１０８は、最初の開始ノードｎｓとして使用するために、連結グラフの候補ノードの１つを選択するように構成されている。ある実施形態においては、プロセッサ１０８は、最初の開始ノードｎｓを、従来の二次元マップと同じように上から見下ろしたときに、最も右側の候補ノードとして、連結グラフから選択するように構成されている。しかし、別の実施形態においては、プロセッサ１０８は、最初の開始ノードｎｓを、従来の二次元マップと同じように上から見下ろしたときに、最も左側の候補ノードとして、最も上の候補ノードとして、最も下の候補ノードとして又は任意の無作為の最も外側の候補ノードとして選択するように構成されている。図１２に示されている例においては、補完された連結グラフ４３０の最も右側の候補ノードＮ３が、最初の開始ノードｎｓとして選択されている。
【００３７】
図１１に戻る。ステップ２７０の例示的な実行は、次のノードを開始ノードに隣接している候補ノードから選択するステップに続く（ブロック２７４）。この次のノードは、アルゴリズムの補完された連結グラフの最も右側のノードである開始ノードの、最も反時計回りのところにある隣接ノードである。特に、プロセッサ１０８は、隣接リストに基づいて、どの候補ノードが最初の開始ノードｎｓに隣接しているのかを特定するように構成されている。次に、プロセッサ１０８は、次のノードｎｎｅｘｔとして、最初の開始ノードｎｓの、最も反時計回りのところにある隣接する候補ノードを選択するように構成されている。ある実施形態においては、プロセッサ１０８は、以下の方程式を満たす、隣接する候補ノードを選択するように構成されている。
【数１】
2019164787.tif 000003
換言すれば、最初の開始ノードｎｓに隣接する複数のノードＡｄｊｎｓからの次のノードｎｎｅｘｔの各可能な選択に対して、プロセッサ１０８は、選択された次のノードｎｎｅｘｔ以外の全ての隣接するノードＡｄｊｎｓに対して、（１）次のノードｎｎｅｘｔの位置ベクトルから最初の開始ノードｎｓの位置ベクトルを減算したものに等しい第１の中間２Ｄベクトルと、（２）各隣接ノードｎｐの位置ベクトルから最初の開始ノードｎｓの位置ベクトルを減算したものに等しい第２の中間２Ｄベクトルとのクロス乗積又はベクトル積が、０より小さいか否かを特定するように構成されている。プロセッサ１０８は、この条件が満たされている隣接するノードＡｄｊｎｓの１つを選択するように構成されている。この反時計回りの選択プロセスは、選択された開始ノードからスタートして、時計回りの回転でのノードの動きを生じさせる。いくつかの実施形態においては、時計回りの選択プロセスが使用されてもよく、上述のプロセス及び方程式は、時計回りの選択のために適当に修正可能である。図１２に示されている例においては、補完された連結グラフ４３０の候補ノードＮ２が、最初の開始ノードｎｓからの次のノードｎｎｅｘｔとして選択されている。
【００３８】
図１１に戻る。ステップ２７０の例示的な実行は、選択される次のノードが開始ノードになるまで（ブロック２７８）、先に選択されたノードに隣接しており、かつ、先に選択されたノードの、最も反時計回りのところにある次のノードを選択することを続けるステップに続く（ブロック２７６）。特に、各現在選択されているノードｎｃｕｒｒｅｎｔに対して、プロセッサ１０８は、どの候補ノードが、現在選択されているノードｎｃｕｒｒｅｎｔに隣接しているのかを、隣接リストに基づいて特定するように構成されている。次に、プロセッサ１０８は、次のノードｎｎｅｘｔとして、隣接する候補ノードを選択するように構成されている。この隣接する候補ノードは、現在選択されているノードｎｃｕｒｒｅｎｔ及び先に選択されたノードｎｐｒｅｖの方位に関して、最も反時計回りのところにある。ある実施形態においては、プロセッサ１０８は、２ＤベクトルＶ１＝ｎｎｅｘｔ−ｎｃｕｒｒｅｎｔと２ＤベクトルＶ０＝ｎｃｕｒｒｅｎｔ−ｎｐｒｅｖとの間の反時計回りの方位値０が最も大きくなるように、隣接する候補ノードを選択するように構成されている。ある実施形態においては、値０は、次の方程式に従って計算される。
【数２】
2019164787.tif 000004
換言すれば、現在選択されているノードｎｃｕｒｒｅｎｔに隣接しているノードＡｄｊｎｃｕｒｒｅｎｔからの次のノードｎｎｅｘｔの各可能な選択に対して、プロセッサ１０８は、値０を計算するように構成されている。計算されるべき各値０に対して、プロセッサ１０８は２ＤベクトルＶ１＝ｎｎｅｘｔ−ｎｃｕｒｒｅｎｔと２ＤベクトルＶ０＝ｎｐｒｅｖ−ｎｃｕｒｒｅｎｔとを計算するように構成されている。次に、計算されるべき各値０に対して、２ＤベクトルＶ１と２ＤベクトルＶ０とのクロス乗積が０より小さい場合、プロセッサ１０８は、値０を、マイナスベクトルＶ１とベクトルＶ０とのドット積又はスカラー積から１を減算したものとして計算するように構成されている。そうでなく、ベクトルＶ１とベクトルＶ０とのクロス乗積が０より小さくない場合、プロセッサ１０８は、値０を、ベクトルＶ１とベクトルＶ０とのドット積又はスカラー積に１を加算したものとして計算するように構成されている。プロセッサ１０８は、次のノードｎｎｅｘｔとして、反時計回りの方位値０が最も大きい、隣接する候補ノードを選択するように構成されている。プロセッサ１０８は、次のノードｎｎｅｘｔの選択を、選択された次のノードが最初の開始ノードｎｓになるまで繰り返すように構成されている。いくつかの実施形態においては、時計回りの選択プロセスが使用されてもよく、上述したプロセス及び方程式は、時計回りの選択のために適当に修正可能である。図１２に示された例においては、補完された連結グラフ４３０からのノード選択シーケンスは、Ｎ３→Ｎ２→Ｎ８→Ｎ６→Ｎ５→Ｎ４→Ｎ１→Ｎ０→Ｎ３を含む。この選択プロセスは、選択プロセスが開始ノードＮ３に戻ると停止される。
【００３９】
図１１に戻る。ノード選択プロセスが開始ノードに戻ると、ステップ２７０の例示的な実行は、３Ｄ構造体のフットプリントを作成するステップに続く（ブロック２８０）。これは、選択されたノードの全てを含む頂点と、各選択されたノードを次の選択されたノードに接続する候補線を含む辺とを備える。特に、プロセッサ１０８は、メッシュデータの３Ｄ構造体のフットプリントを作成するように構成されている。これは、全ての選択された候補ノードの位置での頂点と、各選択された候補ノードを次の選択された候補ノードに接続する候補線に対応する辺とを備える。図１２に示されている例においては、フットプリント４４０が作成され、これは、選択された候補ノードＮ３、Ｎ２、Ｎ８、Ｎ６、Ｎ５、Ｎ４、Ｎ１及びＮ０それぞれのシーケンスに対応する頂点Ｖ０−Ｖ７と、候補線Ｌ２、Ｌ１０、Ｌ１２、Ｌ５、Ｌ４、Ｌ８、Ｌ０及びＬ３それぞれに対応する辺Ｅ０−Ｅ７とを有する。
【００４０】
図１１に戻る。ステップ２７０の例示的な実行は、フットプリントの選択されたノードである、又はフットプリントの選択されたノードに接続されている全ての候補ノードを連結グラフから除去するステップに続く（ブロック２８２）。特に、プロセッサ１０８は、フットプリントの選択されたノードである全ての候補ノード、又は、１つ又は複数の候補線及びノードによって、フットプリントを形成するために使用される選択された候補ノードに接続されている全ての候補ノードを、連結グラフから除去するように構成されている。図１２に示されている例においては、フットプリントを形成するために使用されるノードに接続されているので、フットプリントを形成するために使用されなかった候補ノードＮ７を含む候補ノードの全てが除去されている。しかし、多くのケースにおいては、連結グラフは、相互に分離されており、かつ、一般的に、メッシュデータの別個の３Ｄ構造体に対応するいくつかの、候補ノードと線のクラスターとを含む。
【００４１】
次に、ステップ２７０の例示的な実行は、連結グラフ内にいずれかの候補ノードが残存している場合にステップ２７２〜２８２を繰り返すステップに続く（ブロック２８４）。特に、プロセッサ１０８は、連結グラフ内に残存している候補ノードがあるか否かをチェックするように構成されている。これは例えば、作成されたフットプリントに含まれているノード及び線から分離されている候補ノードと線とのクラスターである。このような場合には、プロセッサ１０８は、メッシュデータにおけるさらなる３Ｄ構造体のさらなるフットプリントを作成するために上述したプロセスを繰り返すように構成されている。
【００４２】
最終的に、連結グラフ内に残存している候補ノードがなくなると、ステップ２７０の例示的な実行は、頂点の繰り返しの接続に対応する、フットプリントの辺を除去することによるフットプリントの後処理のステップに続く（ブロック２８６）。特に、プロセッサ１０８は、フットプリントにおける、頂点の繰り返しの接続に対応するあらゆる辺を除去するように構成されている。これによって、フットプリントは２つ以上のフットプリントに分けられる。例として図１３は、一連の頂点のＡ→Ｂ→Ｃ→Ｄ→Ｅ→Ｆ→Ｄ→Ｃ→Ａから形成されているフットプリント６００を示している。この一連の頂点に基づいて、フットプリントは辺Ｃ→Ｄを含み、辺Ｄ→Ｃも含む。２つの頂点ＣとＤとの間のこの接続は繰り返しなので、この経路に対応する全ての辺がフットプリントから除去される。この結果、分解６１０が生じ、ここでは、フットプリントが２つのフットプリントＡ→Ｂ→Ｃ→ＡとＤ→Ｅ→Ｆ→Ｄとに分けられる。
【００４３】
最後に、図３に戻る。方法２００は、少なくとも１つの３Ｄ構造体の作成されたフットプリントを出力するステップに続く（ブロック２９０）。特に、プロセッサ１０８は、作成されたフットプリントを出力するように、及び／又は、メモリ内に格納するように構成されている。ある実施形態においては、プロセッサ１０８は、さらに、メッシュデータの少なくとも１つの３Ｄ構造体の作成されたフットプリントを使用して、２Ｄ又は３Ｄグラフィックスをレンダリングするように構成されている。ある実施形態においては、プロセッサ１０８は、２Ｄフットプリントとして示されている３Ｄ構造体を含むマップ領域の２Ｄプレビューをレンダリングするために、特定されたフットプリントを使用するように構成されている。ある実施形態においては、プロセッサ１０８は、コンテクスト・アウェアマップ可視化ソリューションをレンダリングするために、特定されたフットプリントを使用するように構成されている（例えば、タイムアウェア及び環境アウェア）。ある実施形態においては、プロセッサ１０８は、マップ領域に対して占有テストを実行するために、特定されたフットプリントを使用するように構成されている。ある実施形態においては、プロセッサ１０８は、ソフトシャドウをレンダリングするためにソフトシャドウシミュレーションを実行するために、特定されたフットプリントを使用するように構成されている。ある実施形態においては、プロセッサ１０８は、表示される細部の可変レベルを伴う２Ｄ又は３Ｄグラフィックスをレンダリングするために、特定されたフットプリントを使用するように構成されている。
【００４４】
図面及びこれまでの明細書において、開示が詳細に図示及び説明されたが、同様のことが例証として考えられるべきであり、特性を制限するものと考えられるべきではない。有利な実施形態だけが提示されており、開示の意図内の全ての変更、修正及びさらなる適用が保護されることが望まれるということを理解されたい。
【図１】
2019164787.tif 000005
【図２】
2019164787.tif 000006
【図３】
2019164787.tif 000007
【図４】
2019164787.tif 000008
【図５】
2019164787.tif 000009
【図６】
2019164787.tif 000010
【図７】
2019164787.tif 000011
【図８】
2019164787.tif 000012
【図９】
2019164787.tif 000013
【図１０】
2019164787.tif 000014
【図１１】
2019164787.tif 000015
【図１２】
2019164787.tif 000016
【図１３】
2019164787.tif 000017
【外国語明細書】
2019164787.tif 000018
2019164787.tif 000019
2019164787.tif 000020
2019164787.tif 000021
2019164787.tif 000022
2019164787.tif 000023
2019164787.tif 000024
2019164787.tif 000025
2019164787.tif 000026
2019164787.tif 000027
2019164787.tif 000028
2019164787.tif 000029
2019164787.tif 000030
2019164787.tif 000031
2019164787.tif 000032
2019164787.tif 000033
2019164787.tif 000034
2019164787.tif 000035
2019164787.tif 000036
2019164787.tif 000037
2019164787.tif 000038
2019164787.tif 000039
2019164787.tif 000040
2019164787.tif 000041
2019164787.tif 000042
2019164787.tif 000043
2019164787.tif 000044
2019164787.tif 000045
2019164787.tif 000046
2019164787.tif 000047
2019164787.tif 000048
2019164787.tif 000049
2019164787.tif 000050
2019164787.tif 000051
2019164787.tif 000052
2019164787.tif 000053
2019164787.tif 000054
2019164787.tif 000055
2019164787.tif 000056
2019164787.tif 000057
2019164787.tif 000058
2019164787.tif 000059
2019164787.tif 000060
2019164787.tif 000061
2019164787.tif 000062
2019164787.tif 000063
2019164787.tif 000064
2019164787.tif 000065