(57)【特許請求の範囲】
【請求項１】
３次元環境内においてバーチャルカメラをパンするための方法であって、該方法は、コンピュータにより実行され、該方法は、
該３次元環境内の３次元モデル上の第１の点を決定することと、
該第１の点、該３次元モデル、および該３次元環境内の該バーチャルカメラの位置に従って、仮想表面を決定することであって、該仮想表面を決定することは、パンニング球面を決定することであって、該パンニング球面の中心は、該３次元モデルの中心に位置し、該パンニング球面は、該３次元モデルの中心と該第１の点との間の距離に等しい半径を有する、ことと、該仮想表面を該パンニング球面のパンニング表面に適合することにより、該仮想表面が該バーチャルカメラの視点から凹面であるようにすることとを含み、該バーチャルカメラの視点は、該３次元環境内の該バーチャルカメラの位置によって決定される、ことと、
該パンニング球面上に位置する第２の点を決定することと、
該仮想表面上に位置する第３の点を決定することであって、該パンニング球面上の第２の点は、該仮想表面上の第３の点に関連し、該バーチャルカメラと該第３の点との間の距離は、該バーチャルカメラと該第２の点との間の距離よりも短い、ことと、
該第３の点を該３次元モデルの中心と接続する第１の線分と、該３次元モデルの中心を該３次元環境内の該バーチャルカメラの位置と接続する第２の線分との間の第１の角度だけ該３次元モデルを回転させることにより該３次元モデルの場所を変更することであって、該第１の角度だけの該３次元モデルの回転は、該３次元モデルの中心を該第２の点と接続する第３の線分と該第２の線分との間の第２の角度だけの該３次元モデルの回転よりも小さい、ことと
を含む、方法。
【請求項２】
前記仮想表面を決定することは、
該仮想表面を前記パンニング表面に適合することにより、該パンニング球面上に連続的な平滑面を形成することをさらに含む、請求項１に記載の方法。
【請求項３】
前記３次元モデルは、地球のモデルを含む、請求項２に記載の方法。
【請求項４】
前記仮想表面は、前記パンニング球面の一部分の鏡像である、請求項１に記載の方法。
【請求項５】
前記第１の点を決定することは、
前記バーチャルカメラのビューポート上の第４の点を通して、該バーチャルカメラの焦点から第１の射線を延在させることであって、該第４の点は、第１のユーザ選択に対応する、ことと、
該第１の射線と前記３次元モデルとの間の交差点において、前記第１の点を決定することと
を含む、請求項１に記載の方法。
【請求項６】
前記仮想表面を決定することは、
接続点において前記パンニング球面に接続される該仮想表面を決定することを含み、
該仮想表面は、式
【数１】
0005389901.tif 000007
を満たし、
θ0は、前記第１の射線と、前記バーチャルカメラおよび該３次元モデルの中心を接続する線分との間の角度であり、
φ0は、該バーチャルカメラと該３次元モデルの該中心とを接続する該第１の線分と、該３次元モデルの該中心と該第１の点とを接続する第２の線分との間の角度であり、
ｄφは、該３次元モデルの該中心と該第１の点とを接続する該第２の線分と、該３次元モデルの該中心と該接続点を接続する第３の線分との間の角度であり、
dθは、該第１の射線と、該バーチャルカメラと該接続点を接続する第３の線分との間の角度であり、
θは、該バーチャルカメラと該３次元モデルの該中心とを接続する該第２の線分と、該バーチャルカメラと該仮想表面上の可変点を接続する第４の線分との間の角度であり、
φは、該バーチャルカメラと該３次元モデルの該中心を接続する前記第２の線分と、該３次元モデルの該中心と該仮想表面上の該可変点を接続する第５の線分との間の角度である、請求項５に記載の方法。
【請求項７】
３次元環境内においてバーチャルカメラをパンするためのシステムであって、該システムは、
パンニングモジュールであって、該パンニングモジュールは、該３次元環境内の３次元モデル上の第１の点を決定することと、パンニング球面を決定することとを実行するように構成され、該パンニング球面の中心は、該３次元モデルの中心に位置し、該パンニング球面は、該３次元モデルの中心と該第１の点との間の距離に等しい半径を有し、該パンニングモジュールは、該パンニング球面上に位置する第２の点および仮想表面上の第３の点を決定するようにさらに構成され、該第２の点は、該第３の点に関連する、パンニングモジュールと、
該第１の点、該３次元モデル、および該３次元環境内の該バーチャルカメラの位置に従って、該仮想表面を決定するように構成された仮想表面計算機モジュールと、
該第３の点を該３次元モデルの中心と接続する第１の線分と、該３次元モデルの中心を該３次元環境内の該バーチャルカメラの位置と接続する第２の線分との間の第１の角度だけ該３次元モデルを回転させることにより該３次元モデルの場所を変更するように構成された回転子モジュールと
を備え、
該バーチャルカメラと該第３の点との間の距離は、該バーチャルカメラと該第２の点との間の距離よりも短く、
該第１の角度だけの該３次元モデルの回転は、該３次元モデルの中心を該第２の点と接続する第３の線分と該第２の線分との間の第２の角度だけの該３次元モデルの回転よりも小さく、
該仮想表面を決定することは、該仮想表面を該パンニング球面のパンニング表面に適合することにより、該仮想表面が該バーチャルカメラの視点から凹面であるようにすることを含み、該バーチャルカメラの視点は、該３次元環境内の該バーチャルカメラの位置によって決定される、システム。
【請求項８】
前記パンニングモジュールは、前記仮想表面を前記パンニング表面に適合することにより、該パンニング球面上に連続的な平滑面を形成するように構成される、請求項７に記載のシステム。
【請求項９】
前記３次元モデルは、地球のモデルを含む、請求項８に記載のシステム。
【請求項１０】
前記仮想表面は、前記パンニング球面の一部分の鏡像である、請求項８に記載のシステム。
【請求項１１】
前記パンニングモジュールは、前記バーチャルカメラのビューポート上の第４の点を通して、該バーチャルカメラの焦点から第１の射線を延在させるように構成され、該第４の点は、第１のユーザ選択に対応し、
該パンニングモジュールは、該第１の射線と前記３次元モデルとの間の交差点において、前記第１の点を決定するように構成される、請求項８に記載のシステム。
【請求項１２】
前記パンニングモジュールは、前記パンニング球面を決定するように構成され、該パンニング球面の中心は、前記３次元モデルの中心に位置し、該パンニング球面は、該３次元モデルの該中心と該第１の点との間の距離に等しい半径を有し、
前記仮想表面計算機モジュールは、接続点において該パンニング球面に接続される仮想表面を決定するように構成され、
該仮想表面は、式
【数２】
0005389901.tif 000008
を満たし、
θ0は、前記第１の射線と、前記バーチャルカメラおよび前記３次元モデルの中心を接続する線分との間の角度であり、
φ0は、該バーチャルカメラと該３次元モデルの該中心を接続する該第１の線分と、該３次元モデルの該中心と該第１の点を接続する第２の線分との間の角度であり、
ｄφは、該３次元モデルの該中心と該第１の点とを接続する該第２の線分と、該３次元モデルの該中心と該接続点を接続する第３の線分との間の角度であり、
dθは、該第１の射線と、該バーチャルカメラと該接続点とを接続する第３の線分との間の角度であり、
θは、該バーチャルカメラと該３次元モデルの該中心とを接続する該第２の線分と、該バーチャルカメラと該仮想表面上の可変点を接続する第４の線分との間の角度であり、
φは、該バーチャルカメラと該３次元モデルの該中心とを接続する該第２の線分と、該３次元モデルの該中心と該仮想表面上の該可変点とを接続する第５の線分との間の角度である、請求項１１に記載のシステム。
【請求項１３】
地球の３次元モデルを含む３次元環境内においてバーチャルカメラをパンするための方法であって、該方法は、コンピュータにより実行され、該方法は、
該バーチャルカメラの視点から該３次元モデルを表示域に表示することと、
ユーザがカーソルによって該表示域内の該３次元モデル内のパンニング球面上の第１の点を選択することを可能にすることと、
該バーチャルカメラと該第１の点との間の画面射線を決定することと、
該画面射線と仮想表面との間の交差点を決定することと、
該３次元モデルの回転点を通る軸の周りで、該バーチャルカメラが該３次元モデルの回転点および該仮想表面上の交差点と整列するまで、該３次元モデルを回転させることと
を含み、
該交差点に従った該３次元モデルの回転は、該３次元モデルの中心を該第１の点と接続する第１の線分と該画面射線との間の第１の角度だけの該３次元モデルの回転よりも小さく、
該仮想表面は、該仮想表面をパンニング表面に適合することにより、該仮想表面が該バーチャルカメラの視点から凹面であるようにすることにより決定される、方法。
【請求項１４】
３次元環境でバーチャルカメラをパンするためのシステムであって、該システムは、
該３次元環境内の３次元モデル上の第１の点を決定する手段と、
該第１の点、該３次元モデル、および該３次元環境内の該バーチャルカメラの位置に従って、仮想表面を決定する手段であって、該仮想表面を決定することは、パンニング球面を決定することであって、該パンニング球面の中心は、該３次元モデルの中心に位置し、該パンニング球面は、該３次元モデルの中心と該第１の点との間の距離に等しい半径を有する、ことと、該仮想表面を該パンニング球面のパンニング表面に適合することにより、該仮想表面が該バーチャルカメラの視点から凹面であるようにすることとを含み、該バーチャルカメラの視点は、該３次元環境内の該バーチャルカメラの位置によって決定される、手段と、
該パンニング球面上に位置する第２の点を決定する手段と、
該仮想表面上に位置する第３の点を決定する手段であって、該パンニング球面上の第２の点は、該仮想表面上の第３の点に関連し、該バーチャルカメラと該第３の点との間の距離は、該バーチャルカメラと該第２の点との間の距離よりも短い、手段と、
該第３の点を該３次元モデルの中心と接続する第１の線分と、該３次元モデルの中心を該３次元環境内の該バーチャルカメラの位置と接続する第２の線分との間の第１の角度だけ該３次元モデルを回転させることにより該３次元モデルの場所を変更する手段であって、該第１の角度だけの該３次元モデルの回転は、該３次元モデルの中心を該第２の点と接続する第３の線分と該第２の線分との間の第２の角度だけの該３次元モデルの回転よりも小さい、手段と
を備えている、システム。
【請求項１５】
コンピュータ実行可能命令を記憶した有形のコンピュータ可読媒体であって、該コンピュータ実行可能命令は、コンピュータデバイスによって実行される場合、３次元環境内においてバーチャルカメラをパンするための方法を該コンピュータデバイスに実行させ、該方法は、
３次元環境内の３次元モデルの第１の点を決定することと、
該第１の点、該３次元モデル、および該３次元環境内のバーチャルカメラの位置に従って、仮想表面を決定することであって、該仮想表面を決定することは、パンニング球面を決定することであって、該パンニング球面の中心は、該３次元モデルの中心に位置し、該パンニング球面は、該３次元モデルの中心と該第１の点との間の距離に等しい半径を有する、ことと、該仮想表面を該パンニング球面のパンニング表面に適合することにより、該仮想表面が該バーチャルカメラの視点から凹面であるようにすることとを含み、該バーチャルカメラの視点は、該３次元環境内の該バーチャルカメラの位置によって決定される、ことと、
該パンニング球面上に位置する該仮想表面上に第２の点を決定することと、
該仮想表面上に位置する第３の点を決定することであって、該パンニング球面上の第２の点は、該仮想表面上の第３の点に関連し、該バーチャルカメラと該第３の点との間の距離は、該バーチャルカメラと該第２の点との間の距離よりも短い、ことと、
該第３の点を該３次元モデルの中心と接続する第１の線分と、該３次元モデルの中心を該３次元環境内の該バーチャルカメラの位置と接続する第２の線分との間の第１の角度だけ該３次元モデルを回転させることにより該３次元モデルの場所を変更することであって、該第１の角度だけの該３次元モデルの回転は、該３次元モデルの中心を該第２の点と接続する第３の線分と該第２の線分との間の第２の角度だけの該３次元モデルの回転よりも小さい、ことと
を含む、有形のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、３次元環境内においてバーチャルカメラを移動させることに関する。
【背景技術】
【０００２】
３次元データを表示するために、３次元環境を通してナビゲートするためのシステムが存在する。３次元環境は、バーチャルカメラを含む。バーチャルカメラは、どの３次元データをユーザに表示するかを画定する視点を有する。ユーザは、バーチャルカメラをパンするデータを入力し得る。バーチャルカメラをパンすることによって、ユーザは、３次元環境においてナビゲートする。
【０００３】
バーチャルカメラをパンして３次元環境においてナビゲートする１つの種類のシステムは、地理情報システムである。地理情報システムは、地球の３次元モデルを記憶し、取り出し、操作し、表示するためのシステムである。３次元モデルは、山、谷、および峡谷等の地形にテクスチャマッピングされる衛星画像を含み得る。さらに、３次元モデルは、建造物および他の３次元特徴を含み得る。
【０００４】
バーチャルカメラの視点が地球に正接すると、パンニングがますます不安定になる。ユーザの入力のわずかな変更が、バーチャルカメラを遠い距離をパンする。これは、ユーザにとって方向感覚を失わせるものとなり得る。
【０００５】
３次元環境におけるより安定したパンニングのためのシステムおよび方法が必要とされる。
【発明の概要】
【課題を解決するための手段】
【０００６】
本発明は、３次元環境においてパンすることに関する。本発明の実施形態では、コンピュータ実装方法が、３次元環境においてバーチャルカメラをパンする。方法の実施形態では、第１の点が、３次元環境内の３次元モデル上で決定される。第１の点、３次元モデル、および３次元環境内のバーチャルカメラ位置に従って、仮想表面が決定される。第２の点が、仮想表面上で決定される。最終的に、３次元モデルの場所が、第１の点および第２の点に従って変更される。
【０００７】
第２の実施形態では、システムが、３次元環境においてバーチャルカメラをパンする。システムは、３次元環境内の３次元モデル上で第１の点を決定する、パンニングモジュールを含む。パンニングモジュールはまた、仮想表面上で第２の点を決定する。仮想表面計算機モジュールが、第１の点、３次元モデル、および３次元環境内のバーチャルカメラの位置に従って、仮想表面を決定する。回転子モジュールが、第１の点および第２の点に従って、３次元モデルの場所を変更する。
【０００８】
第３の実施形態では、コンピュータ実装方法が、地球の３次元モデルを含む３次元環境でバーチャルカメラをパンする。方法は、バーチャルカメラの視点から３次元モデルを表示域に表示するステップと、ユーザがカーソルで表示域上の第１の点を選択することを可能にするステップと、第１の点に従って、第１の画面射線を決定するステップとを含む。方法はさらに、ユーザが表示域中の第２の点までカーソルを移動させることを可能にするステップと、第２の点に従って、第２の画面射線を決定するステップと、パンニング速度によって定義される割合でカーソルを辿るように、３次元モデルの回転点（例えば、中心）を通る軸の周りに３次元モデルを回転させるステップとを含む。パンニング速度は、第１の画面射線と第２の画面射線との間の角度に対する、３次元モデルの回転角度の比である。パンニング速度は、閾値を超えない。
【０００９】
３次元環境においてパンするために仮想表面を採用することにより、バーチャルカメラの視点が３次元モデルにほぼ正接する時の３次元モデルの移動を低減する。３次元モデルの移動を低減することによって、本発明の実施形態は、パンニングをより安定させる。
【００１０】
本発明のさらなる実施形態、特徴、および利点、ならびに本発明の種々の実施形態の構造および動作を、添付図面を参照して以下で詳細に説明する。
【図面の簡単な説明】
【００１１】
本明細書に組み込まれ、本明細書の一部を形成する添付図面は、本発明を図示し、説明とともに、さらに本発明の原則を説明し、かつ当業者が本発明を作製し、使用することを可能にする働きをする。
【図１Ａ】図１Ａは、仮想表面を伴わないパンニングを図示する概略図である。
【図１Ｂ】図１Ｂは、本発明の実施形態による、仮想表面を伴うパンニングを図示する概略図である。
【図２Ａ】図２Ａは、地理情報システムのユーザインターフェースのスクリーンショットである。
【図２Ｂ】図２Ｂは、仮想表面を伴うパンニングに使用される表示域の種々の領域を図示する概略図である。
【図３】図３は、本発明の実施形態による、仮想表面を使用してパンする地理情報システムクライアントのアーキテクチャ図である。
【図４】図４は、図３のシステムの動作で使用され得る、仮想表面を使用してパンするための方法のフローチャートである。
【図５Ａ】図５Ａは、図４の方法におけるステップによる、サロゲート射線を決定するステップを図示する概略図である。
【図５Ｂ】図５Ｂは、図４の方法におけるステップによる、衝打点を決定するステップを図示する概略図である。
【図６】図６は、図４の方法におけるステップによる、仮想表面を構築するための計算を図示する概略図である。
【図７Ａ】図７Ａ−図７Ｂは、図４の方法におけるステップによる、仮想表面との交差点を決定し、３次元モデルを回転させるためのステップを図示する概略図である。
【図７Ｂ】図７Ａ−図７Ｂは、図４の方法におけるステップによる、仮想表面との交差点を決定し、３次元モデルを回転させるためのステップを図示する概略図である。
【００１２】
要素が最初に出現する図面は、典型的には、対応する参照番号における１つまたは複数の最左の数字によって示される。図面中、類似番号は、同一または機能的に同様の要素を示し得る。
【発明を実施するための形態】
【００１３】
本発明の実施形態は、仮想表面を使用する安定したパンニングに関する。以下の発明を実施するための形態では、「一実施形態」、「実施形態」、「実施形態例」等への言及は、説明される実施形態が、特定の特徴、構造、または特性を含み得るが、全ての実施形態が必ずしも、特定の特徴、構造、または特性を含み得ないことを示す。また、そのような語句は、必ずしも同じ実施形態を指しているとは限らない。さらに、特定の特徴、構造、または特性が、実施形態と関連して説明される時に、明示的に説明されるか否かを問わず、他の実施形態と関連して、そのような特徴、構造、または特性を達成することが当業者の知識の範囲内であることが提示される。
【００１４】
本明細書で使用されるように、バーチャルカメラを「パンする」という用語は、その中心等の回転軸を通る軸の周りで３次元モデルを回転させることを指す。カメラに対して３次元モデルを移動させることは、３次元モデルに対してカメラを移動させることと同等であることに留意することが重要である。
【００１５】
図１Ａは、仮想表面を伴わないトラックボールパンニングを図示する、概略図１００を示す。概略図１００は、３次元幾何学形状１０２を視認するバーチャルカメラ１０６を示す。３次元幾何学形状１０２は、地形１１６を含む。以下で詳細に説明されるように、３次元幾何学形状１０２は、例えば、点１１２において中心原点を有する、地球の３次元モデルであってもよく、バーチャルカメラ１０６は、３次元モデルのどの部分を表示域上においてユーザに表示するかを画定し得る。
【００１６】
ユーザは、表示域上において第１の点を選択し得る。結果として、点に従って射線１１４が延在させられる。実施例では、射線１１４は、表示域上において選択された点に対応するバーチャルカメラのビューポート上の点を通して、バーチャルカメラの焦点から延在し得る。どのように射線１１４が決定され得るかは、図５Ｂに関してより詳細に説明される。いったん射線１１４が決定されると、射線１１４と３次元モデル１０２との間の交差点１０８が決定される。
【００１７】
パンニング球面１０４が、点１０８および３次元モデル１０２に対応して決定される。パンニング球面１０４は、パンニングを制御するために使用される３次元表面である。実施例では、パンニング球面１０４は、点１１２における中心原点、および交差点１０８と点１１２との間の距離に等しい半径とを有する球体であり得る。
【００１８】
いったんパンニング球面１０４が決定されると、ユーザが表示域上において第２の点を選択し、３次元モデル１０２がそれに応じて回転させられる。ユーザは、例えば、マウスを新しい場所に移動させることによって、表示域上において第２の点を選択し得る。ユーザ選択の結果として、第２の点に対応する射線１２０が決定される。いったん射線１２０が決定されると、射線１２０とパンニング球面１０４との間の交差点１１０が決定される。線分１１８は、点１１２を交差点１０８と接続し、線分１２２は、点１１２を交差点１１０と接続する。３次元モデル１０２は、線分１１８と線分１２２との間の角度１１４によって回転させられる。このようにして、例えば、マウスによって表示域上の点を選択し、マウスを移動させることによって、ユーザは、モデルを回転させてマウスの移動を辿る。
【００１９】
標準トラックボールパンニングには利点があるが、不安定となり得る。射線１２０が３次元モデル１０２およびパンニング球面１０４にますます正接するにつれて、ユーザの選択のわずかな変更が、モデル１０２の大きな回転をもたらす。本発明の実施形態は、図１Ｂに関して説明されるような仮想表面を導入することによって、パンニングをより安定させる。
【００２０】
図１Ｂは、本発明の実施形態による、仮想表面を伴うパンニングを図示する、概略図１５０を示す。概略図１００のように、概略図１５０では、ユーザが、表示域上で第１および第２の点を選択し、結果として、モデルが回転する。しかしながら、仮想表面は、モデルの回転を低減し、したがって、安定性を増加させる。
【００２１】
ユーザが表示域上において第１の点を選択すると、射線１１４、交差点１０８、およびパンニング球面１０４が、概略図１００について説明されるように決定される。いったんパンニング球面１０４が決定されると、仮想表面１５２が決定される。仮想表面１５２とパンニング球面１０４はと一緒に、連続的な平滑面を形成する。仮想表面１５２は、例えば、パンニング球面１０４の一部分に対向する凹面であり得る。一実施形態では、仮想表面１５２は、パンニング球面１０４の一部分の鏡像であり得る。
【００２２】
ユーザが表示域上において第２の点を選択すると、射線１２０がユーザ選択に従って延在させられ、３次元モデル１０２が回転させられる。交差点１５４が、射線１２０と仮想表面１５２との間で決定される。線分１５８は、点１１２と交差点１５４とを接続する。モデル１０２は、線分１５８と線分１１８との間の角度１５６によって回転させられる。したがって、交差点が、パンニング球面１０４の代わりに仮想表面１５２を使用して決定される。このようにして、モデル１０２の回転は、射線１２０が球体１０４に正接するときに、突然発生するわけではない。
【００２３】
本発明の実施形態を、残りの図を参照して以下でより詳細に説明する。具体的には、図２−３は、仮想表面を使用してパンする地理情報システムを説明する。図４は、地理情報システムの動作において使用され得る方法を説明する。最終的に、図５、６、および７Ａ−Ｂは、方法を詳述する概略図を含む。
【００２４】
図２Ａは、仮想表面を使用してパンし得る、地理情報システムのユーザインターフェース２００のスクリーンショットである。ユーザインターフェース２００は、地理データを表示するための表示域２０２を含む。上述のように、表示域２０２に表示されるデータは、バーチャルカメラの視点からである。実施形態では、視点は、例えば、最上部が取り除かれた３次元ピラミッド等の錐台によって画定される。錐台内の地理データは、バーチャルカメラからの距離に応じて、様々なレベルの詳細さで表示することができる。
【００２５】
表示域２０２に表示される地理データ例は、地球の画像を含む。これらの画像は、地球の３次元モデルを作成する地球の地形を表す、幾何学形状の上にレンダリングすることができる。表示され得る他のデータは、建造物の３次元モデルを含む。ユーザインターフェース２００は、バーチャルカメラの配向を変更するための制御部２０４を含む。制御部２０４は、ユーザが、例えば、バーチャルカメラの高度、緯度、経度、ピッチ、ヨー、および転回を変更することを可能にする。実施形態では、制御部１０４は、マウス等のコンピュータポインティングデバイスを使用して操作される。バーチャルカメラの配向が変化するにつれて、バーチャルカメラの錐台および表示される地理データも変化する。制御部２０４に加えて、ユーザは、例えば、コンピュータキーボードまたはジョイスティック等の他のコンピュータ入力デバイスを使用して、バーチャルカメラの配向を制御することもできる。
【００２６】
ユーザインターフェース２００はまた、ユーザがバーチャルカメラをパンすることを可能にし得る。ユーザは、例えば、コンピュータポインティングデバイスによって、表示域２０２上の第１の点を選択することによってバーチャルカメラをパンし得る。ついで、ユーザは、コンピュータポインティングデバイスを移動させて、表示域２０２上に第２の点を選択し得る。以下で説明されるように、地理情報システムは、ユーザによって選択される第１および第２の点に従って、地球のモデルを回転させる。
【００２７】
地理情報システムは、クライアント・サーバコンピュータアーキテクチャを使用して動作し得る。そのような構成では、ユーザインターフェース２００は、クライアントマシーン上に存在する。クライアントマシーンは、プロセッサ、ローカルメモリ、ディスプレイ、ならびに、キーボード、マウス、および／またはジョイスティック等の１つ以上のコンピュータ入力デバイスを伴う、汎用コンピュータとなり得る。代替として、クライアントマシーンは、例えば、携帯電話機等の特殊コンピュータデバイスとなり得る。クライアントマシーンは、インターネット等の１つ以上のネットワーク上で１つ以上のサーバと通信する。クライアントマシーンと同様に、サーバは、クライアントにデータを供給することが可能な任意の汎用コンピュータを使用して実装することができる。地理情報システムクライアントのアーキテクチャを、図３に関してより詳細に説明する。
【００２８】
図２Ｂは、仮想表面を伴うパンニングに使用される表示域２６０の種々の領域を図示する概略図２５０を示す。図２Ａの表示域２０２に関して上記で説明されるように、表示域２６０は、バーチャルカメラの視点からの地球の３次元モデルを表示し得る。ユーザは、例えば、マウス等のコンピュータポインティングデバイスによって制御されるカーソルで、表示域２６０上の第１の点を選択することによって、バーチャルカメラをパンし得る。ユーザによって選択される点に従って画面射線を延在させることによって、３次元モデルにおける衝打点が決定され得る。次いで、ユーザは、カーソルを移動させて、表示域２６０上に第２の点を選択し得る。地球の３次元モデルは、回転して第２の点を追従し得る。表示域２６０は、領域２５６、２５４、および２５２を含む。どのようにモデルが回転して第２の点を追従するかは、どの領域が第２の点を含むかに応じて変動する。
【００２９】
ユーザがカーソルを移動させて、領域２５６中に第２の点を選択する場合、モデルは、衝打点がカーソルの下にとどまるように回転する。このようにして、モデルは、回転してカーソルに追従する。図１Ｂを再び参照すると、領域２５６では、カーソル位置に従って延在させられる画面射線が、パンニング球面１０４と交差する。カーソルが領域２５４に近づくにつれて、回転速度が増加する。カーソルが領域２５４に進入すると、カーソル位置に従って延在させられる画面射線が、仮想表面１５２と交差する。
【００３０】
実施形態では、領域２５４内におけるカーソルの位置にかかわらず、回転速度が一定のままであるように、仮想表面が構築され得る。言い換えれば、Ｘピクセルだけのカーソルの任意の移動に対して、モデルは、一定のＹ度だけ回転する。さらに、その速度は、領域２５６が領域２５４に接続する点２５８（例えば、パンニング表面が仮想表面に交わる場所）における回転速度によって設定され得る。パンニング表面と仮想表面との間の交差点におけるパンニング球面上の速度に等しい、仮想表面上の回転速度を設定することによって、２つの表面の間の円滑な移行がある。円滑な移行は、ユーザがパンニングにおいて急な動きを体験する可能性を低減する。最終的に、低減した急な動きが、より円滑なパンニング体験をもたらす。
【００３１】
実施形態では、パンニングが可逆的であるように、仮想表面が構築され得る。モデルは、第１の場所から開始する。ユーザが、表示域２６０上において第１の位置を選択する。次いで、ユーザは、カーソルを表示域２６０上の第２の位置に移動させる。したがって、モデルは、第２の場所まで回転する。ユーザが表示域２６０上の第１の位置にカーソルを戻した場合、モデルは、第１の位置に回転して戻る。このようにして、仮想表面は、パンニングが可逆的であるように構築され得る。
【００３２】
最終的に、表示域２６０は、随意で、回転がほとんど、または全く発生しない領域２５２を有し得る。地理情報システムでは、領域２５２は、空または外部空間に対応し得る。ユーザが領域２５２の中へカーソルを移動させた場合、パンニングが停止し得る。さらに、領域２５２中のカーソルの場所に従って延在させられる画面射線は、パンニング球面または仮想表面と交差しなくてもよい。
【００３３】
図３は、本発明の実施形態によるＧＩＳの例示的クライアント３００のアーキテクチャ図である。実施形態では、クライアント３００は、ユーザ相互作用モジュール３１０と、ローカルメモリ３３０と、キャッシュノードマネージャ３４０と、レンダラモジュール３５０と、ネットワークローダ３６５と、表示インターフェース３８０とを含む。図３に示されるように、ユーザ相互作用モジュール３１０は、グラフィカルユーザインターフェース（ＧＵＩ）３１２と、運動モデル３１８とを含む。ローカルメモリ３３０は、視認仕様３３２と、クアッドノードツリー３３４とを含む。キャッシュノードマネージャ３４０は、検索リスト３４５を含む。
【００３４】
実施形態において、クライアント３００の構成要素は、例えば、クライアントマシーン上において作動するソフトウェアとして実装することができる。クライアント３００は、ユーザによる視認のために、地球の画像および他の地理データをクライアント３００に届けるためにＧＩＳサーバ（図示せず）と相互作用する。一緒に、地球の画像および他の地理データは、３次元環境において３次元モデルを形成する。実施形態では、相互から非同期的に（例えば、時間非依存的に）作動することができる機能に従って、ソフトウェアオブジェクトがグループ化される。
【００３５】
一般に、クライアント３００は、以下のように動作する。ユーザ相互作用モジュール３１０は、ユーザが視認することを所望する場所に関するユーザ入力を受信し、運動モデル３１８を通して、視認仕様３３２を構築する。レンダラモジュール３５０は、どのデータが描画されるかを決定するために視認仕様３３２を使用し、データを描画する。キャッシュノードマネージャ３４０は、制御の非同期スレッドにおいて作動し、ネットワークを介して遠隔サーバから取り出されるクアッドノードにおいてデータ投入することによって、クアッドノードツリー３３４を構築する。
【００３６】
ユーザインターフェースモジュール３１０の実施形態では、ユーザが、ＧＵＩ３１２を使用して位置情報を入力する。これは、例えば、視認仕様３３２の生成をもたらす。視認仕様３３２は、ローカルメモリ３３０の中に配置され、そこでレンダラモジュール３５０によって使用される。
【００３７】
運動モデル３１８は、バーチャルカメラの位置または配向を調整するために、ＧＵＩ３１２を介して受信された位置情報を使用する。カメラは、例えば、地球の表示された３次元モデルを視認するために使用される。ユーザは、バーチャルカメラの観点から自分のコンピュータモニタ上に表示された３次元モデルを見る。実施形態では、運動モデル３１８はまた、バーチャルカメラの位置、バーチャルカメラの配向、ならびにバーチャルカメラの水平および垂直視野に基づいて、視認仕様３３２を決定する。
【００３８】
視認仕様３３２は、錐台として知られている、３次元空間内のバーチャルカメラの視認可能容量と、例えば、３次元地図に対する、錐台の位置および配向とを画定する。実施形態では、錐台は、角錐台の形状である。錐台は、視認状況に応じて変化することができる、最小および最大の視認距離を有する。３次元地図のユーザの視認が、ＧＵＩ３１２を使用して操作されるにつれて、錐台の配向および位置が３次元地図に対して変化する。したがって、ユーザ入力が受信されると、視認仕様３３２が変化する。視認仕様３３２は、ローカルメモリ３３０の中に配置され、そこでレンダラモジュール３５０によって使用される。視認仕様３３２およびＧＩＳクライアント３００の他の構成要素を、以下でより詳細に説明する。
【００３９】
運動モデル３１８は、仮想表面を使用してパンニングを制御するために、いくつかのサブモジュールを使用する。サブモジュールは、パンニングモジュール３９０と、仮想表面計算機モジュール３９２と、回転子モジュール３９４とを含む。運動モデル３１８は、ＧＵＩ３１２からユーザ入力を受け取る。ユーザ入力がマウスのクリックである場合、運動モデル３１８は、例えば、関数呼び出しによって、パンニングモジュール３９０を起動し得る。
【００４０】
パンニングモジュール３９０は、ユーザ入力に従って射線を延在させ、３次元モデルと射線との間の交差点を決定する。パンニングモジュール３９０はまた、パンニング球面を構築し得る。いったんパンニング球面が構築されると、仮想表面計算機モジュール３９２は、仮想表面をパンニング球面に適合し得る。
【００４１】
運動モデル３１８は、ＧＵＩ３１２から第２のユーザ入力を受け取る。パンニングモジュール３９０は、第２のユーザ入力に従って別の射線を延在させる。パンニングモジュール３９０はまた、仮想表面と射線との間の交差点を計算する。最終的に、回転子モジュール３９４は、交差点に従って３次元モデルを回転させる。パンニングモジュール３９０、仮想表面計算機モジュール３９２、および回転子モジュール３９４の動作を、図４−６および７Ａ−Ｂに関して以下でより詳細に説明する。
【００４２】
図４は、図３の運動モデル３１８の動作において使用され得る、仮想表面を使用してパンするための方法４００のフローチャートである。方法４００は、運動モデル３１８に関して説明されているが、運動モデル３１８に限定されるように意図されていない。
【００４３】
方法４００は、ステップ４０２においてユーザイベントを受信することによって開始する。ユーザイベントがクリックイベントである場合、サロゲート射線がステップ４１８において計算され得る。次いで、衝打点が、ステップ４０４において画面射線またはサロゲート射線を３次元モデルと交差させることによって計算される。ステップ４０６においては、パンニング球面が衝打点に適合され、ステップ４０８では、仮想表面がパンニング球面に適合される。パンニング球面は、図１Ｂに関して説明されるように、衝打点に従って生成され得る。仮想表面は、バーチャルカメラの位置に従って生成され得る。マウス移動イベントが受信され、方法４００はステップ４１０に続く。ステップ４１０においては、画面射線がパンニング表面および仮想表面の両方と交差される。交差点のうちの１つがステップ４１２において選択される。選択された交差点が仮想表面上にある場合は、ステップ４１４においてパンニング球面上に投影される。最終的に、ステップ４１６においては、ステップ４０４において決定された衝打点およびステップ４１６において選択された交差点を接続する線分によって範囲を定められる角度によって、３次元モデルが回転させられる。ステップのそれぞれを、図３の運動モデル３１８と、図５Ａ−Ｂ、６、および７Ａ−Ｂの概略図とに関して、以下でより詳細に説明する。
【００４４】
ステップ４０２では、ＧＵＩ３１２が、クリックイベントまたは移動イベントといった、２つのユーザイベントのうちの１つを受信し得る。ＧＵＩ３１２は、図２の表示域２０２中の位置において、マウスまたは他の入力デバイスをユーザがクリックすることに応じて、クリックイベントを受信し得る。ＧＵＩ３１２は、ユーザが入力デバイス（マウス等）を押しながら、入力デバイスを表示域２０２上の新しい位置まで移動させると、移動イベントを受信し得る。これらのイベントは、ＧＵＩ３１２に、パンニングモジュール３９０へのコールバック関数呼び出しを行わせ得る。関数呼び出し中に、ＧＵＩ３１２は、イベントに関する位置情報をパンニングモジュール３９０に渡し得る。
【００４５】
ユーザイベントがクリックイベントである場合、パンニングモジュール３９０は、図５Ａに図示されるように、ステップ４１８においてサロゲート画面射線を決定し得る。図５Ａは、焦点５０６を有するバーチャルカメラを示す。クリックイベントに基づいて、画面射線５１０が決定される。画面射線を決定するステップを、図５Ｂに関してより詳細に説明する。線分５１４が、中心原点１１２と焦点５０６とを接続する。線分５１４と画面射線５１０との間の角度５１６は、閾値を超える。角度５１６が閾値を超えるため、角度５１６は、角度５１８における閾値に固定される。最終的に、サロゲート射線５１８が、線分５１４に対して角度５１８で焦点５０６から延在させられる。
【００４６】
ステップ４０４では、パンニングモジュール３９０が、画面射線またはサロゲート射線を３次元モデルと交差させることによって衝打点を計算する。ステップ４０４を、図５Ｂの概略図５００に関して詳細に説明する。概略図５００は、地球のモデル５５２を示す。概略図５００はまた、バーチャルカメラの焦点５０６も示す。バーチャルカメラは、図２に関して説明されたように、情報を撮影するため、および表示するために使用される。バーチャルカメラは、焦点距離５５８およびビューポート５６０を有する。ビューポート５６０は、図２の表示域２０２に対応する。ユーザは、表示域２０２上の位置を選択し、該位置は、ビューポート５６０上の点５６２に対応する。
【００４７】
パンニングモジュールは、モデルとの交差点を決定するために、バーチャルカメラから画面射線を延在させることによって衝打点を決定する。概略図５００では、射線５６４が点５６２を通って焦点５０６から延在する。別の実施形態では、射線５６４は、図５Ａに関して説明されたように計算されたサロゲート射線であり得る。射線５６４は、場所５５４においてモデル５５２と交差する。したがって、衝打点は５５４にある。射線５６４は、建造物または地形において３次元モデル５５２と交差し得る。
【００４８】
図３および４を参照すると、射線が建造物または地形と交差する場合、パンニングモジュール３９０が、ステップ４０６においてパンニング球面を作成し得る。パンニング球面の中心原点は、３次元モデルの中心に位置し得、パンニング球面の半径は、モデルの中心とステップ４０４において決定された衝打点との間の距離であり得る。
【００４９】
いったんパンニング表面がステップ４０６において決定されると、仮想表面計算機モジュール３９２がステップ４０８において仮想表面を計算する。仮想表面は、仮想表面とパンニング表面とが一緒に連続面を形成するために、パンニング表面に適合される。仮想表面は、バーチャルカメラの視点からの凹面であり得る。実施例では、仮想表面は、パンニング表面の一部分の鏡像である。
【００５０】
図６は、本発明の一実施形態による、仮想表面を計算する方法を図示する概略図６００を示す。概略図６００は、仮想表面を計算する１つの方法を図示するが、仮想表面を計算する他の方法もある。上記で説明されるように、仮想表面はまた、地球の凹面または鏡像として計算され得る。概略図６００は、中心原点６１４を有する３次元モデル６０６を視認するバーチャルカメラ６０２を示す。概略図６００はまた、パンニング球面６０４も示す。
【００５１】
パンニング速度は、カーソルの移動が３次元モデル６０６を回転させる速度である。一実施形態では、仮想表面は、パンニング速度が、パンニング表面の間の交差点において最大値に達し、仮想表面にわたって一定のままとなるように構築され得る。このようにして、パンニング表面から仮想表面への円滑な移行がある。
【００５２】
仮想表面を決定するために、仮想表面計算機モジュール３９２は、最初に、パンニング表面が仮想表面に接続する点を決定する。概略図６００では、パンニング表面は、点６１６において仮想表面に接続する。点６１６は、仮想表面が使用される前に、カメラがどのように正接していなければならないかを画定する、パラメータに対応し得る。代替実施形態では、点６１６は、パンニング速度が最大許容閾値に達する点であり得る。点６１６を使用して、いくつかの角度が決定される。
【００５３】
ｄθと標識される第１の角度は、ユーザのマウスクリックからの画面射線６２４と、カメラ６０２を点６１６と接続する線分６１８との間の角度である。線分６２２は、中心原点６１４を、ユーザのマウスクリックからの画面射線とパンニングモデルとの交差点６２６と接続する。線分６２０は、中心原点６１４と点６１６とを接続する。ｄφと標識される第２の角度は、線分６２２と線分６２０との間の角度である。角度ｄθおよびｄφは、わずかなオフセットであり得る。第２の角度ｄθに対する第１の角度ｄφの比（例えば、ｄφ／ｄθ）は、パンニング速度であり得る。
【００５４】
次いで、第１の角度ｄθと第２の角度ｄφとの間の比は、仮想表面を決定するために使用される。仮想表面は、パンニング速度ｄφ／ｄθが表面全体にわたって一定のままとなるように構築され得る。こうするために、バーチャルカメラ６０２と中心原点６１４とを接続する線分６２８が決定される。角度θは、線分６２８と、バーチャルカメラ６０２および仮想表面上の可変点６３２を接続する線分６３０との間の角度である。角度φは、線分６２８と、中心原点６１４と仮想表面上の可変点６３２とを接続する線分６３４との間の角度である。仮想表面上の各可変点について、角度θおよびφは、以下の式を満たし、
【００５５】
【数１】
0005389901.tif 000002
式中、θ0は、ユーザのマウスクリックを使用して生成される画面射線６２４と、線分６２８との間の角度であり、φ0は、線分６２２と線分６２８との間の角度である。
【００５６】
言い換えれば、仮想表面は、射線が角度θでバーチャルカメラから延在させられた場合に、射線が、角度φおよび原点６１４を有する球座標において仮想表面と交差するように、画定される。式を再編成すると、以下のように、バーチャルカメラからの各角度θについて、球座標値φを決定することができる。
【００５７】
【数２】
0005389901.tif 000003
この式を使用して、図３の仮想表面計算機モジュール３９２は、仮想表面を構築し得る。
【００５８】
実施形態においては、式（１）および（２）とは実質的に異ならない他の式を使用して、仮想表面が計算され得る。例えば、係数およびオフセットが式に組み込まれ得る。
【００５９】
図３および４を参照すると、ＧＵＩ３１２がユーザイベントを受信し得る。ユーザイベントが移動イベントである場合、パンニングモジュール３９０が、ステップ４１０で画面射線をパンニング球面および仮想表面の両方と交差させる。ステップ４１０は、図７Ａ−Ｂに図示されている。
【００６０】
図７Ａは、仮想表面と交差するように画面射線を延在させるステップを図示する概略図７００を示す。概略図７００は、ステップ４０６および４０８に関して説明されるように構築される、パンニング球面７０４および仮想表面７０２を示す。概略図７００はまた、焦点５０６、焦点距離５５８、および視点５６０とともに、バーチャルカメラも示す。ユーザは、例えば、マウスを移動させることによって、新しい点を選択し得る。ユーザによって選択される点は、視点５６０における点７０６に対応する。パンニングモジュール３９０は、点７０６を通して焦点５０６から射線７０８を延在させる。射線７０６は、点７１０において仮想表面７０２と交差する。
【００６１】
射線７０８はまた、図７Ｂに示されるように、パンニング球面７０４と交差し得る。図７Ｂは、概略図７５０を含む。概略図７５０は、点７６４においてパンニング球面７０４と交差する射線７０８を示す。
【００６２】
図３および４を再び参照すると、いったん交差点７６４および７１０が決定されると、パンニングモジュール３９０は、ステップ４１２において点のうちの１つを選択し得る。パンニングモジュール３９０は、点の中でバーチャルカメラに最も近いものを選択し得る。概略図７５０では、点７１０は、点７６４よりもバーチャルカメラ５０６に近い。仮想表面７０２上の点７１０が選択されると、パンニングモジュール３９０は、ステップ４１４においてパンニング球面７０４上に点７１０を投影し得る。パンニングモジュール３９０は、点７１０と３次元モデルの中心原点７５８との間の線分７６６を決定することによって、パンニング球面７０４上に点７１０を投影し得る。次いで、パンニングモジュール３９０は、点７６２に、線分７６６とパンニング球面７０４との間の交差点を決定する。
【００６３】
実施形態においては、画面射線７０８および仮想表面７０２に交差する点７１０が、三角形の正弦法則を使用して決定され得る。正弦法則を適用するために、いくつかのパラメータが決定されなければならない。第１に、バーチャルカメラ５０６と中心原点７５８とを接続する線分７６８が決定される。第２に、線分７６８と画面射線７０８との間の角度θが決定される。交差点７１０は、以下の式を満たし、
【００６４】
【数３】
0005389901.tif 000004
式中、Ｂは、線分７６８の長さであり、Ａは、バーチャルカメラ５０６と交差点７１０との間の距離であり、φは、線分７６８と、バーチャルカメラ５０６と交差点７１０とを接続する線分との間の角度である。距離Ａがバーチャルカメラ５０６と交差点７６４との間の距離より小さいため、仮想表面７０２上の点７１０に基づいて回転が発生する。そうでなければ、モデルは、パンニング球面との交差点７６４に基づいて回転する。
【００６５】
交差点がステップ４１６において決定された後、回転子モジュール３９４が、ステップ４０４および４１２において決定された点に従って、３次元モデルの場所を変更する。実施形態では、回転子モジュール３９４は、点に従ってモデルを回転させることによって、モデルの場所を変更する。図７Ｂでは、概略図７５０は、射線７５２と、ステップ４０４においてマウスクリックイベントに応じて決定される衝打点７５４とを示す。概略図７５０はまた、上記で説明されるような移動イベントに応じて決定される点７１０も示す。線分７５６は、衝打点７５４を中心原点７５８と接続し、線分７６６は、中心原点７５８を点７１０と接続する。回転子モジュール３９４は、線分７５６と線分７６６との間の角度７６０だけ３次元モデルを回転させる。
【００６６】
図３を再び参照して、地理情報システムクライアント３００の種々の構成要素をより詳細に説明する。
【００６７】
前述のように、視認仕様３３２は、錐台として知られている、３次元空間内のバーチャルカメラの視認可能容量と、例えば、３次元地図に対する、錐台の位置および配向とを画定する。本発明の一実施形態によれば、視認仕様３３２は、カメラ三脚、カメラレンズ、およびカメラ焦点能力といった、バーチャルカメラの３つの主要パラメータ集合を特定する。カメラ三脚パラメータ集合は、向かっている角度（例えば、北？、南？、その間？）、ピッチ（例えば、水平？、下？、上？、その間？）、および／またはヨー／転回（例えば、水平？、時計回り？、反時計回り？、その間？）等の、初期設定配向に対してバーチャルカメラがどちらに配向されるかである、Ｘ、Ｙ、Ｚ（３つの座標）といったバーチャルカメラ位置を特定する。レンズパラメータ集合は、水平視野（例えば、望遠？、通常の人間の目、すなわち約５５度？、または広角度？）、および垂直視野（例えば、望遠？、通常の人間の目、すなわち約５５度？、または広角度？）を特定する。焦点パラメータ集合は、近クリップ平面までの距離（例えば、より近い被写体が引き寄せられていない場合に、「レンズ」のどれだけ近くでバーチャルカメラが見ることができるか）、および遠クリップ平面までの距離（例えば、より遠い被写体が引き寄せられていない場合に、レンズからどれだけ遠くでバーチャルカメラが見ることができるか）を特定する。
【００６８】
１つの動作例において、上記のカメラパラメータを念頭に置いて、ユーザが左矢印（または右矢印）キーを押すと仮定されたい。これは、視野が左（または右）に移動するべきであることを運動モデル３１８に信号伝達する。運動モデル３１８は、向かっている角度に小さい値（例えば、矢印キーの押下につき１度）を加算（または減算）することによって、そのような地表レベルの「カメラをパンする」種類の制御を実装する。同様に、バーチャルカメラを前方に移動させるために、運動モデル３１８は、最初に、視認方向に沿った単位長さのべクトル（ＨＰＲ）を計算し、所望の運動速度によって各従属構成要素を縮小拡大した後に、このべクトルのＸ、Ｙ、Ｚ従属構成要素をカメラの位置に加算することによって、バーチャルカメラの位置のＸ、Ｙ、Ｚ座標を変更する。このように、および同様に、運動モデル３１８は、「移動直後」の新しい視認位置を画定するために、ＸＹＺおよびＨＰＲを漸増的に更新することによって、視認仕様３３２を調整する。このようにして、運動モデル３１８は、３次元環境を通してバーチャルカメラをナビゲートすることに関与する。
【００６９】
レンダラモジュール３５０は、表示デバイスのビデオリフレッシュ速度に対応するサイクル（例えば、毎秒６０サイクル）を有する。１つの特定の実施形態では、レンダラモジュール３５０は、（ｉ）起動するステップ、（ｉｉ）レンダラによってアクセスされるデータ構造内に運動モデル３１８によって設置された視認仕様３３２を読み出すステップ、（ｉｉｉ）ローカルメモリ３３０の中のクアッドノードツリー３３４を詳しく検討するステップ、および（ｉｖ）クアッドノードツリー３３４に存在するクアッドノードに含有される、描画可能なデータを描画するステップのサイクルを実施する。描画可能なデータは、有界ボックス（例えば、データまたは他のそのような識別子を含有する容量）と関連し得る。存在する場合、有界ボックスは、描画可能なデータが視認仕様３３２内で潜在的に可視的であるかどうかを確認するために点検される。潜在的可視データが描画される一方で、可視的ではないことが分かっているデータは無視される。したがって、レンダラは、以下でさらに十分に説明されるように、クアッドノードツリー３３４に存在するクアッドノードの描画可能なペイロードが描画されないかどうかを決定するために、視認仕様３３２を使用する。
【００７０】
最初に、本発明の一実施形態によれば、クアッドノードツリー３３４内には描画するデータがなく、レンダラモジュール３５０は、初期設定（または他の初期設定表示画像）により星野を描く。クアッドノードツリー３３４は、この星野を除いてレンダラ３５０が行う描画のためのデータソースである。レンダラモジュール３５０は、クアッドノードツリー３３４に存在する各クアッドノードにアクセスしようとすることによって、クアッドノードツリー３３４を詳しく検討する。各クアッドノードは、最大４つの参照と、データの随意的なペイロードとを有する、データ構造である。クアッドノードのペイロードが描画可能なデータである場合、レンダラモジュール３５０は、視認仕様３３２に対してペイロード（もしあれば）の有界ボックスを比較し、描画可能なデータが完全に錐台の外側になく、他の要因に基づいて描画することが不適切と見なされない限り、それを描画する。これらの他の要因は、例えば、カメラからの距離、傾転、または他のそのような考慮事項を含み得る。ペイロードが完全に錐台の外側になく、描画することが不適切と見なされない場合、レンダラモジュール３５０はまた、クアッドノードの中の最大４つの参照のそれぞれにアクセスしようとする。参照がローカルメモリ（例えば、メモリ３３０または他のローカルメモリ）の中の別のクアッドノードに対するものである場合、レンダラモジュール３５０は、その他のクアッドノードの中の任意の描画可能なデータにアクセスしようとし、また、潜在的に、その他のクアッドノードの中の最大４つの参照のうちのいずれかにアクセスしようとする。クアッドノードの最大４つの参照のそれぞれにアクセスするレンダラモジュールの試行は、クアッドノード自体によって検出される。
【００７１】
以前に説明されているように、クアッドノードは、データのペイロードと、他のファイルに対する最大４つの参照とを有し得る、データ構造であり、参照のそれぞれは順に、クアッドノードであり得る。クアッドノードによって参照されるファイルは、本明細書では、そのクアッドノードの子と呼ばれ、参照クアッドノードは、本明細書では、親と呼ばれる。場合によっては、ファイルが、参照された子だけでなく、その子の子孫も含有する。これらの集合体は、キャッシュノードとして知られており、いくつかのクアッドノードを含み得る。そのような集合は、データベース構築の経過中に行われる。場合によっては、データのペイロードは空である。他のファイルに対する参照は、例えば、ファイル名と、もしあれば、そのファイルに対するローカルメモリの中の対応アドレスとを備える。最初に、参照されたファイルは、全て１つ以上の遠隔サーバ上（例えば、ＧＩＳのサーバ上）に記憶され、ユーザのコンピュータ上には描画可能なデータが存在しない。
【００７２】
クアッドノードおよびキャッシュノードは、内蔵アクセス機構機能である。以前に説明されているように、クアッドノードの最大４つの参照のそれぞれにアクセスするレンダラモジュールの試行は、クアッドノード自体によって検出される。レンダラモジュールが、ファイル名を有するが対応アドレスがない、子クアッドノードにアクセスしようとすると、親クアッドノードが、キャッシュノード検索リスト３４５上に、そのファイル名を設置する（例えば、そのアクセス機構機能の動作によって）。キャッシュノード検索リストは、ＧＩＳサーバからダウンロードされるキャッシュノードを識別する情報のリストを備える。クアッドノードの子が、空値ではないローカルアドレスを有する場合、レンダラモジュール３５０は、子クアッドノードにアクセスするために、ローカルメモリ３３０の中のそのアドレスを使用する。
【００７３】
クアッドノードは、描画可能なペイロードを伴うクアッドノードが、それらのペイロード内に有界ボックスまたは他の位置識別子を含み得るように、構成される。レンダラモジュール３５０は、クアッドノードペイロード（もしあれば）の有界ボックス／位置識別子を視認仕様３３２と比較する、視認錐台選択を行う。有界ボックスが視認仕様３３２から完全に外れている（例えば、描画可能なデータのいずれも錐台内にない）場合に、描画可能なデータのペイロードは、たとえＧＩＳサーバからすでに取り出され、ユーザのコンピュータ上に記憶されていても、描画されない。そうでなければ、描画可能なデータが描画される。
【００７４】
視認錐台選択は、レンダラモジュール３５０がクアッドロードの子を詳細しく検討する前に、そのクアッドノードペイロードの有界ボックス（もしあれば）が視認仕様３３２から完全に外れているか否かを決定する。クアッドノードの有界ボックスが視認仕様３３２から完全に外れている場合、レンダラモジュール３５０は、そのクアッドノードの子にアクセスしようとしない。子クアッドノードは、決してその親クアッドノードの有界ボックスを超えて延在しない。したがって、親クアッドノードペイロードが視認仕様から完全に外れていると、いったん視認錐台選択が決定すると、そのクアッドノードの全子孫も視認仕様３３２から完全に外れていると仮定することができる。
【００７５】
クアッドノードおよびキャッシュノードペイロードは、種々の種類のデータを含有し得る。例えば、キャッシュノードペイロードは、衛星画像、テキストラベル、政治的境界、道路をレンダリングするための点、線、または多角形接続を伴う３次元頂点、および他の種類のデータを含有することができる。任意のクアッドノードペイロードの中のデータの量は、最大値に限定される。しかしながら、場合によっては、特定の分解能で領域を表すために必要とされるデータの量が、この最大値を超える。ベクトルデータの処理等の、それらの場合において、データの一部は、親ペイロードに含有され、同じ分解能における残りのデータは、子のペイロードに（および、おそらく子の子孫内にさえも）含有される。また、子が、より高い分解能または親と同じ分解能のデータを含有し得る場合があり得る。例えば、親ノードが、親と同じ分解能の２つの子と、その親とは異なる（例えば、より高い）分解能の２つの付加的な子とを有する場合がある。
【００７６】
キャッシュノードマネージャ３４０のスレッド、および１つ以上のネットワークローダ３６５のスレッドのそれぞれは、レンダラモジュール３５０およびユーザ相互作用モジュール３１０とは非同期的に動作する。レンダラモジュール３５０およびユーザ相互作用モジュール３１０はまた、相互とは非同期的に動作することもできる。いくつかの実施形態では、８つもの数のネットワークローダ３６５のスレッドが独立して実行され、それぞれ、レンダラモジュール３５０およびユーザ相互作用モジュール３１０とは非同期的に動作する。キャッシュノードマネージャ３４０のスレッドは、ＧＩＳサーバから取り出されるクアッドノードでデータ投入することによって、ローカルメモリ３３０の中のクアッドノードツリー３３４を構築する。クアッドノードツリー３３４は、クライアントシステムが起動あるいは始動されると、ルートノードから開始する。ルートノードは、ファイル名を含み（しかし対応するアドレスは含まない）、データペイロードを含まない。以前に説明されているように、このルートノードは、初めてレンダラモジュール３５０によって詳しく検討された後に、キャッシュノード検索リスト３４５に自己報告するために、内蔵アクセス機構機能を使用する。
【００７７】
各ネットワークローダ３６５のスレッドにおいて、ネットワークローダは、キャッシュノード検索リスト３４５（図３に示された実施形態では、キャッシュノードマネージャ３４０に含まれるが、ローカルメモリ３３０または他の記憶装置等の他の場所に位置することもできる）を詳しく検討し、キャッシュノードのファイル名を使用して、ＧＩＳサーバから次のキャッシュノードを要求する。ネットワークローダは、キャッシュノード検索リスト上に出現するファイルを要求するのみである。キャッシュノードマネージャ３４０は、親クアッドノードの子孫である１つ以上の新しいクアッドノードに編成される、返送ファイルに対するローカルメモリ３３０（または他の好適な記憶装置）の中の空間を割り当てる。キャッシュノードマネージャ３４０はまた、必要であれば（例えば、サーバ側の暗号化または圧縮を補完するために）、ＧＩＳサーバから返送されたデータファイルを解読または解凍することもできる。キャッシュノードマネージャ３４０は、それぞれの新たに構築された子クアッドノードに対するローカルメモリ３３０のアドレスに対応するアドレスで、クアッドノードツリー３３４の中の親クアッドノードを更新する。
【００７８】
レンダラモジュール３５０において別個かつ非同期的に、クアッドノードツリー３３４を次に詳しく検討し、更新された親クアッドノードを詳しく検討すると、レンダラモジュール３５０は、子クアッドノードに対応するローカルメモリの中のアドレスを見出し、子クアッドノードにアクセスすることができる。レンダラによる子クアッドノードの詳細検討は、親クアッドノードについて従われる同じステップに従って進行する。これは、以前に説明されているように、視認仕様３３２から完全に外れているか、または他の要因に基づいて引き出すことが不適切と見なされるノードに到達するまで、クアッドノードツリー３３４を通して継続する。
【００７９】
この特定の実施形態では、キャッシュノードマネージャスレッドによって書き込まれるか、あるいは提供されるクアッドノードのレンダラモジュールによる読み出し以外に、キャッシュノードマネージャスレッドとレンダラモジュール３５０との間の通信がないことに留意されたい。さらに、この特定の実施形態では、以前に説明されているように、返送された子が、視認仕様３３２から完全に外れているか、あるいは描画することに不適切なペイロードのみを含有するまで、キャッシュノード、したがって、クアッドノードがダウンロードされ続ける。表示インターフェース３８０（例えば、表示インターフェースカード）は、ユーザがデータを視認することができるように、マッピングモジュールからのデータが、ユーザのコンピュータと関連するディスプレイに送信されることを可能にするように構成される。表示インターフェース３８０は、従来の技術で実装することができる。
【００８０】
概要および要約の項は、本発明者らによって検討されるような本発明の全てではないが１つ以上の例示的実施形態を記載し得、したがって、決して本発明および添付の請求項を限定することを目的としない。
【００８１】
その特定機能および関係の実装を図示する、機能的構成要素を用いて、本発明を上記で説明した。これらの機能的構成要素の境界は、説明の便宜上、本明細書では任意に画定した。その特定機能および関係が適切に実施される限り、代替的境界を画定することができる。
【００８２】
具体的実施形態の先述の説明は、本発明の一般概念から逸脱することなく、必要以上の実験を伴わずに、当技術分野内の知識を適用することによって、他者がそのような具体的実施形態を容易に修正し、および／または種々の用途に適合させることができる、本発明の一般的性質を完全に明らかにする。したがって、そのような適合および修正は、本明細書で提示される教示および指導に基づいて、開示された実施形態の同等物の意味および範囲内となることを目的とする。本明細書の用語または表現が、教示および指導に照らして当業者によって解釈されるものであるように、本明細書の表現または用語は、限定ではなく説明の目的によるものであることを理解されたい。
【００８３】
本願明細書は、以下の項目も提供する。
（項目１）
３次元環境内においてバーチャルカメラをパンするためのコンピュータ実装方法であって、
（ａ）該３次元環境内の３次元モデル上に第１の点を決定することと、
（ｂ）該第１の点、該３次元モデル、および該３次元環境内の該バーチャルカメラの位置に従って、仮想表面を決定することと、
（ｃ）該仮想表面上に第２の点を決定することと、
（ｄ）該第１の点および該第２の点に従って、該３次元モデルの場所を変更することと、
を含む、方法。
（項目２）
該変更すること（ｄ）は、
該第１の点を該３次元モデルの中心と接続する第１の線分と、該第２の点を該３次元モデルの該中心と接続する第２の線分との間の角度によって、該３次元モデルを回転させることを含む、項目１に記載の方法。
（項目３）
前記決定すること（ｂ）は、
（ｉ）パンニング球面を決定することであって、該パンニング球面の中心は、前記３次元モデルの前記中心に位置し、該パンニング球面は、該３次元モデルの該中心と前記第１の点との間の距離に等しい半径を有する、ことと、
（ｉｉ）前記仮想表面および該パンニング表面が一緒に、該パンニング球面と円滑に適合する連続面を形成するように、該パンニング表面に適合される該仮想表面を決定することと
を含む、項目２に記載の方法。
（項目４）
前記３次元モデルは、地球のモデルを含む、項目３に記載の方法。
（項目５）
前記決定すること（ｉｉ）は、前記仮想表面を決定することを含み、該仮想表面は、前記バーチャルカメラの視点からの凹面である、項目３に記載の方法。
（項目６）
前記決定すること（ｉｉ）はさらに、該仮想表面を決定することを含み、該仮想表面は、前記パンニング球面の一部分の鏡像である、項目５に記載の方法。
（項目７）
前記決定すること（ａ）は、
（ｉ）前記バーチャルカメラのビューポート上の第３の点を通して、該バーチャルカメラの焦点から第１の射線を延在させることであって、該第３の点は、第１のユーザ選択に対応する、ことと、
（ｉｉ）該第１の射線と前記３次元モデルとの間の交差点において、前記第１の点を決定することと
を含む、項目１に記載の方法。
（項目８）
前記決定すること（ｃ）は、
（ｉ）前記バーチャルカメラの前記ビューポート上の第４の点を通して、該バーチャルカメラの前記焦点から第２の射線を延在させることであって、該第４の点は、第２のユーザ選択に対応する、ことと、
（ｉｉ）該第２の射線と前記３次元モデルとの間の交差点において、前記第２の点を決定することと
を含む、項目７に記載の方法。
（項目９）
前記決定すること（ｂ）は、
（ｉ）パンニング球面を決定することであって、該パンニング球面の中心は、前記３次元モデルの中心に位置し、該パンニング球面は、該３次元モデルの該中心と前記第１の点との間の距離に等しい半径を有する、ことと、
（ｉｉ）接続点において該パンニング球面に接続される仮想表面を決定することであって、前記仮想表面は、式
【数４】
0005389901.tif 000005
を実質的に満たし、
θ0は、前記第１の射線と、前記バーチャルカメラおよび該３次元モデルの中心を接続する線分との間の角度であり、
φ0は、該バーチャルカメラと該３次元モデルの該中心とを接続する該第１の線分と、該３次元モデルの該中心と該第１の点とを接続する第２の線分との間の角度であり、
ｄφは、該３次元モデルの該中心と該第１の点とを接続する該第２の線分と、該３次元モデルの該中心と該接続点を接続する第３の線分との間の角度であり、
dθは、該第１の射線と、該バーチャルカメラと該接続点を接続する第３の線分との間の角度であり、
θは、該バーチャルカメラと該３次元モデルの該中心とを接続する該第２の線分と、該バーチャルカメラと該仮想表面上の可変点を接続する第４の線分との間の角度であり、
φは、該バーチャルカメラと該３次元モデルの該中心を接続する前記第２の線分と、該３次元モデルの該中心と該仮想表面上の該可変点を接続する第５の線分との間の角度である、ことと
を含む、項目７に記載の方法。
（項目１０）
３次元環境内においてバーチャルカメラをパンするためのシステムであって、
該３次元環境内の３次元モデル上に第１の点を決定し、仮想表面上で第２の点を決定する、パンニングモジュールと、
該第１の点、該３次元モデル、および該３次元環境内の該バーチャルカメラの位置に従って、仮想表面を決定する、仮想表面計算機モジュールと、
該第１の点および該第２の点に従って、該３次元モデルの場所を変更する、回転子モジュールと
を備えている、システム。
（項目１１）
前記回転子モジュールは、前記第１の点を前記３次元モデルの中心と接続する第１の線分と、前記第２の点を該３次元モデルの該中心と接続する第２の線分との間の角度によって、該３次元モデルを回転させる、項目１０に記載のシステム。
（項目１２）
前記パンニングモジュールは、パンニング球面を決定し、該パンニング球面の中心は、前記３次元モデルの中心に位置し、該パンニング球面は、該３次元モデルの該中心と前記第１の点との間の距離に等しい半径を有し、
該パンニングモジュールは、前記仮想表面と前記パンニング表面とが一緒に、該パンニング球面と円滑に適合する連続面を形成するように、該パンニング表面に適合される該仮想表面を決定する、項目１１に記載のシステム。
（項目１３）
前記３次元モデルは、地球のモデルを含む、項目１２に記載のシステム。
（項目１４）
前記仮想表面は、前記バーチャルカメラの視点からの凹面である、項目１２に記載のシステム。
（項目１５）
前記仮想表面は、前記パンニング球面の一部分の鏡像である、項目１４に記載のシステム。
（項目１６）
前記パンニングモジュールは、前記バーチャルカメラのビューポート上の第３の点を通して、該バーチャルカメラの焦点から第１の射線を延在させ、該第３の点は、第１のユーザ選択に対応し、
該パンニングモジュールは、該第１の射線と前記３次元モデルとの間の交差点において、前記第１の点を決定する、項目１０に記載のシステム。
（項目１７）
前記パンニングモジュールは、前記バーチャルカメラの前記ビューポート上の第４の点を通して、該バーチャルカメラの前記焦点から第２の射線を延在させ、該第４の点は、第２のユーザ選択に対応し、
前記第２の点は、前記第２の射線と前記３次元モデルとの間の交差点にある、項目１６に記載のシステム。
（項目１８）
前記パンニングモジュールは、パンニング球面を決定し、該パンニング球面の中心は、前記３次元モデルの中心に位置し、該パンニング球面は、該３次元モデルの該中心と該第１の点との間の距離に等しい半径を有し、
前記仮想表面計算機モジュールは、接続点において該パンニング球面に接続される仮想表面を決定し、該仮想表面は、式
【数５】
0005389901.tif 000006
を実質的に満たし、
θ0は、前記第１の射線と、前記バーチャルカメラおよび前記３次元モデルの中心を接続する線分との間の角度であり、
φ0は、該バーチャルカメラと該３次元モデルの該中心を接続する該第１の線分と、該３次元モデルの該中心と該第１の点を接続する第２の線分との間の角度であり、
ｄφは、該３次元モデルの該中心と該第１の点とを接続する該第２の線分と、該３次元モデルの該中心と該接続点を接続する第３の線分との間の角度であり、
dθは、該第１の射線と、該バーチャルカメラと該接続点とを接続する第３の線分との間の角度であり、
θは、該バーチャルカメラと該３次元モデルの該中心とを接続する該第２の線分と、該バーチャルカメラと該仮想表面上の可変点を接続する第４の線分との間の角度であり、
φは、該バーチャルカメラと該３次元モデルの該中心とを接続する該第２の線分と、該３次元モデルの該中心と該仮想表面上の該可変点とを接続する第５の線分との間の角度である、項目１６に記載のシステム。
（項目１９）
地球の３次元モデルを含む、３次元環境内においてバーチャルカメラをパンするためのコンピュータ実装方法であって、
（ａ）該バーチャルカメラの視点から該３次元モデルを表示域に表示することと、
（ｂ）ユーザがカーソルによって該表示域上の第１の点を選択することを可能にすることと、
（ｃ）該第１の点に従って、第１の画面射線を決定することと、
（ｄ）該ユーザが該表示域中の第２の点まで該カーソルを移動させることを可能にすることと、
（ｅ）該第２の点に従って、第２の画面射線を決定することと、
（ｆ）パンニング速度によって定義される速度で該カーソルを辿るように、該３次元モデルの回転点を通る軸の周りに該３次元モデルを回転させることと
を含み、
該パンニング速度は、該第１の画面射線と該第２の画面射線との間の角度に対する、該３次元モデルの回転角度の比であり、
該パンニング速度は、閾値を超えない、方法。
（項目２０）
３次元環境でバーチャルカメラをパンするためのシステムであって、
該３次元環境内の３次元モデル上で第１の点を決定するための手段と、
該第１の点、該３次元モデル、および該３次元環境内の該バーチャルカメラの位置に従って、仮想表面を決定するための手段と、
該仮想表面上で第２の点を決定するための手段と、
該第１の点および該第２の点に従って、該３次元モデルの場所を変更するための手段と
を備えている、システム。
（項目２１）
その上にコンピュータ実行可能命令が記憶された有形のコンピュータ可読媒体であって、コンピュータデバイスによって実行される場合、
（ａ）３次元環境内の３次元モデル上に第１の点を決定することと、
（ｂ）該第１の点、該３次元モデル、および該３次元環境内のバーチャルカメラの位置に従って、仮想表面を決定することと、
（ｃ）該仮想表面上に第２の点を決定することと、
（ｄ）該第１の点および該第２の点に従って、該３次元モデルの場所を変更することと
の方法を該コンピュータデバイスに実行させる、有形のコンピュータ可読媒体。
本発明の幅および範囲は、上記の例示的実施形態のうちのいずれによっても限定されるべきではないが、以下の請求項およびそれらの同等物のみに従って定義されるべきである。
【図１Ａ】
0005389901.tif 000009
【図１Ｂ】
0005389901.tif 000010
【図２Ａ】
0005389901.tif 000011
【図２Ｂ】
0005389901.tif 000012
【図３】
0005389901.tif 000013
【図４】
0005389901.tif 000014
【図５Ａ】
0005389901.tif 000015
【図５Ｂ】
0005389901.tif 000016
【図６】
0005389901.tif 000017
【図７Ａ】
0005389901.tif 000018
【図７Ｂ】
0005389901.tif 000019