(57)【要約】【課題】複数の仮想物体の中から事前設定なしに干渉判定に使用する仮想物体を選択して干渉判定を行うことができる情報処理装置を提供する。【解決手段】情報処理装置は、仮想空間における複数の仮想物体の位置姿勢及び形状情報を保持する仮想データ保持部、この仮想物体を保持するユーザの手の位置姿勢及び形状情報を取得する手情報取得部を有する。また、複数の仮想物体の位置姿勢及び形状情報と、手の位置姿勢及び形状情報とに基づいて、保持された仮想物体を干渉仮想物体として設定し、保持されていない仮想物体を被干渉仮想物体として設定する干渉仮想物体設定部を有する。また、干渉仮想物体の位置姿勢及び形状情報と、被干渉仮想物体の位置姿勢及び形状情報とに基づいて、これらが干渉したか否かを判定する干渉判定部を有する。また、仮想データ保持部が保持する情報と干渉判定部の判定結果に基づいて仮想空間を生成する仮想空間生成部有する。【選択図】図１
2019008623.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間における複数の仮想物体の位置姿勢および形状情報を保持するデータ保持手段と、
前記仮想空間において前記仮想物体を保持する被保持物体の位置姿勢および形状情報を取得する取得手段と、
前記複数の前記仮想物体の位置姿勢および形状情報と、前記被保持物体の位置姿勢および形状情報とに基づいて、当該被保持物体によって保持されている仮想物体を干渉仮想物体として設定し、保持されていない仮想物体を被干渉仮想物体として設定する設定手段と、
前記干渉仮想物体の位置姿勢および形状情報と、前記被干渉仮想物体の位置姿勢および形状情報とに基づいて、前記干渉仮想物体と前記被干渉仮想物体が干渉したか否かを判定する判定手段と、
前記データ保持手段が保持する情報と前記判定手段の判定結果に基づいて前記仮想空間を生成する生成手段と、を有することを特徴とする、
情報処理装置。
【請求項２】
現実の空間を撮像した撮像画像を取得する画像撮像手段と、
前記撮像画像と前記生成手段が生成した仮想空間に基づいて仮想空間画像を生成する画像生成手段と、
前記撮像画像と前記仮想空間画像が重畳された画像を表示画面に表示する表示手段と、を有することを特徴とする、
請求項１に記載の情報処理装置。
【請求項３】
前記被保持物体は、前記仮想空間において前記仮想物体を保持するユーザの手であることを特徴とする、
請求項１又は２に記載の情報処理装置。
【請求項４】
前記判定手段が干渉したと判定した場合に当該干渉を通知する通知手段を有することを特徴とする、
請求項１、２又は３に記載の情報処理装置。
【請求項５】
前記干渉仮想物体に対して、被干渉仮想物体との間に所定の隙間量を確保できているか否かを確認するため領域を設定するマージン設定手段を有し、
前記判定手段は、前記設定した領域と被干渉仮想物体が干渉したか否かを判定することを特徴とする、
請求項１乃至４いずれか一項に記載の情報処理装置。
【請求項６】
前記マージン設定手段は、前記仮想物体を保持している被保持物体を含めて前記干渉仮想物体とし、これに対して被干渉仮想物体との間に前記所定の隙間量を確保できているか否かを確認するため領域を設定することを特徴とする、
請求項５に記載の情報処理装置。
【請求項７】
前記生成手段は、前記マージン設定手段が設定した領域を仮想物体として前記仮想空間を生成することを特徴とする、
請求項５又は６に記載の情報処理装置。
【請求項８】
前記表示手段における視錐台を取得する取得手段を有し、
前記判定手段は、前記干渉仮想物体が前記視錐台内に存在するか否かを判定し、
前記マージン設定手段は、前記判定手段の判定結果に応じて前記領域を設定することを特徴とする、
請求項５、６又は７に記載の情報処理装置。
【請求項９】
前記情報処理装置において生成された前記仮想空間を当該装置とは異なる他の情報処理装置に向けて送信する送信手段と、
前記他の情報処理装置において生成された仮想空間を仮想空間情報として取得する受信手段と、有し、
前記生成手段は、前記仮想空間を生成する際に前記取得した仮想空間情報を反映させて当該仮想空間を生成することを特徴とする、
請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記取得した仮想空間情報のうち、いずれの仮想空間情報を反映させるか選択する選択手段を有することを特徴とする、
請求項９に記載の情報処理装置。
【請求項１１】
前記取得手段は、前記撮像画像から抽出される特徴情報に基づいて前記被保持物体の位置姿勢および形状情報を取得することを特徴とする。
請求項２及至１０のいずれか１項に記載の情報処理装置。
【請求項１２】
前記表示手段は、光学シースルー型の表示装置であることを特徴とする、
請求項１及至１１のいずれか１項に記載の情報処理装置。
【請求項１３】
前記表示手段は、ビデオシースルー型の表示装置であることを特徴とする、
請求項１及至１１のいずれか１項に記載の情報処理装置。
【請求項１４】
前記表示手段は、ユーザの頭部へ装着可能に構成された表示装置であることを特徴とする、
請求項１及至１３のいずれか１項に記載の情報処理装置。
【請求項１５】
情報処理装置の制御方法であって、
仮想空間における複数の仮想物体の位置姿勢および形状情報を保持する工程と、
前記仮想空間において前記仮想物体を保持する被保持物体の位置姿勢および形状情報を取得する工程と、
前記複数の前記仮想物体の位置姿勢および形状情報と、前記被保持物体の位置姿勢および形状情報とに基づいて、当該被保持物体によって保持されている仮想物体を干渉仮想物体として設定し、保持されていない仮想物体を被干渉仮想物体として設定する工程と、
前記干渉仮想物体の位置姿勢および形状情報と、前記被干渉仮想物体の位置姿勢および形状情報とに基づいて、前記干渉仮想物体と前記被干渉仮想物体が干渉したか否かを判定する工程と、
前記複数の仮想物体の位置姿勢および形状情報と前記判定の結果に基づいて前記仮想空間を生成する工程と、を有することを特徴とする、
情報処理装置の制御方法。
【請求項１６】
仮想空間における複数の仮想物体の位置姿勢および形状情報を保持するデータ保持手段と、
前記仮想空間において前記仮想物体を保持する被保持物体の位置姿勢および形状情報を取得する取得手段と、
前記複数の前記仮想物体の位置姿勢および形状情報と、前記被保持物体の位置姿勢および形状情報とに基づいて、当該被保持物体によって保持されている仮想物体を干渉仮想物体として設定し、保持されていない仮想物体を被干渉仮想物体として設定する設定手段と、
前記干渉仮想物体の位置姿勢および形状情報と、前記被干渉仮想物体の位置姿勢および形状情報とに基づいて、前記干渉仮想物体と前記被干渉仮想物体が干渉したか否かを判定する判定手段と、
前記データ保持手段が保持する情報と前記判定手段の判定結果に基づいて前記仮想空間を生成する生成手段と、を有することを特徴とする、
情報処理装置。
【請求項１７】
コンピュータを情報処理装置として動作させるためのコンピュータプログラムであって、
前記コンピュータを、
仮想空間における複数の仮想物体の位置姿勢および形状情報を保持するデータ保持手段、
前記仮想空間において前記仮想物体を保持する被保持物体の位置姿勢および形状情報を取得する取得手段、
前記複数の前記仮想物体の位置姿勢および形状情報と、前記被保持物体の位置姿勢および形状情報とに基づいて、当該被保持物体によって保持されている仮想物体を干渉仮想物体として設定し、保持されていない仮想物体を被干渉仮想物体として設定する設定手段、
前記干渉仮想物体の位置姿勢および形状情報と、前記被干渉仮想物体の位置姿勢および形状情報とに基づいて、前記干渉仮想物体と前記被干渉仮想物体が干渉したか否かを判定する判定手段、
前記データ保持手段が保持する情報と前記判定手段の判定結果に基づいて前記仮想空間を生成する生成手段、として機能させることを特徴とする、
コンピュータプログラム。
【請求項１８】
請求項１７に記載のコンピュータプログラムをコンピュータが読み取り可能に記憶した記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想物体同士の干渉判定技術に関する。
【背景技術】
【０００２】
近年、設計・製造分野においてプロトタイプを用いた評価の期間短縮、費用削減が求められている。ＣＡＤ（コンピュータ支援設計）システムで作成した設計（形状・デザイン）データを用いて、組み立てやすさやメンテナンス性の仮想評価をするための複合現実感（ＭＲ：Ｍｉｘｅｄ  Ｒｅａｌｉｔｙ）システムが導入されている。
代表的な評価項目として、工具を目的の部品以外に干渉させずに作業できるか否か、工具と部品との間に適切な隙間が確保できているか否かを現実の部品が存在しなくても仮想部品のみで評価するというものがある。
【０００３】
このような評価を行うための複合現実感システムでは、体験者（ユーザ）自らが仮想物体（例えば工具）を動かして別の仮想物体（部品）に干渉させたかどうかを提示する機能が求められる。また、ユーザが動かしている工具と部品との隙間が適切に確保できているかどうかを提示する機能が求められる。（例えば、特許文献１、２、３参照）
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−５９３７５号公報
【特許文献２】特開２００３−３３７９６２号公報
【特許文献３】特開２００６−３０２０３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、特許文献１等に開示される方法では、操作対象物体としての仮想物体をユーザが手で保持する指示具に重畳し、それと仮想空間中に固定配置される仮想物体との干渉判定を行う。しかしながら、この方法では、複数の仮想物体の中から指示具と操作対象物体にする仮想物体を事前に設定し、重畳する必要がある、という課題が残る。また、指示具の形状と仮想物体の形状とに大きな差異があると重畳しても没入感を妨げる、といった問題がある。
【０００６】
本発明は、上記課題に鑑みてなされたものであり、複数の仮想物体の中から事前設定なしに干渉判定に使用する仮想物体を選択して干渉判定を行うことができる情報処理装置を提供することを、主たる目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る情報処理装置は、仮想空間における複数の仮想物体の位置姿勢および形状情報を保持するデータ保持手段と、前記仮想空間において前記仮想物体を保持する被保持物体の位置姿勢および形状情報を取得する取得手段と、前記複数の前記仮想物体の位置姿勢および形状情報と、前記被保持物体の位置姿勢および形状情報とに基づいて、当該被保持物体によって保持されている仮想物体を干渉仮想物体として設定し、保持されていない仮想物体を被干渉仮想物体として設定する設定手段と、前記干渉仮想物体の位置姿勢および形状情報と、前記被干渉仮想物体の位置姿勢および形状情報とに基づいて、前記干渉仮想物体と前記被干渉仮想物体が干渉したか否かを判定する判定手段と、前記データ保持手段が保持する情報と前記判定手段の判定結果に基づいて前記仮想空間を生成する生成手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数の仮想物体の中から事前設定なしに干渉判定に使用する仮想物体を選択して干渉判定を行うことが可能になる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係るシステムの機能構成の一例を示すブロック図。
【図２】情報処理装置のハードウェア構成の一例を示す図。
【図３】情報処理装置がセンサを介して取得した世界座標系を説明するための図。
【図４】情報処理装置が行う処理手順の一例を示すフローチャート。
【図５】（ａ）〜（ｄ）は、情報処理装置がマージンを設定する一連の処理を説明するための図。
【図６】第２実施形態に係るシステムの機能構成の一例を示すブロック図。
【図７】情報処理装置が行う処理手順の一例を示すフローチャート。
【図８】情報処理装置がマージンを設定する一連の処理を説明するための図。
【図９】第３実施形態に係るシステムの機能構成の一例を示すブロック図。
【図１０】情報処理装置が行う処理手順の一例を示すフローチャート。
【図１１】（ａ）〜（ｄ）は、情報処理装置がマージンを設定する一連の処理を説明するための図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００１１】
［第１実施形態］
図１は、本実施形態に係るシステムの機能構成の一例を示すブロック図である。
本実施形態に係るシステムＳは、情報処理装置１０００、ユーザの頭部へ装着可能に構成された表示装置の一例であるＨＭＤ（Head Mounted Display）１１００、画像表示装置１２００、センサ１３００を含んで構成される。
【００１２】
情報処理装置１０００は、手情報取得部１０１０、仮想空間生成部１０２０、撮像画像取得部１０３０、位置姿勢計測部１０４０、複合現実画像生成部１０５０を含んで構成される。ＨＭＤ１１００は、画像撮像部１１１０、画像表示部１１２０を含んで構成される。
なお、情報処理装置１０００とＨＭＤ１１００は相互にデータ通信が可能に接続される。また、情報処理装置１０００とＨＭＤ１１００との間の接続は、有線、無線の何れであっても構わない。
【００１３】
図２は、情報処理装置１０００のハードウェア構成の一例を示す図である。
情報処理装置１０００は、ＣＰＵ（Central Processing Unit）２０１０、ＲＯＭ（Read Only Memory）２０２０、ＲＡＭ（Random Access Memory）２０３０、入力Ｉ／Ｆ（インタフェース）２０４０、出力Ｉ／Ｆ２０５０を有する。
【００１４】
ＣＰＵ２０１０は、バス２０００を介して接続する各デバイスを統括的に制御する。ＣＰＵ２０１０は、読み出し専用メモリ（ＲＯＭ２０２０）に記憶された処理ステップやプログラムを読み出して実行する。オペレーティングシステム（ＯＳ）をはじめ、本実施形態に係る各種プログラム、デバイスドライバ等はＲＯＭ２０２０に記憶される。なお、これら各種プログラム等はランダムアクセスメモリ（ＲＡＭ）２０３０に一時記憶される。また、各種プログラム等はＣＰＵ２０１０によって適宜実行され、情報処理装置１０００の各機能部を動作させる。
入力Ｉ／Ｆ２０４０は、外部の装置（例えば、表示装置や操作装置など）から情報処理装置１０００で処理可能な形式で入力信号として入力する。
出力Ｉ／Ｆ２０５０は、外部の装置（表示装置）へ表示装置が処理可能な形式で出力信号として出力する。
以下、情報処理装置１０００等の機能構成について図１、２、３を用いて説明する。
【００１５】
［情報処理装置１０００の機能構成］
図３は、情報処理装置１０００がセンサ１３００を介して取得した世界座標系を説明するための図である。なお、図３に示すように、世界座標系は現実空間の１点を原点として定義し、更に互いに直交する３軸を夫々Ｘ軸、Ｙ軸、Ｚ軸として定義した座標系とする。
【００１６】
情報処理装置１０００の手情報取得部１０１０は、センサ１３００を介して計測された世界座標系における指を含むユーザの手３０００の位置、姿勢を表す情報（位置姿勢情報）を取得する。手情報取得部１０１０は、また、手３０００の形状を表す３次元ポリゴンモデルを形状情報として取得する。取得されたユーザの手３０００の位置姿勢および形状情報は、干渉仮想物体設定部１０２２に入力される。このように、手情報取得部１０１０は、仮想空間において仮想物体を保持する被保持物体（ユーザの手３０００）の位置姿勢および形状情報を取得する手情報取得手段として機能する。
【００１７】
仮想データ保持部１０２１は、仮想空間を構成する仮想物体に係るデータ（位置姿勢情報、形状情報）、仮想空間中に照射する光源に係るデータなどの仮想空間に係る情報を保持する。仮想空間に係る情報は、干渉仮想物体設定部１０２２および干渉判定部１０２４に入力される。
【００１８】
干渉仮想物体設定部１０２２は、手情報取得部１０１０を介して取得された手３０００の位置姿勢および形状情報と、仮想データ保持部１０２１が取得した仮想物体の位置姿勢および形状情報とに基づいて手３０００が保持する仮想物体を特定する。干渉仮想物体設定部１０２２は、また、保持されている仮想物体を干渉仮想物体、保持されていない仮想物体を被干渉仮想物体に設定する。
情報処理装置１０００は、干渉仮想物体設定部１０２２において手３０００で保持されていると特定された仮想物体の位置姿勢を手３０００の位置姿勢に追従するよう変更する。
なお、手３０００で仮想物体が保持されているか否かを特定する手法は、所定の保持条件を満たしているか否かを判定する手法など既知のものを用いることができる。
【００１９】
本実施形態の説明においては、手３０００の指先、関節および手のひらに、球状の仮想物体を配置し、仮想空間中の仮想物体と手に配置された球状の仮想物体とが干渉しているか否かを判定することとする。また、干渉している球の位置関係が条件を満たしている場合、仮想物体を保持していると特定する既知の手法を用いて説明するが、本発明はこれに限定されない。
情報処理装置１０００は、設定された仮想物体情報をマージン設定部１０２３および干渉判定部１０２４に入力する。情報処理装置１０００は、また、干渉仮想物体の位置姿勢を手の位置姿勢に追従するよう変更するため、干渉仮想物体情報と手の位置姿勢情報を仮想データ保持部１０２１に入力する。
【００２０】
マージン設定部１０２３は、干渉仮想物体設定部１０２２を介して設定された干渉仮想物体を膨張させて、干渉仮想物体と被干渉仮想物体との間に適切な隙間量を確保できているか否かを確認するための領域（マージン）を設定する。そして、マージン設定部１０２３は、マージンを仮想空間に生成する。
なお、マージンは、干渉仮想物体と被干渉仮想物体の干渉を事前に警告するために使用されても良い。設定された領域情報を干渉判定部１０２４に入力する。
【００２１】
干渉判定部１０２４は、例えば、不図示の仮想物体干渉判定部とマージン干渉判定部を含んで構成される。仮想物体干渉判定部では、干渉仮想物体設定部１０２２を介して設定された干渉仮想物体と被干渉仮想物体が干渉しているか否かを判定する。また、マージン干渉判定部では、マージン設定部１０２３を介して設定されたマージンと被干渉仮想物体とが干渉しているか否かを判定する。干渉判定部１０２４は、それぞれの干渉判定結果を干渉通知部１０２５に入力する。
【００２２】
干渉通知部１０２５は、例えば、不図示の仮想物体干渉通知部とマージン干渉通知部を含んで構成される。仮想物体干渉通知部では、干渉判定部１０２４の仮想物体干渉判定部により干渉仮想物体と被干渉仮想物体とが干渉していると判定された際に、干渉位置を取得して干渉通知フラグをＯＮにする。また、マージン干渉通知部では、干渉判定部１０２４のマージン干渉判定部によりマージンと被干渉仮想物体とが干渉していると判定された際に、干渉位置を取得して干渉通知フラグをＯＮにする。
【００２３】
仮想空間生成部１０２０は、仮想データ保持部１０２１、干渉仮想物体設定部１０２２、マージン設定部１０２３、干渉判定部１０２４、干渉通知部１０２５を含んで構成される。
仮想空間生成部１０２０は、各部で取得された仮想物体の位置情報やマージン情報、干渉判定の通知フラグなどに基づいて仮想空間を生成する。生成された仮想空間の情報（仮想空間情報）は、複合現実画像生成部１０５０に入力される。
【００２４】
撮像画像取得部１０３０は、画像撮像部１１１０を介して撮像された現実空間の画像（現実空間画像）を取得して位置姿勢計測部１０４０、複合現実画像生成部１０５０に入力する。
【００２５】
位置姿勢計測部１０４０は、撮像画像取得部１０３０を介して取得された現実空間画像を用いて画像処理を行い、画像中の点や線などの特徴的な情報（特徴情報）を抽出することで計測対象（例えば、ユーザ）の位置姿勢を計測する。位置姿勢計測部１０４０は、計測結果である位置姿勢情報を複合現実画像生成部１０５０に入力する。
なお、本実施形態では画像処理による位置姿勢計測を説明するが、赤外光を用いて対象物の位置姿勢を計測するように構成しても良いし、超音波を用いて位置姿勢を計測しても良いし、磁気センサを位置姿勢を計測しても良い。更に、奥行きセンサを用いて対象物の位置姿勢を計測するように構成しても良いし、機械的に位置姿勢を計測しても良い。
【００２６】
複合現実画像生成部１０５０は、仮想空間生成部１０２０を介して生成された仮想空間と、位置姿勢計測部１０４０の計測結果とに基づいて仮想空間画像を生成する。複合現実画像生成部１０５０は、また、仮想空間画像を撮像画像取得部１０３０で取得された現実空間画像に重畳し、複合現実空間の画像（複合現実画像）を生成する。複合現実画像生成部１０５０は、この生成した複合現実画像をＨＭＤ１１００の画像表示部１１２０に対して出力する（表示制御）。
なお、画像表示部１１２０と画像表示装置１２００に同時に表示するように構成しても良い。ＨＭＤに限ったことではなく表示できる装置であれば良く、タブレット・スマートフォン等の表示端末であっても良い。また、所定の位置から見える仮想空間を生成する技術については既知の技術を用いることができるため、これについての詳細な説明は省略する。
【００２７】
また、これまで説明した各機能部は、ＣＰＵ２０１０がＲＯＭ２０２０に格納されたプログラムをＲＡＭ２０３０に展開し、後述する各フローチャートに従った処理を実行することで実現することができる。例えば、ＣＰＵ２０１０を用いたソフトウェア処理の代替としてハードウェアを構成する場合には、ここで説明する各機能部の処理に対応させた演算部や回路を構成すれば良い。
【００２８】
［ＨＭＤ１１００の機能構成］
ＨＭＤ１１００は、右目用と左目用の液晶画面（表示画面）などを含んで構成される表示装置の一例である。表示画面は、ＨＭＤ１１００を頭部に装着したユーザの右目、左目の眼前に位置するようにそれぞれが取り付けられている。また、左右の画面にはそれぞれ視差のついた画像がステレオ表示される。
【００２９】
画像撮像部１１１０は、ＨＭＤ１１００を頭部に装着したユーザが見ている現実の空間を撮像し、撮像画像を現実空間画像として情報処理装置１０００に入力する。画像表示部１１２０は、情報処理装置１０００が生成した複合現実画像を表示画面に表示する。
本実施形態に係るＨＭＤ１１００は、撮像装置により撮像された画像に基づいて生成された複合現実画像を表示装置に表示するビデオシースルー型のＨＭＤであるとして説明を進める。その他にも、例えば現実空間を透過して観察することが可能な表示媒体に仮想空間画像を重畳して表示する光学シースルー型のＨＭＤを用いても良い。
【００３０】
［センサ１３００の機能構成］
センサ１３００は、指を含めた手３０００の位置姿勢を計測する。センサ１３００は、また、計測結果に基づいて手３０００の形状を模した３次元ポリゴンモデルをリアルタイムに出力することができる。センサ１３００は、位置姿勢計測結果およびポリゴンモデルの形状情報を情報処理装置１０００に入力する。
なお、センサ１３００は、例えばリープモーション社が提供するLeap Motion（登録商標）を用いることができる。Leap Motionは、指を含めた手の位置姿勢を計測し、また、内蔵されているステレオカメラから手の領域を検出し、手の形状を模した３次元ポリゴンモデルを出力できるものである。
また、例えばマイクロソフト社のKinect等の奥行きセンサを用い、手と指の位置姿勢を推定することができる。更に、奥行きセンサで得られた手の形状の奥行き画像に基づいて、初期位置から繰り返し計算し、コストを最適化することによって手と指の姿勢を推定した３次元ポリゴンモデルを生成する手法を用いても良い。画像処理により手の領域を抽出し、ステレオマッチングやＳＬＡＭ（Simultaneous Localization and Mapping）により深度を推定することで位置情報を計測する手法を用いても良い。
【００３１】
図４は、情報処理装置１０００が行う処理手順の一例を示すフローチャートである。
図４に示す各処理は、具体的には、情報処理装置１０００が複合現実空間画像を生成し、ＨＭＤ１１００または画像表示装置１２００に対して出力する処理を示している。
なお、図４に示す各処理は、主としてＣＰＵ２０１０により実行される。
【００３２】
図５は、情報処理装置１０００がマージンを設定する一連の処理を説明するための図である。具体的には、情報処理装置１０００は、複数個の仮想物体（仮想物体５０００、仮想物体５１００）が存在する仮想空間（図５（ａ）参照）において、ユーザの手で保持された仮想物体を干渉判定に使用する仮想物体に決定してマージンを設定する。
以下、図４、図５を用いて処理の詳細を説明する。
【００３３】
ＣＰＵ２０１０は、画像撮像部１１１０を介して現実空間画像を取得し、取得した画像に基づいて計測対象の位置姿勢を計測して位置姿勢情報を取得する（Ｓ４０００）。
ＣＰＵ２０１０は、手情報取得部１０１０を介して、センサ１３００により計測された手５２００の世界座標系における位置姿勢を取得する（Ｓ４１００）。
ＣＰＵ２０１０は、図５（ｂ）に示すように、手５２００の形状情報に基づいて手の指先、関節および手のひらなどに球状仮想物体を配置する。
【００３４】
ＣＰＵ２０１０は、干渉仮想物体設定部１０２２を介して、手５２００と仮想物体５０００および仮想物体５１００の干渉の有無を判定する（Ｓ４２００）。具体的には、仮想物体の位置姿勢および形状情報と、球状仮想物体の位置姿勢および形状情報とに基づいて干渉の有無を判定する。
【００３５】
干渉判定は、例えば以下の手順で実現する。まず、それぞれの仮想物体から三角形ポリゴンを一つずつ取り出し、その三角形ポリゴン同士が交差しているか否かを判定する。これを全ての三角形ポリゴンの組み合わせに対して行い、一つでも交差している場合は干渉していると判定する。ただし、本発明における干渉判定の実現方法はこれに限定されない。
【００３６】
ＣＰＵ２０１０は、複数の仮想物体のうち、いずれかの仮想物体と球状仮想物体が干渉していると判定した場合（Ｓ４２００：Ｙｅｓ）、ステップＳ４２１０の処理に移行する。また、そうでない場合（Ｓ４２００：Ｎｏ）、ステップＳ４５００の処理に移行する。
【００３７】
ＣＰＵ２０１０は、干渉仮想物体設定部１０２２を介して、仮想物体と干渉している球状仮想物体の位置情報を取得する（Ｓ４２１０）。
ＣＰＵ２０１０は、干渉仮想物体設定部１０２２を介して、球状仮想物体の干渉位置が所定の保持条件を満たしているか否かを判定する（Ｓ４３００）。条件を満たしている場合（Ｓ４３００：Ｙｅｓ）、ステップＳ４３１０の処理に移行する。また、そうでない場合（Ｓ４３００：Ｎｏ）、ステップＳ４５００の処理に移行する。
【００３８】
ＣＰＵ２０１０は、仮想データ保持部１０２１を介して、図５（ｃ）に示すように保持条件を満たしている仮想物体５０００がユーザの手５２００の位置姿勢に追従するよう位置姿勢を変更する（Ｓ４３１０）。
ＣＰＵ２０１０は、干渉仮想物体設定部１０２２を介して、保持条件を満たしている仮想物体５０００を干渉仮想物体に、保持条件を満たしていない仮想物体５１００を被干渉仮想物体に設定する（Ｓ４３２０）。
【００３９】
なお、本実施形態では保持した仮想物体のみを干渉仮想物体に設定する手法を説明するが、本発明はこれに限定されない。例えば、入力Ｉ／Ｆ２０４０を介して、干渉仮想物体設定部１０２２が干渉仮想物体に設定した仮想物体に対して追加する仮想物体を選択し、追加した仮想物体を含めて干渉仮想物体に設定しても良い。あるいは仮想物体を保持している手を含めて干渉仮想物体に設定しても良い。
【００４０】
ＣＰＵ２０１０は、マージン設定部１０２３を介して、干渉仮想物体設定部１０２２が設定した干渉仮想物体５０００に対してマージン５０１０を設定する（Ｓ４３３０）。ＣＰＵ２０１０は、マージン５０１０を仮想物体として仮想空間に生成する。
マージン５０１０は、図５（ｄ）に示すように、干渉仮想物体５０００と被干渉仮想物体５１００との間に適切な隙間量を確保していることを確認できるように干渉表面から指定の隙間量Ｘを有するように設定する。
【００４１】
なお、マージンの設定方法は、干渉仮想物体と指定の隙間量を直径とする球とのＭｉｎｋｏｗｓｋｉ和を用いる手法等がある。また、隙間量Ｘの指定方法は、例えばユーザが操作するマウスやキーボード等を使った入力により指定するように構成しても良いし、ジェスチャ入力により指定しても良いし、ユーザの声による入力により指定しても良い。また、干渉仮想物体の種類に基づいて隙間量Ｘを決定することができるデータベースなどを介して指定するように構成しても良いし、干渉仮想物体のサイズに基づいて指定しても良い。
【００４２】
また、仮想物体のサイズは、バウンディングボックスの三辺（幅、高さ、奥行き）を用いて算出するように構成しても良いし、バウンディングスフィアの直径により算出するようにしても良い。
本実施形態では、干渉仮想物体に常にマージンを設定する手法を説明するが、本発明はこれに限定されない。例えば、入力Ｉ／Ｆ２０４０を介して、ユーザが干渉仮想物体にマージンを設定するか、設定しないか選択し、選択情報をマージン設定部１０２３に入力することでマージンを設定するか、設定しないか選択できても良い。
また、本実施形態では、マージンを常に仮想空間に生成し、ユーザに見えるように提示する手法を説明が、本発明はこれに限定されない。すなわち、入力Ｉ／Ｆ２０４０を介して、ユーザがマージン５０１０を表示するか、表示しないか選択する。そして、その選択情報を仮想空間生成部１０２０に入力することでマージンを可視仮想物体として生成するか、生成しないかを選択できるように構成しても良い。
【００４３】
ＣＰＵ２０１０は、干渉判定部１０２４を介して、干渉仮想物体５０００、被干渉仮想物体５１００、マージン５０１０の位置姿勢および形状情報に基づいて、干渉仮想物体と被干渉仮想物体またはマージンと被干渉仮想物体の干渉の有無を判定する（Ｓ４４００）。
干渉仮想物体と被干渉仮想物体またはマージンと被干渉仮想物体のいずれかが干渉していると判定した場合（Ｓ４４００：Ｙｅｓ）、ＣＰＵ２０１０は、干渉通知部１０２５を介して干渉通知のフラグをＯＮにする（Ｓ４４１０）。また、そうでない場合（Ｓ４４００：Ｎｏ）、ステップＳ４５００の処理に移行する。
【００４４】
ＣＰＵ２０１０は、仮想空間生成部１０２０を介して、仮想空間を生成する（Ｓ４５００）。具体的には、仮想データ保持部１０２１が保持する仮想空間に係るデータと、マージン設定部１０２３が設定したマージンの形状、干渉通知部１０２５の干渉通知フラグに基づいて仮想空間を生成する。
なお、干渉通知フラグがＯＮの場合には、干渉位置がユーザに分かるように例えば色を用いて視覚的に干渉していることが通知される。また、本実施形態では、視覚的な干渉通知法方法を用いた場合を例に挙げているが、本発明はこれに限定されない。すなわち、例えば音や振動によって聴覚的、触覚的に干渉を通知するように構成しても良いし、夫々を組み合わせても良い。また、干渉仮想物体と被干渉仮想物体の干渉通知とマージンと被干渉仮想物体の干渉通知は異なる通知方法であってもよい。ＣＰＵ２０１０は、その後、干渉通知フラグをＯＦＦにする。
【００４５】
ＣＰＵ２０１０は、複合現実画像生成部１０５０を介して、仮想空間生成部１０２０が生成した仮想空間と位置姿勢計測部１０４０が取得した位置姿勢情報に基づいて仮想空間画像を生成する（Ｓ４６００）。ＣＰＵ２０１０は、撮像画像取得部１０３０が取得した現実空間画像に仮想空間画像を重畳して複合現実画像を生成する。生成した複合現実画像は、ＨＭＤ１１００の画像表示部１１２０または画像表示装置１２００に対して出力される。
【００４６】
ＣＰＵ２０１０は、ユーザによって本処理の終了指示が入力されたか、あるいは本処理を終了する条件が満たされたか否かを判定する（Ｓ４７００）。ＣＰＵ２０１０は、本処理の終了指示が入力された、あるいは本処理を終了する条件が満たされたと判定した場合（Ｓ４７００：Ｙｅｓ）、処理を終了する。また、そうでない場合（Ｓ４７００：Ｎｏ）、ステップＳ４０００の処理に戻る。
【００４７】
このように本実施形態に係る情報処理装置１０００では、複数の仮想物体のうち、ユーザが保持した仮想物体を干渉判定に使用する仮想物体として設定することができる。これにより、事前に設定等をすることなく干渉判定に使用する仮想物体を選択することが可能になる。
【００４８】
［第２実施形態］
第１の実施形態では、干渉仮想物体の位置に依らず、指定の隙間量を有するマージンを設定する場合を例に挙げて説明した。本実施形態では、干渉仮想物体が視錐台内に存在するか否かに応じて設定するマージンを変更することができる情報処理装置について説明する。
なお、第１実施形態において既に説明した機能構成は、同一の符号を付すとともにその説明を省略する。
【００４９】
図６は、本実施形態に係るシステムの機能構成の一例を示すブロック図である。
本実施形態に係るシステムと図１に示すシステムＳとの差異は、ＨＭＤ１１００がＨＭＤ情報出力部６０１０を有している点、情報処理装置１０００が視錐台情報取得部６０２０、干渉仮想物体位置判定部６０３０を有する点である。
【００５０】
ＨＭＤ情報出力部６０１０は、ＨＭＤ１１００の画角情報を取得する。取得した画角情報は、情報処理装置１０００の視錐台情報取得部６０２０に入力される。
視錐台情報取得部６０２０は、ＨＭＤ情報出力部６０１０から入力された画角情報に加え、仮想空間を描画するＮｅａｒ面、Ｆａｒ面をそれぞれ取得して、取得した情報に基づいて視錐台を構築する。視錐台情報取得部６０２０は、構築した視錐台に係る情報（視錐台情報）を干渉仮想物体位置判定部６０３０に入力する。
なお、所定の視錐台を構築するための技術については既知の技術であるため詳細な説明は省略する。
【００５１】
干渉仮想物体位置判定部６０３０は、視錐台情報取得部６０２０から取得した視錐台情報に基づいて、干渉仮想物体設定部１０２２により干渉仮想物体に設定された仮想物体位置が視錐台内に存在するか、あるいは視錐台外に存在するかを判定する。判定結果は、マージン設定部１０２３に入力される。
【００５２】
マージン設定部１０２３は、干渉仮想物体位置判定部６０３０の判定結果に基づいて、視錐台内に存在する干渉仮想物体には視錐台内用のマージンを設定し、視錐台外に存在する干渉仮想物体には視錐台外用のマージンを設定してユーザに表示する。設定されたマージン情報は、干渉判定部１０２４に入力される。
【００５３】
図７は、本実施形態に係る情報処理装置１０００が行う処理手順の一例を示すフローチャートである。
図７に示す各処理は、具体的には、情報処理装置１０００が視錐台情報取得部６０２０を介して取得した視錐台情報に基づいて、干渉仮想物体の位置によって異なるマージンを設定する処理を示している。
なお、図７に示す各処理は、主としてＣＰＵ２０１０により実行される。また、図４に示す各処理と同じ処理には同一の符号を付しており、その説明は省略する。
【００５４】
図８は、本実施形態に係る情報処理装置１０００がマージンを設定する一連の処理を説明するための図である。
具体的には、情報処理装置１０００は、ユーザの手（手８０００、８１００）で保持された干渉仮想物体８０１０、８１１０と被干渉仮想物体８２００が存在する仮想空間において、干渉仮想物体の位置姿勢とＨＭＤ視野画像８３００に基づいてマージンを設定する。
以下、図７、図８を用いて処理の詳細を説明する。
【００５５】
ＣＰＵ２０１０は、視錐台情報取得部６０２０を介して、ＨＭＤ視野画像８３００を決定するために必要な視錐台情報を取得する。
ＣＰＵ２０１０は、干渉仮想物体位置判定部６０３０を介して、干渉仮想物体の位置姿勢および視錐台情報から干渉仮想物体が視錐台内に存在するか視錐台外に存在するか判定する（Ｓ７１００）。視錐台内に存在する場合（Ｓ７１００：Ｙｅｓ）、ステップＳ７１１０の処理に移行する。視錐台外に存在する場合（Ｓ７１００：Ｎｏ）、ステップＳ７１２０の処理に移行する。
【００５６】
ＣＰＵ２０１０は、マージン設定部１０２３を介して、干渉仮想物体８０１０に対して視錐台内用のマージン８０２０を設定する（Ｓ７１１０）。なお、視錐台内用のマージンの設定はステップＳ４３３０の処理（図４参照）と同様の処理であることからその詳細は省略する。
【００５７】
ＣＰＵ２０１０は、マージン設定部１０２３を介して、干渉仮想物体８１１０に対して視錐台外用のマージン８１２０を設定する（Ｓ７１２０）。
例えば、視錐台外に存在する干渉仮想物体８１１０は、被干渉仮想物体８２００と誤干渉する可能性が高くなる。そのため、干渉仮想物体８１１０と被干渉仮想物体８２００との干渉警告領域であるマージン８１２０は広く取る必要があることから、指定の隙間量Ｘより相対的に広い隙間量Ｙを有するマージン８１２０を設定する。
また、視錐台外に存在する干渉仮想物体８１１０は詳細な作業ができなくなるため、計算量軽減のためにも設定するマージン８１２０は詳細なものである必要がない。そのため、視錐台内に設定するマージン８０２０よりも相対的にポリゴン数を削減したマージンを設定する。
【００５８】
このように本実施形態に係る情報処理装置１０００では、干渉仮想物体が視錐台内に存在するか否かの判定結果に応じて、設定するマージンを変更することができる。
【００５９】
［第３実施形態］
第１、第２実施形態では、一人のユーザが複合現実空間を体験している場合を例に挙げて説明した。本実施形態では、複数のユーザが同時に複合現実空間を体験している場合を例に挙げて説明をする。
なお、第１、第２実施形態において説明した機能構成は、同一の符号を付すとともにその説明を省略する。
【００６０】
図９は、本実施形態に係るシステムの機能構成の一例を示すブロック図である。
図１に示すシステムＳとの差異は、情報処理装置１０００が通信部９０００、仮想空間情報送信部９１１０、仮想空間情報受信部９１２０を有する点である。
【００６１】
通信部９０００は、ネットワークに接続され、同一仮想空間を共有する他の情報処理装置との接続を行う。通信部９０００は、仮想空間情報送信部９１１０から送られた仮想空間情報を他情報処理装置の仮想空間情報受信部９１２０に向けて送信する。
仮想空間情報送信部９１１０は、仮想空間生成部１０２０により生成された仮想空間情報、すなわち仮想物体の位置姿勢変更情報を取得して通信部９０００に入力する。
仮想空間情報受信部９１２０は、通信部９０００を介して受け付けた仮想空間情報を取得して仮想空間生成部１０２０に入力する。
【００６２】
仮想空間生成部１０２０は、各部で取得された仮想物体の位置姿勢情報やマージン情報、干渉判定の通知情報に対して、仮想空間情報受信部９１２０により入力された仮想空間情報を反映させて仮想空間を生成する。生成された仮想空間の情報（仮想空間情報）は、複合現実画像生成部１０５０に入力される。
【００６３】
図１０は、本実施形態に係る情報処理装置１０００が行う処理手順の一例を示すフローチャートである。
図１０に示す各処理は、具体的には、情報処理装置１０００が仮想空間情報受信部９１２０を介して取得した他の情報処理装置の仮想空間情報に基づいて複合現実画像を生成する処理を示している。
なお、図１０に示す各処理は、主としてＣＰＵ２０１０により実行される。また、図４に示す各処理と同じ処理には同一の符号を付しており、その説明は省略する。
【００６４】
図１１は、情報処理装置１０００がマージンを設定する一連の処理を説明するための図である。
図１１（ａ）は、ユーザＡ、ユーザＢが体験する仮想物体１１１００、１１２００、１１３００が存在する仮想空間の初期状態を表した図である。
図１１（ｂ）は、ユーザＡの手１１１１０で保持された干渉仮想物体１１１００およびユーザＢの手１１２１０で保持された干渉仮想物体１１２００および被干渉仮想物体１１３００が存在する仮想空間を表した図である。干渉仮想物体１１２００は、被干渉仮想物体１１３００と干渉しているものとする。
図１１（ｃ）は、ユーザＡの体験する仮想空間を、図１１（ｄ）は、ユーザＢの体験する仮想空間を表した図である。
以下、図１０、図１１を用いて処理の詳細を説明する。
【００６５】
ＣＰＵ２０１０は、仮想空間情報送信部９１１０を介して、仮想物体の位置姿勢変更情報の送信、受信を行う（Ｓ１０１００）。
具体的には、図１１（ａ）に示す状態から図１１（ｂ）に示す状態に変更された仮想空間において、ユーザＡによる仮想物体の位置姿勢変更情報、すなわち仮想物体１１１００の位置姿勢変更情報が通信部９０００を介してユーザＢに向けて送信する。
また、ユーザＢによる仮想物体の位置姿勢変更情報、すなわち仮想物体１１２００の位置姿勢変更情報が通信部９０００を介してユーザＡに向けて送信される。このようにして送信された仮想物体の位置姿勢変更情報は、仮想空間情報受信部９１２０によりそれぞれのユーザが取得することになる。
【００６６】
ＣＰＵ２０１０は、仮想空間生成部１０２０を可しいて、仮想データ保持部１０２１が保持する仮想空間に係るデータ、マージン設定部１０２３により設定されたマージン情報、干渉通知部１０２５の通知に基づいて仮想空間を生成する（Ｓ１０２００）。
この場合、例えばユーザＡの仮想空間は、図１１（ａ）に示す状態から図１１（ｃ）に示すような状態になり、ユーザＡの保持する干渉仮想物体１１１００の位置姿勢が変更されてマージン１１１２０が設定されることになる。
【００６７】
一方、ユーザＢの仮想空間は、図１１（ａ）に示す状態から図１１（ｄ）に示すような状態になり、ユーザＢの保持する干渉仮想物体１１２００の位置姿勢が変更されてマージン１１２２０が設定されることになる。
また、図１１（ｄ）に示すように、干渉仮想物体１１２００が被干渉仮想物体１１３００に干渉している。そのため、干渉通知部１０２５の干渉通知フラグに基づいて、干渉位置がユーザに分かるように例えば色を用いて視覚的に干渉していることが通知される。
【００６８】
また、ＣＰＵ２０１０は、仮想空間情報取得部６１２０により入力された仮想物体の位置姿勢変更情報に基づき仮想空間を生成する。この場合、ユーザＡの仮想空間は、図１１（ａ）に示す状態から図１１（ｃ）に示すような状態になり、ユーザＢの保持する干渉仮想物体１１２００の位置姿勢が変更されることになる。
一方、ユーザＢの仮想空間は、図１１（ａ）に示す状態から図１１（ｄ）に示すような状態になり、ユーザＡの保持する干渉仮想物体１１１００の位置姿勢が変更されることになる。
【００６９】
このように本実施形態に係る情報処理装置１０００では、複数のユーザが同時に複合現実空間を体験している場合、相互に仮想物体の位置姿勢を共有することができる。また、仮想空間における干渉に係る情報（マージン情報および干渉位置の通知）は共有しないことで、効率的に複合現実空間を体験することが可能になる。
【００７０】
なお、本実施形態では、仮想物体の位置姿勢変更情報のみを送受信することで干渉に係る仮想空間情報（マージン情報および干渉位置の通知）を共有しない手法を説明したが、本発明はこれに限定されない。
例えば、仮想空間情報送信部９１１０、仮想空間情報受信部９１２０において仮想物体の位置姿勢変更情報に加え、マージン情報および干渉通知情報を送受信して仮想空間生成部９１３０に反映させる。このようにして干渉に係る仮想空間情報を共有する手法を用いた構成としても良い。
【００７１】
また、本実施形態では、複数のユーザが同一の仮想空間情報を共有する手法を説明したが、本発明はこれに限定されない。
例えば、仮想空間情報送信部９１１０を介して、仮想空間情報にユーザ情報を付加して送信し、仮想空間情報受信部９１２０を介して、ユーザ情報に基づいて選択的に仮想空間情報を取得するように構成する。そして、仮想空間生成部９１３０が行う仮想空間の生成に反映させるようにする。このように、ユーザ情報に基づき選択的に仮想空間情報を共有する手法を用いた構成としても良い。
【００７２】
例えば、同一拠点において複合現実空間を体験しているユーザとは仮想空間の位置姿勢と干渉を共有するが、遠隔拠点において体験しているユーザとは、仮想物体の位置姿勢のみを共有するように構成しても良い。あるいは、入力Ｉ／Ｆ２０４０を用いて選択したユーザとは仮想空間の位置姿勢と干渉を共有するが、選択していないユーザとは、仮想物体の位置姿勢のみを共有する情報処理装置として構成しても良い。
【００７３】
上記各実施形態の説明では、本発明を撮像画像に仮想空間画像を合成した画像を表示させるＭＲ（ＭｉｘｅｄＲｅａｌｉｔｙ）システムに適用した場合を例に挙げて説明したが、本発明はこれに限られない。
例えば、本発明は、仮想空間画像のみを表示させるＶＲ（ＶｉｒｔｕａｌＲｅａｌｉｔｙ）システムに適用することができる。その場合には、上記各実施形態において、複合現実画像生成部１０５０は、仮想空間画像そのままを画像表示部１１２０および画像表示装置１２００に表示させるように構成すれば良い。
具体的には、撮像画像取得部１０３０で取得された現実空間画像に対して仮想空間画像を重畳しない。そして、そのようなＶＲシステムに本発明を適用する場合には、撮像画像取得部１０３０は無くても良い。
【００７４】
本発明は、上述の実施形態の１以上の機能を実現するコンピュータプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００７５】
上記説明した実施形態は、本発明をより具体的に説明するためのものであり、本発明の範囲が、これらの例に限定されるものではない。
【図１】
2019008623.tif 000003
【図２】
2019008623.tif 000004
【図３】
2019008623.tif 000005
【図４】
2019008623.tif 000006
【図５】
2019008623.tif 000007
【図６】
2019008623.tif 000008
【図７】
2019008623.tif 000009
【図８】
2019008623.tif 000010
【図９】
2019008623.tif 000011
【図１０】
2019008623.tif 000012
【図１１】
2019008623.tif 000013