パノラマのイメージを描画すること、閲覧すること、および注釈をつけること、ならびにそのアプリケーション
【課題】表面を描画する方法を提供すること。
【解決手段】表面を描画する方法であって、該方法は、該表面に描画されるイメージを閲覧するユーザ入力の前に、(a)ビューポートから該表面への第1の変換によって画定される、該表面上の領域を予め計算することと、(b)該領域から該ビューポートにマップする第2の変換を予め計算することと、該表面に描画される該イメージを閲覧する該ユーザ入力に応答して、(c)該ユーザ入力に従って、イメージの一部を決定することであって、該一部は該領域と交わる、ことと、(d)変換されたイメージを得るために、該領域と交わる該イメージの一部に該第2の変換を適用することと、(e)該変換されたイメージを、表示のためにビューポートに描画することとを含み、ステップ(a)〜(e)は、それぞれ、少なくとも1つのコンピューティング装置上で実行される、方法。
【解決手段】表面を描画する方法であって、該方法は、該表面に描画されるイメージを閲覧するユーザ入力の前に、(a)ビューポートから該表面への第1の変換によって画定される、該表面上の領域を予め計算することと、(b)該領域から該ビューポートにマップする第2の変換を予め計算することと、該表面に描画される該イメージを閲覧する該ユーザ入力に応答して、(c)該ユーザ入力に従って、イメージの一部を決定することであって、該一部は該領域と交わる、ことと、(d)変換されたイメージを得るために、該領域と交わる該イメージの一部に該第2の変換を適用することと、(e)該変換されたイメージを、表示のためにビューポートに描画することとを含み、ステップ(a)〜(e)は、それぞれ、少なくとも1つのコンピューティング装置上で実行される、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、パノラマの画像に関連する。
【背景技術】
【0002】
コンピュータで処理される地図作成システムは、従来より、地図作成データのトップダウン方式のプレゼンテーションを提供する。ストリートレベルの画像を有する地図作成システムの機能を拡張することは、様々なインタフェースの課題を与え、その課題とは、例えば、交差点で曲ることを含む、ストリートレベルのビュー内のナビゲーションに対処することと、地図上のユーザのロケーションおよび向きをストリートレベルのビュー内のユーザのロケーションおよび向きと関連づけることとの両方を、絶対項(例えば、緯度、経度および進行方向)で、ならびに都市のストリートおよび都市の交差点のようなランドマークに対するものとして、行うことである。Microsoft(登録商標) Virtual Earth(http://preview.local.live.com)によって支援されるA9 BlockView(もはやオンラインではない)およびWindows(登録商標) Live Local Technology Previewは、近時、都市のストリートレベルのビューに使用できるインタフェースを提供しようと試みた。A9 BlockViewは、画像が2つの細片(strip)になるよう平坦にすることによって、向きの問題に対処したので、ユーザは、360度見渡す自由を有さない。Windows(登録商標) Live Localは、ストリートレベルの画像についての「車」のビューを与え、「車」のビューは、地図ビュー上の車のアバターを操作することによって、90度単位で回転される。
【発明の概要】
【課題を解決するための手段】
【0003】
本発明は、パノラマのイメージを描画すること(rendering)および閲覧すること(viewing)と、パノラマのイメージに注釈をつけること(annotating)とに関連する。第1の実施形態において、一方法が、パノラマのイメージを閲覧するために用いられ得る。該方法は、第1のパノラマのイメージの少なくとも一部を受け取ることと、該第1のパノラマのイメージの一部を表示するビューポートを与えることとを含む。該ビューポートは、該第1のパノラマのイメージと共に描画される3次元の覆いを含む。該第1のパノラマのイメージと共に該3次元の覆いが描画される場合、該第1のパノラマのイメージの向きにおける変更と一致するように、3次元の空間において該3次元の覆いの向きが変更される。
【0004】
第2の実施形態において、一システムが、パノラマのイメージを閲覧するために用いられ得る。該システムは、第1のパノラマのイメージの少なくとも一部を受け取るパノラマビューア(Panorama Viewer)であって、該パノラマビューアは、ビューポートを与え、該ビューポートは、該第1のパノラマのイメージの一部を表示する、パノラマビューアを含む。該ビューポートは、該パノラマのイメージと共に描画される3次元の覆いを含む。該パノラマビューアは、該パノラマのイメージと共に該3次元の覆いが描画される場合、該ビューポート内の該パノラマのイメージの向きにおける変更と一致するように、3次元の空間において該3次元の覆いの向きを変更する。
【0005】
第3の実施形態において、一方法が、表面を描画するために用いられ得る。該方法は、ビューポートから該表面への第1の変換によって画定される、該表面上の領域を計算することと、該領域から該ビューポートにマップする第2の変換を計算することと、該領域と交わる、イメージの一部を決定することとを含む。最後に、該領域と交わる、該イメージの一部に、該第2の変換は、適用され、変換されたイメージをもたらす。該変換されたイメージは、表示のためにビューポートに描画される。
【0006】
第4の実施形態において、一システムが表面を描画する。ビューポートから該表面への第1の変換によって画定される、該表面上の領域を計算するサーバーを、該システムは含む。該サーバーはまた、該領域から該ビューポートにマップする第2の変換を計算する。該表面上の該領域と交わる、イメージの一部を決定するパノラマビューアを、該システムはさらに含む。該表面上の該領域と交わる、該イメージの一部に、該パノラマビューアは、該第2の変換を適用し、第2の変換されたイメージをもたらす。該変換されたイメージは、表示のためにビューポートに描画される。
【0007】
第5の実施形態において、一方法が、パノラマに対する注釈を処理するために用いられ得る。該方法は、第1のパノラマの中のフィーチャー(feature)に対する第1のユーザ注釈を受け取ることと、第2のパノラマの中の該フィーチャーに対する第2のユーザ注釈を受け取ることを含む。該フィーチャーに対する該第1のユーザ注釈に対して生成されるデータと該フィーチャーに対する該第2のユーザ注釈に対して生成されるデータとの交わりに基づいて、座標が決定される。最後に、該フィーチャーを表現する注釈に関連して、該座標が格納される。
【0008】
第6の実施形態において、一システムが、パノラマに対する注釈を処理するために用いられ得る。該システムは、第1のパノラマの中のフィーチャーに対する第1のユーザ注釈を受け取るサーバーであって、第2のパノラマの中の該フィーチャーに対する第2のユーザ注釈を受け取るサーバーを含む。該サーバーは、該フィーチャーに対する該第1のユーザ注釈の第1のロケーション、および該フィーチャーに対する該第2のユーザ注釈に対する第2のロケーションに基づいて該フィーチャーのロケーションを決定する。
【0009】
さらに、本発明の実施形態、特色および利点と、本発明の様々な実施形態の構造および動作とが、添付の図面への言及と共に、下記に詳細に述べられる。
例えば、本発明は以下の項目を提供する。
(項目1)
パノラマのイメージを閲覧する方法であって、
該方法は、
(a)第1のパノラマのイメージの少なくとも一部を受け取ることと、
(b)該第1のパノラマのイメージの一部を表示するビューポートを与えることであって、該ビューポートは、該第1のパノラマのイメージと共に描画される3次元の覆いを含む、ことと、
(c)該第1のパノラマのイメージと共に該3次元の覆いが描画される場合、該第1のパノラマのイメージの向きにおける変更と一致するように、3次元の空間において該3次元の覆いの向きを変更することと
を含む、方法。
(項目2)
上記受け取ること(a)がストリートレベルの画像を受け取ることを含む、項目1に記載の方法。
(項目3)
上記与えること(b)が上記覆いの中にナビゲーションアイコンを表示することを含み、該ナビゲーションアイコンは、パノラマのイメージの間をナビゲートするように用いられる、項目1および項目2のうちのいずれか一項に記載の方法。
(項目4)
上記ナビゲーションアイコンをユーザが選択することに応答して、第2のパノラマのイメージを決定することであって、該第2のパノラマのイメージは、上記第1のパノラマのイメージのロケーションに対して所定の方向に位置し、該方向は、上記3次元の覆いの中の該ナビゲーションアイコンの位置に対応する、ことと、
上記ビューポートの中の該第2のパノラマのイメージの少なくとも一部を表示することと
をさらに含む、項目3に記載の方法。
(項目5)
地図上の第1の位置にユーザの向きのキャラクターを表示することであって、該第1の位置は、上記第1のパノラマのイメージのロケーションに対応する、ことと、
上記ナビゲーションアイコンをユーザが選択することに応答して、地図上の第2の位置に該ユーザの向きのキャラクターを表示することであって、該第2の位置は、該第1の位置に対して所定の方向に位置し、該方向は、上記3次元の覆いの中の該ナビゲーションアイコンの位置に対応する、ことと
をさらに含む、項目3に記載の方法。
(項目6)
パノラマのイメージを閲覧するシステムであって、
該システムは、
第1のパノラマのイメージの少なくとも一部を受け取るパノラマビューアであって、該パノラマビューアは、ビューポートを与え、該ビューポートは、該第1のパノラマのイメージの一部を表示し、該パノラマのイメージと共に描画される3次元の覆いを含む、パノラマビューア
を含み、該パノラマビューアは、該パノラマのイメージと共に該3次元の覆いが描画される場合、該ビューポート内の該パノラマのイメージの向きにおける変更と一致するように、3次元の空間において該3次元の覆いの向きを変更する、システム。
(項目7)
上記パノラマのイメージがストリートレベルの画像を含む、項目6に記載のシステム。(項目8)
上記覆いが、パノラマのイメージの間をナビゲートするように用いられるナビゲーションアイコンを含む、項目6および項目7のうちのいずれか一項に記載のシステム。
(項目9)
上記パノラマビューアは、ユーザが上記ナビゲーションアイコンを選択することに応答して、第2のパノラマのイメージを決定し、上記ビューポートの中の該第2のパノラマのイメージの少なくとも一部を表示し、
該第2のパノラマのイメージは、上記第1のパノラマのイメージのロケーションに対して所定の方向に位置し、該方向は、上記3次元の覆いの中の該ナビゲーションアイコンの位置に対応する、項目8に記載のシステム。
(項目10)
上記パノラマビューアは、地図上の第1の位置にユーザの向きのキャラクターを表示し、該第1の位置は、上記第1のパノラマのイメージのロケーションに対応する、項目8に記載のシステム。
(項目11)
上記パノラマビューアは、ユーザが上記ナビゲーションアイコンを選択することに応答して、地図上の第2の位置にユーザの向きのキャラクターを表示し、
該第2の位置は、上記第1の位置に対して所定の方向にあり、該方向は、上記3次元の覆いの中の該ナビゲーションアイコンの位置に対応する、項目10に記載のシステム。
(項目12)
表面を描画する方法であって、
該方法は、
(a)ビューポートから該表面への第1の変換によって画定される、該表面上の領域を計算することと、
(b)該領域から該ビューポートにマップする第2の変換を計算することと、
(c)該領域と交わる、イメージの一部を決定することと、
(d)変換されたイメージを得るための領域と交わる、該イメージの一部に該第2の変換を適用することであって、該変換されたイメージは、表示のためにビューポートに描画される、ことと
を含む、方法。
(項目13)
上記計算すること(a)が円柱上の領域を計算することを含む、項目12に記載の方法。
(項目14)
上記計算すること(a)が、第1のメッシュ上の領域を計算することを含み、該領域は、第2のメッシュから該第1のメッシュへの第1の変換によって画定され、
上記計算すること(b)が、第2の変換を計算することを含み、該第2の変換は、該第1のメッシュから該第2のメッシュへマップする、項目12および項目13のうちのいずれか一項に記載の方法。
(項目15)
上記計算すること(a)が、ボクセルからピクセルへの連続的な変換として、第1の変換を計算することを含み、
上記計算すること(b)が、ボクセルからピクセルへの連続的な変換として、第2の変換を計算することを含む、項目12および項目13のうちのいずれか一項に記載の方法。(項目16)
(e)上記イメージを移すことと、
(f)該(e)で移されたイメージの第2の部分を決定することであって、該第2の部分は、上記(a)で計算された領域と交わる、ことと、
(g)上記(b)で計算される第2の変換を、該(f)で決定されたイメージの該第2の部分に適用し、第2の変換されたイメージをもたらすことであって、該第2の変換されたイメージは、表示のためにビューポートに描画される、ことと
をさらに含む、項目12または項目13のいずれか一項に記載の方法。
(項目17)
上記(d)で決定された変換されたイメージと上記(g)で決定された第2の変換されたイメージとの間の補間を決定することをさらに含む、項目16に記載の方法。
(項目18)
上記イメージを取り込んだカメラの角度に基づいて該イメージを調整することをさらに含む、項目12に記載の方法。
(項目19)
上記決定すること(c)が、上記領域と交わるパノラマのイメージの一部を決定することを含む、項目12、項目13および項目18のうちのいずれか一項に記載の方法。
(項目20)
表面を描画するシステムであって、
該システムは、
ビューポートから該表面への第1の変換によって画定される、該表面上の領域を計算するサーバーであって、該領域から該ビューポートにマップする第2の変換を計算するサーバーと、
該表面上の該領域と交わる、イメージの一部を決定するパノラマビューアであって、該表面上の該領域と交わる、該イメージの一部に、該パノラマビューアは、該第2の変換を適用し、第1の変換されたイメージをもたらし、該第1の変換されたイメージは、表示のためにビューポートに描画される、パノラマビューアと
を含む、システム。
(項目21)
上記表面は円柱である、項目20に記載のシステム。
(項目22)
メッシュが上記ビューポート上に画定され、メッシュが上記表面上に画定され、上記第1の変換および上記第2の変換が、1つのメッシュからもう一方のメッシュへの変換である、項目20に記載のシステム。
(項目23)
上記第1の変換および上記第2の変換が、ボクセルからピクセルへの連続的な変換である、項目20に記載のシステム。
(項目24)
上記パノラマビューアは、ユーザの入力に応答してイメージを移し、該移されたイメージの第2の部分を決定し、該第2の部分は、上記計算された領域と交わり、該パノラマビューアは、上記第2の変換を、該決定されたイメージの該第2の部分に適用し、第2の変換されたイメージをもたらし、該第2の変換されたイメージは、表示のためにビューポートに描画される、項目20、項目21、項目22および項目23のうちのいずれか一項に記載のシステム。
(項目25)
上記パノラマビューアが、第1の変換されたイメージと第2の変換されたイメージとの間の補間を決定する、項目24に記載のシステム。
(項目26)
上記イメージは、該イメージを取り込んだカメラの角度に基づいて調整される、項目20に記載のシステム。
(項目27)
上記イメージはパノラマのイメージである、項目20、項目21、項目22、項目23および項目26のうちのいずれか一項に記載のシステム。
(項目28)
パノラマへの注釈を処理する方法であって、
該方法は、
(a)第1のパノラマの中のフィーチャーに対する第1のユーザ注釈を受け取ることと、
(b)第2のパノラマの中の該フィーチャーに対する第2のユーザ注釈を受け取ることと、
(c)該フィーチャーに対する該第1のユーザ注釈に対して生成されるデータと該フィーチャーに対する該第2のユーザ注釈に対して生成されるデータとの交わりに基づいて座標を決定することと、
(d)該フィーチャーを表現する注釈に関連した該座標を格納することと
を含む、方法。
(項目29)
(e)第3のパノラマ内に注釈を描画することであって、上記座標に従って該第3のパノラマ上に該注釈を投影することを含む、こと
をさらに含む、項目28に記載の方法。
(項目30)
上記決定すること(c)は、上記フィーチャーに対する該第1のユーザ注釈に対して生成されるデータと該フィーチャーに対する該第2のユーザ注釈に対して生成されるデータとの交わりに基づいて3次元の座標を決定することを含む、項目28に記載の方法。
(項目31)
上記受け取ること(a)は、上記第1のユーザ注釈を受け取ることを含み、該第1のユーザ注釈は、第1のメタデータを含み、
上記受け取ること(b)は、上記第2のユーザ注釈を受け取ることを含み、該第2のユーザ注釈は、第2のメタデータを含む、項目28に記載の方法。
(項目32)
上記受け取ること(a)は、上記第1のユーザ注釈を受け取ることを含み、該第1のユーザ注釈は、上記第1のパノラマのイメージの第1の縦揺れ、第1の横揺れおよびロケーションを含み、
上記受けること(b)は、上記第2のユーザ注釈を受け取ることを含み、該第2のユーザ注釈は、上記第2のパノラマのイメージの第2の縦揺れ、第2の横揺れおよびロケーションを含む、項目28、項目29、項目30および項目31のうちのいずれか一項に記載の方法。
(項目33)
上記決定すること(c)は、上記第1のパノラマのイメージの第1の縦揺れ、第1の横揺れおよびロケーション、ならびに上記第2のパノラマのイメージの第2の縦揺れ、第2の横揺れおよびロケーションに基づいて上記交わりを決定することを含む、項目32に記載の方法。
(項目34)
パノラマの注釈を処理するシステムであって、
該システムは、
第1のパノラマの中のフィーチャーに対する第1のユーザ注釈を受け取るサーバーであって、該サーバーは、第2のパノラマの中の該フィーチャーに対する第2のユーザ注釈を受け取り、該フィーチャーに対する該第1のユーザ注釈の第1のロケーションおよび該フィーチャーに対する該第2のユーザ注釈に対する第2のロケーションに基づいて該フィーチャーのロケーションを決定するサーバー
を含む、システム。
(項目35)
第3のパノラマ内に上記注釈を描画するパノラマビューアであって、上記フィーチャーの上記ロケーションに従って該第3のパノラマ上に該注釈を投影するパノラマビューアをさらに含む、項目34に記載のシステム。
(項目36)
上記フィーチャーの上記ロケーションが3次元の座標によって画定される、項目34に記載のシステム。
(項目37)
上記第1の注釈は、第1のメタデータを含み、上記第2の注釈は、第2のメタデータを含む、項目34、項目35および項目36のうちのいずれか一項に記載のシステム。
【図面の簡単な説明】
【0010】
本発明の実施形態が、添付の図面への言及と共に、述べられる。複数の図面において、同じ参照番号は、同一の要素または機能的に類似した要素を示し得る。
【図1】図1は、一実施形態の実施に適した例示的な分散型のシステムの図である。
【図2】図2は、一実施形態に従って、どのように地図作成サービスがパノラマビューアと統合され得るかの例を説明する図である。
【図3】図3は、一実施形態に従った、ブラウザディスプレイの一例を描く。
【図4】図4は、一実施形態に従って、パノラマビューアによって行われる例示的な処理を説明するフローチャートである。
【図5】図5は、例示的なエクステンシビル・マークアップ・ランゲージ(XML)設定情報を描く。
【図6】図6は、パノラマのイメージの例を説明する。
【図7A】図7A、7Bおよび7Cは、パノラマビューアのビューポートとのユーザのやり取りを説明する。
【図7B】図7A、7Bおよび7Cは、パノラマビューアのビューポートとのユーザのやり取りを説明する。
【図7C】図7A、7Bおよび7Cは、パノラマビューアのビューポートとのユーザのやり取りを説明する。
【図8】図8は、一実施形態に従って、レンダラー(renderer)によって行われる処理のフローチャートである。
【図9A】図9A、9Bおよび9Cは、表面と予め計算された領域とビューポートとの間の関係を説明する。
【図9B】図9A、9Bおよび9Cは、表面と予め計算された領域とビューポートとの間の関係を説明する。
【図9C】図9A、9Bおよび9Cは、表面と予め計算された領域とビューポートとの間の関係を説明する。
【図10A】図10Aおよび10Bは、変換パラメータの生成についての単純な例を説明する。
【図10B】図10Aおよび10Bは、変換パラメータの生成についての単純な例を説明する。
【図11】図11は、本発明の一実施形態に従って、曲げられたパノラマの例を描く。
【図12】図12は、図11のパノラマを形成するための横揺れおよび縦揺れに基づく例示的な変換を描く。
【図13】図13は、本発明の一実施形態に従って表示される例示的なパノラマイメージを描く。
【図14】図14は、一実施形態に従った、ユーザ注釈に対する座標を生成する方法を説明する図である。
【図15】図15は、一実施形態に従った、ユーザ注釈座標の生成において行われる処理のフローチャートである。
【0011】
本発明は、添付の図面への言及と共に述べられる。要素が最初に現れる図面は、対応する参照番号の中の最も左側の数字または最も左側の複数の数字によって典型的に示される。
【発明を実施するための形態】
【0012】
本発明は、パノラマのイメージを描画することおよび閲覧することと、パノラマのイメージに注釈をつけることと、そのアプリケーションとに関連する。本発明の明細書の発明を実施するための形態において、「一実施形態」、「実施形態」、「例示的実施形態」などへの言及は、述べられる実施形態が特定の特色か、特定の構造か、または特定の特徴かを含み得ることを示すが、必ずしも全ての実施形態が、特定の特色、構造または特徴を含まないことがあり得る。その上、そのような語句は、必ずしも同じ実施形態を参照しない。さらに、特定の特色、構造または特徴が、実施形態に関して述べられる場合、他の実施形態に関してそのような特色、構造または特徴をもたらすことは、明白に述べられるか否かに関わらず当業者の有する知識の範囲内で提示される。
【0013】
図1は、本発明の実施形態の実施に適した分散型のシステムである。クライアント110は、例えばインターネットまたはローカルエリアネットワークのようなネットワークを渡って、1つ以上のサーバー150と通信する。クライアント110は、プロセッサと、ローカルメモリと、ディスプレイと、キーボードまたはマウスのような1つ以上の入力装置とを有する汎用コンピュータであり得る。あるいは、クライアント110は、例えばモバイルハンドセットのようなコンピューティング装置に特化され得る。サーバー150は、同様に、クライアント110にデータを供給できる任意の汎用コンピュータを用いてインプリメントされ得る。
【0014】
クライアント110は、パノラマビューア120を実行し、パノラマビューア120の動作はさらに本明細書に述べられる。
【0015】
図1によって説明される通り、パノラマビューア120は、サーバー(単数または複数)150からの設定情報130を要求する。本明細書にさらに詳しく論じられる通り、設定情報は、ロードされるパノラマについてのメタ情報を含み、そのメタ情報は、パノラマ内に他のパノラマへのリンクについての情報を含む。実施形態において、設定情報は、エクステンシビル・マークアップ・ランゲージ(XML)のような形式で与えられる。パノラマビューア120は、パノラマに対して、例えばパノラマのイメージの形式またはパノラマのイメージタイルの形式で、ビジュアルアセット(visual asset)140を検索する(retrieve)。別の実施形態において、ビジュアルアセットは、設定情報を関係のあるファイル形式で含む。本明細書にさらに述べられる通り、パノラマビューア120は、設定情報130およびビジュアルアセット140から生成されるような、パノラマおよびさらなるユーザインタフェース要素のビジュアル表現(visual representation)を、クライアントディスプレイ上に与える。ユーザが、パノラマのビジュアル表現を操作するために入力装置とやり取りするときに、パノラマビューア120は、必要に応じて、ビジュアル表現をアップデートし、さらなる設定情報およびビジュアルアセットをダウンロードするように処理する。
【0016】
一実施形態において、パノラマビューア120は、スタンドアローンのアプリケーションであり得、すなわちそれは、Mozilla FirefoxまたはMicrosoft(登録商標) Internet Explorerのようなブラウザ115内で実行され得る。パノラマビューア120は、例えば、ブラウザ115内のスクリプトとしてか、ブラウザ115内のプラグインとしてか、またはAdobe(Macromedia)Flashプラグインのようなブラウザプラグイン内で実行するプログラムとして実行され得る。一実施形態において、パノラマビューア120は、参照により本明細書内にその全てが援用される米国特許第7,158,878号「DIGITAL MAPPING SYSTEM」で述べられるような、地図作成サービスと統合される。
【0017】
図2は、どのように地図作成サービス210がパノラマビューア120と統合され得るかの例を説明する。地図作成サービス210は、地図のビジュアル表現を、例えば地図タイルのグリッドへのビューポートとして表示する。地図作成システム210は、マークアップ要素およびスクリプト要素の組み合わせを用いて(例えば、HTMLおよびJava(登録商標)scriptを用いて)、インプリメントされる。ビューポートが動かされるとき、地図作成サービス210は、要求された地図タイルがそれまでにローカルキャッシュメモリにキャッシュされていないことを仮定して、サーバー(単数または複数)150からのさらなる地図タイル220を要求する。地図タイル220を供給するサーバー(単数または複数)は、パノラマタイル140か、または本明細書に含まれる他のデータかを供給するサーバー(単数または複数)と、明白に同一か、または明白に異なり得る。
【0018】
一実施形態において、ブラウザ115が、サーバー(単数または複数)150からパノラマビューア120に対してプログラム250をダウンロードし、プログラム250を動かすのに必要な全てのプラグインをインスタンス化する(instantiate)ように進行することを、地図作成サービス210は要求し得る。プログラム250は、Flashファイルか、または一部の他の実行可能なコンテンツの形式かであり得る。パノラマビューア120は、上記に述べられるように実行および動作する。あるいは、設定情報130および対等のパノラマタイル140は、地図作成サービス210によって検索され得、パノラマビューア120に渡され得る。パノラマビューア120および地図作成サービス210は、ユーザインタフェース要素の動作を整合させる(coordinate)ように通信し、ユーザにパノラマビューア120または地図作成サービス210のどちらかとやり取りすることを可能にするように通信し、ロケーションの変更または向きの変更が両方に反映されるように通信する。
【0019】
図3は、ブラウザディスプレイ300の一例であり、ブラウザディスプレイ300は、地図作成サービス210のような地図作成サービスと、パノラマビューア120のような統合されるパノラマビューアとの両方を与える。地図作成サービスは、「Street View」とタイトルをつけられるボタン310を提供し、ボタン310は、選択されたときに、好ましくは、パノラマデータが利用可能であるエリアの地図の外観を変更する。例えば、図3において、利用可能なパノラマデータを有するストリートがハイライトされる。このハイライトは、例えば、色をつけられた輪郭および/もしくは陰影をつけられた輪郭であるか、色をつけられた覆いおよび/もしくは陰影をつけられた覆いであるか、または色および/もしくは陰影の変更かであり得る。これは、地図作成サービスに供給される地図タイルと共に透明イメージを用いることによって、または地図作成サービスに供給される地図タイルの中にその効果を直接含むことによってインプリメントされ得る。
【0020】
地図作成サービスは、地図上の地点をさらに選択することによって、ユーザにパノラマビューアを起動させることを可能にする。ユーザによって地点が選択されたとき、キャラクターアイコン320またはアバターアイコン320は、地図上の地点で表示される。一実施形態において、アバターアイコンは、アバターアイコンがどの方向に面しているかのインジケータを含み、そのインジケータは、図3において、アバターアイコンの下の矢印として表される。
【0021】
一実施形態において、パノラマビューアが地図作成サービスによってインスタンス化されるときに、パノラマビューアは、アバターアイコン320と関連した情報の吹き出しウィンドウに埋め込まれるビューポート330の形式で与えられる。ビューポート330内のパノラマのビジュアル表現の向きは、アバターアイコン320の向きと一致する。ユーザがビューポート330内でパノラマのビジュアル表現を操作したとき、パノラマビューアは、向きまたはロケーションの全ての変更を地図作成サービスに通知することにより、地図作成サービスがアバターアイコン320の向きおよびロケーションをアップデートし得る。同じように、ユーザが、地図作成サービス内でアバターアイコン320の向きまたはロケーションを操作したとき、地図作成サービスは、パノラマビューワーに通知することにより、パノラマビューワーがそのビジュアル表現をアップデートし得る。
【0022】
一実施例において、パノラマビューアのビューポート330は、選択されたエリアのパノラマのイメージを与える。ユーザは、360度見渡すために、イメージ上をクリックし、イメージの周りにドラッグし得る。図3に描かれる例示的なビューポート330において、様々なユーザインタフェース要素は、基礎をなすパノラマに追加される。これらの要素は、例えば、ビューポートの左脇上のズームおよびパニング制御(例えばナビゲーションボタン)と、パノラマ自体の中に直接に提供されるライン/バー、矢印およびテキストの形式の注釈の左脇上のズームおよびパニング制御とのようなナビゲーション入力を含む。注釈は、3次元の様式で描画され、3次元の様式は、パノラマに描かれる3次元の景色におおよそ一致する。
【0023】
図3において、例えば、ビューポート330におけるライン/バーは、対応する地図に描かれるストリートに対応し、さらに地図に描かれるストリートと同じ色で描画され得る。複数の矢印が(クリックすることによって、またはストリートラインに沿ってドラッグすることによって)ユーザによって選択可能であり、矢印は、別の利用可能なパノラマが存在するそれぞれの方向に進む。これらは、ユーザがストリートを上方および下方へナビゲートする(navigate)こと(すなわち、そのストリートが閲覧される立場から、立場を変更すること)を可能にする。ユーザが360度見渡すとき、ラインが基礎をなすストリートの上に残存し、矢印がいつでもスクリーン上に見えるように、ラインおよび矢印は、基礎をなす画像を滑らかにたどる。これは、まっすぐ前方を見る間か、または店先のそばを見る間、ユーザがストリートに沿ってナビゲートすることを可能にする。
【0024】
ユーザがビューポート内をナビゲートするために矢印上をクリックするとき、ズームクロスフェード効果および他のビジュアル合図は、ユーザに動きの感覚を与える。ユーザが2つのストリートの交差点に到着するとき、それぞれのストリートに対して一つの緑のラインおよび二つの矢印が存在する。これらの全てが同時に見え、全てがラベルで表示されることにより、ユーザは、最新のロケーションを知ることができ、任意の方向に進み得る。この技術は、難なく、4つより多い方向を有する複合の交差点を収容できる縮尺にし得る。ユーザが、道は続くがさらに利用可能な画像がない「行き止まり」に到達するとき、矢印は、ユーザがナビゲートし得る方向を示すストリート上に一つだけ存在する。他の方向について、イメージに埋め込まれる記号およびメッセージは、この方向において画像が利用可能でないことをユーザに通知するように与えられ得る。
【0025】
ユーザインタフェースは、ストリートを歩いて行くためのラインに沿ってナビゲートすることに制限されず、有用な場合にユーザがそのライン要素からわき道へそれること(例えば、何かを近くで見るためにストリートの向かい側に渡ること)を可能にするように難なく拡張され得る。その上、ストリートからスナップオフ(snap off)することと、近隣のエリア内で自由にナビゲートすることとをユーザが所望することが予期され得る環境(例えば、公園、広場、ショッピングエリアまたは他の歩行者にとって都合のよい公共の場所(Pedestrian−friendly public place))が都市内に存在する。そのインタフェースは、この機能性を提供するために、「自由な動きのゾーン」を用いて難なく高度化される。ユーザインタフェースが分離したストリートレベルのパノラマ間のナビゲーションのコンテキストの中で提供されるが、ストリートに沿ってナビゲートすることがビデオと同じ程度に滑らかであり得るように、ユーザがパノラマのデータの比較的連続的な集合を介してナビゲートすることを可能にするようにユーザインタフェースが同様によく用いられ得ることもまた、留意されるべきである。
【0026】
ユーザインタフェース要素の動作およびインプリメンテーションは、下記にさらに詳細に述べられる。
【0027】
図4は、本発明の実施形態に従った、例えばパノラマビューア120のようなパノラマビューアによって行われる処理の典型的なフローチャートである。
【0028】
ステップ402において、パノラマビューアは、与えられる初めのパノラマに対する識別子と、ビューポートのサイズおよびパノラマ内で閲覧される向きのような様々なビューポートパラメータとを受け取る。この情報は、例えば地図作成サービスにおいてFlashプラグインとJava(登録商標)scriptとの間でFlashvarsまたはExternalInterfaceを用いることによって、地図作成サービスからパノラマビューアへ渡され得る。
【0029】
ステップ404において、パノラマビューアはパノラマ識別子を用い、それによりサーバーからの設定情報(例えばXMLファイル)を要求する。図5は、典型的なXML設定情報500を描き、典型的なXML設定情報500は、下記にさらに詳細に論じられる。XMLは構文解析され、その情報は、パノラマビューアによる使用のために様々なデータ構造にロードされる。一実施形態において、XMLは、最新のパノラマのデータプロパティおよび投影プロパティのようなパノラマビューアに対する情報と、他のパノラマへのリンクを含むパノラマ内の注釈/リンクについての情報とを含む。
【0030】
ステップ406において、パノラマビューアは、パノラマに対するビジュアルアセットを要求し、受け取ったビジュアルアセットを、例えばローカルメモリ/ローカルストレージに格納する。一実施形態において、パノラマビューアは、ビジュアルアセットのキャッシュを維持し得、帯域幅の使い方をキャッシュに存在しないビジュアルアセットの検索に制限する。図6は、初めのパノラマのイメージ600の例を説明する。完全なパノラマのイメージ600は、パノラマビューアによって検索され得るか、またはパノラマのイメージ600は、複数のパノラマイメージタイルに分割され得、そのタイルは、パノラマビューアによって必要なときにのみ要求され得る。
【0031】
ステップ408において、パノラマビューアは、ビューポートの中のパノラマのビジュアル表現をステップ410において描画することに備えて、設定情報およびビジュアルアセットを処理する。ビジュアルアセットに関して、パノラマビューアは、パノラマイメージタイルを、ビューポートとオーバーラップする完全なパノラマイメージの一部に組み立て得る。本明細書にさらに論じられる通り、パノラマビューアは、平坦な表面としてか、または例えば円柱または球のようなテクスチャーマッピングされた3次元の表面としてかのパノラマのイメージを与え得る。ビューポートの中に与えられる注釈の覆いに関して、パノラマビューアは、設定情報を用い、それにより例えばビューポートの中に与えられるライン/バーおよび矢印のようなこれらの様々な要素に対する外形およびロケーションを計算する。
【0032】
一実施形態において、ポリゴン/外形は、パノラマに描かれる空間に対応する3次元の空間にモデル化される。これらのポリゴン/外形は、例えばピンホールカメラモデル(例えば、焦点距離はビューポートの高さに回転中心の一定の相対的な深さを掛けて生成され得る)を用いてモデル化され得る。注釈の覆いのポリゴン/外形は、ビューポートの向きの変更に一致する方法で、3次元の空間における注釈の覆いのポリゴン/外形の向きを変更する。一実施形態において、ポリゴン/外形は、パノラマにおけるユーザの視点の最新の向きと設定情報で特定されるような注釈の方向との間の差分に等しい角度で回転される。本明細書にさらに述べられる通り、ポリゴン/外形は、平坦でないパノラマを考慮に入れるために異なった空間の軸を中心にしてさらに変換され得る。
【0033】
ステップ410において、ビューポートにおけるパノラマのビジュアル表現は、描画される。
【0034】
ステップ412において、パノラマビューアは、例えばマウスイベントおよびキーボードイベントのような入力イベントを取り込むことによって、入力を受け取り、管理する。パノラマビューアは、例えば、ユーザがビューポートをパンした(例えば、マウスをドラッグすることによって、またはパン制御ボタンを選択することによって)かどうか、ズームすることを選択した(例えば、パノラマ上をクリックすることによって、またはマウスでビューポートの左側のズームスライダー制御を動かすことによって)かどうか、または別のパノラマへのリンクを選択した(例えば、マウスで矢印上をクリックすることによって)かどうかを検出する。
【0035】
ステップ420において、ユーザがビューポートをパンしたかどうかに関して判定がされる。ユーザがビューポートをパンした場合、制御はステップ422へ移る。ユーザがビューポートをパンしなかった場合、制御はステップ430へ移る。
【0036】
ステップ422において、パノラマビューアは、サーバーまたはキャッシュのどちらかから検索される必要があるいずれかのパノラマイメージタイルとビューポートがオーバーラップするかどうかを判定する。
【0037】
ステップ424において、本明細書に詳細にさらに述べられる通り、パノラマビューアは、異なった向きにおいてビューポートが正確に描画されることを可能にするために、必要な計算を実行する。
【0038】
ステップ426において、パノラマビューアは、地図作成サービスにユーザによって選択された新たな向きを知らせることにより、地図作成サービスは、そのアバターアイコンの面しているインジケータをアップデートし得る。パノラマビューアは、ビューポート要素に対する外形およびロケーションを再計算し、ビューポートを描画する。この点を説明するために、図3からのパノラマビューアビューポートを描く図7Aを考慮されたい。図7Bは、ユーザがパノラマを左にパンするように選択した後の結果を示す。パノラマビューアがパノラマの向きを変更するとき、パノラマに描かれる道路に対応するライン/バーは、それらの向きを変更することに留意されたい。
【0039】
ステップ430において、ユーザがビューポートをズームしたかどうかに関して判定がされる。ユーザがビューポートをズームした場合、制御はステップ432へ移る。ユーザがビューポートをズームしなかった場合、制御はステップ440へ移る。
【0040】
ステップ432において、パノラマビューアは、例えば、サーバーからの(またはキャッシュからの)新たなより高い解像度パノラマイメージタイルを要求するかどうか、または(例えば、そこでそのようなより高い解像度タイルが全く存在しないとき)存在するタイルを異なったクローズアップの解像度で利用するかどうかを判定する。
【0041】
ステップ434において、ビューポートパラメータは、異なったズームレベルを反映するように変更される。推移は、パノラマの次のズームレベルに勢いよくズームする性質を持つ概観を与えるように、ズームレベルの間で提供され得る。図7Cは、ユーザが図7Aの中のフィーチャー上にズームインするように選択した後の結果を示す。
【0042】
ステップ440において、ユーザが別のパノラマへのリンクを選択したかどうかに関して判定がされる。ユーザが別のパノラマへのリンクを選択した場合、制御はステップ442へ移る。ユーザが別のパノラマへのリンクを選択しなかった場合、制御はステップ412へ移る。
【0043】
ステップ442において、パノラマビューアは、オリジナルのパノラマと新たなパノラマとの間の推移の処理を始めるように進行する。パノラマビューアは、例えば、ユーザに動きの感覚を与えるように、オリジナルのパノラマを新たなパノラマへズームし得、新たなパノラマへクロスフェードを行い得る。あるいは、パノラマビューアは、2つのパノラマの間で実際の映像の推移を再生し得る。
【0044】
ステップ444において、パノラマビューアは、地図作成サービスにユーザによって選択された新たなロケーションを知らせることによって、地図作成サービスは、そのアバターアイコンのロケーションをアップデートし得、それに応じて地図をスクロールし得る。
【0045】
一実施形態において、パノラマビューアは、任意の有利なプログラミング言語か、または任意の有利なプログラミングのスタイルかを用いてインプリメントされ得る。例えば、パノラマビューアは、XML設定情報、注釈、テクスチャー生成、タイル管理およびメッシュ生成を扱うように用意される別個のクラスを有するオブジェクト指向のプログラミングを用いて、インプリメントされ得る。
【0046】
図5は、典型的なXML設定情報500(例えばメタデータ)を明記する。図5に示される例によって説明される通り、設定情報に対するスキーマは、「data_properties」、「projection_properties」および「annotation_properties」に系統立てられる。
【0047】
下位群のData_Propertiesは、「pano_id」(例えば、パノラマに対するユニークな識別子)ならびに「image_width」および「image_height」(例えば、タイルに分けられる前のパノラマのイメージの次元)ならびに「tile_width」および「tile_height」(例えばタイルの次元)ならびに「lat」および「lng」(例えば、最新のパノラマの座標)ならびに「num_zoom_levels」(例えば、ユーザがパノラマビューアの中で閲覧できるズームレベルの数値)のような属性を含む。この下位群はまた、「text」(例えば、それは最新のパノラマのストリート名を表現するのに用いられ得る)、「copyright」(例えば、コピーライト情報)および「street_range」(例えば、与えられるストリートについての番号の範囲)のような要素を含む。
【0048】
下位群のProjection_propertiesは、「Pano_yaw_deg」(例えば、パノラマのイメージを生成したイメージを取り込んだ乗物の向き)ならびに「tilt_yaw_deg」および「tilt_pitch_deg」(例えば、本明細書にさらに述べられる通り、勾配をつけられたフィーチャーを有するパノラマを処理するために有用な、最も高い勾配のラインの横揺れおよび縦揺れ)ならびに「vertical_scale」(例えば、比較的低いズームレベルで見えるy軸に沿ったイメージの比)のような属性を含む。
【0049】
下位群のAnnotation_propertiesは、「horizon_height_fraction」(例えば、注釈とタイルの画像との間の適合度を最大にするように調整され得る地平線からの垂直の位置(高さ)(見える細片の比として表される))および「annotation_height_fraction」(例えば、注釈を含む図面からの垂直の位置(高さ)(見える細片の比として表される))のような属性を含む。この下位群はまた、「pano_link」の下位群を含み、「pano_link」の下位群は、リンク記号のプロパティを述べ、リンク記号は、ユーザが近傍のパノラマか、または別の関連したドキュメントかへナビゲートすることを可能にする。「link」下位群は、「link_text」(例えば、ランディング(landing)パノラマの解説)を要素として含み、次に述べるものを属性として含む。「yaw_deg」(例えば、リンクが指す方向)、「pano_id」(例えば、リンクされるパノラマに対する識別子)および「road_argb」(例えば、地図上の道路の色のような、道路の属性)(示されていない)。その下位群は、パノラマの中の任意のフィーチャーを識別する「floating_text」グループまたは「floating_text」要素をまた含み得、任意のリンク(例えば、ローカルデータリポジトリまたはウェブサイトへの)をまた備え得る(示されていない)。
【0050】
設定情報に対する上記のスキーマが、単に説明的であり、XMLに頼らない技術を用いることを含む多数の有利な方法のうちのいずれかの方法で設計され得ることに留意されたい。
【0051】
図8は、本発明の一実施形態に従って、レンダラーによって行われる処理のフローチャートである。
【0052】
ステップ802において、レンダラーは、逆方向の変換によってビューポートの予めのイメージを予め計算する。これは、表面の一部を画定し、それは、本明細書に「予め計算される領域」として言及される。図9Aは、これを、長方形のビューポート920と共に円柱の表面900のコンテキストで説明し、そのことは、逆方向の変換によって予め計算された領域910を画定する。ビューポートが長方形である必要がないことと、その技術が離散化される円柱(メッシュに基づく)に対してか、または連続的なボクセルとピクセルのマッピングに対して働くこととは留意されたい。例えば、メッシュは、対応するメッシュが円柱上にある状態で、ビューポート上で画定され得る。これらのメッシュは、一様である必要がなく、順方向または逆方向のマッピングによって画定されるような互いのイメージである。円柱上のメッシュは、多くの場合、円柱の一部をカバーするだけである。連続的な変換の場合において、ビューポートの予めのイメージは、円柱の連続的な領域を画定し得る。
【0053】
ステップ804において、レンダラーは、変換を予め計算し、変換は、それぞれのピクセルを予め計算された領域からビューポートにおけるピクセルにマップする。ある意味、円柱は空間の中で静止して立っていることが想定される。変更する円柱にテクスチャーイメージをアタッチする(attach)代わりに、テクスチャーは円柱上で「スライドする」ことが想定される。
【0054】
ステップ806において、レンダラーは、ユーザの入力に応答してイメージ/テクスチャーを移す。
【0055】
ステップ808において、レンダラーは、イメージ/テクスチャーのその一部を決定し、イメージ/テクスチャーは、表面の予め計算された領域と交わる。これは、ビューポートの中で描画される必要があるピクセルのセットを画定する。ユーザが近時、視点を変更した場合、これはアップデートされる必要がある。より正確に、ステップ806において、ビューポートの左側または右側への任意のパンは、対応する方向におけるテクスチャーを移すことによって難なく達成され得、それにより予め計算される領域を用いて異なった交わりを生成する。同じように、上方または下方への任意のパンは、これらの方向に沿ってテクスチャーを移すことによって達成される。パンするいずれの任意の方向も、対応する方向のテクスチャーを単に移すことによって達成される。予め計算された領域との新たな交わりは、いつも生成される。これは、図9Bおよび図9Cにおいて説明され、そこで、950は予め計算された領域を表現し、960はイメージ/テクスチャーを表現する。
【0056】
ステップ810において、予め計算された変換は、イメージ/テクスチャーの一部に適用され、イメージ/テクスチャーの一部は、予め計算された領域と交わる。
【0057】
最後に、ステップ812において、変換された画像は、ビューポートに描画される。
【0058】
一実施形態において、レンダラーは、直線構成の投影のプロパティを利用することにより、パノラマのイメージの描画のスピードを上げる。円柱のような表面が、際限のないように閲覧される場合、それは、自然な動作(例えば、軸に沿った移動、および軸を中心にした回転)を有するGが与えられるグループである。同じように、際限のないように閲覧される場合、テクスチャーはまた、面における移動が与えられるグループHである。GとHとの間に標準的な準同型が存在することがわかる。言い換えれば、例えばx方向において、その軸を中心にした円柱の回転は、テクスチャーの移動に等しい。例えばy方向において、その軸に沿った円柱の移動は、テクスチャーの移動に等しい。これは、レンダラーに、全ての投影パラメータを予め計算させることを可能にし、テクスチャーの移動としてビューポートの変更をシミュレートさせることを可能にする。図10Aおよび図10Bは、スクリーン空間からテクスチャー空間への投影パラメータを計算する方法の例を説明する。図10Aおよび図10Bによって説明される通り、
(1)スクリーン1020上の点Mが座標(x,y)を有する場合、それは空間において座標(x,y,R)を有し、そこでRは円柱1010の半径である。
(2)この場合、
【0059】
【数1】
であり、テクスチャー空間において、点Pは次の座標を有する。
【0060】
【数2】
最新のズームレベルに基づく動的なテクスチャーが生成され、イメージ空間の中に位置づけられ得る。ユーザが視点を変更するとき(例えば、ズームすることまたはパンすることによって)、このテクスチャーは変化する。このテクスチャーは、適切なレベルおよび適切な縮尺でタイルの角錐からタイルを連結することによって得られ得る。一部のタイルが欠けている場合、タイルの角錐における親のレベルに向かってタイル上にフォールバックし(fall back)得る。テクスチャーは、円柱の上にマップされるようにモデル化される。投影は、スクリーン空間を覆って行われる。この非線形の投影は、区分的にアフィン(affine)変換として近似され得る。より正確に、円柱およびスクリーン空間は、三角形のメッシュを用いて離散化され得る。それぞれの三角形は、それを覆うテクスチャーの1つを線形に(またはむしろ、アフィンに)マッピングすることによって描画され得る。これは、3つの点上のアフィン変換のアクション(従って、三角形の使用)によってアフィン変換がユニークに決定されるので、2次元の面におけるアフィン変換としてwell−definedである。メッシュは、スクリーン空間において(かつ、テクスチャー空間においてではない)一様にされ得る。スクリーンメッシュは、ズームレベルにかかわらず、常に同じである。異なったテクスチャーメッシュは、ズームレベルに依存して用いられ得る。それぞれの三角形に対して、テクスチャーメッシュは、スクリーンメッシュにおけるユニークな三角形と、ユニークな(アフィン)変換マトリックスとに対応する。そのようなマトリックスは、スクリーンマトリックスとテクスチャーマトリックス(の逆)の積として予め計算され得る。
【0061】
ユーザがパンしたとき、レンダラーが行う必要がある全てのことは、テクスチャーを調整および/またはリフレッシュすることである。これは、それがメモリコピーから成るため、敏速である。大きなひとまとまりのピクセルをコピーすることは、種々のプログラミング言語において、通常、非常に最適化される。
【0062】
一実施形態において、ズームインすることは、水平なビジョンのフィールドおよび垂直なビジョンのフィールドの両方を2つに分割することと、テクスチャーを生成するように次のズームレベルを用いることから成る。ユーザがズームイン/ズームアウトする場合、パノラマビューアは、アニメーションを滑らかにするように、いくつかのビットマップイメージを予めキャッシュし得る。投影自体に関する限り、不可欠なズームレベルに対して、変換マトリックスの様々なセットを用い得る。不可欠でないズームレベルに対して、前のズームレベルと次のズームレベルとの間に、変換マトリックス(それでも敏速な)を線形に補間し得る。
【0063】
ピクセルが四角であることが想定される場合において、それらは、均一の連続した角度と対応する。与えられるピクセルのビジョンの基本フィールドは、水平の方向および垂直の方向において同じである。これは、トレードオフ(trade−off)がなされることを可能にする。例えば、直線を厳密に保つことを選択し得るが、これは、側部において比較的激しい歪みになる。あるいは、直線が少し曲がった状態になるようにすることを決め得、それにより歪みの量を減らし得る。一実施形態において、オリジナルのイメージの高さは、ビューポートの高さに縮尺される。ピクセルが四角であるため、ビューポートの高さ分のビューポートの幅の比は、ビジョンの水平のフィールドを決定する。
【0064】
円柱よりはむしろ球の場合において、上記の想定は、もはや当てはまらない。それゆえに、ビジョンベクトルが円柱の軸に垂直の状態での円柱の軸に沿った動きしか行われないので、上記の技術は、単独で、上方/下方への本来のパンをシミュレートし得ない。それでも、上方/下方への本来のパンのモーションは、一連の変換を予め計算することと、変換の間に線形に補間することによってシミュレートされ得る。
【0065】
一実施形態において、パノラマビューアは、平坦でないパノラマを扱うように設定される。どのパノラマも、平坦および水平なフィーチャーを描くとは限らない、例えば、San Franciscoの多くのストリートを考慮されたい。例えば、パノラマを取り込むために用いられる、乗物の上に乗せられるカメラは、地面に対して平行である。このように、急な傾斜の上を走ることは、間違った方向に向けられた写真をもたらし得る。それゆえに、そのような状況において、現実の世界における垂直な建物がテクスチャー空間において垂直であることを保証するように、パノラマを曲げることは、有利であり得る。図11は、どのようにしてパノラマ1100がそう曲げられ得るかの例を描く。図12によって説明される通り、その例は、周期的な関数におおよそ従い、その関数は、パノラマの勾配を考慮に入れる方法で、ビューポートの配置、および注釈の生成を導くのに用いられ得る。
【0066】
本明細書に示される通り、設定情報は、パノラマにおける最も高い勾配の横揺れおよび縦揺れのような投影プロパティを含み得る。図12によって説明される通り、パノラマビューアは、曲げられたパノラマの正弦曲線の細片にビューポートを押し込めるために、最も急な勾配の方向の横揺れおよび縦揺れを用い得る。ビューポートにおける注釈要素の描画はまた、パノラマの勾配の横揺れ情報および縦揺れ情報を考慮に入れるために修正され得る。ライン/バーおよび矢印の空間の向きは、横揺れ情報および縦揺れ情報に基づいて変換され得るか、あるいは、注釈の横揺れと最も急な勾配の横揺れとの間の関連に基づいて評価され得る。図13は、パノラマの勾配についての設定情報に関してのそのような処理の結果を説明する。パノラマは、急な勾配をつけられたストリートについてのパノラマのイメージの中の垂直な建物を正確に配置する。その上、道路を描くライン/バー(例えばストリートラインメタデータ)は、ストリートの勾配におおよそ一致する角度で傾けられる。
【0067】
一実施形態において、パノラマビューアはまた、パノラマイメージへのユーザ注釈を促進することが可能である。パノラマへのユーザ注釈は、3次元空間における注釈を参照する方法に対する課題を表す。
【0068】
図14および図15は、3次元空間においてユーザ注釈に対処する実施形態を説明する。図15において説明される処理は、パノラマビューア(または地図作成サービス)で、サーバーで、またはその2つの組み合わせで、生じ得る。
【0069】
図15を参照すると、ステップ1502において、ユーザは、1つのパノラマに対する注釈を入力する。パノラマビューアは、多数の異なった方法のうちのいずれかのユーザ入力を受け取り得、ユーザが注釈をつけることを所望するパノラマ上のクリックイベントを即座に受け取ることによることを含む。パノラマ上の注釈の2次元のロケーションは、一部の有利な座標システム(例えば、パノラマイメージのロケーションによるか、または横揺れおよび縦揺れの座標による)において記録される。
【0070】
ステップ1504において、ユーザは、パノラマビューアにおいて近くの別のパノラマにナビゲートし、注釈をつけられる同じフィーチャーを捜し出し、再び第2のパノラマに対して注釈を入力する。パノラマビューアまたは地図作成サービスはまた、十分想定されるように、タイトル、リンク、グラフィックスなどのような注釈に関連した更なるメタデータを加える機能を差し出す。
【0071】
ステップ1506において、2つのパノラマ上の注釈の座標は、その注釈に対する3次元の座標を生成するのに用いられる。図14において説明される通り、パノラマ1410、パノラマ1420に対するイメージを撮ったカメラの位置が知られ、かつ2次元のイメージに関連するユーザ入力の注釈座標が知られるものと仮定して、1450に描かれるようなその2つの交わりを計算することは、可能である。その結果は、注釈に対する3次元の座標である。
【0072】
ステップ1508において、注釈に対する3次元の座標は、その注釈に割り当てられ、注釈のデータベースの中に格納される。注釈は、計算された座標の、一部の有利な範囲内の任意のパノラマ(ユーザによってオリジナルに注釈をつけられなかったパノラマを含む)に含められ得る。
【0073】
あるいは、関連する縦揺れの情報が注釈にとって特に重要でない場合には、両方のパノラマ上の1次元の横揺れ方向としてユーザ注釈を受け取ることが可能であり、そのことは、注釈への2次元の土地のコード(geocode)の割り当てを(デフォルトの縦揺れの情報の有無を問わず)促進する。
【0074】
本発明の様々な実施形態が上記に述べられたが、それらが例示のために与えられたことと、それらが制限されないことは理解されるべきである。当業者にとって、本発明の範囲から逸脱することなくその中で様々な改変がなされ得ることは明らかである。さらに、本明細書(概要の項および要約の項を除く)に提供される、本発明の、発明を実施するための形態が、特許請求の範囲を解釈するのに用いられるように意図されることは、正しく認識されるべきである。概要の項および要約の項は、発明者らによって予期されるような、本発明の1つ以上の例示的実施形態(しかし、全ての実施形態ではない)を明記する。
【0075】
特定の実施形態についての前述の解説は、本発明の全体的な本質を十分に明かすものであり、本発明は、(当業者の知識を応用することによって)特定の実施形態のような様々な用途に対して、必要以上の実験なしに、本発明の全体的な概念から逸脱することなく、難なく改良および/または適合され得る。それゆえ、そのような適合および改良は、本明細書で与えられる教示および示唆に基づいて、開示される実施形態の均等物の意味内および範囲内にすることが意図される。本発明の詳述についての専門用語または表現法が、教示および示唆の観点において当業者によって解釈され得るように、本明細書での表現法または専門用語が解説の目的のためであって制限の目的のためではないことは、理解されるべきである。
【技術分野】
【0001】
本発明は、一般に、パノラマの画像に関連する。
【背景技術】
【0002】
コンピュータで処理される地図作成システムは、従来より、地図作成データのトップダウン方式のプレゼンテーションを提供する。ストリートレベルの画像を有する地図作成システムの機能を拡張することは、様々なインタフェースの課題を与え、その課題とは、例えば、交差点で曲ることを含む、ストリートレベルのビュー内のナビゲーションに対処することと、地図上のユーザのロケーションおよび向きをストリートレベルのビュー内のユーザのロケーションおよび向きと関連づけることとの両方を、絶対項(例えば、緯度、経度および進行方向)で、ならびに都市のストリートおよび都市の交差点のようなランドマークに対するものとして、行うことである。Microsoft(登録商標) Virtual Earth(http://preview.local.live.com)によって支援されるA9 BlockView(もはやオンラインではない)およびWindows(登録商標) Live Local Technology Previewは、近時、都市のストリートレベルのビューに使用できるインタフェースを提供しようと試みた。A9 BlockViewは、画像が2つの細片(strip)になるよう平坦にすることによって、向きの問題に対処したので、ユーザは、360度見渡す自由を有さない。Windows(登録商標) Live Localは、ストリートレベルの画像についての「車」のビューを与え、「車」のビューは、地図ビュー上の車のアバターを操作することによって、90度単位で回転される。
【発明の概要】
【課題を解決するための手段】
【0003】
本発明は、パノラマのイメージを描画すること(rendering)および閲覧すること(viewing)と、パノラマのイメージに注釈をつけること(annotating)とに関連する。第1の実施形態において、一方法が、パノラマのイメージを閲覧するために用いられ得る。該方法は、第1のパノラマのイメージの少なくとも一部を受け取ることと、該第1のパノラマのイメージの一部を表示するビューポートを与えることとを含む。該ビューポートは、該第1のパノラマのイメージと共に描画される3次元の覆いを含む。該第1のパノラマのイメージと共に該3次元の覆いが描画される場合、該第1のパノラマのイメージの向きにおける変更と一致するように、3次元の空間において該3次元の覆いの向きが変更される。
【0004】
第2の実施形態において、一システムが、パノラマのイメージを閲覧するために用いられ得る。該システムは、第1のパノラマのイメージの少なくとも一部を受け取るパノラマビューア(Panorama Viewer)であって、該パノラマビューアは、ビューポートを与え、該ビューポートは、該第1のパノラマのイメージの一部を表示する、パノラマビューアを含む。該ビューポートは、該パノラマのイメージと共に描画される3次元の覆いを含む。該パノラマビューアは、該パノラマのイメージと共に該3次元の覆いが描画される場合、該ビューポート内の該パノラマのイメージの向きにおける変更と一致するように、3次元の空間において該3次元の覆いの向きを変更する。
【0005】
第3の実施形態において、一方法が、表面を描画するために用いられ得る。該方法は、ビューポートから該表面への第1の変換によって画定される、該表面上の領域を計算することと、該領域から該ビューポートにマップする第2の変換を計算することと、該領域と交わる、イメージの一部を決定することとを含む。最後に、該領域と交わる、該イメージの一部に、該第2の変換は、適用され、変換されたイメージをもたらす。該変換されたイメージは、表示のためにビューポートに描画される。
【0006】
第4の実施形態において、一システムが表面を描画する。ビューポートから該表面への第1の変換によって画定される、該表面上の領域を計算するサーバーを、該システムは含む。該サーバーはまた、該領域から該ビューポートにマップする第2の変換を計算する。該表面上の該領域と交わる、イメージの一部を決定するパノラマビューアを、該システムはさらに含む。該表面上の該領域と交わる、該イメージの一部に、該パノラマビューアは、該第2の変換を適用し、第2の変換されたイメージをもたらす。該変換されたイメージは、表示のためにビューポートに描画される。
【0007】
第5の実施形態において、一方法が、パノラマに対する注釈を処理するために用いられ得る。該方法は、第1のパノラマの中のフィーチャー(feature)に対する第1のユーザ注釈を受け取ることと、第2のパノラマの中の該フィーチャーに対する第2のユーザ注釈を受け取ることを含む。該フィーチャーに対する該第1のユーザ注釈に対して生成されるデータと該フィーチャーに対する該第2のユーザ注釈に対して生成されるデータとの交わりに基づいて、座標が決定される。最後に、該フィーチャーを表現する注釈に関連して、該座標が格納される。
【0008】
第6の実施形態において、一システムが、パノラマに対する注釈を処理するために用いられ得る。該システムは、第1のパノラマの中のフィーチャーに対する第1のユーザ注釈を受け取るサーバーであって、第2のパノラマの中の該フィーチャーに対する第2のユーザ注釈を受け取るサーバーを含む。該サーバーは、該フィーチャーに対する該第1のユーザ注釈の第1のロケーション、および該フィーチャーに対する該第2のユーザ注釈に対する第2のロケーションに基づいて該フィーチャーのロケーションを決定する。
【0009】
さらに、本発明の実施形態、特色および利点と、本発明の様々な実施形態の構造および動作とが、添付の図面への言及と共に、下記に詳細に述べられる。
例えば、本発明は以下の項目を提供する。
(項目1)
パノラマのイメージを閲覧する方法であって、
該方法は、
(a)第1のパノラマのイメージの少なくとも一部を受け取ることと、
(b)該第1のパノラマのイメージの一部を表示するビューポートを与えることであって、該ビューポートは、該第1のパノラマのイメージと共に描画される3次元の覆いを含む、ことと、
(c)該第1のパノラマのイメージと共に該3次元の覆いが描画される場合、該第1のパノラマのイメージの向きにおける変更と一致するように、3次元の空間において該3次元の覆いの向きを変更することと
を含む、方法。
(項目2)
上記受け取ること(a)がストリートレベルの画像を受け取ることを含む、項目1に記載の方法。
(項目3)
上記与えること(b)が上記覆いの中にナビゲーションアイコンを表示することを含み、該ナビゲーションアイコンは、パノラマのイメージの間をナビゲートするように用いられる、項目1および項目2のうちのいずれか一項に記載の方法。
(項目4)
上記ナビゲーションアイコンをユーザが選択することに応答して、第2のパノラマのイメージを決定することであって、該第2のパノラマのイメージは、上記第1のパノラマのイメージのロケーションに対して所定の方向に位置し、該方向は、上記3次元の覆いの中の該ナビゲーションアイコンの位置に対応する、ことと、
上記ビューポートの中の該第2のパノラマのイメージの少なくとも一部を表示することと
をさらに含む、項目3に記載の方法。
(項目5)
地図上の第1の位置にユーザの向きのキャラクターを表示することであって、該第1の位置は、上記第1のパノラマのイメージのロケーションに対応する、ことと、
上記ナビゲーションアイコンをユーザが選択することに応答して、地図上の第2の位置に該ユーザの向きのキャラクターを表示することであって、該第2の位置は、該第1の位置に対して所定の方向に位置し、該方向は、上記3次元の覆いの中の該ナビゲーションアイコンの位置に対応する、ことと
をさらに含む、項目3に記載の方法。
(項目6)
パノラマのイメージを閲覧するシステムであって、
該システムは、
第1のパノラマのイメージの少なくとも一部を受け取るパノラマビューアであって、該パノラマビューアは、ビューポートを与え、該ビューポートは、該第1のパノラマのイメージの一部を表示し、該パノラマのイメージと共に描画される3次元の覆いを含む、パノラマビューア
を含み、該パノラマビューアは、該パノラマのイメージと共に該3次元の覆いが描画される場合、該ビューポート内の該パノラマのイメージの向きにおける変更と一致するように、3次元の空間において該3次元の覆いの向きを変更する、システム。
(項目7)
上記パノラマのイメージがストリートレベルの画像を含む、項目6に記載のシステム。(項目8)
上記覆いが、パノラマのイメージの間をナビゲートするように用いられるナビゲーションアイコンを含む、項目6および項目7のうちのいずれか一項に記載のシステム。
(項目9)
上記パノラマビューアは、ユーザが上記ナビゲーションアイコンを選択することに応答して、第2のパノラマのイメージを決定し、上記ビューポートの中の該第2のパノラマのイメージの少なくとも一部を表示し、
該第2のパノラマのイメージは、上記第1のパノラマのイメージのロケーションに対して所定の方向に位置し、該方向は、上記3次元の覆いの中の該ナビゲーションアイコンの位置に対応する、項目8に記載のシステム。
(項目10)
上記パノラマビューアは、地図上の第1の位置にユーザの向きのキャラクターを表示し、該第1の位置は、上記第1のパノラマのイメージのロケーションに対応する、項目8に記載のシステム。
(項目11)
上記パノラマビューアは、ユーザが上記ナビゲーションアイコンを選択することに応答して、地図上の第2の位置にユーザの向きのキャラクターを表示し、
該第2の位置は、上記第1の位置に対して所定の方向にあり、該方向は、上記3次元の覆いの中の該ナビゲーションアイコンの位置に対応する、項目10に記載のシステム。
(項目12)
表面を描画する方法であって、
該方法は、
(a)ビューポートから該表面への第1の変換によって画定される、該表面上の領域を計算することと、
(b)該領域から該ビューポートにマップする第2の変換を計算することと、
(c)該領域と交わる、イメージの一部を決定することと、
(d)変換されたイメージを得るための領域と交わる、該イメージの一部に該第2の変換を適用することであって、該変換されたイメージは、表示のためにビューポートに描画される、ことと
を含む、方法。
(項目13)
上記計算すること(a)が円柱上の領域を計算することを含む、項目12に記載の方法。
(項目14)
上記計算すること(a)が、第1のメッシュ上の領域を計算することを含み、該領域は、第2のメッシュから該第1のメッシュへの第1の変換によって画定され、
上記計算すること(b)が、第2の変換を計算することを含み、該第2の変換は、該第1のメッシュから該第2のメッシュへマップする、項目12および項目13のうちのいずれか一項に記載の方法。
(項目15)
上記計算すること(a)が、ボクセルからピクセルへの連続的な変換として、第1の変換を計算することを含み、
上記計算すること(b)が、ボクセルからピクセルへの連続的な変換として、第2の変換を計算することを含む、項目12および項目13のうちのいずれか一項に記載の方法。(項目16)
(e)上記イメージを移すことと、
(f)該(e)で移されたイメージの第2の部分を決定することであって、該第2の部分は、上記(a)で計算された領域と交わる、ことと、
(g)上記(b)で計算される第2の変換を、該(f)で決定されたイメージの該第2の部分に適用し、第2の変換されたイメージをもたらすことであって、該第2の変換されたイメージは、表示のためにビューポートに描画される、ことと
をさらに含む、項目12または項目13のいずれか一項に記載の方法。
(項目17)
上記(d)で決定された変換されたイメージと上記(g)で決定された第2の変換されたイメージとの間の補間を決定することをさらに含む、項目16に記載の方法。
(項目18)
上記イメージを取り込んだカメラの角度に基づいて該イメージを調整することをさらに含む、項目12に記載の方法。
(項目19)
上記決定すること(c)が、上記領域と交わるパノラマのイメージの一部を決定することを含む、項目12、項目13および項目18のうちのいずれか一項に記載の方法。
(項目20)
表面を描画するシステムであって、
該システムは、
ビューポートから該表面への第1の変換によって画定される、該表面上の領域を計算するサーバーであって、該領域から該ビューポートにマップする第2の変換を計算するサーバーと、
該表面上の該領域と交わる、イメージの一部を決定するパノラマビューアであって、該表面上の該領域と交わる、該イメージの一部に、該パノラマビューアは、該第2の変換を適用し、第1の変換されたイメージをもたらし、該第1の変換されたイメージは、表示のためにビューポートに描画される、パノラマビューアと
を含む、システム。
(項目21)
上記表面は円柱である、項目20に記載のシステム。
(項目22)
メッシュが上記ビューポート上に画定され、メッシュが上記表面上に画定され、上記第1の変換および上記第2の変換が、1つのメッシュからもう一方のメッシュへの変換である、項目20に記載のシステム。
(項目23)
上記第1の変換および上記第2の変換が、ボクセルからピクセルへの連続的な変換である、項目20に記載のシステム。
(項目24)
上記パノラマビューアは、ユーザの入力に応答してイメージを移し、該移されたイメージの第2の部分を決定し、該第2の部分は、上記計算された領域と交わり、該パノラマビューアは、上記第2の変換を、該決定されたイメージの該第2の部分に適用し、第2の変換されたイメージをもたらし、該第2の変換されたイメージは、表示のためにビューポートに描画される、項目20、項目21、項目22および項目23のうちのいずれか一項に記載のシステム。
(項目25)
上記パノラマビューアが、第1の変換されたイメージと第2の変換されたイメージとの間の補間を決定する、項目24に記載のシステム。
(項目26)
上記イメージは、該イメージを取り込んだカメラの角度に基づいて調整される、項目20に記載のシステム。
(項目27)
上記イメージはパノラマのイメージである、項目20、項目21、項目22、項目23および項目26のうちのいずれか一項に記載のシステム。
(項目28)
パノラマへの注釈を処理する方法であって、
該方法は、
(a)第1のパノラマの中のフィーチャーに対する第1のユーザ注釈を受け取ることと、
(b)第2のパノラマの中の該フィーチャーに対する第2のユーザ注釈を受け取ることと、
(c)該フィーチャーに対する該第1のユーザ注釈に対して生成されるデータと該フィーチャーに対する該第2のユーザ注釈に対して生成されるデータとの交わりに基づいて座標を決定することと、
(d)該フィーチャーを表現する注釈に関連した該座標を格納することと
を含む、方法。
(項目29)
(e)第3のパノラマ内に注釈を描画することであって、上記座標に従って該第3のパノラマ上に該注釈を投影することを含む、こと
をさらに含む、項目28に記載の方法。
(項目30)
上記決定すること(c)は、上記フィーチャーに対する該第1のユーザ注釈に対して生成されるデータと該フィーチャーに対する該第2のユーザ注釈に対して生成されるデータとの交わりに基づいて3次元の座標を決定することを含む、項目28に記載の方法。
(項目31)
上記受け取ること(a)は、上記第1のユーザ注釈を受け取ることを含み、該第1のユーザ注釈は、第1のメタデータを含み、
上記受け取ること(b)は、上記第2のユーザ注釈を受け取ることを含み、該第2のユーザ注釈は、第2のメタデータを含む、項目28に記載の方法。
(項目32)
上記受け取ること(a)は、上記第1のユーザ注釈を受け取ることを含み、該第1のユーザ注釈は、上記第1のパノラマのイメージの第1の縦揺れ、第1の横揺れおよびロケーションを含み、
上記受けること(b)は、上記第2のユーザ注釈を受け取ることを含み、該第2のユーザ注釈は、上記第2のパノラマのイメージの第2の縦揺れ、第2の横揺れおよびロケーションを含む、項目28、項目29、項目30および項目31のうちのいずれか一項に記載の方法。
(項目33)
上記決定すること(c)は、上記第1のパノラマのイメージの第1の縦揺れ、第1の横揺れおよびロケーション、ならびに上記第2のパノラマのイメージの第2の縦揺れ、第2の横揺れおよびロケーションに基づいて上記交わりを決定することを含む、項目32に記載の方法。
(項目34)
パノラマの注釈を処理するシステムであって、
該システムは、
第1のパノラマの中のフィーチャーに対する第1のユーザ注釈を受け取るサーバーであって、該サーバーは、第2のパノラマの中の該フィーチャーに対する第2のユーザ注釈を受け取り、該フィーチャーに対する該第1のユーザ注釈の第1のロケーションおよび該フィーチャーに対する該第2のユーザ注釈に対する第2のロケーションに基づいて該フィーチャーのロケーションを決定するサーバー
を含む、システム。
(項目35)
第3のパノラマ内に上記注釈を描画するパノラマビューアであって、上記フィーチャーの上記ロケーションに従って該第3のパノラマ上に該注釈を投影するパノラマビューアをさらに含む、項目34に記載のシステム。
(項目36)
上記フィーチャーの上記ロケーションが3次元の座標によって画定される、項目34に記載のシステム。
(項目37)
上記第1の注釈は、第1のメタデータを含み、上記第2の注釈は、第2のメタデータを含む、項目34、項目35および項目36のうちのいずれか一項に記載のシステム。
【図面の簡単な説明】
【0010】
本発明の実施形態が、添付の図面への言及と共に、述べられる。複数の図面において、同じ参照番号は、同一の要素または機能的に類似した要素を示し得る。
【図1】図1は、一実施形態の実施に適した例示的な分散型のシステムの図である。
【図2】図2は、一実施形態に従って、どのように地図作成サービスがパノラマビューアと統合され得るかの例を説明する図である。
【図3】図3は、一実施形態に従った、ブラウザディスプレイの一例を描く。
【図4】図4は、一実施形態に従って、パノラマビューアによって行われる例示的な処理を説明するフローチャートである。
【図5】図5は、例示的なエクステンシビル・マークアップ・ランゲージ(XML)設定情報を描く。
【図6】図6は、パノラマのイメージの例を説明する。
【図7A】図7A、7Bおよび7Cは、パノラマビューアのビューポートとのユーザのやり取りを説明する。
【図7B】図7A、7Bおよび7Cは、パノラマビューアのビューポートとのユーザのやり取りを説明する。
【図7C】図7A、7Bおよび7Cは、パノラマビューアのビューポートとのユーザのやり取りを説明する。
【図8】図8は、一実施形態に従って、レンダラー(renderer)によって行われる処理のフローチャートである。
【図9A】図9A、9Bおよび9Cは、表面と予め計算された領域とビューポートとの間の関係を説明する。
【図9B】図9A、9Bおよび9Cは、表面と予め計算された領域とビューポートとの間の関係を説明する。
【図9C】図9A、9Bおよび9Cは、表面と予め計算された領域とビューポートとの間の関係を説明する。
【図10A】図10Aおよび10Bは、変換パラメータの生成についての単純な例を説明する。
【図10B】図10Aおよび10Bは、変換パラメータの生成についての単純な例を説明する。
【図11】図11は、本発明の一実施形態に従って、曲げられたパノラマの例を描く。
【図12】図12は、図11のパノラマを形成するための横揺れおよび縦揺れに基づく例示的な変換を描く。
【図13】図13は、本発明の一実施形態に従って表示される例示的なパノラマイメージを描く。
【図14】図14は、一実施形態に従った、ユーザ注釈に対する座標を生成する方法を説明する図である。
【図15】図15は、一実施形態に従った、ユーザ注釈座標の生成において行われる処理のフローチャートである。
【0011】
本発明は、添付の図面への言及と共に述べられる。要素が最初に現れる図面は、対応する参照番号の中の最も左側の数字または最も左側の複数の数字によって典型的に示される。
【発明を実施するための形態】
【0012】
本発明は、パノラマのイメージを描画することおよび閲覧することと、パノラマのイメージに注釈をつけることと、そのアプリケーションとに関連する。本発明の明細書の発明を実施するための形態において、「一実施形態」、「実施形態」、「例示的実施形態」などへの言及は、述べられる実施形態が特定の特色か、特定の構造か、または特定の特徴かを含み得ることを示すが、必ずしも全ての実施形態が、特定の特色、構造または特徴を含まないことがあり得る。その上、そのような語句は、必ずしも同じ実施形態を参照しない。さらに、特定の特色、構造または特徴が、実施形態に関して述べられる場合、他の実施形態に関してそのような特色、構造または特徴をもたらすことは、明白に述べられるか否かに関わらず当業者の有する知識の範囲内で提示される。
【0013】
図1は、本発明の実施形態の実施に適した分散型のシステムである。クライアント110は、例えばインターネットまたはローカルエリアネットワークのようなネットワークを渡って、1つ以上のサーバー150と通信する。クライアント110は、プロセッサと、ローカルメモリと、ディスプレイと、キーボードまたはマウスのような1つ以上の入力装置とを有する汎用コンピュータであり得る。あるいは、クライアント110は、例えばモバイルハンドセットのようなコンピューティング装置に特化され得る。サーバー150は、同様に、クライアント110にデータを供給できる任意の汎用コンピュータを用いてインプリメントされ得る。
【0014】
クライアント110は、パノラマビューア120を実行し、パノラマビューア120の動作はさらに本明細書に述べられる。
【0015】
図1によって説明される通り、パノラマビューア120は、サーバー(単数または複数)150からの設定情報130を要求する。本明細書にさらに詳しく論じられる通り、設定情報は、ロードされるパノラマについてのメタ情報を含み、そのメタ情報は、パノラマ内に他のパノラマへのリンクについての情報を含む。実施形態において、設定情報は、エクステンシビル・マークアップ・ランゲージ(XML)のような形式で与えられる。パノラマビューア120は、パノラマに対して、例えばパノラマのイメージの形式またはパノラマのイメージタイルの形式で、ビジュアルアセット(visual asset)140を検索する(retrieve)。別の実施形態において、ビジュアルアセットは、設定情報を関係のあるファイル形式で含む。本明細書にさらに述べられる通り、パノラマビューア120は、設定情報130およびビジュアルアセット140から生成されるような、パノラマおよびさらなるユーザインタフェース要素のビジュアル表現(visual representation)を、クライアントディスプレイ上に与える。ユーザが、パノラマのビジュアル表現を操作するために入力装置とやり取りするときに、パノラマビューア120は、必要に応じて、ビジュアル表現をアップデートし、さらなる設定情報およびビジュアルアセットをダウンロードするように処理する。
【0016】
一実施形態において、パノラマビューア120は、スタンドアローンのアプリケーションであり得、すなわちそれは、Mozilla FirefoxまたはMicrosoft(登録商標) Internet Explorerのようなブラウザ115内で実行され得る。パノラマビューア120は、例えば、ブラウザ115内のスクリプトとしてか、ブラウザ115内のプラグインとしてか、またはAdobe(Macromedia)Flashプラグインのようなブラウザプラグイン内で実行するプログラムとして実行され得る。一実施形態において、パノラマビューア120は、参照により本明細書内にその全てが援用される米国特許第7,158,878号「DIGITAL MAPPING SYSTEM」で述べられるような、地図作成サービスと統合される。
【0017】
図2は、どのように地図作成サービス210がパノラマビューア120と統合され得るかの例を説明する。地図作成サービス210は、地図のビジュアル表現を、例えば地図タイルのグリッドへのビューポートとして表示する。地図作成システム210は、マークアップ要素およびスクリプト要素の組み合わせを用いて(例えば、HTMLおよびJava(登録商標)scriptを用いて)、インプリメントされる。ビューポートが動かされるとき、地図作成サービス210は、要求された地図タイルがそれまでにローカルキャッシュメモリにキャッシュされていないことを仮定して、サーバー(単数または複数)150からのさらなる地図タイル220を要求する。地図タイル220を供給するサーバー(単数または複数)は、パノラマタイル140か、または本明細書に含まれる他のデータかを供給するサーバー(単数または複数)と、明白に同一か、または明白に異なり得る。
【0018】
一実施形態において、ブラウザ115が、サーバー(単数または複数)150からパノラマビューア120に対してプログラム250をダウンロードし、プログラム250を動かすのに必要な全てのプラグインをインスタンス化する(instantiate)ように進行することを、地図作成サービス210は要求し得る。プログラム250は、Flashファイルか、または一部の他の実行可能なコンテンツの形式かであり得る。パノラマビューア120は、上記に述べられるように実行および動作する。あるいは、設定情報130および対等のパノラマタイル140は、地図作成サービス210によって検索され得、パノラマビューア120に渡され得る。パノラマビューア120および地図作成サービス210は、ユーザインタフェース要素の動作を整合させる(coordinate)ように通信し、ユーザにパノラマビューア120または地図作成サービス210のどちらかとやり取りすることを可能にするように通信し、ロケーションの変更または向きの変更が両方に反映されるように通信する。
【0019】
図3は、ブラウザディスプレイ300の一例であり、ブラウザディスプレイ300は、地図作成サービス210のような地図作成サービスと、パノラマビューア120のような統合されるパノラマビューアとの両方を与える。地図作成サービスは、「Street View」とタイトルをつけられるボタン310を提供し、ボタン310は、選択されたときに、好ましくは、パノラマデータが利用可能であるエリアの地図の外観を変更する。例えば、図3において、利用可能なパノラマデータを有するストリートがハイライトされる。このハイライトは、例えば、色をつけられた輪郭および/もしくは陰影をつけられた輪郭であるか、色をつけられた覆いおよび/もしくは陰影をつけられた覆いであるか、または色および/もしくは陰影の変更かであり得る。これは、地図作成サービスに供給される地図タイルと共に透明イメージを用いることによって、または地図作成サービスに供給される地図タイルの中にその効果を直接含むことによってインプリメントされ得る。
【0020】
地図作成サービスは、地図上の地点をさらに選択することによって、ユーザにパノラマビューアを起動させることを可能にする。ユーザによって地点が選択されたとき、キャラクターアイコン320またはアバターアイコン320は、地図上の地点で表示される。一実施形態において、アバターアイコンは、アバターアイコンがどの方向に面しているかのインジケータを含み、そのインジケータは、図3において、アバターアイコンの下の矢印として表される。
【0021】
一実施形態において、パノラマビューアが地図作成サービスによってインスタンス化されるときに、パノラマビューアは、アバターアイコン320と関連した情報の吹き出しウィンドウに埋め込まれるビューポート330の形式で与えられる。ビューポート330内のパノラマのビジュアル表現の向きは、アバターアイコン320の向きと一致する。ユーザがビューポート330内でパノラマのビジュアル表現を操作したとき、パノラマビューアは、向きまたはロケーションの全ての変更を地図作成サービスに通知することにより、地図作成サービスがアバターアイコン320の向きおよびロケーションをアップデートし得る。同じように、ユーザが、地図作成サービス内でアバターアイコン320の向きまたはロケーションを操作したとき、地図作成サービスは、パノラマビューワーに通知することにより、パノラマビューワーがそのビジュアル表現をアップデートし得る。
【0022】
一実施例において、パノラマビューアのビューポート330は、選択されたエリアのパノラマのイメージを与える。ユーザは、360度見渡すために、イメージ上をクリックし、イメージの周りにドラッグし得る。図3に描かれる例示的なビューポート330において、様々なユーザインタフェース要素は、基礎をなすパノラマに追加される。これらの要素は、例えば、ビューポートの左脇上のズームおよびパニング制御(例えばナビゲーションボタン)と、パノラマ自体の中に直接に提供されるライン/バー、矢印およびテキストの形式の注釈の左脇上のズームおよびパニング制御とのようなナビゲーション入力を含む。注釈は、3次元の様式で描画され、3次元の様式は、パノラマに描かれる3次元の景色におおよそ一致する。
【0023】
図3において、例えば、ビューポート330におけるライン/バーは、対応する地図に描かれるストリートに対応し、さらに地図に描かれるストリートと同じ色で描画され得る。複数の矢印が(クリックすることによって、またはストリートラインに沿ってドラッグすることによって)ユーザによって選択可能であり、矢印は、別の利用可能なパノラマが存在するそれぞれの方向に進む。これらは、ユーザがストリートを上方および下方へナビゲートする(navigate)こと(すなわち、そのストリートが閲覧される立場から、立場を変更すること)を可能にする。ユーザが360度見渡すとき、ラインが基礎をなすストリートの上に残存し、矢印がいつでもスクリーン上に見えるように、ラインおよび矢印は、基礎をなす画像を滑らかにたどる。これは、まっすぐ前方を見る間か、または店先のそばを見る間、ユーザがストリートに沿ってナビゲートすることを可能にする。
【0024】
ユーザがビューポート内をナビゲートするために矢印上をクリックするとき、ズームクロスフェード効果および他のビジュアル合図は、ユーザに動きの感覚を与える。ユーザが2つのストリートの交差点に到着するとき、それぞれのストリートに対して一つの緑のラインおよび二つの矢印が存在する。これらの全てが同時に見え、全てがラベルで表示されることにより、ユーザは、最新のロケーションを知ることができ、任意の方向に進み得る。この技術は、難なく、4つより多い方向を有する複合の交差点を収容できる縮尺にし得る。ユーザが、道は続くがさらに利用可能な画像がない「行き止まり」に到達するとき、矢印は、ユーザがナビゲートし得る方向を示すストリート上に一つだけ存在する。他の方向について、イメージに埋め込まれる記号およびメッセージは、この方向において画像が利用可能でないことをユーザに通知するように与えられ得る。
【0025】
ユーザインタフェースは、ストリートを歩いて行くためのラインに沿ってナビゲートすることに制限されず、有用な場合にユーザがそのライン要素からわき道へそれること(例えば、何かを近くで見るためにストリートの向かい側に渡ること)を可能にするように難なく拡張され得る。その上、ストリートからスナップオフ(snap off)することと、近隣のエリア内で自由にナビゲートすることとをユーザが所望することが予期され得る環境(例えば、公園、広場、ショッピングエリアまたは他の歩行者にとって都合のよい公共の場所(Pedestrian−friendly public place))が都市内に存在する。そのインタフェースは、この機能性を提供するために、「自由な動きのゾーン」を用いて難なく高度化される。ユーザインタフェースが分離したストリートレベルのパノラマ間のナビゲーションのコンテキストの中で提供されるが、ストリートに沿ってナビゲートすることがビデオと同じ程度に滑らかであり得るように、ユーザがパノラマのデータの比較的連続的な集合を介してナビゲートすることを可能にするようにユーザインタフェースが同様によく用いられ得ることもまた、留意されるべきである。
【0026】
ユーザインタフェース要素の動作およびインプリメンテーションは、下記にさらに詳細に述べられる。
【0027】
図4は、本発明の実施形態に従った、例えばパノラマビューア120のようなパノラマビューアによって行われる処理の典型的なフローチャートである。
【0028】
ステップ402において、パノラマビューアは、与えられる初めのパノラマに対する識別子と、ビューポートのサイズおよびパノラマ内で閲覧される向きのような様々なビューポートパラメータとを受け取る。この情報は、例えば地図作成サービスにおいてFlashプラグインとJava(登録商標)scriptとの間でFlashvarsまたはExternalInterfaceを用いることによって、地図作成サービスからパノラマビューアへ渡され得る。
【0029】
ステップ404において、パノラマビューアはパノラマ識別子を用い、それによりサーバーからの設定情報(例えばXMLファイル)を要求する。図5は、典型的なXML設定情報500を描き、典型的なXML設定情報500は、下記にさらに詳細に論じられる。XMLは構文解析され、その情報は、パノラマビューアによる使用のために様々なデータ構造にロードされる。一実施形態において、XMLは、最新のパノラマのデータプロパティおよび投影プロパティのようなパノラマビューアに対する情報と、他のパノラマへのリンクを含むパノラマ内の注釈/リンクについての情報とを含む。
【0030】
ステップ406において、パノラマビューアは、パノラマに対するビジュアルアセットを要求し、受け取ったビジュアルアセットを、例えばローカルメモリ/ローカルストレージに格納する。一実施形態において、パノラマビューアは、ビジュアルアセットのキャッシュを維持し得、帯域幅の使い方をキャッシュに存在しないビジュアルアセットの検索に制限する。図6は、初めのパノラマのイメージ600の例を説明する。完全なパノラマのイメージ600は、パノラマビューアによって検索され得るか、またはパノラマのイメージ600は、複数のパノラマイメージタイルに分割され得、そのタイルは、パノラマビューアによって必要なときにのみ要求され得る。
【0031】
ステップ408において、パノラマビューアは、ビューポートの中のパノラマのビジュアル表現をステップ410において描画することに備えて、設定情報およびビジュアルアセットを処理する。ビジュアルアセットに関して、パノラマビューアは、パノラマイメージタイルを、ビューポートとオーバーラップする完全なパノラマイメージの一部に組み立て得る。本明細書にさらに論じられる通り、パノラマビューアは、平坦な表面としてか、または例えば円柱または球のようなテクスチャーマッピングされた3次元の表面としてかのパノラマのイメージを与え得る。ビューポートの中に与えられる注釈の覆いに関して、パノラマビューアは、設定情報を用い、それにより例えばビューポートの中に与えられるライン/バーおよび矢印のようなこれらの様々な要素に対する外形およびロケーションを計算する。
【0032】
一実施形態において、ポリゴン/外形は、パノラマに描かれる空間に対応する3次元の空間にモデル化される。これらのポリゴン/外形は、例えばピンホールカメラモデル(例えば、焦点距離はビューポートの高さに回転中心の一定の相対的な深さを掛けて生成され得る)を用いてモデル化され得る。注釈の覆いのポリゴン/外形は、ビューポートの向きの変更に一致する方法で、3次元の空間における注釈の覆いのポリゴン/外形の向きを変更する。一実施形態において、ポリゴン/外形は、パノラマにおけるユーザの視点の最新の向きと設定情報で特定されるような注釈の方向との間の差分に等しい角度で回転される。本明細書にさらに述べられる通り、ポリゴン/外形は、平坦でないパノラマを考慮に入れるために異なった空間の軸を中心にしてさらに変換され得る。
【0033】
ステップ410において、ビューポートにおけるパノラマのビジュアル表現は、描画される。
【0034】
ステップ412において、パノラマビューアは、例えばマウスイベントおよびキーボードイベントのような入力イベントを取り込むことによって、入力を受け取り、管理する。パノラマビューアは、例えば、ユーザがビューポートをパンした(例えば、マウスをドラッグすることによって、またはパン制御ボタンを選択することによって)かどうか、ズームすることを選択した(例えば、パノラマ上をクリックすることによって、またはマウスでビューポートの左側のズームスライダー制御を動かすことによって)かどうか、または別のパノラマへのリンクを選択した(例えば、マウスで矢印上をクリックすることによって)かどうかを検出する。
【0035】
ステップ420において、ユーザがビューポートをパンしたかどうかに関して判定がされる。ユーザがビューポートをパンした場合、制御はステップ422へ移る。ユーザがビューポートをパンしなかった場合、制御はステップ430へ移る。
【0036】
ステップ422において、パノラマビューアは、サーバーまたはキャッシュのどちらかから検索される必要があるいずれかのパノラマイメージタイルとビューポートがオーバーラップするかどうかを判定する。
【0037】
ステップ424において、本明細書に詳細にさらに述べられる通り、パノラマビューアは、異なった向きにおいてビューポートが正確に描画されることを可能にするために、必要な計算を実行する。
【0038】
ステップ426において、パノラマビューアは、地図作成サービスにユーザによって選択された新たな向きを知らせることにより、地図作成サービスは、そのアバターアイコンの面しているインジケータをアップデートし得る。パノラマビューアは、ビューポート要素に対する外形およびロケーションを再計算し、ビューポートを描画する。この点を説明するために、図3からのパノラマビューアビューポートを描く図7Aを考慮されたい。図7Bは、ユーザがパノラマを左にパンするように選択した後の結果を示す。パノラマビューアがパノラマの向きを変更するとき、パノラマに描かれる道路に対応するライン/バーは、それらの向きを変更することに留意されたい。
【0039】
ステップ430において、ユーザがビューポートをズームしたかどうかに関して判定がされる。ユーザがビューポートをズームした場合、制御はステップ432へ移る。ユーザがビューポートをズームしなかった場合、制御はステップ440へ移る。
【0040】
ステップ432において、パノラマビューアは、例えば、サーバーからの(またはキャッシュからの)新たなより高い解像度パノラマイメージタイルを要求するかどうか、または(例えば、そこでそのようなより高い解像度タイルが全く存在しないとき)存在するタイルを異なったクローズアップの解像度で利用するかどうかを判定する。
【0041】
ステップ434において、ビューポートパラメータは、異なったズームレベルを反映するように変更される。推移は、パノラマの次のズームレベルに勢いよくズームする性質を持つ概観を与えるように、ズームレベルの間で提供され得る。図7Cは、ユーザが図7Aの中のフィーチャー上にズームインするように選択した後の結果を示す。
【0042】
ステップ440において、ユーザが別のパノラマへのリンクを選択したかどうかに関して判定がされる。ユーザが別のパノラマへのリンクを選択した場合、制御はステップ442へ移る。ユーザが別のパノラマへのリンクを選択しなかった場合、制御はステップ412へ移る。
【0043】
ステップ442において、パノラマビューアは、オリジナルのパノラマと新たなパノラマとの間の推移の処理を始めるように進行する。パノラマビューアは、例えば、ユーザに動きの感覚を与えるように、オリジナルのパノラマを新たなパノラマへズームし得、新たなパノラマへクロスフェードを行い得る。あるいは、パノラマビューアは、2つのパノラマの間で実際の映像の推移を再生し得る。
【0044】
ステップ444において、パノラマビューアは、地図作成サービスにユーザによって選択された新たなロケーションを知らせることによって、地図作成サービスは、そのアバターアイコンのロケーションをアップデートし得、それに応じて地図をスクロールし得る。
【0045】
一実施形態において、パノラマビューアは、任意の有利なプログラミング言語か、または任意の有利なプログラミングのスタイルかを用いてインプリメントされ得る。例えば、パノラマビューアは、XML設定情報、注釈、テクスチャー生成、タイル管理およびメッシュ生成を扱うように用意される別個のクラスを有するオブジェクト指向のプログラミングを用いて、インプリメントされ得る。
【0046】
図5は、典型的なXML設定情報500(例えばメタデータ)を明記する。図5に示される例によって説明される通り、設定情報に対するスキーマは、「data_properties」、「projection_properties」および「annotation_properties」に系統立てられる。
【0047】
下位群のData_Propertiesは、「pano_id」(例えば、パノラマに対するユニークな識別子)ならびに「image_width」および「image_height」(例えば、タイルに分けられる前のパノラマのイメージの次元)ならびに「tile_width」および「tile_height」(例えばタイルの次元)ならびに「lat」および「lng」(例えば、最新のパノラマの座標)ならびに「num_zoom_levels」(例えば、ユーザがパノラマビューアの中で閲覧できるズームレベルの数値)のような属性を含む。この下位群はまた、「text」(例えば、それは最新のパノラマのストリート名を表現するのに用いられ得る)、「copyright」(例えば、コピーライト情報)および「street_range」(例えば、与えられるストリートについての番号の範囲)のような要素を含む。
【0048】
下位群のProjection_propertiesは、「Pano_yaw_deg」(例えば、パノラマのイメージを生成したイメージを取り込んだ乗物の向き)ならびに「tilt_yaw_deg」および「tilt_pitch_deg」(例えば、本明細書にさらに述べられる通り、勾配をつけられたフィーチャーを有するパノラマを処理するために有用な、最も高い勾配のラインの横揺れおよび縦揺れ)ならびに「vertical_scale」(例えば、比較的低いズームレベルで見えるy軸に沿ったイメージの比)のような属性を含む。
【0049】
下位群のAnnotation_propertiesは、「horizon_height_fraction」(例えば、注釈とタイルの画像との間の適合度を最大にするように調整され得る地平線からの垂直の位置(高さ)(見える細片の比として表される))および「annotation_height_fraction」(例えば、注釈を含む図面からの垂直の位置(高さ)(見える細片の比として表される))のような属性を含む。この下位群はまた、「pano_link」の下位群を含み、「pano_link」の下位群は、リンク記号のプロパティを述べ、リンク記号は、ユーザが近傍のパノラマか、または別の関連したドキュメントかへナビゲートすることを可能にする。「link」下位群は、「link_text」(例えば、ランディング(landing)パノラマの解説)を要素として含み、次に述べるものを属性として含む。「yaw_deg」(例えば、リンクが指す方向)、「pano_id」(例えば、リンクされるパノラマに対する識別子)および「road_argb」(例えば、地図上の道路の色のような、道路の属性)(示されていない)。その下位群は、パノラマの中の任意のフィーチャーを識別する「floating_text」グループまたは「floating_text」要素をまた含み得、任意のリンク(例えば、ローカルデータリポジトリまたはウェブサイトへの)をまた備え得る(示されていない)。
【0050】
設定情報に対する上記のスキーマが、単に説明的であり、XMLに頼らない技術を用いることを含む多数の有利な方法のうちのいずれかの方法で設計され得ることに留意されたい。
【0051】
図8は、本発明の一実施形態に従って、レンダラーによって行われる処理のフローチャートである。
【0052】
ステップ802において、レンダラーは、逆方向の変換によってビューポートの予めのイメージを予め計算する。これは、表面の一部を画定し、それは、本明細書に「予め計算される領域」として言及される。図9Aは、これを、長方形のビューポート920と共に円柱の表面900のコンテキストで説明し、そのことは、逆方向の変換によって予め計算された領域910を画定する。ビューポートが長方形である必要がないことと、その技術が離散化される円柱(メッシュに基づく)に対してか、または連続的なボクセルとピクセルのマッピングに対して働くこととは留意されたい。例えば、メッシュは、対応するメッシュが円柱上にある状態で、ビューポート上で画定され得る。これらのメッシュは、一様である必要がなく、順方向または逆方向のマッピングによって画定されるような互いのイメージである。円柱上のメッシュは、多くの場合、円柱の一部をカバーするだけである。連続的な変換の場合において、ビューポートの予めのイメージは、円柱の連続的な領域を画定し得る。
【0053】
ステップ804において、レンダラーは、変換を予め計算し、変換は、それぞれのピクセルを予め計算された領域からビューポートにおけるピクセルにマップする。ある意味、円柱は空間の中で静止して立っていることが想定される。変更する円柱にテクスチャーイメージをアタッチする(attach)代わりに、テクスチャーは円柱上で「スライドする」ことが想定される。
【0054】
ステップ806において、レンダラーは、ユーザの入力に応答してイメージ/テクスチャーを移す。
【0055】
ステップ808において、レンダラーは、イメージ/テクスチャーのその一部を決定し、イメージ/テクスチャーは、表面の予め計算された領域と交わる。これは、ビューポートの中で描画される必要があるピクセルのセットを画定する。ユーザが近時、視点を変更した場合、これはアップデートされる必要がある。より正確に、ステップ806において、ビューポートの左側または右側への任意のパンは、対応する方向におけるテクスチャーを移すことによって難なく達成され得、それにより予め計算される領域を用いて異なった交わりを生成する。同じように、上方または下方への任意のパンは、これらの方向に沿ってテクスチャーを移すことによって達成される。パンするいずれの任意の方向も、対応する方向のテクスチャーを単に移すことによって達成される。予め計算された領域との新たな交わりは、いつも生成される。これは、図9Bおよび図9Cにおいて説明され、そこで、950は予め計算された領域を表現し、960はイメージ/テクスチャーを表現する。
【0056】
ステップ810において、予め計算された変換は、イメージ/テクスチャーの一部に適用され、イメージ/テクスチャーの一部は、予め計算された領域と交わる。
【0057】
最後に、ステップ812において、変換された画像は、ビューポートに描画される。
【0058】
一実施形態において、レンダラーは、直線構成の投影のプロパティを利用することにより、パノラマのイメージの描画のスピードを上げる。円柱のような表面が、際限のないように閲覧される場合、それは、自然な動作(例えば、軸に沿った移動、および軸を中心にした回転)を有するGが与えられるグループである。同じように、際限のないように閲覧される場合、テクスチャーはまた、面における移動が与えられるグループHである。GとHとの間に標準的な準同型が存在することがわかる。言い換えれば、例えばx方向において、その軸を中心にした円柱の回転は、テクスチャーの移動に等しい。例えばy方向において、その軸に沿った円柱の移動は、テクスチャーの移動に等しい。これは、レンダラーに、全ての投影パラメータを予め計算させることを可能にし、テクスチャーの移動としてビューポートの変更をシミュレートさせることを可能にする。図10Aおよび図10Bは、スクリーン空間からテクスチャー空間への投影パラメータを計算する方法の例を説明する。図10Aおよび図10Bによって説明される通り、
(1)スクリーン1020上の点Mが座標(x,y)を有する場合、それは空間において座標(x,y,R)を有し、そこでRは円柱1010の半径である。
(2)この場合、
【0059】
【数1】
であり、テクスチャー空間において、点Pは次の座標を有する。
【0060】
【数2】
最新のズームレベルに基づく動的なテクスチャーが生成され、イメージ空間の中に位置づけられ得る。ユーザが視点を変更するとき(例えば、ズームすることまたはパンすることによって)、このテクスチャーは変化する。このテクスチャーは、適切なレベルおよび適切な縮尺でタイルの角錐からタイルを連結することによって得られ得る。一部のタイルが欠けている場合、タイルの角錐における親のレベルに向かってタイル上にフォールバックし(fall back)得る。テクスチャーは、円柱の上にマップされるようにモデル化される。投影は、スクリーン空間を覆って行われる。この非線形の投影は、区分的にアフィン(affine)変換として近似され得る。より正確に、円柱およびスクリーン空間は、三角形のメッシュを用いて離散化され得る。それぞれの三角形は、それを覆うテクスチャーの1つを線形に(またはむしろ、アフィンに)マッピングすることによって描画され得る。これは、3つの点上のアフィン変換のアクション(従って、三角形の使用)によってアフィン変換がユニークに決定されるので、2次元の面におけるアフィン変換としてwell−definedである。メッシュは、スクリーン空間において(かつ、テクスチャー空間においてではない)一様にされ得る。スクリーンメッシュは、ズームレベルにかかわらず、常に同じである。異なったテクスチャーメッシュは、ズームレベルに依存して用いられ得る。それぞれの三角形に対して、テクスチャーメッシュは、スクリーンメッシュにおけるユニークな三角形と、ユニークな(アフィン)変換マトリックスとに対応する。そのようなマトリックスは、スクリーンマトリックスとテクスチャーマトリックス(の逆)の積として予め計算され得る。
【0061】
ユーザがパンしたとき、レンダラーが行う必要がある全てのことは、テクスチャーを調整および/またはリフレッシュすることである。これは、それがメモリコピーから成るため、敏速である。大きなひとまとまりのピクセルをコピーすることは、種々のプログラミング言語において、通常、非常に最適化される。
【0062】
一実施形態において、ズームインすることは、水平なビジョンのフィールドおよび垂直なビジョンのフィールドの両方を2つに分割することと、テクスチャーを生成するように次のズームレベルを用いることから成る。ユーザがズームイン/ズームアウトする場合、パノラマビューアは、アニメーションを滑らかにするように、いくつかのビットマップイメージを予めキャッシュし得る。投影自体に関する限り、不可欠なズームレベルに対して、変換マトリックスの様々なセットを用い得る。不可欠でないズームレベルに対して、前のズームレベルと次のズームレベルとの間に、変換マトリックス(それでも敏速な)を線形に補間し得る。
【0063】
ピクセルが四角であることが想定される場合において、それらは、均一の連続した角度と対応する。与えられるピクセルのビジョンの基本フィールドは、水平の方向および垂直の方向において同じである。これは、トレードオフ(trade−off)がなされることを可能にする。例えば、直線を厳密に保つことを選択し得るが、これは、側部において比較的激しい歪みになる。あるいは、直線が少し曲がった状態になるようにすることを決め得、それにより歪みの量を減らし得る。一実施形態において、オリジナルのイメージの高さは、ビューポートの高さに縮尺される。ピクセルが四角であるため、ビューポートの高さ分のビューポートの幅の比は、ビジョンの水平のフィールドを決定する。
【0064】
円柱よりはむしろ球の場合において、上記の想定は、もはや当てはまらない。それゆえに、ビジョンベクトルが円柱の軸に垂直の状態での円柱の軸に沿った動きしか行われないので、上記の技術は、単独で、上方/下方への本来のパンをシミュレートし得ない。それでも、上方/下方への本来のパンのモーションは、一連の変換を予め計算することと、変換の間に線形に補間することによってシミュレートされ得る。
【0065】
一実施形態において、パノラマビューアは、平坦でないパノラマを扱うように設定される。どのパノラマも、平坦および水平なフィーチャーを描くとは限らない、例えば、San Franciscoの多くのストリートを考慮されたい。例えば、パノラマを取り込むために用いられる、乗物の上に乗せられるカメラは、地面に対して平行である。このように、急な傾斜の上を走ることは、間違った方向に向けられた写真をもたらし得る。それゆえに、そのような状況において、現実の世界における垂直な建物がテクスチャー空間において垂直であることを保証するように、パノラマを曲げることは、有利であり得る。図11は、どのようにしてパノラマ1100がそう曲げられ得るかの例を描く。図12によって説明される通り、その例は、周期的な関数におおよそ従い、その関数は、パノラマの勾配を考慮に入れる方法で、ビューポートの配置、および注釈の生成を導くのに用いられ得る。
【0066】
本明細書に示される通り、設定情報は、パノラマにおける最も高い勾配の横揺れおよび縦揺れのような投影プロパティを含み得る。図12によって説明される通り、パノラマビューアは、曲げられたパノラマの正弦曲線の細片にビューポートを押し込めるために、最も急な勾配の方向の横揺れおよび縦揺れを用い得る。ビューポートにおける注釈要素の描画はまた、パノラマの勾配の横揺れ情報および縦揺れ情報を考慮に入れるために修正され得る。ライン/バーおよび矢印の空間の向きは、横揺れ情報および縦揺れ情報に基づいて変換され得るか、あるいは、注釈の横揺れと最も急な勾配の横揺れとの間の関連に基づいて評価され得る。図13は、パノラマの勾配についての設定情報に関してのそのような処理の結果を説明する。パノラマは、急な勾配をつけられたストリートについてのパノラマのイメージの中の垂直な建物を正確に配置する。その上、道路を描くライン/バー(例えばストリートラインメタデータ)は、ストリートの勾配におおよそ一致する角度で傾けられる。
【0067】
一実施形態において、パノラマビューアはまた、パノラマイメージへのユーザ注釈を促進することが可能である。パノラマへのユーザ注釈は、3次元空間における注釈を参照する方法に対する課題を表す。
【0068】
図14および図15は、3次元空間においてユーザ注釈に対処する実施形態を説明する。図15において説明される処理は、パノラマビューア(または地図作成サービス)で、サーバーで、またはその2つの組み合わせで、生じ得る。
【0069】
図15を参照すると、ステップ1502において、ユーザは、1つのパノラマに対する注釈を入力する。パノラマビューアは、多数の異なった方法のうちのいずれかのユーザ入力を受け取り得、ユーザが注釈をつけることを所望するパノラマ上のクリックイベントを即座に受け取ることによることを含む。パノラマ上の注釈の2次元のロケーションは、一部の有利な座標システム(例えば、パノラマイメージのロケーションによるか、または横揺れおよび縦揺れの座標による)において記録される。
【0070】
ステップ1504において、ユーザは、パノラマビューアにおいて近くの別のパノラマにナビゲートし、注釈をつけられる同じフィーチャーを捜し出し、再び第2のパノラマに対して注釈を入力する。パノラマビューアまたは地図作成サービスはまた、十分想定されるように、タイトル、リンク、グラフィックスなどのような注釈に関連した更なるメタデータを加える機能を差し出す。
【0071】
ステップ1506において、2つのパノラマ上の注釈の座標は、その注釈に対する3次元の座標を生成するのに用いられる。図14において説明される通り、パノラマ1410、パノラマ1420に対するイメージを撮ったカメラの位置が知られ、かつ2次元のイメージに関連するユーザ入力の注釈座標が知られるものと仮定して、1450に描かれるようなその2つの交わりを計算することは、可能である。その結果は、注釈に対する3次元の座標である。
【0072】
ステップ1508において、注釈に対する3次元の座標は、その注釈に割り当てられ、注釈のデータベースの中に格納される。注釈は、計算された座標の、一部の有利な範囲内の任意のパノラマ(ユーザによってオリジナルに注釈をつけられなかったパノラマを含む)に含められ得る。
【0073】
あるいは、関連する縦揺れの情報が注釈にとって特に重要でない場合には、両方のパノラマ上の1次元の横揺れ方向としてユーザ注釈を受け取ることが可能であり、そのことは、注釈への2次元の土地のコード(geocode)の割り当てを(デフォルトの縦揺れの情報の有無を問わず)促進する。
【0074】
本発明の様々な実施形態が上記に述べられたが、それらが例示のために与えられたことと、それらが制限されないことは理解されるべきである。当業者にとって、本発明の範囲から逸脱することなくその中で様々な改変がなされ得ることは明らかである。さらに、本明細書(概要の項および要約の項を除く)に提供される、本発明の、発明を実施するための形態が、特許請求の範囲を解釈するのに用いられるように意図されることは、正しく認識されるべきである。概要の項および要約の項は、発明者らによって予期されるような、本発明の1つ以上の例示的実施形態(しかし、全ての実施形態ではない)を明記する。
【0075】
特定の実施形態についての前述の解説は、本発明の全体的な本質を十分に明かすものであり、本発明は、(当業者の知識を応用することによって)特定の実施形態のような様々な用途に対して、必要以上の実験なしに、本発明の全体的な概念から逸脱することなく、難なく改良および/または適合され得る。それゆえ、そのような適合および改良は、本明細書で与えられる教示および示唆に基づいて、開示される実施形態の均等物の意味内および範囲内にすることが意図される。本発明の詳述についての専門用語または表現法が、教示および示唆の観点において当業者によって解釈され得るように、本明細書での表現法または専門用語が解説の目的のためであって制限の目的のためではないことは、理解されるべきである。
【特許請求の範囲】
【請求項1】
表面を描画する方法であって、
前記方法は、
前記表面に描画されるイメージを閲覧する第1のユーザ入力と、イメージ内にズームする第2のユーザ入力との前に、
(a)ビューポートから前記表面への第1の変換によって画定される前記表面上の領域を予め計算することと、
(b)第1のズームレベルで前記領域から前記ビューポートにマップする第2の変換を予め計算することと、
(c)第2のズームレベルで前記領域の一部から前記ビューポートにマップする第3の変換を予め計算することと、
前記表面に描画される前記イメージを閲覧する前記第1のユーザ入力に応答して、
(d)前記第1のユーザ入力に従って、前記イメージを平行移動することと、
(e)前記平行移動されたイメージの一部を決定することであって、前記一部は、前記領域と交わる、ことと、
(f)前記第2の変換を前記領域と交わる前記イメージの一部に適用することにより、変換されたイメージを得ることと、
(g)表示のために、前記変換されたイメージを前記ビューポートに描画することと、
イメージ内にズームする前記第2のユーザ入力に応答して、
(h)前記イメージの前記一部を分割することにより、ズームインされたテクスチャーを生成することと、
(i)前記(h)で生成された前記ズームインされたテクスチャーの第2の部分を決定することであって、前記第2の部分は、前記(a)で計算された前記領域と交わる、ことと、
(j)前記(c)で計算された前記第3の変換を前記(h)で生成された前記ズームインされたイメージの前記第2の部分に適用することにより、第2の変換されたイメージをもたらすことであって、前記第2の変換されたイメージは、表示のために前記ビューポートに描画される、ことと
を含み、
ステップ(a)〜(j)は、それぞれ、少なくとも1つのコンピューティング装置上で実行される、方法。
【請求項2】
前記予め計算すること(a)は、円柱上の領域を計算することを含む、請求項1に記載の方法。
【請求項3】
前記予め計算すること(a)は、第1のメッシュ上の領域を計算することを含み、前記領域は、第2のメッシュから前記第1のメッシュへの前記第1の変換によって画定され、
前記計算すること(b)は、前記第2の変換を計算することを含み、前記第2の変換は、前記第1のメッシュから前記第2のメッシュへマップする、請求項1および請求項2のうちのいずれか一項に記載の方法。
【請求項4】
前記予め計算すること(a)は、ボクセルからピクセルへの連続的な変換として、前記第1の変換を計算することを含み、
前記計算すること(b)は、ボクセルからピクセルへの連続的な変換として、前記第2の変換を計算することを含む、請求項1および請求項2のうちのいずれか一項に記載の方法。
【請求項5】
前記(b)で決定された前記第2の変換と前記(c)で決定された前記第3の変換との間の補間された変換を決定することと、前記補間された変換を前記ズームインされたテクスチャーの前記第2の部分に適用することとをさらに含む、請求項1に記載の方法。
【請求項6】
前記イメージをキャプチャしたカメラの角度に基づいて前記イメージを調整することをさらに含む、請求項1に記載の方法。
【請求項7】
前記決定すること(e)は、前記領域と交わるパノラマのイメージの一部を決定することを含む、請求項1、請求項2および請求項6のうちのいずれか一項に記載の方法。
【請求項8】
表面を描画するシステムであって、
前記システムは、
ビューポートから前記表面への第1の変換によって画定される、前記表面上の領域を計算し、第1のズームレベルで前記領域から前記ビューポートにマップする第2の変換と、第2のズームレベルで前記領域の第1の部分から前記ビューポートにマップする第3の変換とを計算するサーバーと、
第1のユーザ入力に応答して、イメージを平行移動し、前記表面上の前記領域と交わるイメージの一部を決定し、前記第2の変換を前記表面上の前記領域と交わる前記イメージの前記一部に適用することにより、第1の変換されたイメージをもたらすパノラマビューアであって、前記第1の変換されたイメージは、表示のために前記ビューポートに描画される、パノラマビューアと
を含み、
前記パノラマビューアは、第2のユーザ入力に応答して、前記イメージの前記一部を分割することにより、ズームインされたテクスチャーを生成し、前記計算された領域と交わる前記ズームインされたテクスチャーの第2の部分を決定し、前記第3の変換を前記ズームインされたテクスチャーの前記第2の部分に適用することにより、第2の変換されたイメージをもたらし、前記第2の変換されたイメージは、表示のために前記ビューポートに描画される、システム。
【請求項9】
前記表面は、円柱である、請求項8に記載のシステム。
【請求項10】
メッシュが前記ビューポート上に画定され、メッシュが前記表面上に画定され、前記第1の変換および前記第2の変換は、一方のメッシュからもう一方のメッシュへの変換である、請求項8に記載のシステム。
【請求項11】
前記第1の変換および前記第2の変換は、ボクセルからピクセルへの連続的な変換である、請求項8に記載のシステム。
【請求項12】
前記パノラマビューアは、前記第2の変換と前記第3の変換との間の補間された変換を決定し、前記補間された変換を前記ズームインされたテクスチャーの前記第2の部分に適用する、請求項8に記載のシステム。
【請求項13】
前記イメージは、前記イメージをキャプチャしたカメラの角度に基づいて調整される、請求項8に記載のシステム。
【請求項14】
前記イメージは、パノラマのイメージである、請求項8、請求項9、請求項10、請求項11、請求項12および請求項13のうちのいずれか一項に記載のシステム。
【請求項1】
表面を描画する方法であって、
前記方法は、
前記表面に描画されるイメージを閲覧する第1のユーザ入力と、イメージ内にズームする第2のユーザ入力との前に、
(a)ビューポートから前記表面への第1の変換によって画定される前記表面上の領域を予め計算することと、
(b)第1のズームレベルで前記領域から前記ビューポートにマップする第2の変換を予め計算することと、
(c)第2のズームレベルで前記領域の一部から前記ビューポートにマップする第3の変換を予め計算することと、
前記表面に描画される前記イメージを閲覧する前記第1のユーザ入力に応答して、
(d)前記第1のユーザ入力に従って、前記イメージを平行移動することと、
(e)前記平行移動されたイメージの一部を決定することであって、前記一部は、前記領域と交わる、ことと、
(f)前記第2の変換を前記領域と交わる前記イメージの一部に適用することにより、変換されたイメージを得ることと、
(g)表示のために、前記変換されたイメージを前記ビューポートに描画することと、
イメージ内にズームする前記第2のユーザ入力に応答して、
(h)前記イメージの前記一部を分割することにより、ズームインされたテクスチャーを生成することと、
(i)前記(h)で生成された前記ズームインされたテクスチャーの第2の部分を決定することであって、前記第2の部分は、前記(a)で計算された前記領域と交わる、ことと、
(j)前記(c)で計算された前記第3の変換を前記(h)で生成された前記ズームインされたイメージの前記第2の部分に適用することにより、第2の変換されたイメージをもたらすことであって、前記第2の変換されたイメージは、表示のために前記ビューポートに描画される、ことと
を含み、
ステップ(a)〜(j)は、それぞれ、少なくとも1つのコンピューティング装置上で実行される、方法。
【請求項2】
前記予め計算すること(a)は、円柱上の領域を計算することを含む、請求項1に記載の方法。
【請求項3】
前記予め計算すること(a)は、第1のメッシュ上の領域を計算することを含み、前記領域は、第2のメッシュから前記第1のメッシュへの前記第1の変換によって画定され、
前記計算すること(b)は、前記第2の変換を計算することを含み、前記第2の変換は、前記第1のメッシュから前記第2のメッシュへマップする、請求項1および請求項2のうちのいずれか一項に記載の方法。
【請求項4】
前記予め計算すること(a)は、ボクセルからピクセルへの連続的な変換として、前記第1の変換を計算することを含み、
前記計算すること(b)は、ボクセルからピクセルへの連続的な変換として、前記第2の変換を計算することを含む、請求項1および請求項2のうちのいずれか一項に記載の方法。
【請求項5】
前記(b)で決定された前記第2の変換と前記(c)で決定された前記第3の変換との間の補間された変換を決定することと、前記補間された変換を前記ズームインされたテクスチャーの前記第2の部分に適用することとをさらに含む、請求項1に記載の方法。
【請求項6】
前記イメージをキャプチャしたカメラの角度に基づいて前記イメージを調整することをさらに含む、請求項1に記載の方法。
【請求項7】
前記決定すること(e)は、前記領域と交わるパノラマのイメージの一部を決定することを含む、請求項1、請求項2および請求項6のうちのいずれか一項に記載の方法。
【請求項8】
表面を描画するシステムであって、
前記システムは、
ビューポートから前記表面への第1の変換によって画定される、前記表面上の領域を計算し、第1のズームレベルで前記領域から前記ビューポートにマップする第2の変換と、第2のズームレベルで前記領域の第1の部分から前記ビューポートにマップする第3の変換とを計算するサーバーと、
第1のユーザ入力に応答して、イメージを平行移動し、前記表面上の前記領域と交わるイメージの一部を決定し、前記第2の変換を前記表面上の前記領域と交わる前記イメージの前記一部に適用することにより、第1の変換されたイメージをもたらすパノラマビューアであって、前記第1の変換されたイメージは、表示のために前記ビューポートに描画される、パノラマビューアと
を含み、
前記パノラマビューアは、第2のユーザ入力に応答して、前記イメージの前記一部を分割することにより、ズームインされたテクスチャーを生成し、前記計算された領域と交わる前記ズームインされたテクスチャーの第2の部分を決定し、前記第3の変換を前記ズームインされたテクスチャーの前記第2の部分に適用することにより、第2の変換されたイメージをもたらし、前記第2の変換されたイメージは、表示のために前記ビューポートに描画される、システム。
【請求項9】
前記表面は、円柱である、請求項8に記載のシステム。
【請求項10】
メッシュが前記ビューポート上に画定され、メッシュが前記表面上に画定され、前記第1の変換および前記第2の変換は、一方のメッシュからもう一方のメッシュへの変換である、請求項8に記載のシステム。
【請求項11】
前記第1の変換および前記第2の変換は、ボクセルからピクセルへの連続的な変換である、請求項8に記載のシステム。
【請求項12】
前記パノラマビューアは、前記第2の変換と前記第3の変換との間の補間された変換を決定し、前記補間された変換を前記ズームインされたテクスチャーの前記第2の部分に適用する、請求項8に記載のシステム。
【請求項13】
前記イメージは、前記イメージをキャプチャしたカメラの角度に基づいて調整される、請求項8に記載のシステム。
【請求項14】
前記イメージは、パノラマのイメージである、請求項8、請求項9、請求項10、請求項11、請求項12および請求項13のうちのいずれか一項に記載のシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図8】
【図9A】
【図9B】
【図9C】
【図10A】
【図10B】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図7C】
【図8】
【図9A】
【図9B】
【図9C】
【図10A】
【図10B】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2013−84307(P2013−84307A)
【公開日】平成25年5月9日(2013.5.9)
【国際特許分類】
【出願番号】特願2013−15115(P2013−15115)
【出願日】平成25年1月30日(2013.1.30)
【分割の表示】特願2011−103856(P2011−103856)の分割
【原出願日】平成20年5月27日(2008.5.27)
【出願人】(502208397)グーグル インコーポレイテッド (161)
【Fターム(参考)】
【公開日】平成25年5月9日(2013.5.9)
【国際特許分類】
【出願日】平成25年1月30日(2013.1.30)
【分割の表示】特願2011−103856(P2011−103856)の分割
【原出願日】平成20年5月27日(2008.5.27)
【出願人】(502208397)グーグル インコーポレイテッド (161)
【Fターム(参考)】
[ Back to top ]