IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノンマーケティングジャパン株式会社の特許一覧 ▶ キヤノンITソリューションズ株式会社の特許一覧

特許7079231情報処理装置及び情報処理システム及び制御方法、プログラム
<>
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図1
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図2
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図3
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図4
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図5
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図6
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図7
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図8
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図9
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図10
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図11
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図12
  • 特許-情報処理装置及び情報処理システム及び制御方法、プログラム 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-05-24
(45)【発行日】2022-06-01
(54)【発明の名称】情報処理装置及び情報処理システム及び制御方法、プログラム
(51)【国際特許分類】
   G06T 19/00 20110101AFI20220525BHJP
【FI】
G06T19/00 600
【請求項の数】 10
(21)【出願番号】P 2019204820
(22)【出願日】2019-11-12
(62)【分割の表示】P 2014250305の分割
【原出願日】2014-12-10
(65)【公開番号】P2020024752
(43)【公開日】2020-02-13
【審査請求日】2019-12-10
(31)【優先権主張番号】P 2013268068
(32)【優先日】2013-12-25
(33)【優先権主張国・地域又は機関】JP
【前置審査】
(73)【特許権者】
【識別番号】390002761
【氏名又は名称】キヤノンマーケティングジャパン株式会社
(73)【特許権者】
【識別番号】592135203
【氏名又は名称】キヤノンITソリューションズ株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】特許業務法人大塚国際特許事務所
(72)【発明者】
【氏名】難波 伸敏
【審査官】村松 貴士
(56)【参考文献】
【文献】米国特許出願公開第2013/0155106(US,A1)
【文献】特開2007-004713(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 19/00
G06F 3/01
G06F 3/048 - 3/04895
(57)【特許請求の範囲】
【請求項1】
第1の現実物体の仮想オブジェクト配置用の識別情報の位置に基づき仮想空間上の表示位置が決定される第1の仮想物体が、
現実物体の仮想オブジェクト配置用の識別情報に関連づかない第2の仮想物体と接触した場合、前記第1の現実物体の位置にかかわらず当該接触した位置に当該第1の仮想物体を固定して表示する表示手段と、
前記第1の仮想物体が前記第2の仮想物体と接触した第1の方向を記憶する記憶手段と
を備え、
前記表示手段は、前記接触した位置に固定して表示された第1の仮想物体と前記第1の現実物体との位置関係が所定の関係となった場合、前記固定された位置から前記第1の仮想物体を離して、当該第1の現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示し、
前記表示手段は、前記第1の方向と逆方向である第2の方向に向けて前記現実物体が移動して前記第1の仮想物体と前記現実物体の位置関係が所定の位置関係となった場合に、前記現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示する
ことを特徴とする情報処理装置。
【請求項2】
第1の現実物体の仮想オブジェクト配置用の識別情報の位置に基づき仮想空間上の表示位置が決定される第1の仮想物体が、
現実物体の仮想オブジェクト配置用の識別情報に関連づかない第2の仮想物体と接触した場合、前記第1の現実物体の位置にかかわらず当該接触した位置に当該第1の仮想物体を固定して表示する表示手段と、
前記第1の仮想物体と前記第2の仮想物体が接触した位置に前記第1の仮想物体を複製して表示する複製表示手段と
を備え、
前記表示手段は、前記接触した位置に固定して表示された第1の仮想物体と前記第1の現実物体との位置関係が所定の関係となった場合、前記固定された位置から前記第1の仮想物体を離して、当該第1の現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示することを特徴とする情報処理装置。
【請求項3】
前記第1の仮想物体と前記第2の仮想物体が接触した位置に前記第1の仮想物体を複製して表示する複製表示手段と、
を備えることを特徴とする請求項1記載の情報処理装置。
【請求項4】
前記所定の関係とは、前記第1の現実物体の位置が、前記接触した位置に固定して表示された前記第1の仮想物体の位置から所定距離以内に対応する位置となったことを含むことを特徴とする請求項1乃至3のいずれか1項に記載の情報処理装置。
【請求項5】
前記第1の仮想物体の位置は、3次元の仮想空間上での位置を示す3次元座標によって特定される位置であることを特徴とする請求項4に記載の情報処理装置。
【請求項6】
情報処理装置の表示手段が、第1の現実物体の仮想オブジェクト配置用の識別情報の位置に基づき表示位置が決定される第1の仮想物体が、
現実物体の仮想オブジェクト配置用の識別情報に関連づかない第2の仮想物体と接触した場合、当該現実物体の位置にかかわらず当該接触した位置に当該第1の仮想物体を固定して表示する表示工程と、
前記第1の仮想物体が前記第2の仮想物体と接触した第1の方向を記憶する記憶工程と
を含み、
前記表示工程は、前記接触した位置に固定して表示された第1の仮想物体と前記現実物体との位置関係が所定の関係となった場合、前記固定された位置から前記第1の仮想物体を離して、当該現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示し、
前記表示工程は、前記第1の方向と逆方向である第2の方向に向けて前記現実物体が移動して前記第1の仮想物体と前記現実物体の位置関係が所定の位置関係となった場合に、前記現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示する
ことを特徴とする制御方法。
【請求項7】
情報処理装置を、
第1の現実物体の仮想オブジェクト配置用の識別情報の位置に基づき仮想空間上の表示位置が決定される第1の仮想物体が、
現実物体の仮想オブジェクト配置用の識別情報に関連づかない第2の仮想物体と接触した場合、当該現実物体の位置にかかわらず当該接触した位置に当該第1の仮想物体を固定して表示する表示手段として機能させ、
前記第1の仮想物体が前記第2の仮想物体と接触した第1の方向を記憶させ、
前記表示手段を、前記接触した位置に固定して表示された第1の仮想物体と前記第1の現実物体との位置関係が所定の関係となった場合、前記固定された位置から前記第1の仮想物体を離して、当該現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示する手段として機能させ
前記表示手段を、前記第1の方向と逆方向である第2の方向に向けて前記現実物体が移動して前記第1の仮想物体と前記現実物体の位置関係が所定の位置関係となった場合に、前記現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示する手段として機能させるためのプログラム。
【請求項8】
情報処理装置と表示装置を含む情報処理システムであって、
第1の現実物体の仮想オブジェクト配置用の識別情報の位置に基づき仮想空間上の表示位置が決定される第1の仮想物体が、
現実物体の仮想オブジェクト配置用の識別情報に関連づかない第2の仮想物体と接触した場合、当該現実物体の位置にかかわらず当該接触した位置に当該第1の仮想物体を固定して表示する表示手段と、
前記第1の仮想物体が前記第2の仮想物体と接触した第1の方向を記憶する記憶手段と
を備え、
前記表示手段は、前記接触した位置に固定して表示された第1の仮想物体と前記現実物体との位置関係が所定の関係となった場合、前記固定された位置から前記第1の仮想物体を離して、当該現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示し、
前記表示手段は、前記第1の方向と逆方向である第2の方向に向けて前記現実物体が移動して前記第1の仮想物体と前記現実物体の位置関係が所定の位置関係となった場合に、前記現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示する
ことを特徴とする情報処理システム。
【請求項9】
情報処理装置と表示装置を含む情報処理システムにおける制御方法であって、
表示手段が、第1の現実物体の仮想オブジェクト配置用の識別情報の位置に基づき仮想空間上の表示位置が決定される第1の仮想物体が、
現実物体の仮想オブジェクト配置用の識別情報に関連づかない第2の仮想物体と接触した場合、当該現実物体の位置にかかわらず当該接触した位置に当該第1の仮想物体を固定して表示する表示工程と、
前記第1の仮想物体が前記第2の仮想物体と接触した第1の方向を記憶する記憶工程と
を含み、
前記表示工程は、前記接触した位置に固定して表示された第1の仮想物体と前記現実物体との位置関係が所定の関係となった場合、前記固定された位置から前記第1の仮想物体を離して、当該現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示し、
前記表示工程は、前記第1の方向と逆方向である第2の方向に向けて前記現実物体が移動して前記第1の仮想物体と前記現実物体の位置関係が所定の位置関係となった場合に、前記現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示する
ことを特徴とする制御方法。
【請求項10】
情報処理装置と表示装置を含む情報処理システムを、
第1の現実物体の仮想オブジェクト配置用の識別情報の位置に基づき仮想空間上の表示位置が決定される第1の仮想物体が、
現実物体の仮想オブジェクト配置用の識別情報に関連づかない第2の仮想物体と接触した場合、当該現実物体の位置にかかわらず当該接触した位置に当該第1の仮想物体を固定して表示する表示手段として機能させ、
前記第1の仮想物体が前記第2の仮想物体と接触した第1の方向を記憶させ、
前記表示手段を、前記接触した位置に固定して表示された第1の仮想物体と前記現実物体との位置関係が所定の関係となった場合、前記固定された位置から前記第1の仮想物体を離して、当該現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示する手段として機能させ、
前記表示手段を、前記第1の方向と逆方向である第2の方向に向けて前記現実物体が移動して前記第1の仮想物体と前記現実物体の位置関係が所定の位置関係となった場合に、前記現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示する手段として機能させためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及びその制御方法、プログラムに関する。
【背景技術】
【0002】
近年、複合現実(Mixed Reality/以下、MRと記載)の技術が普及している。MR技術を用いて、ヘッドマウントディスプレイを装着したユーザに対し、現実物体とCGモデルを配置した空間の疑似体験を提供できる。MR空間(現実空間と仮想空間とを合成した複合現実空間)を生成するにあたり、仮想空間と現実空間の位置合わせに用いられる位置指標として、マーカを用いる場合がある。
特許文献1には、当該マーカの存在をユーザに意識させないために、マーカを検出した場合に、当該マーカを隠した画像を描画する技術が記載されている。
【0003】
また、特許文献2では、仮想のペットを育成する複合現実感提示装置において、ユーザの所定部位による所定動作により、仮想のペットを示す3次元モデルの内部状態を遷移させ、仮想物体の存在感の認知を容易にするMRに関する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2000-350860号公報
【文献】特開2002-112286号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、例えば、特許文献1及び特許文献2に記載の技術を用いて仮想物体(CGオブジェクト)の画像を描画して現実の画像と単純に重畳する場合には問題はないが、ユーザがMR空間に積極的に参加する形式の場合に問題になることがある。その代表的なものは、2つの物体の一方(もしくは両方でも良い)をユーザが操作し、他方の物体に近づける、もしくは接触(衝突)させる場合である。
【0006】
一例を示すなら、ユーザが現実物体を手に持ち、それを移動させ、テーブルの上にその物体を置く操作を考えると分かりやすい。この場合、テーブルが仮想物体(仮想オブジェクト)であると、ユーザは何もない空間上に現実物体を置く操作を行ったわけであるから、その現実物体は落下してしまい、ユーザは混乱することになる。ここではユーザは現実物体を持ち、他方が仮想物体の場合であるが、この関係が逆の場合にも言えることである。
【0007】
本発明は、触覚による衝突の知覚が無いような場合であっても、ユーザーに、現実物体を移動させることで仮想物体を移動させ、別の仮想物体に接触させることで、別の仮想物体上に移動させた仮想物体を固定できるといった感覚を提供することを目的とする。
【課題を解決するための手段】
【0009】
例えば本発明の情報理装置は以下の構成を備える。すなわち、
第1の現実物体の仮想オブジェクト配置用の識別情報の位置に基づき仮想空間上の表示位置が決定される第1の仮想物体が、
現実物体の仮想オブジェクト配置用の識別情報に関連づかない第2の仮想物体と接触した場合、前記第1の現実物体の位置にかかわらず当該接触した位置に当該第1の仮想物体を固定して表示する表示手段と、
前記第1の仮想物体が前記第2の仮想物体と接触した第1の方向を記憶する記憶手段と
を備え、
前記表示手段は、前記接触した位置に固定して表示された第1の仮想物体と前記第1の現実物体との位置関係が所定の関係となった場合、前記固定された位置から前記第1の仮想物体を離して、当該第1の現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示し、
前記表示手段は、前記第1の方向と逆方向である第2の方向に向けて前記現実物体が移動して前記第1の仮想物体と前記現実物体の位置関係が所定の位置関係となった場合に、前記現実物体の位置に基づき決定される位置に前記第1の仮想物体を表示することを特徴とする。
【発明の効果】
【0010】
本発明によれば、触覚による衝突の知覚が無いような場合であっても、ユーザーに、現実物体を移動させることで仮想物体を移動させ、別の仮想物体に接触させることで、別の仮想物体上に移動させた仮想物体を固定できるといった感覚を提供することができる。
【図面の簡単な説明】
【0012】
図1】実施形態における、情報処理システムの構成の一例を示す図である。
図2】実施形態における情報処理装置とHMDのハードウェア構成の一例を示す図である。
図3】実施形態のける各テーブルの例を示す図である。
図4】仮想オブジェクトが他のオブジェクトに近づいた際の表示形態の変化を示す図である。
図5】実施形態における情報処理装置の処理手順を示すフローチャートである。
図6】仮想オブジェクトが他のオブジェクトに近づいた際の表示形態の変化を示す図である。
図7】仮想オブジェクトが他のオブジェクトに近づいた際の表示形態の変化を示す図である。
図8】仮想オブジェクトが他のオブジェクトに近づいた際の表示形態の変化を示す図である。
図9】第4の実施形態の動作概要を説明するための図である。
図10】第4の実施形態における情報処理装置の処理手順を示すフローチャートである。
図11】第5の実施形態における情報処理装置の処理手順を示すフローチャートである。
図12】第6の実施形態における情報処理装置の処理手順を示すフローチャートである。
図13】第2の実施形態における各テーブルの例を示す図である。
【発明を実施するための形態】
【0013】
以下、添付図面に従って本発明に係る実施の形態を詳細に説明する。
【0014】
[第1の実施形態]
図1は実施の形態における情報処理システムの構成とその利用の様子を示している。
【0015】
本情報処理システムは情報処理装置100とヘッドマウントディスプレイ(以下、HMD)101で構成される。図示ではHMD101と情報処理装置とはケーブル102で接続されているものとしているが、情報処理装置100とHMD101とが互いに通信が行えれば良いので、有線、無線は問わない。
【0016】
図示の環境では、HMD101を装着したユーザが室内にいる状態を示している。また、室内には現実物体としての机110、モック120が存在している例を示している。また、この室内には複数のマーカ150が貼り付けられている。マーカの形状は問わないが、実施形態では正方形であり、全て同じサイズであるものとする。各マーカにはユニークなマーカ番号が埋め込まれているものとする。そして、HMD101に設けられたカメラで撮像した際に、個々のマーカが識別でき、デコードした際に、そのマーカ番号が得られるものとする。マーカの種類(マーカが果たす役割の種類)は、HMD101の位置姿勢を決定するための位置検出用マーカ(位置検出マーカ)、並びに、そのマーカで規定される箇所に仮想オブジェクトを描画するものとして利用される仮想オブジェクト配置用マーカ(仮想オブジェクト化マーカ)の2種類がある。そして、位置検出用マーカについては、HMD101の位置姿勢がどのような状態であっても、内蔵するカメラの視野内に最低でも3つが含まれるように、予め既知の位置に貼り付けられているものとする。
【0017】
仮想オブジェクトとは、仮想空間上に配置された3次元モデル(3次元CADデータ/描画データ)のことである。尚、3次元モデルのデータは情報処理装置100の外部メモリ上に、当該3次元モデルを仮想空間上のいずれの位置にどのような姿勢で配置するかを示す位置姿勢の情報と対応付けられて記憶されている(例えば、図3(b))。
【0018】
上記の構成におけるHMD101の位置姿勢を検出する原理は、撮像した画像中の3つの位置検出用マーカ(その位置は既知)それぞれのサイズから、HMD101からそれぞれまでの位置検出用マーカまでの距離を求める。そして、逆に、3つの位置検出用マーカから求めた3つの距離が重なる位置を、HMD101の位置として決定する。また、HMD101の姿勢は、撮像した画像中の3つの位置検出用マーカの配置から求めればよい。
【0019】
図2は実施形態における情報処理装置100とHMD101のハードウェアのブロック構成図を示している。尚、図2の情報処理装置100とHMD101のハードウェアの構成は一例であり、用途や目的に応じて様々な構成例が考えられる。図示はあくまでその一例であると認識されたい。
【0020】
まず、情報処理装置100は、例えば、パーソナルコンピュータである。そして、内部には、CPU201、ROM202、RAM203、システムバス204、入力コントローラ205、ビデオコントローラ206、メモリコントローラ207、通信I/Fコントローラ208、入力デバイス209、ディスプレイ210、外部メモリ211等を備える。
【0021】
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
【0022】
また、ROM202あるいは外部メモリ211には、CPU501の制御プログラムであるBIOS(Basic Input / Output System)やオペレーティングシステムや、各種装置の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
【0023】
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボードやマウス250等のポインティングデバイスからの入力を制御する。
ビデオコントローラ(VC)206は、ディスプレイ210等の表示器への表示を制御する。表示器は液晶ディスプレイでもCRTでも構わない。
【0024】
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
【0025】
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。通信I/Fコントローラ208は、トランスミッター270から磁場を受信したレシーバ271との通信と、赤外線カメラ104との通信も制御する。
【0026】
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上での表示を可能としている。また、CPU201は、ディスプレイ210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
【0027】
本実施形態の情報処理装置100が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本実施形態に係わるプログラムが用いる定義ファイルや各種情報テーブル(後述の図3のテーブルを含む)は外部メモリ211に格納されている。
【0028】
一方、HMD101は、右目ビデオカメラ221、左目ビデオカメラ222、右目ディスプレイ223、左目ディスプレイ224、コントローラ225等を備える。
【0029】
右目ビデオカメラ221と、左目ビデオカメラ222は、現実世界を撮影するビデオカメラである。右目ビデオカメラ221は、右目ディスプレイ223に表示するための画像を撮影し、左目ビデオカメラ522は、左目ディスプレイ224に表示するための画像を撮影する。撮影された画像(現実空間画像)は、コントローラ225が情報処理装置100の通信I/Fコントローラ208に向けて送信する。
【0030】
情報処理装置100から通信I/Fコントローラ208を通じて複合現実画像データが送信されると、コントローラ225が受信し、受信した複合現実画像を右目ディスプレイ223と左目ディスプレイ224に表示させる。この時、右目ビデオカメラ221で撮影された現実空間画像に基づいて生成された複合現実画像は、右目ディスプレイ223に表示し、左目ビデオカメラ222で撮影された現実空間画像に基づいて生成された複合現実画像は、左目ディスプレイ224に表示する。
【0031】
以上実施形態におけるシステムの構成を説明した。次に、実施形態における各種テーブルを説明する。以下に説明する各テーブルは、外部メモリ211に格納されているものである。
【0032】
図3(a)はマーカテーブルを示している。マーカテーブルは、マーカ番号(マーカNo)、マーカの種別(マーカの種類)、属性、座標(位置及び向き=位置姿勢)、オブジェクトIDのフィールドで構成されている。マーカ番号は、マーカを一意に特定するためのものである。マーカの種別には、位置検出用マーカと、仮想オブジェクト配置用マーカがある。なお、マーカに埋め込めるビット数にもよるが、位置検出用マーカと仮想オブジェクト配置用マーカを兼ねるマーカを定義しても構わない。
【0033】
属性は、当該属性に対応するマーカが“固定”であるか、“非固定”であるかを示す。“固定”とは、当該“固定”の属性を持つマーカ、もしくは、当該“固定”の属性を持つマーカが貼り付けられた物体が移動することはないことを示す属性である。つまり、“固定”の属性を持つマーカの仮想空間上の位置(図3(a)における「座標」の値)は変動しない。“固定”の属性を持つマーカは、例えば現実空間の壁に貼り付けられたマーカである。ここでは、位置検出用マーカは固定の属性を持つものとする。
【0034】
また、“非固定”とは、当該“非固定”の属性を持つマーカ自体、もしくは、当該“非固定”の属性を持つマーカが貼り付けられた物体が移動する可能性があることを示す属性である。例えば、モック120のようにユーザの動作等により仮想空間上の位置(図3(a)における「座標」の値)が変動するマーカの属性を示している。
【0035】
仮想オブジェクト配置用マーカとは、仮想オブジェクトを表示する位置を特定するために用いられるマーカである。情報処理装置100のCPU201は、当該仮想オブジェクト配置用マーカが検出された際、当該仮想オブジェクト配置用マーカが存在する位置(正確には後述するように当該仮想オブジェクト配置用マーカの重心位置からオフセットを持つ位置)に仮想オブジェクトを表示するための処理を行う。例えば、3次元モデルを当該オフセットの示す仮想空間上の位置に配置する処理を行う。
【0036】
本実施形態では、モック120にこの仮想オブジェクト配置用マーカが貼り付けられているものとしている。また、仮想オブジェクト配置用マーカにも属性としての“固定”、“非固定”が存在する。図示のモック120はユーザが手に持って移動可能であるものとしているので、“非固定”の属性が付されている。なお、“固定”の属性を持つ仮想オブジェクト配置用マーカとして、例えば、壁に貼り付けて「窓」の仮想オブジェクトを見せる(表示する)場合などが考えられる。
【0037】
位置及び向きフィールドには、3次元空間(仮想空間)における当該位置検出用マーカの座標(位置・向き=位置姿勢)が格納される。また、オブジェクトIDフィールドには、そのマーカが位置検出用マーカであればnull(データなし)の値が格納される。
【0038】
マーカが仮想オブジェクト配置用マーカであれば、仮想空間における当該仮想オブジェクト配置用マーカの座標と、当該仮想オブジェクト配置用マーカに対応する仮想オブジェクトの描画データを特定するオブジェクトIDが格納される。
【0039】
なお、マーカの中心を通る法線方向に視点があるとき、そのマーカ画像が正方形に見えることになる。そして、視点が法線方向からずれると、そのずれの度合いに応じて正方形が歪んで見える。つまり、この歪みから、視点の軸に対するマーカで規定される平面の向きが判明し、マーカのサイズから視点とマーカ間の距離を検出でき、マーカが貼り付けられた平面が規定できる。また、実施形態では、マーカには、互いに識別できる2つの印が設けられ、マーカの中心位置を原点とし、マーカで規定される上記の平面上の、原点からその印に向かう2つのベクトルを2軸、マーカの中心位置から法線方向の1軸で、局所的(ローカル)な3次元座標を規定する3軸を規定しているものとする。
【0040】
図3(b)は仮想オブジェクト描画データのテーブルを示している。このテーブルは、オブジェクトID、仮想オブジェクトの描画データ、位置、向きのフィールドを有する。オブジェクトIDは、図3(a)の「座標/オブジェクトIDフィールドに格納されたIDを格納する。描画データは、3次元CADデータ等の(仮想オブジェクトの形状である)3次元モデルのデータである。位置は、仮想オブジェクト配置用マーカで規定される局所的な3次元座標において、仮想オブジェクトを描画する位置を格納する。「向き」は、「位置」に仮想オブジェクトを仮想空間上に配置して画像として描画する際に、その仮想オブジェクトの向きを規定するための情報である。
【0041】
つまり、仮想オブジェクトは、仮想オブジェクトマーカの重心位置を局所的な座標原点としたとき、その座標原点から「位置」「向き」で規定される位置と向きに、描画データに基づく形状を描画することで得られる。換言すれば、仮想オブジェクトは、位置検出用マーカで規定される座標空間における仮想オブジェクト配置用マーカの重心位置から、「位置」で規定されるオフセットだけずれた位置に、「向き」で示される向きに表示されることを意味する。
【0042】
図3(a)によると、マーカ番号「50」は仮想オブジェクト配置用マーカであり、そのオブジェクトIDは“201”である。このオブジェクトID“201”を用いて、図3(b)のテーブルから、描画データを読み出し、仮想オブジェクト配置用マーカの重心位置を原点とした局所的な3次元座標上の「位置」と「向き」に合わせて、仮想空間上に配置された仮想オブジェクトの画像を描画することになる。
【0043】
実施形態では説明を簡単にするため、仮想オブジェクト配置用マーカの重心位置が仮想オブジェクトの重心位置と一致している、つまり、「位置」の3成分(X,Y,Z座標)がゼロであるものとする。繰り返すが、仮想オブジェクトの位置は、厳密には、仮想オブジェクト配置用マーカに図3(b)で示した「位置」(オフセット)を加味したものとなる点に注意されたい。
【0044】
図3(c)はユーザが体感するMR空間(図1の部屋)内に存在する現実物体のデータを管理する現実物体テーブルである。現実物体も、管理する上で現実物体の番号が割り当てられ、かつ、その現実物体の仮想空間上の位置、向き、形状の情報(いわゆるCADデータ/CADデータと仮想空間上の位置姿勢の情報を対応付けたデータ)を格納する。詳細は後述するが、MR空間における、仮想物体と現実物体との距離を求める際の、現実物体の位置座標もこの情報を参照することになる。
【0045】
以上実施形態におけるテーブルを説明した。次に、実施形態における特徴となる処理を説明する。
【0046】
HMD101のコントローラ225の処理は単純である。すなわち、左右のビデオカメラ221,222で撮像した2つの画像を情報処理装置100に送信する処理と、情報処理装置100から受信した2つの画像(MR空間画像)を左右のディスプレイ223,224に表示する処理とを、例えば1秒当たり30回程度の速度で繰り返し行うだけである。
【0047】
従って、以下では情報処理装置100(のCPU201)の処理概要を説明する。
【0048】
まず、理解を容易にするため、ここでは、図1に示すような環境において、HMD101を装着したユーザがモック120を手に持ちそれを移動させる例を説明する。
【0049】
情報処理装置100は、HMD101からの受信した画像を解析することで、マーカを識別(デコード)し、図3(a)のマーカテーブルを参照して、当該画像に含まれるマーカが位置検出用マーカか、仮想オブジェクト配置用マーカかを判定する。位置検出用マーカはHMD101の位置姿勢の算出に用いられる。ここでは、更に、撮像した画像内に仮想オブジェクト配置用マーカが存在した場合について説明する(ユーザの視野の範囲内に少なくともモック120が存在する場合である)。
【0050】
仮想オブジェクト配置用マーカを検出すると、当該仮想オブジェクト配置用マーカに対応するオブジェクトIDから、図3(b)の仮想オブジェクト描画データを取得し、HMD101の位置姿勢と、仮想オブジェクト配置用マーカの存在する仮想空間上の位置、図3(b)の位置姿勢の情報(ここでは図3(b)の位置姿勢の情報=0,0,0であるものとする)に基づき、3次元モデルを仮想空間内の仮想オブジェクト配置用マーカの位置に配置し、仮想空間内の仮想オブジェクト配置用マーカの存在する位置に左右のカメラから見たと仮定した場合の仮想オブジェクトを描画する。そして、その描画した画像と、現実に撮像された左右の目用の画像とを合成し、MR画像を生成し、HMD101に送信し、表示させる。
【0051】
例えば、ここでは、モック120に貼り付けられたマーカが仮想オブジェクト配置用マーカであって、その属性が“非固定”であり、仮想オブジェクトマーカを覆う「コップ」を描画する仮想オブジェクト描画データのオブジェクトIDを有しているものとする。この場合、HMD101を装着したユーザには、モック120に代わって「コップ」の画像がその位置に存在するものとして知覚させることができる。そして、ユーザがモック120を手に持って移動している間、ユーザには自信がコップを持って移動していると認識させることができる。
【0052】
室内には、図1に示すように現実物体として机110が載置されている。今、モック120以外に、仮想オブジェクト配置用マーカが存在し、仮想オブジェクトとして「椅子」が描画されているものとする。その結果、ユーザの視野には、机、コップ、椅子が存在することになる。この場合、ユーザは手に持っているコップ(コップが上から描画されているモック)を椅子に接触させても、素通りしてしまうことになる。一方、コップを机110に接触させると、現実空間でも現実物体であるモックと机が接触(衝突)することになる。つまり、ユーザにとっては上記の2つの操作は同じであるものの、体感できる感覚は異なったものとなってしまい、混乱を招く可能性が高い。
【0053】
そこで、実施形態では、図4に示すように、仮想オブジェクト400と、現実物である机110との距離が予め設定した距離以下になった場合という条件が成立したとき、その仮想オブジェクトを表す画像の一部401(又は全部でも良い)の透明度を大きくする(以下、透過処理という)。その後、MR画像を生成してHMD101に出力し、表示させることで、上記の状態(仮想空間上で物体同士が接近した状態)であることを積極的にユーザに知らしめる。
【0054】
現実物体である机110の位置と形状、大きさに係るデータは図3(c)に示すように外部メモリ211に現実物体テーブルとして記憶されている。従って、ここで判定する「距離」は、机110の形状を特定するデータ(CADデータ)の中で、モック120に貼り付けられた仮想オブジェクト配置用マーカの中心位置に最も近い座標を検索することで判定するものとした。
【0055】
仮想オブジェクト配置用マーカの中心位置の座標を{Xv,Yv,Zv}とし、図3(c)の机110の形状と特定するデータ中の座標を{Xi,Yi,Zi}(ここで、i=0,1,2,…)と定義したとき、距離Lは次式で得られる。
L={(Xv-Xi)2+(Yv-Yi)2+(Zv-Zi)21/2
ここで、iを変化させた際の最小の距離Lを、仮想オブジェクト配置用マーカと机110との距離とした。なお、上記では距離を計算する際に、最終的に平方根を求めたが、大小の判定で良いのであれば、平行根を求める必要な無く、座標の差分の二乗和を算出しても構わない。
【0056】
なお、上記式では、仮想オブジェクト配置用マーカの中心位置=仮想オブジェクトの中心位置とした場合である。先に説明したように、仮想オブジェクトの配置される位置(図3(b)の「位置」の示す位置)は、仮想オブジェクト配置用マーカの中心位置に対し、「位置」で示されるオフセットが与えられる。
【0057】
また、実施形態では、仮想オブジェクト400と、現実物である机110との距離が予め設定した距離以下になった場合であっても、仮想オブジェクト400が停止状態になってから所定時間(例えば5秒)経過した場合、仮想オブジェクト400に対する透過処理を行わず、仮想オブジェクトの全体を描画するものとした。これにより、例えば現実空間にてモック120を机110の上に置いた状態で、上記所定時間が経過すると、机110上にコップが自然な画像として位置させ、違和感のないMR空間をユーザに提供できる。
【0058】
上記を実現するため、実施形態における情報処理装置100のCPU201の処理を図5のフローチャートに従って説明する。なお、HMD101からは、1秒当たり、左目、右目それぞれの画像が30枚転送されてくるので、以下に説明する処理も1秒当たり30回行うものである。
【0059】
まず、CPU201は、ステップS501にて、HMDI101が撮像した2枚の画像データを入力し、ステップS502にてその画像中のマーカ画像を識別する。そして、ステップS503にて、位置検出用マーカであると判定されたマーカ画像から、HMD101の位置姿勢を検出(算出)する。次いで、ステップS504にて、仮想オブジェクト配置用マーカが存在したか否かを判定する。入力した画像中に仮想オブジェクト配置用マーカが存在しないと判定した場合、合成すべき仮想オブジェクトを描画する必要はないので、ステップS512に進み、入力した画像をそのまま左目、右目用の画像としてHMD101に送信する。
【0060】
一方、ステップS504にて、入力した画像中に仮想オブジェクト配置用マーカが存在すると判定した場合(ユーザの視野内にモック120が存在する場合である)、処理はステップS505に進む。このステップS505にて、CPU201は、その仮想オブジェクト配置用マーカの属性は“固定”、“非固定”のいずれであるかを判定する。“固定”であると判定した場合には、ステップS510にて、該当するオブジェクトIDで特定される描画データを読み出し、現在のHMDI101の位置姿勢、並びに、仮想オブジェクト配置用マーカの位置に従い、通常の仮想オブジェクト(透過率0%の仮想オブジェクト)を描画し、ステップS512にて、描画した仮想オブジェクトと現実空間の画像を合成した、左右の目に対応するMR画像を、HMD101に送信する。
【0061】
また、ステップS505の判定結果が、着目している仮想オブジェクト配置用マーカの属性が“非固定”であることを示している場合、処理はステップS506に進み、仮想オブジェクトマーカは移動中であるか否かを判定する。実施形態では、30フレーム/秒で処理することを想定しているので、1/30秒前の仮想オブジェクト配置用マーカの位置と、現在の位置との差が所定閾値以上あるか否かで判断するものとする。1/30秒前に、仮想オブジェクト配置用マーカの存在が検出できない場合も移動中であるものとする。なお、この閾値は、HMD101の位置姿勢の検出精度に依存して決めればよい。
【0062】
ステップSS506の判定結果が移動中ではない、すなわち、停止状態を示す場合、処理はステップS507に進み、停止状態になってから所定時間(実施形態では5秒)経過したか否かを判定する。判定結果が所定時間経過したことを示す場合、ステップS510に進み、通常の仮想オブジェクトの描画処理を行う。
【0063】
また、ステップS506の判定結果が、仮想オブジェクト配置用マーカが移動中であることを示している場合、CPU201は処理をステップ508に進める。そして、図3(c)の現実物体テーブルを参照して、移動中であると判定された仮想オブジェクト配置用マーカ(実施形態ではモック120)で特定されるオフセット位置(仮想オブジェクトの位置=3次元モデルの配置されている位置)との距離が所定以下となっている現実物体が存在するか否かを判定する(ステップS509)。なお、この判定では、現実物体が、HMD101の視野内にあるか否かは問わない。距離が所定以下の現実物体が存在しない場合には、ステップS510に処理を進める。
【0064】
一方、距離が所定以下の現実物体が存在する場合には、処理をステップS511に進める。この場合、CPU201は、仮想オブジェクト配置用マーカで示される描画データで仮想オブジェクトの全体をまず描画し、上記の距離が所定以下となる領域の透明度を例えば100%に設定して描画することで、図4の400にしめすような、一部が透過する仮想オブジェクトを生成する。そして、ステップS512にて、描画した仮想オブジェクトと現実空間の画像を合成し、MR画像を生成し、HMD101に送信する。
【0065】
以上説明した処理を行うことで、ユーザがモック120を手に持って、机110に近づけていくと、或るタイミングで、ユーザには「コップ」として見えていたオブジェクトの一部の透明度が大きくなり、コップが仮想オブジェクトであることを知らしめることが可能になる。さらに、モック120を机110上に置いて所定時間経過すると、正常なコップ画像が表示されることになり、MR空間の自然な体験を継続できることになる。
【0066】
つまり、仮想オブジェクトと現実物体との相対距離に変化があった場合に、当該距離に応じて、仮想オブジェクトを透過するものである。よって、例えばユーザがモックを持って移動した場合、モック(モックに貼付された仮想オブジェクト配置用マーカ)に対応する仮想オブジェクトのコップが移動中であっても、仮想オブジェクト(コップ)と現実物体(モック)との相対距離は短くなっていない(近付いていない)ため、コップの仮想オブジェクトと現実物体のモックの距離に応じてコップの仮想オブジェクトが透過されることはなくなり、ユーザは、現実物体の存否を認識可能にするように現実画像と仮想オブジェクト画像が合成された合成画像を、空間内における物体同士の接近・遠離の状態に応じて出力することができる。
【0067】
また、仮想オブジェクトと現実物体の接触状態を監視し、所定時間、現実物体と接触している仮想オブジェクトは透過処理を行わず、仮想オブジェクトの全体を描画するようにしてもよい。つまり、現実の机の上に所定時間置かれているコップの仮想オブジェクトは描画(表示)され、ユーザに、MR空間の自然な体験をさせることができる。
【0068】
なお、上記実施形態における透過処理では、管理者が透明率を設定できるようにしても良い。例えば、透明率を100より小さくすると、HMD101を装着したユーザには、透過処理を経た仮想オブジェクトの輪郭が維持されて見え、仮想オブジェクトの原形を把握したまま操作できるようになる。
【0069】
また、透明度を、距離に応じて変化するようにしてもよい。たとえば、距離の閾値Th、算出した距離L、透明度αと定義したとき、
L>Thのときα=0(すなわち、非透明)
L≦Thのとき、α=(Th-L)/Th
としても良い。この場合、仮想オブジェクトが移動中で、現実物体との距離がTh以下の部分については現実物体に近い位置ほど透明度が高くすることができる。なお、上記の2つのバリエーションは、以下に説明する他の実施形態でも適用可能である。
【0070】
[第2の実施形態]
上記第1の実施形態では、仮想オブジェクトと現実物体との距離を判定する際、その現実物体の位置、形状が、予め図3(c)に示すように外部メモリ211に格納されているものとして説明した。つまり、第3者が、図3(c)に示す現実物体テーブルに登録していない第2の現実物体を部屋内に置いた場合には、仮にコップを第2の現実物体に近づけたとしても、透過処理が行われないこととなる。
【0071】
そこで、ステップS508では、左目、右目のそれぞれの画像中の対応画素の視差からHMD101から該当する画素までの距離と視線方向から、各画素の現実空間における位置を推定する。ただし、仮想オブジェクト配置用マーカを包含する所定の領域の画素は除外する。そして、推定した画素の中で、仮想オブジェクト配置用マーカとの距離が所定閾値以下の画素が存在する場合も、ステップS511に処理を移行するようにする。この結果、現実物体テーブルに未登録の現実物体が存在したとしても、撮像した画像内にその現実物体が写っている限りは、第1の実施形態と同様の作用効果を奏することができる。
【0072】
また、HMDのカメラで取得した画像からマーカの画像を取得した場合、当該マーカを現実物体として記憶するようにしてもよい。具体的には、マーカを認識した場合、マーカの大きさ・ベクトルから、マーカの示す四角形を一面とする正立方体形状の現実物体のデータ、現実物体テーブルに追加する(図13(c)の現実物体No=50)。
【0073】
図13は、図3(a)に、マーカの貼付先が追加され、図3(b)に、新たなデータ(150(手)/101obj等)が追加され、図3(c)に、新たなデータ(50(マーカNo)、150(手))が追加されたデータである。
【0074】
HMDのカメラで取得した画像においてユーザの手が認識された場合、当該手の位置を、三角測量によって特定されるHMDから手までの距離の情報と、HMDの位置姿勢の情報を用いて特定し、当該手の位置に、例えば予め情報処理装置100の外部メモリに記憶されているユーザの手の大きさ・形状を持った透明な仮想オブジェクトを配置して現実物体として管理する(図13(c)の現実物体No=150)。
【0075】
マーカや手を現実物体として記憶・管理することで、例えば、机の仮想オブジェクトと手の距離に応じて、机の仮想オブジェクトを透過する処理を行うことが可能となる。よって、ユーザは机の仮想オブジェクトの下に現実物体があるか否かを確認することができる。
【0076】
また、仮想オブジェクトのコップを手に持って現実物体の机に近づけた場合であって、机の位置にも仮想オブジェクトが配置されている場合(例えばテクスチャを張り替えるだけで机の色・模様を自由に変更できるように、現実物体の机の位置に配置された、机と同一形状の仮想オブジェクト(机の仮想オブジェクト)が存在する場合)、仮想オブジェクトのコップが現実物体の机に接近し、且つ、現実物体としての手(またはマーカの貼付されたモック)が仮想オブジェクトの机に接近したことになる。この場合、例えば、仮想オブジェクトのコップと、仮想オブジェクトの机の両方が透過される。
【0077】
[第3の実施形態]
上記第1、第2の実施形態では、仮想オブジェクトが、現実物体に近づいた場合に、その仮想オブジェクトの一部又は全部を透過するものとした。
【0078】
本発明の第3の実施形態においては、仮想オブジェクトで隠れている可能性がある現実物体の存否を認識可能にするように現実画像と仮想オブジェクト画像が合成された合成画像を、仮想オブジェクト同士の距離に応じて出力することを目的とする。
【0079】
つまり、仮想オブジェクトが移動して、他の仮想オブジェクトとの距離が所定閾値以下になったとき、当該移動中の仮想オブジェクトの一部又は全部を透過する。一方、仮想オブジェクトと現実物体との間の距離の応じた透過処理は行わない(通常の描画処理を行う)。この場合の処理は、ステップS508の処理が、移動中の仮想オブジェクト配置用マーカと、他の仮想オブジェクトマーカとの距離とを算出するようにすれば実現できる。
【0080】
例えば、図13に示すように、現実物体の机と同じ位置に仮想オブジェクトの机が配置されて描画されていることがある。現実物体の机と仮想オブジェクトの机とが必ずしも同じ形状とは限らないため、場合によっては(例えば現実物体の机よりも仮想オブジェクトの机の方が大きい場合)、現実物体の机が仮想オブジェクトの机に包含されてしまい(重なってしまい)、隠れて見えなくなってしまう。
【0081】
第3の実施形態においては、例えば、仮想オブジェクト同士の距離に応じて、仮想オブジェクトに重なって配置されている現実物体(例えば、仮想オブジェクトの机で隠れている現実物体の机)の存否をユーザに通知することができる。
【0082】
固定の仮想オブジェクトとは、固定の仮想オブジェクト配置用マーカに対応付けられた仮想オブジェクトである(図13(a)のマーカNo=51)。非固定の仮想オブジェクト配置用マーカに対応付けられた仮想オブジェクトを、非固定の仮想オブジェクトとであるものとする(図13(a)のマーカNo=50)。固定の仮想オブジェクト配置用マーカは、移動しない物体(例えば机)に貼り付けられた、仮想オブジェクトを描画するためのマーカである。
【0083】
例えば、仮想オブジェクトの「机」(図13(b)のオブジェクト識別No=101obj)があり、ユーザがモックを仮想オブジェクトの「机」に向けて近づけたとする。この場合、近付いたモックの位置に配置されているコップの仮想オブジェクトと近づけられた机の仮想オブジェクトとについて、固定の仮想オブジェクトか非固定の仮想オブジェクトかを判断し、図6に示すように、移動中の仮想オブジェクトであるコップ(非固定の仮想オブジェクト)ではなく、机の仮想オブジェクト(固定の仮想オブジェクト/101obj)の方を透過処理する。尚、非固定の仮想オブジェクトを透過処理するように設定することも可能である。
【0084】
また、2つの仮想オブジェクトのうちの、透過処理を行う対象を、移動中の仮想オブジェクトとするか、停止中の仮想オブジェクトとするかをユーザの選択で、適宜設定できるようにしてもよい。
【0085】
例えば、今、仮想オブジェクトの「机」があり、ユーザがモックを当該仮想オブジェクトの「机」に向けて近づけたとする。この場合、図6に示すように、移動中の仮想オブジェクトであるコップではなく、机の方を透過処理する。尚、移動中の仮想オブジェクトを透過処理するように設定がされている場合は、モックに描画されたコップの仮想オブジェクトを透過することが可能である。
【0086】
また、図7に示すように、所定距離以下になった仮想オブジェクトのいずれも(両方に対して)透過処理を行っても構わない。また、場合によっては、図8に示すように、所定距離以下になった仮想オブジェクトの全部を透過処理(仮想オブジェクトの描画を中止することを意味する)を行っても構わない。
【0087】
また、ここでは仮想オブジェクト同士の距離に応じて仮想オブジェクトを透過するものとしたが、例えば、所定距離内の仮想オブジェクトのどちらか一方または両方の仮想オブジェクトの色を変更することで、オブジェクト(物体)同士の接近を識別表示するようにしてもよい。
【0088】
また、仮想オブジェクト同士が所定距離内にある場合に、いずれか一方または両方の仮想オブジェクトの存在する位置に、新たに生成したマスクオブジェクト(仮想オブジェクトを描画しない領域(X,Y,Z)・形状を定義した)を所定時間配置して、仮想オブジェクトを一時的に描画させないようにしてもよい。つまり、新たな情報(マスクオブジェクト)を生成して画像に合成することで、仮想オブジェクトの下に現実物体があるか否かをユーザに通知する。
【0089】
本発明の第3の実施形態によれば、仮想オブジェクトで隠れている可能性がある現実物体の存否を認識可能にするように現実画像と仮想オブジェクト画像が合成された合成画像を、仮想オブジェクト同士の距離に応じて出力することができる。
【0090】
[第4の実施形態]
第4の実施形態を説明する。本第4の実施形態では、ユーザがモック120(仮想オブジェクトであるコップ)を移動させ、他の仮想物体と衝突(接触)させた場合の処理である。
【0091】
第4の実施形態においては、仮想オブジェクトを他の仮想オブジェクトと接触させることで、容易に仮想オブジェクトのコピー、配置、削除をすることを目的とする。
【0092】
図9を参照して説明する。図9において、900は、モック120に貼り付けられた仮想オブジェクト配置用マーカ(ただし、非固定)で規定される仮想オブジェクト(コップ)であり、901は仮想オブジェクトである箱である。仮想オブジェクト901は、それに該当する仮想化オブジェクトマーカに従って描画しても構わないし、マーカとは無関係に定義したオブジェクトであっても構わない。いずれにしても仮想ボックス901は固定であり、その形状、位置は既にデータとして、外部メモリ211に登録されているものとする。
【0093】
本第4の実施形態では、図9(a)に示すように、非固定の属性を持つ仮想オブジェクト900が矢印950に沿って移動中に、他の仮想オブジェクト901と衝突(接触)した場合、その仮想オブジェクトが衝突した位置に配置されるようにする。また、この際、本第4の実施形態では、載置した仮想オブジェクト900の3次元空間の位置と、それが仮想オブジェクト901に衝突した際の移動方向(衝突方向)とをRAM203に登録しておく。ユーザからすれば、視覚的にはコップが箱の上に載置されたかのように見えるものの、触覚による衝突の知覚は無いので、そのままモック120は矢印951に沿って移動できる。また、衝突以降、モック120に貼り付けられた仮想オブジェクト配置用マーカの識別処理は継続するものの、該当する仮想オブジェクト配置用マーカにより規定される仮想オブジェクトは描画対象から除外する。
【0094】
一方、仮想オブジェクト900が仮想オブジェクト901上に載置した状態で、許容範囲内で逆方向(矢印952)にモック120を移動し、かつ、モック120に貼り付けられた仮想オブジェクト配置用マーカの座標が、既に登録した仮想オブジェクト900の座標の許容範囲内に入ったとき、固定表示を解除する。すなわち、それまで表示されていた仮想オブジェクト900を消去すると共に、仮想オブジェクト配置用マーカに規定された仮想オブジェクト900による描画処理を開始させる。ユーザから見た場合、モック120が仮想オブジェクト900の近傍を、それを載置した方向とは逆方向に移動したとき、矢印953に沿ってコップを持ち上げたものとして知覚することになる。
【0095】
本第4の実施形態における装置構成は第1の実施形態と同じであるものとする。以下、本第4の実施形態におけるCPU201の処理を図10のフローチャートに従って説明する。
ステップS501乃至S504は第1の実施形態と同じであるので、その説明は省略する。
【0096】
HMD101で撮像した画像中に非固定の仮想オブジェクト配置用マーカ(モック120に貼り付けられている)を検出すると、処理はステップS1001に進み、着目している仮想オブジェクト配置用マーカの中心位置の座標と、図3(b)に示すデータの中に、接触状態の他の仮想化オブジェクト(図9では箱を表す仮想オブジェクト901)があるか否かを判定する。なければ、ステップS1007に処理を進める。
【0097】
一方、接触状態の他の仮想オブジェクトが存在すると判断した場合、処理はステップS1002に進み、移動中の仮想オブジェクト配置用マーカの中心位置の、前回撮像した際の座標と、現在の座標から、移動中の仮想オブジェクト配置用マーカの接触方向を特定する。そして、ステップS1003にて、他の仮想オブジェクト上の接触位置から予め設定された距離以内に、仮想オブジェクト配置用マーカで表される仮想オブジェクトと同じ仮想オブジェクトが既に固定表示されているか否かを判定する。
【0098】
このステップS1003の判定方法は後述するが、ここでは否であるものとして説明する。この場合、処理はステップS1005に進み、他の仮想オブジェクト上の接触位置に、移動中の仮想オブジェクト配置用マーカで表される仮想オブジェクト(実施形態では「コップ」の画像)を固定する。この際、RAM203の予め設定された領域に、移動中の仮想オブジェクト配置用マーカで表される仮想オブジェクトが配置されたことを示す情報、並びに、ステップS1002で求めた接触方向を示す情報を格納する。先に説明した、ステップS1003の判定は、RAM203の上記領域のデータを検索することで判定することになる。また、このステップS1005以降、移動中の仮想オブジェクト配置用マーカについてはその位置検出処理は継続するものの、該当する仮想オブジェクトは描画の対象外として設定する。
【0099】
上記の結果、図9(a)の状態、すなわち、ユーザがモック120を移動させて、そのモック120上に貼り付けられた仮想オブジェクト配置用マーカが、他の仮想オブジェクトと接触(衝突)した際、仮想オブジェクト配置用マーカで表される仮想オブジェクトが、他の仮想オブジェクト上に固定表示されることになる。つまり、ユーザは、コップを箱の上に置いたとものとして体感することになる。
【0100】
一方、ステップS1003にて、接触位置から予め設定された距離以内に、仮想オブジェクト配置用マーカで表される仮想オブジェクトと同じ仮想オブジェクトが既に固定表示されていると判定した場合、処理はステップS1004に進む。このステップS1004では、現在の仮想オブジェクト配置用マーカの接触方向と、RAM203に登録した接触方向とが、予め設定した許容範囲内で逆であるかを判定する。逆であると判定した場合、処理はステップS1008に進み、仮想オブジェクト配置用マーカで表される仮想オブジェクトの固定化を解除する。すなわち、再び、仮想オブジェクト配置用マーカの位置に追従して、それに規よって固定される仮想オブジェクトの描画処理を行う。
【0101】
この結果、図9(b)の状態、すなわち、ユーザがモック120を、以前に仮想オブジェクト上に固定したコップの近傍で移動させ、かつ、その移動方向が、そのコップを配置した際の移動方向とは逆方向であった場合、仮想オブジェクト配置用マーカの位置に追従して仮想オブジェクトが移動することになる。つまり、ユーザは、箱の上に置いたコップを持ち上げたとして体感することになる。
【0102】
なお、上記第4の実施形態では、仮想物体を載置した際のモックの移動方向に対して逆方向である場合に、固定を解除するものとしたが、ステップS1004の判定処理を無くし、既に固定した仮想物体の近傍に再び仮想オブジェクト配置用マーカが移動したという条件だけで固定表示を解除しても構わない。
【0103】
また、上記第4の実施形態では、移動中の仮想物体(コップ)を、接触した他の仮想物体上に固定した場合に、当該移動中だった仮想物体(コップ)を表す仮想オブジェクトマーカに対する、当該仮想物体(コップ)の描画を行わないものとしたが、例えば、当該接触後であっても、当該仮想オブジェクトマーカに対する当該仮想物体(コップ)の描画を継続するようにしてもよい。つまり、移動中の仮想オブジェクトマーカ(モックに貼り付けられたマーカ)の位置に対するコップの仮想オブジェクトの描画は継続したまま、接触したほかのオブジェクト上に当該コップの仮想オブジェクトを複製(生成)して、固定する処理を行う。
【0104】
この場合、図10のステップS1015の処理を複数回繰り返すことで、複数のコップの仮想オブジェクトが、接触した当該他のオブジェクト上に固定(複製)される。
【0105】
第4の実施形態においては、仮想オブジェクトを他の仮想オブジェクトと接触させることで、容易に仮想オブジェクトのコピー、配置、削除をすることができる。
【0106】
[第5の実施形態]
本発明の第5の実施形態においては、現実物体と仮想オブジェクトが重なっている場合に、現実物体の存否を認識可能にするように現実画像と仮想オブジェクト画像が合成された合成画像を、物体同士の距離に応じて出力することを目的とする。
【0107】
第5の実施形態においては、仮想オブジェクトと他の物体が所定距離内にある場合に、仮想オブジェクトに重なっている現実物体の存否を、現実物体テーブル(図13(c))を参照して判定し、当該判定結果をユーザに通知する。例えば、仮想オブジェクトを透過して、仮想オブジェクトに重なっている現実物体の存在をユーザに視認させる。
【0108】
図11を参照して、本発明の第5の実施形態の処理について説明する。第1の実施形態と共通の処理については上述したため、説明を省略する。
【0109】
情報処理装置100のCPU201は、ステップS508で距離が算出された仮想オブジェクト(コップ)の、形状を示すデータ(図13(b)の描画データ)を取得し、コップから所定距離内にある現実物体の形状を示すデータ(図13(c)の形状)を取得する。また、ステップS508で距離を算出した現実物体(机)の、形状を示すデータ(図13(c)の形状)を取得し、コップから所定距離内にある仮想オブジェクトの形状を示すデータ(図13(b)の描画データ)を取得する。そして、ステップS508で距離が算出された現実物体の机に重なっている仮想オブジェクトがあるか、及び、ステップS508で距離が算出された仮想オブジェクトのコップに現実物体が重なっているか判定する。つまり、仮想オブジェクトと現実物体が重なっているか判定する(ステップS1101)。
【0110】
重なっていないと判定された場合(ステップS1101でNO)、処理をステップS510に移行する。重なっていると判定された場合(ステップS1101でYES)、当該現実物体と重なっている仮想オブジェクトを透過して描画する(ステップS1102)。
【0111】
当該透過の処理は、現実物体の存否を認識可能にするための手段の1つである。
【0112】
例えば、仮想オブジェクトを透過する代わりに、仮想オブジェクトに重なっている現実物体と同じ形状の仮想オブジェクトを生成して、現実物体と同じ位置に配置して強調表示する(現実物体の形状をしたオブジェクトを最前面に表示する/点線で輪郭を表示する等)することで、仮想オブジェクトと重なっている現実物体の存在をユーザに通知し、視認(確認)させるようにしてもよい。
【0113】
また、仮想オブジェクトから所定距離離れた位置(予め決められた座標)に、当該仮想オブジェクトに現実物体が重なっている旨を示す、不図示の吹き出しアイコン(2次元画像)を表示して当該通知を行うようにしてもよい。
【0114】
透過処理、現実物体のオブジェクト描画、アイコン表示はそれぞれ個別に行ってもよいし、同時に行うようにしてもよい。
【0115】
本発明の第5の実施形態によれば、現実物体と仮想オブジェクトが重なっている場合に、現実物体の存否を認識可能にするように現実画像と仮想オブジェクト画像が合成された合成画像を、物体同士の距離に応じて出力することができる。
【0116】
[第6の実施形態]
本発明の第6の実施形態においては、現実物体の存否を認識可能にするように現実画像と仮想オブジェクト画像が合成された合成画像を、現実物体同士の距離に応じて出力することを目的とする。
【0117】
現実物体に仮想オブジェクトが重なっている場合があるため、第6の実施形態においては、現実物体同士が所定距離内にある場合に、例えば、仮想オブジェクトを透過して現実物体の存否をユーザに確認させる。
【0118】
図12を参照して、本発明の第6の実施形態の処理について説明する。第1の実施形態と共通の処理については上述したため、説明を省略する。
【0119】
情報処理装置100のCPU201は、HMDの位置、現実物体テーブル(図13(c))を参照して、HMDから所定距離内に現実物体があるか判定する(ステップS1201)。現実物体がない場合(ステップS1201でNO)、処理をステップS510に移行する。現実物体がある場合(ステップS1201でYES)、処理をステップS506に移行する。
【0120】
情報処理装置100のCPU201は、現実物体が移動中であるか否かを判定する(ステップS1202)。実施形態では、30フレーム/秒で処理することを想定しているので、1/30秒前の現実物体の位置との差が所定閾値以上あるか否かで判断するものとする。1/30秒前に、現実物体の存在が検出できない場合も移動中であるものとする。なお、この閾値は、HMD101の位置姿勢の検出精度に依存して決めればよい。
【0121】
ステップS1202の判定結果が移動中ではない、すなわち、停止状態を示す場合(ステップS1202でNO)、処理はステップS1203に進み、停止状態になってから所定時間(実施形態では5秒)経過したか否かを判定する。判定結果が所定時間経過したことを示す場合、ステップS510に進み、通常の仮想オブジェクトの描画処理を行う。
【0122】
また、ステップS1202の判定結果が、現実物体が移動中であることを示している場合(ステップS1202でYES)、CPU201は処理をステップS1204に進める。そして、図13(c)の現実物体テーブルを参照して、他の現実物体との距離を算出し(ステップS1204)、移動中であると判定された現実物体との距離が所定以下となっている現実物体が存在するか否かを判定する(ステップS1205)。なお、この判定では、現実物体がHMD101の視野内にあるか否かは問わない。距離が所定以下の現実物体が存在しない場合には(ステップS1205でNO)、ステップS510に処理を進める。
一方、距離が所定以下の現実物体が存在する場合には(ステップS1205でYES)、処理をステップS1206に進める。
【0123】
情報処理装置100のCPU201は、移動中の現実物体、及び、移動中の現実物体から処理距離内にあると判定された現実物体に重なっている仮想オブジェクトがあるかを、各現実物体の形状、及び、各現実物体から所定距離内にある仮想オブジェクトを図13(b)(c)を参照して判定する(ステップS1206)。
【0124】
現実物体に重なっている仮想オブジェクトがないと判定された場合(ステップS1206でNO)、処理をステップS510に移行する。現実物体に重なっている仮想オブジェクトがあると判定された場合(ステップS1206でYES)、当該現実物体に重なっている仮想オブジェクトを透過して描画し(ステップS1207)、通常描画された他の仮想オブジェクトと合わせて現実画像と合成して出力する。
【0125】
本発明の第6の実施形態によれば、現実物体の存否を認識可能にするように現実画像と仮想オブジェクト画像が合成された合成画像を、現実物体同士の距離に応じて出力することができる。
【0126】
以上、本発明に係る各実施形態を説明したが、上記実施形態は、本発明に係る例であると認識されたい。たとえば、HMD101の位置姿勢を検出するため、上記実施形態では位置検出用マーカが撮像した視野内に3つは存在するものとして、位置検出用マーカを部屋中に多数張り付けるものとしたが、これによって本発明が限定されるものではない。位置検出用マーカには向きを規定する印があり、位置検出用マーカの座標だけでなく、形状や寸法も既知であれば、撮像した画像の位置検出の歪み、サイズ、印の位置から、1つの位置検出用マーカからだけでもHMD101の位置姿勢を特定できる。また、位置検出用マーカを用いるのではなく、HMDそのものの位置姿勢を、光学式センサ、磁気センサ、超音波センサなどを利用して検出する公知技術を利用しても構わない。つまり、HMDの位置姿勢検出に係る手段は問わない。
【0127】
尚、上述した実施形態においては、仮想オブジェクトの透明化処理(透明度の変更の処理)を行うことによって、ユーザに通知を行ったが、例えば、移動中の仮想オブジェクトと現実物体、又は他の仮想オブジェクトが所定距離以上近付いた場合に、前記近付いたもの同士の最短距離を示す仮想オブジェクトを生成して、描画するようにしてもよい。例えば、定規の仮想オブジェクトを、移動中の仮想オブジェクトと現実物体、又は他の仮想オブジェクトとの間に表示するようにしてもよい。
【0128】
また、所定時間以上、当該所定距離以内にあるオブジェクトと現実物体、又は他の仮想オブジェクトが停止した状態にある場合、当該定規の仮想オブジェクトの描画を停止するようにしてもよい。
【0129】
また、移動中の仮想オブジェクトと現実物体、又は他の仮想オブジェクトが所定距離以上近付いた場合、例えば、上述した透明度の変更の処理の代わりに、当該移動中の仮想オブジェクト、及び/又は前記移動中の仮想オブジェクトが接近した仮想オブジェクトの全部又は一部の色を変更する処理を行ってもよい。
【0130】
また、所定時間以上、当該所定距離以内にあるオブジェクトと現実物体、又は他の仮想オブジェクトが停止した状態にある場合、当該色の変更処理を停止し、元の色彩に仮想オブジェクトの色彩を戻して描画するようにしてもよい。
【0131】
以上説明した通り、本発明によれば、現実空間に仮想空間が配置されている場合に、現実物体の存否を認識可能にするように現実画像と仮想オブジェクト画像が合成された合成画像を、空間内における物体同士の距離に応じて出力することができる。
【0132】
また、本発明によれば、MR空間において移動するオブジェクトと他のオブジェクトとの距離に応じて、少なくとも一方が仮想オブジェクトである場合に、ユーザに通知する仕組みを提供することができる。
【0133】
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
【0134】
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
【0135】
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【0136】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
【0137】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD-ROM、CD-R、CD-RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD-ROM,DVD-R)などもある。
【0138】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
【0139】
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
【0140】
また、本発明のプログラムを暗号化してCD-ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【0141】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【0142】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【0143】
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0144】
100…情報処理装置、101…HMD101、102…ケーブル、120,150…マーカ、201…CPU、202…ROM、203…RAM、204…システムバス、205…入力コントローラ、206…ビデオコントローラ、207…メモリコントローラ、208…通信I/Fコントローラ、209…入力デバイス、210…ディスプレイ、211…外部メモリ、221…右目ビデオカメラ、222…左目ビデオカメラ、223…右目ディスプレイ、224…左目ディスプレイ、225…コントローラ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13