(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
図1を参照して、本発明の実施形態における情報処理システムの構成の一例について説明する。
【0011】
図1に示すように、本発明における情報処理システムの各種装置はネットワーク150を介して通信可能に接続されている。例えばPC100は、HMD101(HMD101A〜HMD101Cの総称)と通信可能に接続されている。
【0012】
PC100には、HMD101により撮像される現実画像に重畳する三次元モデル(CGモデル/仮想オブジェクト)が記憶されている。
【0013】
また、PC100は、自機の管理するHMD101(
図1におけるHMD101A〜101C)より現実画像を取得して、記憶部に記憶する。また、PC100はHMD101の位置姿勢を特定し、記憶する。HMD101の位置姿勢の特定方法は、特開2003−308514号公報に記載されている、HMD101の撮像した現実画像中の二次元マーカを用いて特定可能である。また、特開2003−240532号公報に記載されているように、センサ(
図1における光学センサ104)がHMD101に設置された光学式マーカの位置姿勢をHMD101の位置姿勢として検出し、それをPC100が取得することで特定することも可能である。本実施形態においては、光学センサ104で光学式マーカを読み取ることにより、HMD101の位置姿勢を特定するものとするがこれ以外の方法を用いてもよい。
【0014】
PC100では、HMD101の位置姿勢と、記憶部に記憶されている三次元モデル及び三次元モデルの位置姿勢の情報を用いて、現実画像に三次元モデルを重畳した複合現実画像を生成する。そして、当該複合現実画像をHMD101のディスプレイに表示させるべく、HMD101に送信する。HMD101は受信した複合現実画像をディスプレイに表示する。以上が
図1の説明である。
【0015】
複合現実空間を模式的に示したのが
図3に示す模式図である。
図3はHMD101の視野の範囲内に三次元モデルが表示されていることを示している。HMD101を装着したユーザはあたかも三次元モデルが現実空間上に存在するかのように知覚することができる。
【0016】
従来、三次元モデルは実寸大で表示をすることにより、仮想的な三次元モデルが現実空間上にあたかも存在しているかのような体験をユーザに対して提供することができた。しかしながら、実寸大で表示することが適さない三次元モデルも存在し、その場合にはユーザが見やすい大きさに三次元モデルの大きさを変更しなければならない。そのため、HMD101の視野角の範囲内に三次元モデルが収まるように三次元モデルの表示倍率を変更することで、三次元モデルを見やすいサイズでHMD101を介してユーザに知覚させることが可能となる。なお、サイズの変更方法は一例であって、倍率の変更以外の方法で表示される三次元モデルの大きさを変更しても構わない。
【0017】
次に
図2を参照して、本発明の実施形態における、各種装置のハードウェア構成の一例について説明する。
【0018】
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
【0019】
また、ROM202には、CPU201の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステム(OS)、その他各種装置の実行する機能を実現するために必要な各種プログラムが記憶されている。
【0020】
RAM203は、CPU201の主メモリ、ワークエリア等として機能する。CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
【0021】
本発明のPC100が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
【0022】
入力コントローラ(入力C)205は、キーボードやマウス等のポインティングデバイス(入力デバイス209)からの入力を制御する。
【0023】
また、入力デバイス209がタッチパネルの場合、ユーザがタッチパネルに表示されたアイコンやカーソルやボタンに合わせて押下(指等でタッチ)することにより、各種の指示を行うことができることとする。なお、タッチパネルは、マルチタッチスクリーンなどの、複数の指でタッチされた位置を検出することが可能なタッチパネルであってもよいこととする。
【0024】
ビデオコントローラ(VC)206は、HMD101が備える右目・左目ディスプレイ222等の表示器への表示を制御する。右目・左目ディスプレイ222に対しては、例えば外部出力端子(例えば、Digital Visual Interface)を用いて出力される。また、右目・左目ディスプレイ222は、右目用のディスプレイと左目用のディスプレイとから構成されている。また、入力コントローラ(入力C)205は、PC100の備えるディスプレイ212(液晶ディスプレイ等)の表示器への表示を制御する。なお、
図2では、表示器は液晶ディスプレイだけでなく、CRTディスプレイ等の他の表示器であってもよい。
【0025】
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
【0026】
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。また、通信I/Fコントローラ208は、ギガビットイーサネット(登録商標)等を通じて光学センサ104との通信も制御する。
【0027】
汎用バス212は、HMD101の右目・左目ビデオカメラ221からの映像を取り込むために使用される。右目・左目ビデオカメラ221からは、外部入力端子(例えば、IEEE1394端子)を用いて入力される。右目・左目ビデオカメラ221は、右目用のビデオカメラと左目用のビデオカメラとから構成されている。
【0028】
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ上での表示を可能としている。また、CPU201は、ディスプレイ上の不図示のマウスカーソル等でのユーザ指示を可能とする。以上が
図2の説明である。
【0029】
次に
図4を参照して、本発明の実施形態における各種装置の機能構成の一例について説明する。
【0030】
PC100は、オペレーティングシステム401(OS)、グラフィックエンジン402、複合現実感プラットフォーム403(MRプラットフォームともいう)、複合現実感アプリケーション404(MRアプリケーションやビューアアプリケーションともいう)で構成され、CPU201により制御されている。
【0031】
オペレーティングシステム401は、HMD101の入出力を制御しカメラ221から入力インターフェースを介して得られた現実画像を複合現実感プラットフォーム403へ受け渡す。またグラフィックエンジン402で描画された複合現実画像を、出力インターフェースを介して、ディスプレイ222へ出力する。
【0032】
グラフィックエンジン402は、外部メモリ211に記憶されている三次元モデルから描画する画像を生成し、現実画像に重畳し、合成する。描画に利用するエンジンは、例えば、OpenGLやDirectXなどの広く利用されているグラフィックエンジンでも、独自に開発したグラフィックエンジンでもよい。なお、本実施形態ではグラフィックライブラリとしてOpenGLを利用するものとする。
【0033】
複合現実感プラットフォーム403は、光学センサ104で光学式マーカを読み取ることでHMD101の位置姿勢を特定し、現実空間と仮想空間の位置合わせを行う。なお、位置姿勢や位置合わせの技術は、既知の技術として開示されている、特開2002−32784、特開2006−072903、特開2007−166427等を用いて実現することが可能である。
【0034】
複合現実感アプリケーション404は、複合現実感プラットフォーム403からHMD101の位置姿勢、三次元モデルの形状の情報、位置姿勢の情報を受け付け、グラフィックエンジン402に対して、三次元モデルの描画命令を発行する。この時、OpenGLのApplication Programming Interface(API)を用いて、描画する三次元モデルの識別情報、位置姿勢の情報を設定した命令を発行する。以上が
図4の説明である。
【0035】
次に
図5を参照して本実施形態におけるHMD101とPC100のモジュール構成の一例を説明する。
【0036】
HMD101は、撮像部301、撮像画像送信部302、MR画像受信部303、MR画像表示部304を備える。
【0037】
撮像部301は、右目・左目ビデオカメラ221で現実空間を撮像する機能部である。
【0038】
撮像画像送信部302は、右目・左目ビデオカメラ221で撮像された画像をPC100に送信する機能部である。
【0039】
MR画像受信部303は、PC100から送信されたMR画像(仮想現実画像)を受信する機能部である。
【0040】
MR画像表示部304は、MR画像受信部303で受信したMR画像を右目・左目ディスプレイ222で表示させる機能部である。
【0041】
PC100は、撮像画像受信部321、取得部322、位置特定部323、決定部324、表示制御部325を備える。
【0042】
撮像画像受信部321は、HMD101から送信された画像を受信する機能部である。
【0043】
取得部322は、HMD101の位置及び視野角の情報を取得する機能部である。
【0044】
位置特定部323は、仮想空間上の三次元モデルを表示する位置をHMD101の位置及び姿勢により特定する機能部である。
【0045】
決定部324は、決定された三次元モデルの表示位置とHMD101の位置及び視野角の情報に基づいて、三次元モデルを表示する大きさを決定する機能部である。
【0046】
表示制御部325は、三次元モデルを決定部324で決定された大きさでHMD101に表示させる機能部である。
【0047】
なお、PC100のモジュールをHMD101に持たせるようにしても構わない。
【0048】
以上で、
図5に示す本実施形態におけるPC100の機能構成の説明を終了する。
【0049】
次に
図6を参照して、本実施形態における複合現実画像の生成及び表示処理について説明する。
【0050】
HMD101は、ステップS601で起動後、カメラ221の機能を用いて現実画像の撮像を開始する(ステップS602)。そして、撮像処理によって取得した現実画像をPC100に送信する(ステップS603)。
【0051】
PC100のCPU201はHMD101より現実画像を受信し(ステップS604)、受信した現実画像を外部メモリ211に記憶する(ステップS605)。例えば、
図9の現実画像テーブル930に示すように、現実画像の送信元のHMD101の識別情報であるHMD ID931と、現実画像932とを対応付けて記憶する。
【0052】
PC100のCPU201は、HMD101の位置、姿勢を取得して(ステップS606、取得手段に相当する)、外部メモリ211に記憶する(ステップS607)。例えば、
図9のHMD情報910に示すように、HMD101の識別情報であるHMD ID911と、当該HMDの位置912(X,Y,Z座標)、姿勢913(X,Y,Z座標の値により表現されるHMD101の向いている方向)を記憶する。
【0053】
PC100のCPU201は、外部メモリ211から三次元モデルの情報を取得し、HMD101から受信した現実画像に重畳した複合現実画像を生成する処理を行う(ステップS608)。その後、生成された複合現実画像をHMD101に送信する(ステップS609、表示制御手段に相当する)。
【0054】
ステップS608の複合現実画像生成処理の詳細な処理の流れを
図7のフローチャートを用いて説明する。
【0055】
図7は複合現実画像生成処理の詳細な処理の流れを説明するフローチャートである。
図8が複合画像生成処理の説明と対応づいたイメージ図なので、参照されたい。
【0056】
ステップS701では、PC100のCPU201は、外部メモリ211に記憶されたHMD情報910に示すHMDの位置912、姿勢913を参照する。
【0057】
ステップS702では、PC100のCPU201は、HMD101で表示させる対象となる三次元モデルを特定する。本実施形態では、予めユーザから表示させる三次元モデルの指定を受け付けているものとする。表示させる三次元モデルの指定の受け付け方法については特に限定されず、例えばディスプレイ212に表示される三次元モデルのリストから対象の三次元モデルの選択を受け付けるようにしてもよい。
【0058】
ステップS703では、PC100のCPU201は、外部メモリ211に記憶される「設定された距離1000」を取得する。本実施形態では例えば3メートルとする。設定された距離1000は自由に設定することができる。設定された距離1000の設定の方法は何でもよい。
【0059】
ステップS704では、PC100のCPU201は、ステップS701で取得した位置912と姿勢913との座標から求められる、HMDの視線を示すベクトルを算出する。算出された視線ベクトル1001は対応するHMD101の視線ベクトル914(視線方向)に格納する。
【0060】
なお、本実施形態では3次元ベクトルを用いて、当該ベクトルの範囲に入るよう三次元モデルの大きさを決定しているが、高さの情報を無視した2次元ベクトルを用いて、当該ベクトルの範囲に入るよう三次元モデルの大きさを決定してもよい。
【0061】
ステップS705では、PC100のCPU201は、ステップS702で特定された三次元モデルを表示する中心の位置である表示位置1002を特定する(位置特定手段に相当する)。本実施形態では、ステップS701で取得したHMD101の位置912から、視線ベクトル914に向かってステップS703で取得した「設定された距離」の値だけ離れた位置を、三次元モデルの表示位置1002として決定する。なお、三次元モデルの表示位置1002の特定方法はこれに限らず、右目・左目ビデオカメラ221で二次元マーカを撮影することにより、二次元マーカの位置を特定し、特定された位置を三次元モデルの表示位置としても構わない。
【0062】
ステップS706では、PC100のCPU201は、ステップS705で特定された表示位置1002が仮想空間の範囲内か否かを判定する。仮想空間の範囲内であると判定された場合には処理をステップS708に進め、そうでない場合には処理をステップS707に進める。仮想空間の範囲内か否かの判断は、例えばステップS705で特定された表示位置1002が所定の値の範囲内か否かなどによって判断することができる。
【0063】
ステップS707では、PC100のCPU201は、ステップS705で特定された表示位置1002が仮想空間の範囲内となるように補正を行う。例えば仮想空間の地面を規定している面より下が表示位置1002となっている場合には、地面を規定している面より上となるように、表示位置1002を補正する。このように三次元モデルを表示する位置を仮想空間の範囲内となるように補正することにより、ユーザにとって違和感のない複合現実空間を体感させることができるようになるという効果がある。なお、ステップS706、707における表示位置1002の補正は必須の構成ではなく必要に応じて省略をしても構わないものとする。
【0064】
ステップS708では、PC100のCPU201は、外部メモリ211に記憶されたHMD101の視野角情報を取得する。視野角情報とは、HMD101の視野の情報を示す情報であり、右目・左目ビデオカメラ221の画角の情報である。
【0065】
ステップS709では、PC100のCPU201は、ステップS705で特定された三次元モデルの表示位置1002を通る法線ベクトルであって視線ベクトル1001に対する法線ベクトル1004を特定する(ベクトル特定手段に相当する)。
図8に示す法線ベクトル1004である。
【0066】
ステップS710では、PC100のCPU201は、ステップS709で特定された法線ベクトル1004と視野角情報が示す視野の範囲との交点1005を特定する。
【0067】
ステップS711では、PC100のCPU201は、ステップS705で特定された(またはステップS707で補正された)三次元モデルの表示位置1002からステップS710で特定された交点1005までの距離Dを算出する(算出手段に相当する)。算出された距離Dはメモリ上に一時記憶しておく。
【0068】
距離Dを補正するための情報である補正情報を外部メモリ211から取得し、この補正情報により、例えば距離Dを多少小さい値と補正するようにしてもよい。これにより、HMD101の視野角いっぱいに三次元モデルが表示されてしまうことを避ける効果がある。逆に多少大きい値とするよう補正しても構わないものとする。
【0069】
ステップS712では、PC100のCPU201は、距離Dにより、求められた値と、ステップS702で特定された三次元モデルの端から端までの長さ(最大長)にもとづいて、三次元モデルの表示倍率を決定する(決定手段に相当する)。例えば、距離Dが4メートルで、ステップS702で特定された三次元モデルの端から端までの長さ(最大長)が8メートルであった場合には、この三次元モデルの端から端までの長さが4メートルとなるように倍率を決定する。この例であれば50%として三次元モデルの表示倍率を決定する。決定された表示倍率は、表示倍率926に格納する。
【0070】
三次元モデルの情報は、例えば
図9のモデル情報920に示す情報である。モデル情報920は、予めPC100の外部メモリ211に記憶されている情報である。モデルID921は三次元モデルの識別情報である。モデル名922は、三次元モデルのファイル名である。ファイルパス923は、ファイルが記憶されている場所を示す。位置924、姿勢925は三次元モデルの位置姿勢を示す。PC100のCPU201は、HMDの位置912・姿勢913から、HMD101と同じ画角を持つカメラが、位置924・姿勢925の三次元モデルを撮像した場合の、当該三次元モデルの画像を描画データ940として生成する。
【0071】
ステップS713では、PC100のCPU201は、描画データ940を現実画像932と合成することで、
図9のMR画像テーブル950に示す複合現実画像952(MR画像)を生成する。
【0072】
ステップS714では、PC100のCPU201は、ステップS714で生成された複合現実画像952を外部メモリ211に記憶する。
【0073】
以上で
図7に示す複合現実画像生成処理の詳細な処理の流れの説明を終了し、
図6の説明に戻る。
【0074】
HMD101は、PC100から送信された複合現実画像を受信し(ステップS610)、表示画面に表示する(ステップS611)。ユーザから複合現実画像の表示を終了する指示を受け付けたか否かを判断し、ユーザから複合現実画像の表示を終了する指示を受け付けたと判断した場合には処理を終了させ、そうでない場合には処理をステップS602に戻す。
【0075】
以上、本発明によれば、ヘッドマウントディスプレイを装着しているユーザに、三次元モデルを見やすい大きさで表示させることが可能となる。
【0076】
本実施形態では、三次元モデルの表示の大きさを指定する方法として表示倍率により指定を行ったが、これ以外の方法でもよく、三次元モデル自体の大きさを指定するようにしてもよい。
【0077】
また本実施形態では、三次元モデルを表示する中心を、視線ベクトル914上のHMD101から「設定された距離1000」だけ離れた位置となるように制御していたが、これ以外の方法でもよい。例えば、視線ベクトル914と仮想空間を規定する空間の壁(境界)との交点を算出して、その交点とHMD101の位置912との間の距離に対する割合(例えば50%)となる位置を三次元モデルの位置としてもよい。このようにすることで、規程された仮想空間の外側に三次元モデルの表示される中心が設定されることを防止することができ、三次元モデルが例えば地面などに埋もれてしまうことを防止する効果がある。
【0078】
また、本実施形態では、常に三次元モデルの表示される位置と表示される倍率を計算して表示するように構成しているが、本発明は当然所定のタイミングにおけるHMD101の位置912、姿勢913に基づいて三次元モデルの表示される中心と表示される倍率を決定して、HMD101で表示させるようにしてもよい。
【0079】
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置の情報処理装置が前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【0080】
したがって、本発明の機能処理を情報処理装置で実現するために、前記情報処理装置にインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0081】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
【0082】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
【0083】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【0084】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理を情報処理装置で実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0085】
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行して情報処理装置にインストールさせて実現することも可能である。
【0086】
また、情報処理装置が、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、情報処理装置上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0087】
さらに、記録媒体から読み出されたプログラムが、情報処理装置に挿入された機能拡張ボードや情報処理装置に接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【0088】
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。