説明

画像処理装置、画像処理方法、ならびに、プログラム

【課題】仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにする。
【解決手段】画像処理装置300において、記憶部301には仮想空間に配置されるオブジェクトの位置と姿勢と、仮想視点の位置と、仮想視点の位置から仮想空間を見る仮想視線の向きとが記憶される。検知部302は、現実空間におけるユーザの第1の部位の位置と姿勢と、ユーザの第2の部位の位置と姿勢を検知する。変化部303は、検知された第1の部位の位置と姿勢に基づいてオブジェクトの位置と姿勢を変化させ、検知された第2の部位の第1の部位に対する相対的な位置と姿勢に基づいて仮想視点の位置と仮想視線の向きを変化させる。画像生成部304は、仮想視点の位置から仮想視線の向きにオブジェクトを見た様子を表す画像を生成する。表示部305は、生成された画像を表示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにするために好適な画像処理装置、画像処理方法、ならびに、プログラムに関する。
【背景技術】
【0002】
人間などのモデルにマーカーを取り付け、このマーカーの動きを検出することによって、現実空間におけるモデルの動きをデジタル化して捉える、いわゆるモーションキャプチャーと呼ばれる技術がある。また、モデルの動きを1つ又は複数のカメラで撮影したり、周囲に照射した赤外線の飛行時間やその反射波の位相差を用いてモデルまでの距離(“深さ”とも言う。)を計測したりすることによって、モデルの動きを捉える技術もある。
【0003】
現実空間の様子を捉えるこれらの技術は、例えば、仮想空間でのゲームにおいて、画面内のキャラクタをより自然に動かすために用いられる。特許文献1には、プレイヤーを撮影し、プレイヤーの所定の部位(例えば、頭部、両眼部など)を追尾することによって、より変化に富んだゲームを楽しめるようにした装置が開示されている。
【0004】
一方で、CAD(Computer Aided Design)のように、3次元仮想空間に配置した、製品や部品などといったオブジェクトを、様々な方向から眺めたり設計したりすることができるシステムが広く普及している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許第4117682号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、従来のCADシステムでは、ユーザは、仮想空間内のオブジェクトの位置や姿勢、あるいは、オブジェクトを見る位置(仮想視点)や方向(仮想視線)などを変えたい場合、キーボードやマウスなどの所定の入力装置を使って、所望のアングルになるように調節しなければならず、操作が面倒であったり操作が複雑で扱いにくかったりするという問題があった。
【0007】
本発明はこのような課題を解決するものであり、仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにするために好適な画像処理装置、画像処理方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0009】
本発明の第1の観点に係る画像処理装置は、記憶部、検知部、変化部、画像生成部、表示部を備える。
記憶部には、仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される。
検知部は、現実空間におけるユーザの第1の部位の位置と姿勢と、当該ユーザの第2の部位の位置と姿勢と、を検知する。
変化部は、検知された第1の部位の位置と姿勢とに基づいて、記憶されるオブジェクトの位置と姿勢とを変化させ、検知された第2の部位の第1の部位に対する相対的な位置と姿勢とに基づいて、記憶される仮想視点の位置と記憶される仮想視線の向きとを変化させる。
画像生成部は、仮想視点の位置から仮想視線の向きにオブジェクトを見た様子を表す画像を生成する。
表示部は、生成された画像を現実空間におけるモニター画面に表示する。
【0010】
仮想空間には、位置と姿勢が可変のオブジェクトが配置される。任意の立体がオブジェクトとなりえるが、例えば、オブジェクトは、ゲームに登場するキャラクター、飛行機の立体モデル、製品、部品、立体地形図などである。
現実空間には、オブジェクトの様子を表す画像を表示するためのモニターと、ユーザを撮影するカメラと、ユーザの所定の部位の位置と姿勢を検知するセンサーと、が配置される。所定の部位は、例えば、ユーザの手、指、頭、顔、足、胴体などである。
【0011】
画像処理装置は、現実空間におけるユーザの第1の部位の位置と姿勢を検知する。第1の部位は、例えば、手である。また、画像処理装置は、現実空間におけるユーザの第2の部位の位置と姿勢を検知する。第2の部位は、例えば、頭である。第1の部位の位置と姿勢、及び、第2の部位の位置と姿勢は、定期的なタイミングで繰り返し検知される。
撮影された画像のパターンや特徴点を画像解析することにより、第1の部位と第2の部位のこの画像内における位置と形状が判別される。更に、画像処理装置から発射された照射波(例えば赤外線)の物体による反射波を検知し、照射波の飛行時間や位相差を解析することにより、画像処理装置から第1の部位と第2の部位までの距離(センサーからの“深さ”)が判別される。画像を解析した結果と、検知された深さと、に基づいて、現実空間における第1の部位と第2の部位の位置と姿勢が特定される。
【0012】
本発明では、仮想空間におけるオブジェクトの動きが、現実空間におけるユーザの第1の部位と第2の部位の動きに連動するようになっている。ユーザが第1の部位の位置と姿勢を変えると、それに応じてオブジェクトの位置と姿勢が変わる。また、ユーザが第2の部位の位置と姿勢を変えると、それに応じてオブジェクトを見る視点(仮想視点)の位置とオブジェクトを見る視線(仮想視線)の向きが変わる。
【0013】
従って、本発明によれば、ユーザは、仮想空間に配置されたオブジェクトを異なるアングルから眺めたい場合には、第1の部位の位置と姿勢を変えることによってオブジェクトの位置と姿勢を自由に変えればよいし、あるいは、第2の部位の位置と姿勢を変えることによって仮想視点の位置と仮想視線の向きを自由に変えればよい。その際、ユーザは、コントローラ、キーボード、マウスなどの入力装置を用いなくてもよく、自分の体の一部を動かすだけでよい。ユーザは、仮想空間に配置されるオブジェクトの見方を簡単な操作で変えることができる。
【0014】
変化部は、検知された第2の部位の位置と姿勢とに基づいて、ユーザの視点から現実世界を見るときの視線(以下「ユーザ視線」という。)の位置と向きを推定してもよい。
そして、画像生成部は、ユーザ視線の位置又は向きが変化を始めてから所定時間内にユーザ視線がモニター画面と交差した場合、ユーザ視線がモニター画面と交差している間、変化を始める前に記憶部に記憶されていた、オブジェクトの位置と姿勢と、仮想視点の位置と、仮想視線の向きと、に基づいて、オブジェクトを見た様子を表す画像を生成する。
【0015】
本発明によれば、画像処理装置は、ユーザがモニター画面を見ているか否かを推測し、その推測結果に応じて表示の態様を変えることができる。例えば、ユーザが仮想空間内のオブジェクトを異なるアングルから眺めたい場合、まず、ユーザは、第1の部位を所望の位置と姿勢にセットする。その後、ユーザは、一旦第1の部位から目を離してモニター画面の方を向く。すると、モニター画面には、モニター画面に向く直前の様子が表示される。
つまり、ユーザがモニター画面を見ていない(その代わりにユーザが第1の部位を見ている)と推測されるときには、仮想空間におけるオブジェクトの動きが、現実空間におけるユーザの第1の部位と第2の部位の動きに連動する。一方、ユーザがモニター画面を見ている(その代わりにユーザが第1の部位を見ていない)と推測されるときには、仮想空間におけるオブジェクトの動きと、現実空間におけるユーザの第1の部位と第2の部位の動きと、の連動が停止し、あたかも直前のリプレイ画像が表示されるかのように、オブジェクトの様子が表示される。
従って、ユーザは、第1の部位の位置と姿勢と、第2の部位の位置と姿勢と、を所望の位置と姿勢にセットした後、すぐにモニター画面に目を転じなくてもよい。また、ユーザは、第1の部位の位置と姿勢と、第2の部位の位置と姿勢と、を所望の位置と姿勢にセットしつつ、横目でモニター画面も見る、といった不自由が生じなくて済む。
【0016】
記憶部には、オブジェクトの位置と姿勢の履歴と、仮想視点の位置の履歴と、仮想視線の向きの履歴と、が記憶されてもよい。
そして、画像生成部は、記憶されたオブジェクトの位置と姿勢の履歴と、記憶された仮想視点の位置の履歴と、記憶された仮想視線の向きの履歴と、に基づいて、変化を始める前にオブジェクトを見た様子を表す画像を生成してもよい。
【0017】
本発明によれば、オブジェクトを見た画像を表示するために必要な各種パラメータの履歴が記憶されるので、画像処理装置は、任意の過去の時刻においてオブジェクトを見た画像を表示することができる。
【0018】
変化部は、検知された第1の部位の位置と姿勢の各変化量の所定倍数量だけ、記憶される仮想視点の位置と仮想視線の向きとを変化させ、検知された第2の部位の位置と姿勢の相対的な各変化量の所定倍数量だけ、記憶されるオブジェクトの位置と姿勢とを変化させてもよい。
【0019】
つまり、第1の部位の位置の変化量、第1の部位の姿勢の変化量、第2の部位の位置の変化量、及び、第2の部位の姿勢の変化量が、オブジェクトの位置の変化量、オブジェクトの姿勢の変化量、仮想視点の位置の変化量、及び、仮想視線の向きの変化量に忠実に再現されなくてもよい。本発明によれば、例えば、第1の部位を90度傾ければ、オブジェクトがその2倍の180度傾く、といった仕様を実現することができる。なお、所定倍数は2倍に限定されるわけではなく、所定倍数を任意の値に設定することが可能である。
【0020】
変化部は、検知された第1の部位の位置と姿勢とに基づいて第1の部位の表面の形状を近似する平面を求め、当該求められた平面を用いてオブジェクトの位置と姿勢とを決定してもよい。
【0021】
本発明によれば、画像処理装置は第1の部位の正確な形状を判別しなくてもよいので、画像処理がより簡略化される。
【0022】
変化部は、検知された第2の部位の位置と姿勢とに基づいて第2の部位の表面の形状を近似する平面を求め、当該求められた平面を用いて仮想視点の位置と仮想視線の向きとを決定してもよい。
【0023】
本発明によれば、画像処理装置は第2の部位の正確な形状を判別しなくてもよいので、画像処理がより簡略化される。
【0024】
第1の部位はユーザの手であり、第2の部位はユーザの頭であってもよい。
また、検知部は、現実空間におけるユーザの手の位置と姿勢と、ユーザの頭の位置と姿勢と、を検知してもよい。
そして、変化部は、検知された手の位置と姿勢とに基づいて、記憶されるオブジェクトの位置と姿勢とを変化させ、検知された頭の、手に対する相対的な位置と姿勢とに基づいて、記憶される仮想視点の位置と記憶される仮想視線の向きとを変化させてもよい。
【0025】
すなわち、ユーザは、手と頭を動かすだけで、様々なアングルからオブジェクトを眺めた様子を見ることができる。その際、ユーザは、コントローラ、キーボード、マウスといった入力装置を扱わなくてもよく、手と頭を動かすという直感的な動作をするだけでよい。
【0026】
本発明のその他の観点に係る画像処理方法は、記憶部、検知部、変化部、画像生成部、表示部を有する画像処理装置にて実行される画像処理方法であって、検知ステップ、変化ステップ、画像生成ステップ、表示ステップを備える。
記憶部には、仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される。
検知ステップでは、検知部が、現実空間におけるユーザの第1の部位の位置と姿勢と、当該ユーザの第2の部位の位置と姿勢と、を検知する。
変化ステップでは、変化部が、検知された第1の部位の位置と姿勢とに基づいて、記憶されるオブジェクトの位置と姿勢とを変化させ、検知された第2の部位の第1の部位に対する相対的な位置と姿勢とに基づいて、記憶される仮想視点の位置と記憶される仮想視線の向きとを変化させる。
画像生成ステップでは、画像生成部が、仮想視点の位置から仮想視線の向きにオブジェクトを見た様子を表す画像を生成する。
表示ステップでは、表示部が、生成された画像を現実空間におけるモニター画面に表示する。
【0027】
本発明によれば、ユーザは、仮想空間に配置されるオブジェクトの見方を簡単な操作で変えることができる。
【0028】
本発明のその他の観点に係るプログラムは、コンピュータを、記憶部、検知部、変化部、画像生成部、表示部として機能させる。
記憶部には、仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される。
検知部は、現実空間におけるユーザの第1の部位の位置と姿勢と、当該ユーザの第2の部位の位置と姿勢と、を検知する。
変化部は、検知された第1の部位の位置と姿勢とに基づいて、記憶されるオブジェクトの位置と姿勢とを変化させ、検知された第2の部位の第1の部位に対する相対的な位置と姿勢とに基づいて、記憶される仮想視点の位置と記憶される仮想視線の向きとを変化させる。
画像生成部は、仮想視点の位置から仮想視線の向きにオブジェクトを見た様子を表す画像を生成する。
表示部は、生成された画像を現実空間におけるモニター画面に表示する。
【0029】
本発明によれば、コンピュータを上述のように動作する画像処理装置として機能させることができる。
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0030】
本発明によれば、仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにするために好適な画像処理装置、画像処理方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【0031】
【図1】本発明の画像処理装置が実現される典型的な情報処理装置の概要構成を示す図である。
【図2】情報処理装置の外観を模式的に表す図である。
【図3】画像処理装置の機能的な構成を説明するための図である。
【図4】(a)仮想空間に配置されるオブジェクトと仮想視点と仮想視線を説明するための図である。(b)仮想視線の延長上の点からオブジェクトを見た様子を表す図である。
【図5】(a)現実空間における第1の部位と第2の部位を説明するための図である。(b)第1の部位の近似平面を表す図である。(c)第2の部位の近似平面を表す図である。
【図6】(a)初期状態におけるオブジェクトを表す図である。(b)オブジェクトの位置を移動する様子を表す図である。(c)オブジェクトの姿勢を変化させる様子を表す図である。
【図7】(a),(b)は、第1の部位の姿勢の変化量と、オブジェクトの姿勢の変化量と、の関係を示す図である。
【図8】(a)初期状態における仮想視点と仮想視線を表す図である。(b)仮想視点を移動する様子を表す図である。(c)仮想視線を移動する様子を表す図である。
【図9】(a),(b)は、第2の部位の第1の部位に対する相対的な姿勢の変化量と、仮想視線の変化量と、の関係を示す図である。
【図10】画像処理を説明するためのフローチャートである。
【図11】ユーザ視線の向きの履歴の構成例を示す図である。
【図12】(a),(b)は、現実空間におけるユーザの第1の部位と第2の部位とモニターとの位置関係を模式的に表す図である。
【図13】(a),(b),(c)は、現実空間におけるユーザの第1の部位と第2の部位と、仮想空間に配置されるオブジェクトを見た様子と、の関係を説明するための図である。
【発明を実施するための形態】
【0032】
本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0033】
(実施形態1)
図1は、本発明の画像処理装置の機能を果たす典型的な情報処理装置100の概要構成を示す模式図である。
【0034】
情報処理装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、ハードディスク104と、インターフェース105と、外部メモリ106と、入力装置107と、DVD−ROM(Digital Versatile Disk - Read Only Memory)ドライブ108と、画像処理部109と、音声処理部110と、NIC(Network Interface Card)111と、を備える。
【0035】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着し、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態の画像処理装置が実現される。
【0036】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、ALU(Arithmetic Logic Unit)(図示せず)を用いて、レジスタという高速アクセスが可能な記憶領域に記憶されたデータの加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、CPU 101は、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行うことができるコプロセッサを備える。
【0037】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録される。IPLがCPU 101によって実行されることにより、DVD−ROMに記録されたプログラムがRAM 103に読み出され、CPU 101による起動処理が開始される。
【0038】
RAM 103は、データやプログラムを一時的に記憶するためのもので、例えば、DVD−ROMから読み出されたプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0039】
ハードディスク104は、情報処理装置100全体の動作制御に必要なオペレーティングシステム(OS)のプログラムや各種のゲームデータ等を格納する。CPU 101は、ハードディスク104に記憶される情報を随時書き換えることができる。
【0040】
インターフェース105を介して着脱自在に接続された外部メモリ106には、ゲームのプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワークを用いた他の装置との通信のログ(記録)のデータなどが記憶される。CPU 101は、外部メモリ106に記憶される情報を随時書き換えることができる。また、情報処理装置100は、インターフェース105を介して、増設用のハードディスクを接続することができる。
【0041】
入力装置107は、図2に示すように、ゲーム画面が表示されるモニター250付近に設置される。入力装置107は、ユーザの様子などを撮影するカメラを備える。CPU 101は、カメラによって撮影された画像を表す画像データを解析し、画像に含まれるユーザの部位(例えばユーザの手、足、顔など)を判別する。画像解析の手法には、例えば、パターン認識による解析、特徴点の抽出による解析、空間周波数の算出による解析などがある。カメラによる撮影は、ゲーム中に継続的に行われる。
【0042】
また、入力装置107は、入力装置107からユーザ(もしくはユーザの任意の部位)までの距離を測定する深度センサーを備える。例えば、入力装置107は、赤外線を周囲に照射し、この赤外線の反射波を検知する。そして、入力装置107は、照射波と反射波との位相差や、赤外線が発射されてからその反射光が検知されるまでの時間(飛行時間)に基づいて、照射波の発射口から照射波を反射した物体までの距離(以下「深度」ともいう。)を求める。深度センサーによる深度の検知は、赤外線を発射可能な方向のそれぞれについて、所定の時間間隔で繰り返し行われる。
【0043】
深度センサーを備えることにより、情報処理装置100は、現実空間に配置された物体の3次元的な位置や形状をより詳しく把握することが可能になる。具体的には、CPU 101が第1の時刻に取得された第1の画像データと第2の時刻に取得された第2の画像データとを画像解析した結果、第1の画像データと第2の画像データの両方にユーザの頭部を表す部分が含まれていることを判別したとする。CPU 101は、第1の画像データ内における頭部の位置と、第2の画像データ内における頭部の位置と、の変化から、カメラから見てユーザの頭部が上下左右のどの方向にどの程度動いたのかを判別することができるだけでなく、第1の画像データにおける頭部の深度と、第2の画像データ内における頭部の深度と、の変化から、カメラから見てユーザの頭部が前後のどちらの方向にどの程度動いたのか(どの程度カメラに近づいたりカメラから遠ざかったりしたのか)を判別することもできる。
【0044】
このように、CPU 101は、入力装置107が備えるカメラによって撮影された画像と、入力装置107が備える深度センサーによって測定された距離(深度)と、に基づいて、いわゆるモーションキャプチャーのように、現実空間におけるユーザの3次元的な動きをデジタル化して把握することができる。
【0045】
例えば、ボーリングゲームにおいて、プレイヤーがモニター250画面の前(つまり入力装置107の前)でボールを投げるモーションをすると、CPU 101は、プレイヤーがボールを投げるモーションを行ったことを認識することができる。そして、CPU 101は、認識したモーションに応じて、ゲームを進行することができる。つまり、プレイヤーは、タッチパッド型のコントローラなどを持つことなく、自分の体を自由に動かすことによって、所望の指示を入力することができる。入力装置107は、プレイヤーからの指示入力を受け付ける、いわゆる“コントローラ”の役割を果たす。
【0046】
撮影された画像を表すデジタルの画像データは、複数の画素の集合である。典型的には、画素のそれぞれに三原色(R,G,B)の強度を表す値が対応付けられる。画像深度センサーにより各方向の深度が測定されるということは、実質的には、1つの画素が、赤(R),緑(G),青(B)に加えて、深度(D)というもう一次元を用いて表されることを意味する。
【0047】
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データなどが予め記録される。DVD−ROMドライブ108は、CPU 101の制御によって、装着されたDVD−ROMに記録されたプログラムやデータを読み出す。CPU 101は、読み出されたプログラムやデータをRAM 103等に一時的に記憶する。
【0048】
画像処理部109は、DVD−ROMから読み出されたデータをCPU 101や画像処理部109が備える画像演算プロセッサ(図示せず)によって加工処理した後、画像処理部109が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され、画像処理部109に接続されるモニター250へ出力される。
【0049】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。また、画像演算プロセッサは、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0050】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報に従って、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【0051】
また、CPU 101と画像演算プロセッサがDVD−ROMに予め格納された画像データをフレームメモリに書き込むことによって、ゲームの様子などを画面に表示することができる。画像データをフレームメモリに書き込み表示させる処理を、定期的なタイミング(典型的には垂直同期割り込み(VSYNC)のタイミング)で繰り返し行うことにより、モニター250にアニメーションを表示することが可能になる。
【0052】
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、スピーカーから出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲などの音声データを生成し、生成された音声データをデコードすることにより、様々な音声をスピーカーから出力させる。
【0053】
音声処理部110は、DVD−ROMに記録された音声データがMIDIデータである場合には、音声処理部110が有する音源データを参照して、MIDIデータをPCMデータに変換する。また、音声処理部110は、ADPCM(Adaptive Differential Pulse Code Modulation)形式やOgg Vorbis形式等により圧縮された音声データである場合には、圧縮された音声データをPCMデータに変換する。PCMデータは、サンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカーに出力することにより、音声出力が可能となる。
【0054】
NIC 111は、情報処理装置100をインターネット等のコンピュータ通信網に接続する。NIC 111は、例えば、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)と、から構成される。
【0055】
次に、上記構成を有する情報処理装置100により実現される、本実施形態の画像処理装置300の機能的な構成等について説明する。画像処理装置300は、現実空間におけるユーザの位置や姿勢に応じて、仮想空間に配置されるオブジェクトの位置や姿勢を変化させた画像をモニター250に表示する。ユーザは、まるで現実のプラモデルを手に持って回しながら眺めるかのように、仮想空間に配置されるオブジェクトを様々な角度から眺めることができるのである。以下詳述する。
【0056】
図3は、画像処理装置300の機能的な構成を示す図である。画像処理装置300は、記憶部301、検知部302、変化部303、画像生成部304、表示部305を備える。
【0057】
記憶部301は、(1)3次元の仮想空間に配置されるオブジェクトの位置と姿勢と、(2)この仮想空間に配置される仮想視点の位置と、(3)仮想視点の位置からこの仮想空間を見る仮想視線の向きと、を記憶する。RAM 103が記憶部301として機能する。
【0058】
図4(a)に、仮想空間に配置されるオブジェクト400と仮想視点450と仮想視線470とを模式的に示す。仮想空間には、グローバル座標系(XYZ座標系)が予め定義される。図4では、グローバル座標系としてデカルト座標系が用いられているが、極座標系など他の種類の座標系を用いてグローバル座標系が定義されてもよい。
【0059】
仮想空間におけるオブジェクト400の位置は、グローバル座標系における座標値で表される。オブジェクト400の位置として、オブジェクト400の代表点401の座標値が用いられる。代表点401は、例えば、オブジェクト400の重心である。
【0060】
図4(b)に、仮想視線470の延長上の点からオブジェクト400を見た様子の例を示す。仮想空間におけるオブジェクト400の姿勢は、グローバル座標系におけるベクトル402と、基準方向403からの傾きの角度αと、によって表される。本実施形態では、基準方向403はZ軸方向である。
【0061】
仮想視点450の位置は、グローバル座標系における座標値で表される。仮想視点450の位置は、仮想空間を写す仮想カメラが配置される位置であり、ユーザからの指示により、もしくは、所定のアルゴリズムにより、変化しうる。
【0062】
仮想視線470の向きは、グローバル座標系におけるベクトルで表される。仮想視線470の向きは、仮想空間を写す仮想カメラの向きであり、ユーザからの指示により、もしくは、所定のアルゴリズムにより、変化しうる。
【0063】
CPU 101は、ユーザからの指示により、もしくは、所定のアルゴリズムにより、RAM 103に記憶されるオブジェクトの位置と姿勢と、仮想視点450の位置と、仮想視線470の向きと、を随時更新する。
【0064】
検知部302は、現実空間におけるユーザの第1の部位の位置と姿勢と、このユーザの第2の部位の位置と姿勢と、を検知する。CPU 101と入力装置107が協働して、検知部302として機能する。
【0065】
図5(a)に、現実空間におけるユーザの第1の部位510と第2の部位520を示す。本実施形態では、ユーザの第1の部位510は“手”(左手と右手のどちらでもよい)であり、ユーザの第2の部位520は“頭”である。
【0066】
CPU 101は、入力装置107によって取得された画像データの画像解析結果と、入力装置107によって検知された第1の部位510の深度(入力装置107が備える赤外線発射口からユーザの手までの距離)と、に基づいて、現実空間において第1の部位510がどの位置にどのような姿勢で配置されているかを判別する。
【0067】
第1の部位510の位置は、現実空間に定義される座標系(xyz座標系)における座標値で表される。
【0068】
第1の部位510の姿勢は、以下に示すように、近似平面を用いて特定される。図5(b)は、第1の部位510の姿勢を説明するための図である。
【0069】
まず、CPU 101は、ユーザの手の表面の形状を近似する平面(近似平面)512を求める。例えば、CPU 101は、画像解析等によって判別された手のひら(もしくは手の甲)の表面上の点を所定個数抽出し、抽出した各点の現実空間における座標値を取得する。そして、CPU 101は、最小自乗法などを用いて、抽出した各点による近似平面512を計算する。
【0070】
現実空間に定義される座標系(xyz座標系)において、近似平面512は、パラメータa1,b1,c1,r1を用いて、[数1]で表される。
【0071】
a1・x + b1・y + c1・z = r1 ・・・[数1]
【0072】
次に、CPU 101は、近似平面512上の単位ベクトルであって、画像認識等によって判別された手の指が伸びる方向のベクトル511を求める。このベクトル511の向きが、第1の部位510の向きとなる。
【0073】
更に、CPU 101は、現実空間における鉛直方向513と、近似平面512の法線ベクトル514と、のなす角度αを求める。鉛直方向513と、現実空間に定義される座標系における1つの軸の向き(本実施形態ではz軸方向)と、を一致させると良い。
【0074】
法線ベクトル514は、[数1]で表されるパラメータa1,b1,c1を用いて、[数2]のように定義される。
【0075】
法線ベクトル514 : (a1,b1,c1) ・・・[数2]
【0076】
ベクトル511の向きが“手がどちらを向いているか”を表し、角度αが“どのくらい手が傾いているか”を表す。従って、ベクトル511と角度αが求まれば、第1の部位510の姿勢が特定されたことになる。
【0077】
同様に、CPU 101は、入力装置107によって取得された画像データの画像解析結果と、入力装置107によって検知された第2の部位520の深度(入力装置107が備える赤外線発射口からユーザの頭までの距離)と、に基づいて、現実空間において第2の部位520がどの位置にどのような姿勢で配置されているかを判別する。
【0078】
第2の部位520の位置は、現実空間に定義される座標系における座標値で表される。
【0079】
第2の部位520の姿勢は、第1の部位510の姿勢を求める手法と同様に、近似平面を用いて特定される。図5(c)は、第2の部位520の姿勢を説明するための図である。
【0080】
まず、CPU 101は、ユーザの顔の表面の形状を表す近似平面522を求める。例えば、CPU 101は、画像解析等によって判別された顔の表面上の点を所定個数抽出し、抽出した各点の現実空間における座標値を取得する。そして、CPU 101は、最小自乗法などを用いて、抽出した各点による近似平面522を計算する。
【0081】
現実空間に定義される座標系(xyz座標系)において、近似平面522は、パラメータa2,b2,c2,r2を用いて、[数3]で表される。
【0082】
a2・x + b2・y + c2・z = r2 ・・・[数3]
【0083】
次に、CPU 101は、第2の部位520の向きを求める。第2の部位520の向きは、近似平面522の法線ベクトル521の向きで表される。法線ベクトル521は、[数4]で表されるパラメータa2,b2,c2を用いて、[数4]のように定義される。
【0084】
法線ベクトル521 : (a2,b2,c2) ・・・[数4]
【0085】
第2の部位520の向き、つまりユーザの頭(もしくは顔)の向きは、現実空間におけるユーザの視線(以下「ユーザ視線」という。)の向きと推定される。
【0086】
更に、CPU 101は、現実空間における水平方向を表す直線523と、画像解析等によって判別された左目と右目とを通過する直線524と、のなす角度βを求める。直線524は、画像解析等によって判別された左耳と右耳とを通過する直線でもよい。
【0087】
法線ベクトル521の向きが“顔がどちらを向いているか”を表し、角度βが“どのくらい頭が傾いているか”を表す。従って、法線ベクトル521と角度βが求まれば、第2の部位520の姿勢が特定されたことになる。
【0088】
なお、ここで説明した第1の部位510の姿勢と第2の部位520の姿勢を特定する手法は一例に過ぎず、他の手法を用いてこれらの姿勢を特定してもよい。例えば、近似平面512,522を求める代わりに、手の形状を近似する近似曲面と顔の形状を近似する近似曲面を求めてもよい。この場合、近似曲面の重心位置における法線ベクトルを、手の向き又は頭の向きとすればよい。
【0089】
次に、変化部303は、検知部302により検知された第1の部位510の位置と姿勢とに基づいて、記憶部301に記憶されるオブジェクト400の位置と姿勢とを変化させる。また、変化部303は、検知部302により検知された第2の部位520の第1の部位510に対する相対的な位置と姿勢とに基づいて、記憶部301に記憶される仮想視点450の位置と仮想視線470の向きとを変化させる。CPU 101とRAM 103が協働して、変化部303として機能する。
【0090】
まず、変化部303がオブジェクト400の位置と姿勢を変化させる処理について説明する。
【0091】
初期状態において、CPU 101は、仮想空間内の所定の位置に所定の姿勢でオブジェクト400を配置する。例えば、CPU 101は、仮想空間に定義されるグローバル座標系における原点の位置へ、水平方向に、オブジェクト400を配置する。
【0092】
例えば、図6(a)に示すように、CPU 101は、初期状態のオブジェクト400の代表点の位置401を、グローバル座標系における原点の位置とし、初期状態のオブジェクト400の向きを表すベクトル402の向きを、グローバル座標系におけるX軸の正の向きとする。この例では、オブジェクト400は飛行機のモデルであるが、CPU 101は、初期状態では飛行機の翼が水平になるように配置している。また、CPU 101は、現実空間における近似平面512を、仮想空間に定義されるグローバル座標系におけるX−Y平面と対応付ける。
【0093】
検知された第1の部位510(本実施形態ではユーザの手)の位置が変化すると、図6(b)に示すように、CPU 101は、第1の部位510の位置の変化量に応じて、仮想空間内におけるオブジェクト400の代表点401を移動する。つまり、現実空間においてユーザが手を平行移動させると、仮想空間においてオブジェクト400も平行移動する。
【0094】
CPU 101は、現実空間における第1の部位510の位置の変化量ΔPrealが大きいほど、仮想空間における代表点401の移動量ΔPvirtualを大きくする。典型的には、変化量ΔPrealと移動量ΔPvirtualは、比例関係にある。
【0095】
また、検知される第1の部位510の姿勢が変化すると、CPU 101は、第1の部位510の姿勢の変化量に応じて、仮想空間におけるオブジェクト400の姿勢を変化させる。
【0096】
例えば、第1の部位510の近似平面512が角度αだけ傾くと、図6(c)に示すように、CPU 101は、オブジェクト400を角度αだけ傾ける。つまり、現実空間においてユーザが手を傾けると、仮想空間においてオブジェクト400が同じ量だけ傾く。ユーザは、仮想空間内のオブジェクト400を傾けたときの様子を眺めたい場合には、同じ量だけ手を傾ければよい。
【0097】
ここで、CPU 101は、第1の部位510の近似平面512が角度αだけ傾いた場合にオブジェクト400を傾ける量を、角度αではなく、角度αを所定倍した量としてもよい。すなわち、現実空間における第1の部位510の近似平面512の傾きαrealと、仮想空間におけるオブジェクト400の傾きαvirtualと、の間には、[数5]の関係が成り立つ。
【0098】
αvirtual = C・αreal ・・・[数5]
ただし、Cは倍率を表し、ゼロでない実数である。
【0099】
C=1の場合、図6(c)に示すように、現実空間における手の傾き量と同じ量だけ、仮想空間におけるオブジェクト400が傾く。
【0100】
0<C<1の場合、図7(a)に示すように、仮想空間におけるオブジェクト400の傾き量は、現実空間における手の傾き量よりも少ない。つまり、姿勢変化の感度がより鈍くなる。
【0101】
C>1の場合、図7(b)に示すように、仮想空間におけるオブジェクト400の傾き量は、現実空間における手の傾き量よりも多い。つまり、姿勢変化の感度がより敏感になる。
【0102】
なお、大抵の場合、人間が自分の手を360度近く(もしくは360度以上)ねじることは難しいため、オブジェクト400をどの方向からも簡単に眺めることができる仕様にしたい場合、「C=2」程度にすることが望ましい。この場合、手を半回転させれば、オブジェクト400は一回転することになる。
【0103】
図6(c)は、Y軸を回転軸にしてオブジェクト400を回転させたとき、すなわち指先が上になるようにユーザが手を傾けたときの様子を表しているが、任意の軸を回転軸にすることができ、また、任意の点を回転の中心点にすることができる。
【0104】
次に、変化部303が仮想視点450の位置と仮想視線470の向きを変化させる処理について説明する。
【0105】
初期状態において、CPU 101は、仮想空間の所定の位置に仮想視点450を配置し、所定の方向を仮想視線470の向きに設定する。
【0106】
例えば、図8(a)に示すように、CPU 101は、位置(X0,Y0,Z0)を初期状態の仮想視点450の位置とし、初期状態の仮想視点450の位置から初期状態のオブジェクト400の代表点401への向きを、初期状態の仮想視線470の向きとする。
【0107】
検知された第2の部位520(本実施形態ではユーザの頭)の第1の部位510に対する相対的な位置が変化すると、図8(b)に示すように、CPU 101は、第2の部位520の相対位置の変化量に応じて、仮想空間における仮想視点450の位置を移動する。つまり、現実空間においてユーザが頭の手に対する相対位置を移動させると、仮想空間において仮想視点450が移動する。
【0108】
CPU 101は、現実空間における第2の部位520の第1の部位510に対する相対位置の変化量ΔQrealが大きいほど、仮想空間における仮想視点450の移動量ΔQvirtualを大きくする。典型的には、変化量ΔQrealと移動量ΔQvirtualは、比例関係にある。
【0109】
また、検知される第2の部位520の姿勢が変化すると、CPU 101は、第2の部位520の第1の部位510に対する相対的な姿勢の変化量に応じて、仮想空間における仮想視線470の姿勢を変化させる。
【0110】
例えば、第2の部位520の近似平面522が角度βだけ傾くと、図8(c)に示すように、CPU 101は、仮想視線470の向きを角度βだけ傾ける。つまり、現実空間においてユーザが頭を傾けると、仮想空間において仮想視線470が同じ量だけ傾く。ユーザは、仮想空間内のオブジェクト400を違う角度から眺めたい場合には、同じ量だけ頭を傾ければよい。
【0111】
ここで、CPU 101は、第2の部位520の近似平面522が角度βだけ傾いた場合に仮想視線470を傾ける量を、角度βではなく、角度βを所定倍した量としてもよい。すなわち、現実空間における第2の部位520の近似平面522の傾きβrealと、仮想空間における仮想視線470の傾きβvirtualと、の間には、[数6]の関係が成り立つ。
【0112】
βvirtual = D・βreal ・・・[数6]
ただし、Dは倍率を表し、ゼロでない実数である。
【0113】
D=1の場合、図8(c)に示すように、現実空間における頭の傾き量と同じ量だけ、仮想空間における仮想視線470が傾く。
【0114】
0<D<1の場合、図9(a)に示すように、仮想空間における仮想視線470の傾き量は、現実空間における頭の傾き量よりも少ない。つまり、仮想視線470の変化の感度がより鈍くなる。
【0115】
D>1の場合、図9(b)に示すように、仮想空間における仮想視線470の傾き量は、現実空間における頭の傾き量よりも多い。つまり、仮想視線470の変化の感度がより敏感になる。
【0116】
次に、画像生成部304は、仮想視点450の位置から仮想視線470の向きにオブジェクト400を見た様子を表す画像を生成する。CPU 101と画像処理部109が協働して、画像生成部304として機能する。
【0117】
表示部305は、画像生成部304によって生成された画像をモニター250に表示する。CPU 101と画像処理部109が協働して、表示部305として機能する。
【0118】
上述のように、オブジェクト400の位置とオブジェクト400の姿勢と仮想視点450の位置と仮想視線470の向きは、現実空間におけるユーザの第1の部位510の位置と姿勢と、第2の部位520の位置と姿勢の変化とに応じて変わるので、ユーザは、様々な位置から様々な方向にオブジェクト400を眺めた様子を見ることができる。ユーザは、所望のアングルになるように、手と頭を動かせばよい。例えば、オブジェクト400が飛行機のモデルであるとき、ユーザが飛行機を下から(車輪が出る側から)見たいときには、手の姿勢を裏返すように変えるか、もしくは、手を静止したまま手を下からのぞき込むような格好をすればよい。また、例えば、ユーザが飛行機を前から(コックピット側から)見たいときには、手先を顔に向けて伸ばすように手の姿勢を変えるか、もしくは、手を静止したまま爪先からのぞき込むような格好をすればよい。
【0119】
次に、画像処理装置300の上記各部が実行する画像処理について、図10のフローチャートを用いて説明する。
【0120】
まず、CPU 101は、仮想空間におけるオブジェクト400の位置と姿勢と、仮想視点450の位置と、仮想視線470の向きを、それぞれ初期値に設定する(ステップS1001)。
【0121】
CPU 101は、入力装置107を制御して、現実空間におけるユーザの第1の部位510の位置と姿勢と、ユーザの第2の部位520の位置と姿勢と、を取得する(ステップS1002)。
【0122】
CPU 101は、ステップS1002で取得した第1の部位510の位置又は姿勢が、前回取得した第1の部位510の位置又は姿勢と比べて変化したか否かを判別する(ステップS1003)。
【0123】
例えば、CPU 101は、入力装置107を制御して、第1の部位510の位置と姿勢、及び、第2の部位520の位置と姿勢を、所定の定期的なタイミングで繰り返し検知し、所定回数分の検知結果の履歴をRAM 103に記憶する。CPU 101は、第1のタイミングで検知しRAM 103に記憶した第1の部位510の位置と姿勢及び第2の部位520の位置と姿勢と、第1のタイミングより後の第2のタイミングで検知しRAM 103に記憶した第1の部位510の位置と姿勢及び第2の部位520の位置と姿勢と、を比較する。
【0124】
第1の部位510の位置又は姿勢が変化していないと判別された場合(ステップS1003;NO)、CPU 101は、後述のステップS1005の処理に移る。一方、第1の部位510の位置又は姿勢が変化したと判別された場合(ステップS1003;YES)、CPU 101は、ステップS1002で取得した第1の部位510の位置と姿勢に基づいて、オブジェクト400の位置又は姿勢を変化させる(ステップS1004)。CPU 101は、変化させたオブジェクト400の位置を示す情報と、変化させたオブジェクト400の姿勢を示す情報を、RAM 103に記憶する。
【0125】
次に、CPU 101は、ステップS1002で取得した第2の部位520の第1の部位510に対する相対的な位置(以下「相対位置」という。)、又は、ステップS1002で取得した第2の部位520の第1の部位510に対する相対的な姿勢(以下「相対姿勢」という。)が、前回取得した第2の部位520の相対位置又は相対姿勢と比べて変化したか否かを判別する(ステップS1005)。
【0126】
第2の部位520の相対位置又は相対姿勢が変化していないと判別された場合(ステップS1005;NO)、CPU 101は、後述のステップS1007の処理に移る。一方、第2の部位520の相対位置又は相対姿勢が変化したと判別された場合(ステップS1005;YES)、CPU 101は、今回取得した相対位置と相対姿勢に基づいて、仮想視点450の位置又は仮想視線470の向きを変化させる(ステップS1006)。CPU 101は、変化させた仮想視点450の位置を示す情報と、変化させた仮想視線470の向きを示す情報を、RAM 103に記憶する。
【0127】
CPU 101は、オブジェクト400の位置と姿勢と、仮想視点450の位置と、仮想視線470の向きと、に基づいて、仮想視点450の位置から仮想視線470の向きへオブジェクト400を見た様子を表す画像を生成する(ステップS1007)。
【0128】
そして、CPU 101は、ステップS1007で生成した画像をモニター250に表示する(ステップS1008)。
【0129】
CPU 101は、ステップS1002〜S1008の処理を繰り返し行う。この結果、ユーザが手や頭を動かすとそれに応じてオブジェクト400の位置や姿勢が変化する様子が、モニター250に映し出される。
【0130】
本実施形態によれば、画像処理装置300は、仮想空間に配置されたオブジェクト400の位置や姿勢をユーザが容易に且つ自由に動かして見ることができる。例えば、ユーザは、現実空間で模型を手にとって様々な角度から眺めるかのように、仮想空間に配置されたオブジェクト400を動かして眺めることができる。その際、ユーザは、コントローラのボタンを押すような面倒な操作を必要とせず、自分の手をオブジェクト400に見立てて直感的に位置や姿勢を変えることができる。
【0131】
(実施形態2)
次に、本発明のその他の実施形態について説明する。上記実施形態では、オブジェクト400の位置と姿勢、及び、仮想視点450の位置と仮想視線470の向きが、ユーザの第1の部位510の位置の変化と姿勢の変化、及び、第2の部位520の位置の変化と姿勢の変化に応じて直ちに変化する様子がモニター250に表示される。ところで、現実空間における第1の部位510と第2の部位520とモニター250との位置関係によっては、ユーザは、第1の部位510や第2の部位520を動かしつつモニター250を眺めることが困難になる可能性がある。そこで、本実施形態では、画像処理装置300は、オブジェクト400の位置と姿勢、及び、仮想視点450の位置と仮想視線470の向きを直ちに変化させるのではなく、第1の部位510の位置の変化と姿勢の変化、又は、第2の部位520の位置の変化が発生してから時間差を置いて、オブジェクト400の位置と姿勢、及び、仮想視点450の位置と仮想視線470の向きを変化させることができるようにしている。以下詳述する。
【0132】
変化部303は、検知部302によって検知された第2の部位520の位置と姿勢とに基づいて、ユーザの視点から現実世界を見るときの視線(ユーザ視線)の位置と向きを推定する。
【0133】
上述したように、CPU 101は、第2の部位520の表面の形状を表す近似平面522の法線ベクトル521の向きを、ユーザ視線の向きと推定する。
【0134】
また、CPU 101は、画像認識等によって判別された左目と右目を結ぶ線分の中点の座標を、現実空間におけるユーザ視線の位置と推定する。
【0135】
画像生成部304は、ユーザ視線の位置又は向きが変化を始めてから所定時間内に、ユーザ視線がモニター250の画像表示領域と交差した場合、ユーザ視線がモニター250と交差している間、変化を始める前に記憶部301に記憶されていた、オブジェクト400の位置と姿勢と、仮想視点450の位置と、仮想視線470の向きと、に基づいて、オブジェクト400を見た様子を表す画像を生成する。
【0136】
CPU 101は、オブジェクト400の位置と姿勢と、仮想視点450の位置と、仮想視線470の向きのそれぞれについて、直近の所定回数分の判別結果の履歴をRAM 103に記憶する。
【0137】
図11は、仮想視線470の向きの履歴の構成例を示す図である。
図12(a),(b)は、現実空間におけるユーザの第1の部位510と第2の部位520とモニター250との位置関係を模式的に表す図である。本図は、ユーザの真上から(頭上から)見下ろしたときの様子を表している。
【0138】
図11では、RAM 103には、直近のn回分(nは2以上の整数)の判別結果の履歴が記憶されている。時刻は、第2の部位520の位置と姿勢が検知部302によって検知された時刻である。ユーザ視線の向きは、ユーザ視線の位置1210とモニター250の表示領域の中心1230とを結ぶ線分1240と、近似平面522の法線ベクトル521の向きと、のなす角度γで表される。
【0139】
例えば、時刻T(n−2)までの向きの変位γ−γ、γ−γ、・・・、γn−2−γn−3がいずれも所定の閾値より小さかったものの、時刻T(n−2)から時刻T(n−1)までの間の向きの変位γn−1−γn−2が所定の閾値より大きかった場合、CPU 101は、時刻T(n−1)にユーザが第2の部位520を動かし始めたと判断する。つまり、時刻T(n−1)が、ユーザ視線の向きが変化し始めた時刻と推定される。
【0140】
ユーザ視線がモニター250の画像表示領域と交差する場合とは、図12(b)に示すように、ユーザ視線の位置1210から法線ベクトル521の向きに延伸した半直線1250が、モニター250と交差する場合を指す。
【0141】
CPU 101は、現実空間におけるモニター250の四隅の座標値を予めRAM 103に記憶しておく。そして、CPU 101は、半直線1250とモニター250の表面を含む平面との交点が、モニター250の四隅によって作られる矩形の中に入る場合に、ユーザ視線がモニター250の画像表示領域に含まれる(つまり、ユーザがモニターに表示される画像を見ている)と判別する。それ以外の場合、CPU 101は、ユーザ視線がモニター250の画像表示領域に含まれない(つまり、ユーザがモニターに表示される画像を見ていない)と判別する。
【0142】
上述のステップS1007において、CPU 101は、ユーザ視線がモニター250の画像表示領域と交差する場合、ユーザ視線がモニター250と交差している間、変化が始まる前の仮想視点450の位置から、変化が始まる前の仮想視線470の向きへ、変化が始まる前の位置と姿勢で配置されたオブジェクト400を見た様子を表す画像を生成する。そして、ステップS1008において、CPU 101は、生成した画像をモニター250に表示する。
【0143】
例えば、時刻T(n−2)までの向きの変位γ−γ、γ−γ、・・・、γn−2−γn−3がいずれも所定の閾値より小さかったものの、時刻T(n−2)から時刻T(n−1)までの間の向きの変位γn−1−γn−2が所定の閾値より大きかった場合、CPU 101は、ユーザが第2の部位520を動かし始めたと判断した時刻T(n−1)に対応付けられてRAM 103に記憶されている、オブジェクト400の位置と姿勢を示す情報と、仮想視点450の位置を示す情報と、仮想視線470の向きを示す情報と、に基づいて、画像を生成する。
【0144】
仮に、手の位置の変化と姿勢の変化と、頭の位置の変化と姿勢の変化と、に直ちに連動するように、オブジェクト400の位置と姿勢を変化させるとしたとき、現実空間においてモニター250と手が離れていると、ユーザのとって、手を動かしながらモニター250を見る、という動作がやりづらいことがある。
例えば、図13(a)に示すように、ユーザが現実空間で第1の部位510と第2の部位520を配置し、且つ、ユーザの視線方向や矢印YA方向であるときに、オブジェクト400がモニター250の表示領域の中央に配置されたとする。ここで、ユーザがモニター250を正面から眺めようと向き直り、視線方向が矢印YB方向になると、第2の部位520の位置もしくは姿勢が変化するため、仮想視点450もしくは仮想視線470が変化してしまう。すると、モニター250には、図13(b)に示すように、仮想視点450もしくは仮想視線470が変化した後の様子が映ることになり、結果としてユーザはオブジェクト400がモニター250の中央に表示されているときの様子を見られないことになってしまう。この問題を回避するために、モニター250を横目でチラチラと見続けることは、ユーザにとって大きな負担であり、またこのような行為にも限界がある。
そこで、ユーザの視線方向がモニター250の画像表示領域外から画像表示領域内に入ってきた場合には、本実施形態の画像処理装置300は、図13(c)に示すように、ユーザがモニター250の方向へ振り向く直前に表示していた画像を表示することとしている。つまり、ユーザは、視線方向を矢印YB方向に移動した後でも、視線方向が矢印YA方向である場合の映像を見ることができるのである。ユーザは、“少し前の”手と頭の位置と姿勢によって作られる画像を見ることができる。
なお、CPU 101が、ユーザがモニター250を眺めていると判断する場合とは、図13(b)に示すように、「視線方向を示すベクトルの向きが、第2の部位の位置1305から、モニター250の表示領域の4隅の点1301〜1304へ、結ぶ4つの線分によって囲まれる四角柱状の領域内に収まる場合」である。
【0145】
なお、CPU 101は、変化が始まる前の仮想視点450の位置から、変化が始まる前の仮想視線470の向きへ、変化が始まる前の位置と姿勢で配置されたオブジェクト400を見た様子を表す画像を表示した後、ユーザ視線がモニター250と交差しなくなった場合、ユーザがモニター250から目をそらしたと推定し、手の位置の変化と姿勢の変化と、頭の位置の変化と姿勢の変化と、に直ちに連動させてオブジェクト400の位置と姿勢を変化させた画像を生成して表示する。
【0146】
言い換えれば、ユーザがモニター250を向いていないと推定される場合、オブジェクト400が手や頭と“連動”して表示され、ユーザがモニター250を向いていると推定される場合、オブジェクト400と手や頭との連動が一旦中断して“リプレイ”画像が表示される。
【0147】
本実施形態では、CPU 101は、ユーザがモニター250の方へ振り向く動作をする直前のオブジェクト400を表す画像を表示するが、RAM 103に記憶している任意の過去のタイミングにおけるオブジェクト400を表す画像を表示することもできる。例えば、CPU 101は、ユーザがモニター250の方へ振り向いたと推定された場合、直近の過去の所定時間分(例えば、現在よりX秒前から、現在まで、など)の履歴を用いて、オブジェクト400を表す画像を生成して表示してもよい。また、この所定時間をユーザが自由に設定できるようにしてもよい。
【0148】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【0149】
上記の画像処理装置300の全部又は一部としてコンピュータを動作させるためのプログラムを、メモリカード、CD−ROM、DVD、MO(Magneto Optical disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【0150】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【0151】
以上説明したように、本発明によれば、仮想空間に配置されるオブジェクトの見方をユーザが簡単な操作で変えることができるようにするために好適な画像処理装置、画像処理方法、ならびに、プログラムを提供することができる。
【符号の説明】
【0152】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 ハードディスク
105 インターフェース
106 外部メモリ
107 入力装置
108 DVD−ROMドライブ
109 画像処理部
110 音声処理部
111 NIC
250 モニター
300 画像処理装置
301 記憶部
302 検知部
303 変化部
304 画像生成部
305 表示部
400 オブジェクト
450 仮想視点
470 仮想視線
510 第1の部位
511 ベクトル(第1の部位の向き)
512 近似平面(第1の部位を表す近似平面)
513 鉛直方向
514 法線ベクトル(第1の部位を表す近似平面の法線ベクトル)
520 第2の部位
521 法線ベクトル(第2の部位を表す近似平面の法線ベクトル)
522 近似平面(第2の部位を表す近似平面)
523 水平方向を表す直線
524 直線
1210 ユーザ視線の位置
1230 中心(モニターの表示領域の中心)
1240 線分
1250 半直線

【特許請求の範囲】
【請求項1】
仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される記憶部と、
現実空間におけるユーザの第1の部位の位置と姿勢と、当該ユーザの第2の部位の位置と姿勢と、を検知する検知部と、
前記検知された第1の部位の位置と姿勢とに基づいて、前記記憶されるオブジェクトの位置と姿勢とを変化させ、前記検知された第2の部位の前記第1の部位に対する相対的な位置と姿勢とに基づいて、前記記憶される仮想視点の位置と前記記憶される仮想視線の向きとを変化させる変化部と、
前記仮想視点の位置から前記仮想視線の向きに前記オブジェクトを見た様子を表す画像を生成する画像生成部と、
前記生成された画像を前記現実空間におけるモニター画面に表示する表示部と、
を備えることを特徴とする画像処理装置。
【請求項2】
請求項1に記載の画像処理装置であって、
前記変化部は、前記検知された第2の部位の位置と姿勢とに基づいて、前記ユーザの視点から現実世界を見るときの視線(以下「ユーザ視線」という。)の位置と向きを推定し、
前記画像生成部は、前記ユーザ視線の位置又は向きが変化を始めてから所定時間内に前記ユーザ視線が前記モニター画面と交差した場合、前記ユーザ視線が前記モニター画面と交差している間、前記変化を始める前に前記記憶部に記憶されていた、前記オブジェクトの位置と姿勢と、前記仮想視点の位置と、前記仮想視線の向きと、に基づいて、前記オブジェクトを見た様子を表す画像を生成する、
ことを特徴とする画像処理装置。
【請求項3】
請求項2に記載の画像処理装置であって、
前記記憶部には、前記オブジェクトの位置と姿勢の履歴と、前記仮想視点の位置の履歴と、前記仮想視線の向きの履歴と、が記憶され、
前記画像生成部は、前記記憶された前記オブジェクトの位置と姿勢の履歴と、前記記憶された前記仮想視点の位置の履歴と、前記記憶された前記仮想視線の向きの履歴と、に基づいて、前記変化を始める前に前記オブジェクトを見た様子を表す画像を生成する、
ことを特徴とする画像処理装置。
【請求項4】
請求項1又は3に記載の画像処理装置であって、
前記変化部は、前記検知された第1の部位の位置と姿勢の各変化量の所定倍数量だけ、前記記憶される仮想視点の位置と仮想視線の向きとを変化させ、前記検知された第2の部位の位置と姿勢の相対的な各変化量の所定倍数量だけ、前記記憶されるオブジェクトの位置と姿勢とを変化させる、
ことを特徴とする画像処理装置。
【請求項5】
請求項1乃至4のいずれか1項に記載の画像処理装置であって、
前記変化部は、前記検知された第1の部位の位置と姿勢とに基づいて前記第1の部位の表面の形状を近似する平面を求め、当該求められた平面を用いて前記オブジェクトの位置と姿勢とを決定する、
ことを特徴とする画像処理装置。
【請求項6】
請求項1乃至5のいずれか1項に記載の画像処理装置であって、
前記変化部は、前記検知された第2の部位の位置と姿勢とに基づいて前記第2の部位の表面の形状を近似する平面を求め、当該求められた平面を用いて前記仮想視点の位置と前記仮想視線の向きとを決定する、
ことを特徴とする画像処理装置。
【請求項7】
請求項1乃至6のいずれか1項に記載の画像処理装置であって、
前記第1の部位は前記ユーザの手であり、前記第2の部位は前記ユーザの頭であり、
前記検知部は、現実空間における前記ユーザの手の位置と姿勢と、前記ユーザの頭の位置と姿勢と、を検知し、
前記変化部は、前記検知された手の位置と姿勢とに基づいて、前記記憶されるオブジェクトの位置と姿勢とを変化させ、前記検知された頭の、手に対する相対的な位置と姿勢とに基づいて、前記記憶される仮想視点の位置と前記記憶される仮想視線の向きとを変化させる、
ことを特徴とする画像処理装置。
【請求項8】
記憶部、検知部、変化部、画像生成部、表示部を有する画像処理装置にて実行される画像処理方法であって、
前記記憶部には、仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶され、
前記検知部が、現実空間におけるユーザの第1の部位の位置と姿勢と、当該ユーザの第2の部位の位置と姿勢と、を検知する検知ステップと、
前記変化部が、前記検知された第1の部位の位置と姿勢とに基づいて、前記記憶されるオブジェクトの位置と姿勢とを変化させ、前記検知された第2の部位の前記第1の部位に対する相対的な位置と姿勢とに基づいて、前記記憶される仮想視点の位置と前記記憶される仮想視線の向きとを変化させる変化ステップと、
前記画像生成部が、前記仮想視点の位置から前記仮想視線の向きに前記オブジェクトを見た様子を表す画像を生成する画像生成ステップと、
前記表示部が、前記生成された画像を前記現実空間におけるモニター画面に表示する表示ステップと、
を備えることを特徴とする画像処理方法。
【請求項9】
コンピュータを、
仮想空間に配置されるオブジェクトの位置と姿勢と、当該仮想空間に配置される仮想視点の位置と、当該仮想視点の位置から当該仮想空間を見る仮想視線の向きと、が記憶される記憶部、
現実空間におけるユーザの第1の部位の位置と姿勢と、当該ユーザの第2の部位の位置と姿勢と、を検知する検知部、
前記検知された第1の部位の位置と姿勢とに基づいて、前記記憶されるオブジェクトの位置と姿勢とを変化させ、前記検知された第2の部位の前記第1の部位に対する相対的な位置と姿勢とに基づいて、前記記憶される仮想視点の位置と前記記憶される仮想視線の向きとを変化させる変化部、
前記仮想視点の位置から前記仮想視線の向きに前記オブジェクトを見た様子を表す画像を生成する画像生成部、
前記生成された画像を前記現実空間におけるモニター画面に表示する表示部、
として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2011−191899(P2011−191899A)
【公開日】平成23年9月29日(2011.9.29)
【国際特許分類】
【出願番号】特願2010−56120(P2010−56120)
【出願日】平成22年3月12日(2010.3.12)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】