図1を参照して、本発明の実施形態における、情報処理システムの構成の一例について説明する。
本発明の情報処理システムは、PC200、HMD100(ヘッドマウントディスプレイ100)、3Dプリンタ300、光学センサ104、選択デバイス105等から構成される。PC200とHMD100(表示装置)、3Dプリンタ300、光学センサ104、選択デバイス105は、図1に示すLAN101や、USB(Universal Serial Bus)等を介して相互にデータ通信可能に接続されている。
PC200は、外部メモリ内に、MR空間に配置して表示するオブジェクト(3DCGモデル/3Dモデル/仮想オブジェクトともいう)を記憶している。PC200は、HMD100から受信した現実画像にオブジェクトを重畳した重畳画像(MR画像)を生成して、HMDに送信する。例えば、HMDで撮像した現実画像に対して、HMDの現実空間における位置姿勢・画角と同じ位置姿勢・画角で仮想空間を撮像した画像(仮想空間に配置されたオブジェクトを撮影した画像)を重ね合わせて合成する。MR技術の仕組みの詳細については前述した先行技術文献や従来技術の通りであるためこれ以上の詳細な説明は割愛する。
HMD100は、PC200から受信した重畳画像をディスプレイに表示する。選択デバイス105は、MR空間上に配置されたオブジェクトを選択して、移動するためのデバイスである。
HMD100と選択デバイス105には、それぞれオプティカルマーカーが設置されており、光学センサ104が当該オプティカルマーカーを撮影(検知・検出)することで、HMD100と選択デバイス105の位置姿勢(座標の情報)を特定し、PC200に送信する。
3Dプリンタ300は、PC200からの指示に応じてオブジェクトを出力する3次元印刷装置(造形装置)である。選択デバイス105により選択されたオブジェクトと、3Dプリンタ300とが接触した場合に、PC200が当該選択中のオブジェクトを3Dプリンタ300に送信して印刷させる。つまり、立体物を造形する(3次元モデル(オブジェクト)のデータを処理)させる。
また、3Dプリンタ300は、印刷中のオブジェクトの印刷進捗(印刷の進捗状況)を監視しており、何%印刷が完了したかを記憶している。当該印刷進捗の情報をPC200に送信し、PC200は当該印刷進捗に応じたオブジェクトを生成・描画してHMD100に送信することで、ユーザ(HMD100をかけたユーザ)に対して印刷進捗を通知する。以上が図1の説明である。
尚、現実空間とMR空間(原点座標X,Y,Z=0,0,0を原点として、オブジェクトを配置した仮想空間)との位置合わせ(キャリブレーション)は既に行われているものとして、以下、本発明の実施形態について説明する。
次に図2を参照して、本発明の実施形態における、PC、HMDのハードウェア構成の一例について説明する。図2は、本発明の実施形態における、PC200、HMD100のハードウェア構成の一例を示す図である。尚、図2のPC200とHMD100のハードウェアの構成は一例であり、用途や目的に応じて様々な構成例がある。
まず、PC200は、CPU201、ROM202、RAM203、システムバス204、入力コントローラ205、ビデオコントローラ206、メモリコントローラ207、通信I/Fコントローラ208、入力デバイス209、ディスプレイ210、外部メモリ211等を備える。
CPU201は、システムバス204に接続される各デバイスやコントローラを統括的に制御する。
また、ROM202あるいは外部メモリ211には、CPU501の制御プログラムであるBIOS(Basic Input / OutputSystem)やオペレーティングシステムや、各種装置の実行する機能を実現するために必要な後述する各種プログラム等が記憶されている。RAM203は、CPU201の主メモリ、ワークエリア等として機能する。
CPU201は、処理の実行に際して必要なプログラム等をRAM203にロードして、プログラムを実行することで各種動作を実現するものである。
また、入力コントローラ(入力C)205は、キーボードやマウス250等のポインティングデバイスからの入力を制御する。
ビデオコントローラ(VC)206は、ディスプレイ210等の表示器への表示を制御する。表示器は液晶ディスプレイでもCRTでも構わない。
メモリコントローラ(MC)207は、ブートプログラム、ブラウザソフトウエア、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、各種データ等を記憶するハードディスク(HD)やフレキシブルディスク(FD)或いはPCMCIAカードスロットにアダプタを介して接続されるカード型メモリ等の外部メモリ211へのアクセスを制御する。
通信I/Fコントローラ(通信I/FC)208は、ネットワークを介して、外部機器と接続・通信するものであり、ネットワークでの通信制御処理を実行する。例えば、TCP/IPを用いたインターネット通信等が可能である。通信I/Fコントローラ208は、光学センサ104との通信を制御する。
尚、CPU201は、例えばRAM203内の表示情報用領域へアウトラインフォントの展開(ラスタライズ)処理を実行することにより、ディスプレイ210上での表示を可能としている。また、CPU201は、ディスプレイ210上の不図示のマウスカーソル等でのユーザ指示を可能とする。
本発明のPC200が後述する各種処理を実行するために用いられる各種プログラム等は外部メモリ211に記録されており、必要に応じてRAM203にロードされることによりCPU201によって実行されるものである。さらに、本発明に係わるプログラムが用いる定義ファイルや各種情報テーブルは外部メモリ211に格納されている。
次に、HMD100は、右目ビデオカメラ221、左目ビデオカメラ222、右目ディスプレイ223、左目ディスプレイ224、コントローラ225等を備える。
右目ビデオカメラ221と、左目ビデオカメラ222は、現実世界を撮影するビデオカメラである。右目ビデオカメラ221は、右目ディスプレイ223に表示するための画像を撮影し、左目ビデオカメラ522は、左目ディスプレイ224に表示するための画像を撮影する。撮影された画像(現実空間画像/現実画像)は、コントローラ225がPC200に送信し、通信I/Fコントローラ208を通じてPC200が受信する。
PC200から通信I/Fコントローラ208を通じて複合現実画像(MR画像/重畳画像)が送信されると、コントローラ225が受信し、受信した複合現実画像を右目ディスプレイ223と左目ディスプレイ224に表示させる。この時、右目ビデオカメラ221で撮影された現実空間画像に基づいて生成された複合現実画像は、右目ディスプレイ223に表示し、左目ビデオカメラ222で撮影された現実空間画像に基づいて生成された複合現実画像は、左目ディスプレイ224に表示する。以上が図2の説明である。
次に図3を参照して、本発明の実施形態における、3Dプリンタのハードウェア構成の一例について説明する。
図3に示す3Dプリンタは、インクジェット方式で3次元物体を形成(印刷/造形)する3Dプリンタである。
本発明の実施形態において、図3は、あくまで、3Dプリンタのハードウェア構成の一例であって、PCから取得した3Dモデルの印刷ができれば、どのような印刷方式、ハードウェア構成であってもよいものとする。
図3において、コントローラユニット310は、3Dモデルのデータ(3Dモデルデータ/オブジェクト)を、現実物体(3次元物体)として形成するための材料である粉体を供給する粉体供給部や、粉体を硬化させて形状を整える3次元物体の印刷処理(プリント)を行うためのインクを吐出するインクジェットヘッド他、各機構と接続される。また、LAN(例えば、図1に示したLAN101)や公衆回線(WAN)(例えば、PSTNまたはISDN等)と接続することで、3Dモデルデータやデバイス情報(例えば印刷進捗の情報等)の入出力を行う。
コントローラユニット310において、301はCPUで、システム全体を制御するプロセッサである。302はRAMで、CPU301が動作するためのシステムワークメモリであり、プログラムを記録するためのプログラムメモリや、画像データを一時記録するための画像メモリでもある。
303はROMで、システムのブートプログラムや各種制御プログラムが格納されている。304はハードディスクドライブ(HDD)で、システムを制御するための各種プログラム,画像データ等を格納する。
307は操作部インタフェース(操作部I/F)で、操作部308(タッチパネルディスプレイ308)とのインタフェース部である。また、操作部I/F307は、操作部308から入力したキー情報(例えば、印刷スタートのためのスタートアイコンの押下)をCPU301に伝える役割をする。
305はネットワークインタフェース(Network I/F)で、ネットワーク(LAN)101に接続する。また、無線通信も可能な構成となっており、赤外線やBluetooth(登録商標)、Wi-Fi(登録商標)を用いた通信にて他の装置と接続する。データの入出力を行う。306はモデム(MODEM)で、公衆回線に接続し、データの入出力を行う。
322は外部インタフェース(外部I/F)で、USB、IEEE1394,プリンタポート,RS−232C等の外部入力を受け付けるI/F部である。他に、ユーザ認証で必要となる携帯端末のICカード(記憶媒体)の読み取り用のカードリーダ323が外部I/F部322に接続可能である。
カードリーダ323が接続されている場合、CPU301は、この外部I/F322を介してカードリーダ323による携帯端末のICカードからの情報読み取りを制御し、該携帯端末のICカードから読み取られた情報を取得する。以上のデバイスがシステムバス309上に配置される。
その他、粉体供給コントローラ311、造形ステージコントローラ313、インクジェットヘッドコントローラ315、ローラ移動コントローラ317、回転モータコントローラ319等のデバイスがシステムバス309上に配置される。
粉体供給部312は、3次元物体(印刷の成果物)を形成するための粉末(粉体)を貯留する貯留タンクと、当該貯留タンクにあけた穴であって、当該貯留タンク内の粉体を、プレート321上に噴出するための穴を備える。また、当該プレート321上に粉体を噴出するために、貯留タンク内の粉体を穴の方向に向かって押し出す粉体供給ステージ(昇降機構)を備える。
プレート321は、粉体供給部312から供給された粉体を、後述する、3次元物体を形成する物理空間である造形ステージ314に運ぶための平面体である。ローラ318をプレート321上に、粉体供給部312から造形ステージ314方向に転がすことで、粉体を造形ステージ314上に移動させ、また、造形ステージ314上の粉体の滞留状態を平面化する(平らにする)。
粉体供給コントローラ311は、粉体をステージ上に噴出するため、粉体供給ステージを駆動させる。ここでは、プレート321の下部に、粉体供給部312が設置されているものとする。
当該粉体供給部312に隣接する位置に、プレート321の一部をくり抜いて、造形ステージ314が設置される。当該造形ステージ314は、3次元物体が形成される物理空間(フィールド)である。
造形ステージコントローラ313は、インクジェットヘッド316を用いて、造形ステージ314上の粉体への印刷処理(3次元物体を形成するため、粉体を硬化させる液体を吐出する処理)を行うにあたり、造形ステージ314を、所定の間隔で、所定の高さ分下降させるため、造形ステージ314下部に設置されたシリンダの駆動制御を行う。
インクジェットヘッドコントローラ315は、インクジェットヘッド316に付されたモータを制御して、インクジェットヘッド316を造形ステージ314の上部に移動させ、印刷中の3次元モデルデータ及び印刷進捗の情報に従って、造形ステージ314の上の粉体の所定の位置に、所定量のインク(粉体硬化用の液体)を吐出させる制御を行う。
回転モータコントローラ319は、ローラ318が備える回転モータ320の回転動作を制御して、ローラ318を回転させ、ローラ移動コントローラ317は、ローラ318を粉体供給部312から造形ステージ314方向に移動させて、粉体を造形ステージ314上に移動させ、また、造形ステージ314上の粉体の滞留状態を平面化する(平らにする)。以上が図3の説明である。
次に図4を参照して、本発明の実施形態における、各種装置の機能構成の一例について説明する。
PC200の、オブジェクト記憶部421は、オブジェクト(MR空間上に配置する3DCGモデル)を記憶する記憶部である。当該オブジェクトの記憶形式については、図8の説明で後述する。
オブジェクト位置特定部422は、MR空間上の、オブジェクトが配置されている位置(座標)を特定する処理部である。重畳画像送信部423は、HMD100から取得したHMD100の位置・姿勢の情報(MR空間上/仮想空間上の座標・姿勢)と、オブジェクト位置特定部422で特定したオブジェクトの位置の情報を用いて、HMD100のディスプレイに表示する現実画像に重畳すべきオブジェクトを、当該現実画像に、HMD100の位置姿勢から見た角度で重畳した重畳画像(MR画像)を、HMD100に送信する送信部である。
接触判定部424は、オブジェクト位置特定部422で特定した各オブジェクトの位置と、オブジェクトのサイズの情報を用いて、オブジェクト同士が接触したか否かを判定する判定部である。
オブジェクト送信部425は、3Dプリンタ300のオブジェクト(3Dプリンタオブジェクト)に接触したオブジェクトのデータを、3Dプリンタ300で印刷させるべく、3Dプリンタ300に送信する送信部である。
印刷進捗情報受信部426は、3Dプリンタ300より、3Dモデル(オブジェクト)の印刷進捗の情報(図8の810)を受信する受信部である。
通知処理部427は、当該印刷進捗情報受信部426で受信した印刷進捗の情報を、HMD100に送信して、ユーザに通知する。例えば、印刷が完了している分(印刷が完了しているパーセンテージ分)だけ、透過率0%で描画した、印刷中のオブジェクトを生成して現実画像に重畳し(進捗情報表示制御手段)、HMD100のディスプレイに表示させるために、HMD100に送信する処理を行うことで、印刷状況をユーザに通知する。
光学センサ104の、位置情報特定部441は、HMD100と選択デバイス105に付されたオプティカルマーカーを検知し、MR空間上のHMD100と選択デバイス105の位置を特定する特定部である。位置情報送信部442は、位置情報特定部441で特定した各デバイスの位置情報をPC200に送信する送信部である。
HMD100の、撮像処理部411は、HMD100に設置されたカメラ装置を用いた現実画像の撮像処理を実行する処理部である。HMD100は、当該撮像処理部411で撮像した画像データをPC200に送信する。
そして、重畳画像受信部412が、当該PC200で生成された、HMD100の位置・姿勢から見た重畳画像を受信して、重畳画像表示部413が、当該受信した重畳画像をディスプレイ上に表示する。
3Dプリンタ300の、オブジェクト受信部431は、PC200より、3次元印刷(造形)をすべき3Dモデルのデータを受信する受信部である。印刷処理部432は、当該オブジェクト受信部431で受信した3Dモデルデータ(オブジェクト)の印刷処理(造形処理)を実行する。印刷進捗情報送信部433は、当該3Dプリンタ300で印刷中または印刷が完了したオブジェクトの印刷状況(印刷完了のパーセンテージの情報)をPC200に送信する送信部である。以上が図4の説明である。
<第1の実施形態>
以下、図5〜図9Dを参照して、本発明の第1の実施形態について説明する。
まず、図9Aを参照して、本発明の第1の実施形態における、選択デバイス及び選択デバイスに対応するオブジェクトの一例について説明する。図9Aにおいて、選択デバイス105はマウスである。選択デバイス105(マウス105)は、ポインティングデバイスであり、PC200とデータ通信可能に接続されている。
選択デバイス105とPC200との接続は、有線接続であってもよいし、無線接続であってもよい。また、選択デバイス105は第1のボタン901と第2のボタン902を備える。
更に、選択デバイス105にもHMD100と同様のオプティカルマーカーを備える。このオプティカルマーカーによって、HMD100だけでなく、選択デバイス105の位置や姿勢も特定することができる。
また、903は、オブジェクトの属性を示す図8の属性803=選択デバイスである、選択用オブジェクトの一例である。
選択用オブジェクト902は、図9Aに示すように、選択デバイス105に重畳するように表示される。
選択用オブジェクト903は、当該選択用オブジェクト903と接触している他のオブジェクト(属性803=被選択 のオブジェクト)を、選択デバイス105を介して操作するための、選択デバイス105と他のオブジェクトの接触判定に用いられるオブジェクトである。
例えば、ユーザが移動して選択デバイス105をオブジェクトに近づけ、選択用オブジェクト903とオブジェクトとを接触させる。そして、接触している状態で選択デバイス105の第1のボタン901をユーザが押下する。すると、当該第1のボタンが押下されたことをPC200のCPU201が検知し、当該選択用オブジェクト903に接触しているオブジェクトを、選択用オブジェクト903に追従するように制御する。
例えば、図9Bに示すように、被選択用オブジェクトを移動する。図9Bの910、920は、HMD100のディプレイに表示される重畳画像である。
図9Bにおいて、911と913は被選択用オブジェクトである。図9Bでは、被選択用オブジェクト911と選択デバイス105のオブジェクト(選択用オブジェクト903)とが接触しているものとする。図9Bの910の状態で、被選択用オブジェクト911と選択用オブジェクト903とが接触し、第1ボタン901が押下されている状態で選択デバイス105を移動させることで、930に示すように、選択デバイス105(選択用オブジェクト903)に追従して、被選択用オブジェクト911を移動させる。
また、第1のボタンの押下が解除されると、当該第1のボタンの押下が解除されたことをPC200のCPU201が検知し、前記接触しているオブジェクトの、選択用オブジェクト903への追従を取りやめる。つまり、接触していたオブジェクトは、選択用オブジェクト903から分離し、当該第1のボタンの押下が解除された時点で、当該接触していたオブジェクトが存在した座標に停止する。
本発明の第1の実施形態においては、前記第2のボタンは使用しないため、当該第2のボタンについては、他の実施形態の説明で後述する。以上が図9Aの説明である。
次に、図8を参照して、本発明の第1の実施形態における、各種データの構成の一例について説明する。図8に記載の情報は、PC200の外部メモリに予め記憶されているものとする。
オブジェクト情報800のオブジェクトID801は、各オブジェクトのデータ(オブジェクト情報)の識別情報である。オブジェクト名802は、オブジェクト(ここでは3DCGモデル)の名称(ファイル名)である。
属性803は、各オブジェクトが、3Dプリンタに対応するオブジェクトか、選択デバイス105に対応するオブジェクト(選択用オブジェクト)か、選択デバイスのオブジェクトに接触することで選択される選択対象のオブジェクト(3Dプリンタで印刷されるCGモデルを示すオブジェクト/被選択用オブジェクト)か、を示す情報である。
座標804は、各オブジェクトの、MR空間上(仮想空間上)の配置位置(X.Y.Z=000.000.000 を原点とするXYZ座標)を示す。図8によれば、オブジェクトID=M000の座標804=000.000.000のため、3Dプリンタのオブジェクトは、MR空間上の原点座標に配置されていることとなる。ここでは、実際の3Dプリンタ300の現実空間上の位置=MR空間の原点座標(X.Y.Z=000.000.000)である。つまり、3Dプリンタオブジェクトの座標=3Dプリンタの座標であり、3Dプリンタオブジェクトは、現実の3Dプリンタ300に重畳して配置されているものとする。各座標804の座標値は、各オブジェクトの中心点の座標であるものとする。
尚、選択デバイス105の座標804は、光学センサにより補足されており、例えばユーザが選択デバイスを移動させることで、当該座標804がリアルタイムに更新される。当該更新に用いる選択デバイス105のリアルタイムの座標804の情報は、光学センサ104からPC200に送信され、PC200が、当該光学センサ104から受信した座標の情報(位置情報)を、選択デバイスの座標804に上書することで更新を行う。
サイズ(スケール)805は、各オブジェクトの大きさを示す。ファイルパス806は、各オブジェクトのファイル(オブジェクトの形状を示すファイル)が記憶されている、記憶領域上のアドレスを示す。
選択中フラグ807は、被選択用オブジェクトが選択されている状態か否かを示すフラグである。選択中フラグ807=0の場合、選択されていない状態であり、選択中フラグ807=1の場合、選択中であることを示す。
印刷進捗情報810は、3Dプリンタ300、PC200の外部メモリにそれぞれ記憶されている。PC200は、3Dプリンタ300より当該印刷進捗情報を受信して外部メモリに記憶するものとする。
オブジェクトID811は、各オブジェクト(オブジェクト情報)の識別情報である。進捗812は、当該オブジェクトID811の示す各オブジェクトの、3Dプリンタ300における印刷状況(印刷の進捗)を示す情報である。
3Dプリンタ特定情報820は、PC200の外部メモリに予め記憶されている、3Dプリンタオブジェクトと3Dプリンタ300の対応付けを示す情報である。オブジェクトID821は、3DプリンタオブジェクトのオブジェクトIDである。3Dプリンタ識別情報822は、オブジェクトID821の3Dプリンタオブジェクトに対応する3Dプリンタ300の識別情報である。
3Dプリンタ識別情報822には、例えば、3Dプリンタ300のIPアドレス等の識別情報が記憶されている。オブジェクトID821の3Dプリンタオブジェクトに被選択用オブジェクトが接触した場合には、当該被選択用オブジェクトを印刷すべく、当該被選択用オブジェクトのデータを、3Dプリンタ識別情報822の示す3Dプリンタ300に送信する。以上が図8の説明である。
次に図5を参照して、本発明の第1の実施形態における、重畳画像の表示処理の概要について説明する。図5は、本発明の第1の実施形態における、重畳画像の表示処理の概要を示すフローチャートである。
HMD100は、撮像処理の開始指示を受け付ける(ステップS501)。一方、PC200のCPU201は、HMD100より撮像画像を取得した場合に、重畳画像を生成してHMDに返信する処理を開始する指示を、不図示の指示受付画面で受け付け、待機する(ステップS505)。
光学センサ104は、HMD100の位置を検知すべく、検知の開始指示を受け付ける(ステップS512)。つまり、例えば、光学センサ104の起動指示を受け付ける。
HMD100は、撮像処理を行い(ステップS502)、撮像した画像である撮像画像(現実画像)をPC200に順次送信する(ステップS503)。ここでいう撮像処理は例えばビデオ撮像である。
光学センサ104は、HMD100に設置された光マーカ、選択デバイス105に設置された光マーカの位置姿勢(座標)の特定処理を行い(ステップS513)、HMD100の位置姿勢、選択デバイス105の位置姿勢の情報をPC200に送信する(ステップS514)。
当該位置姿勢の情報(座標)とは、MR空間上の位置である。つまり、例えば、原点マーカにより定義されたMR空間の世界座標の原点からのHMD100の相対位置(相対座標)、及び、HMDの角度・方向の情報を取得して、PC200に送信する。選択デバイス105についても同様に、MR空間の世界座標の原点からの選択デバイス105の相対位置(相対座標)、及び、選択デバイス105の角度・方向の情報を取得して、PC200に送信する。
PC200のCPU201は、HMD100より撮像画像を受信し(ステップS506)、光学センサ104よりHMD100、選択デバイス105の位置、姿勢の情報を受信する(ステップS507/位置取得手段)。PC200は当該位置・姿勢の情報を外部メモリに記憶する。
PC200のCPU201は、HMD100より受信した撮像画像(現実画像)に、仮想空間上に配置したオブジェクトの画像を重畳した重畳画像(MR画像)を生成する処理、及びHMD100に当該重畳画像を表示させるべく送信する処理を実行する(ステップS508)。HMD100は、重畳画像を受信してディスプレイに表示する(ステップS516)。
尚、当該重畳画像の生成処理の手法(例えば、オブジェクトのMR空間上の位置・MR空間と現実空間の位置合わせを行い、HMDの位置姿勢の情報からユーザの視界に映すべきオブジェクトを特定して、HMDに設置されたカメラから取得した画像に、当該ユーザの視界に映すべきオブジェクトを重畳して重畳画像を生成し、HMDに送信して表示させる手法/ユーザのモーションに応じて、オブジェクトの状態を変化させる手法)、その具体的方法については、引用文献2:特開2002−112286号公報にも記載されているように公知であるため、ここでは説明を割愛する。
PC200のCPU201は、オブジェクト(オブジェクトの示す3Dモデル/3Dプリンタオブジェクト)の印刷処理(ステップS509/図6で後述)、及び、当該印刷処理がされているオブジェクトの印刷状況(印刷進捗)の表示処理(ステップS510/図7で後述)を行って、重畳画像を生成してHMD100に返信する処理を終了する終了指示を受け付けたか判定し(ステップS511)、終了指示を受け付けた場合には処理を終了し、終了指示を受け付けていない場合は処理を継続する(ステップS506に処理を戻す)。
HMD100は撮像処理の終了指示を受け付けたか判定し(ステップS504)、終了指示を受け付けた場合には処理を終了し、終了指示を受け付けていない場合は撮像処理を継続する(ステップS502に処理を戻す)。
光学センサ104は、HMD100、選択デバイス105の位置情報を特定する処理の終了指示を受け付けたか判定し(ステップS515)、終了指示を受け付けた場合には処理を終了し、終了指示を受け付けていない場合は撮像処理を継続する(ステップS513に処理を戻す)。以上が図5の、重畳画像の表示処理の概要についての説明である。
次に図6を参照して、本発明の第1の実施形態における、オブジェクトの印刷処理の流れについて説明する。
PC200のCPU201は、オブジェクト情報800より、選択デバイス105の位置情報を読み出す(ステップS601)。具体的には、属性803=選択デバイスであるオブジェクトの座標804を読み出して取得する。
PC200のCPU201は、選択デバイス105から操作信号を受信する(ステップS602)。ここでは、第1のボタン901が押下された操作信号を受信し、第1のボタン901が押下されたことを検知したものとする。
PC200のCPU201は、選択デバイス105が(モデル選択デバイス105に対応するオブジェクト(属性803=モデル選択デバイスである選択用オブジェクト903))が、MR空間内に配置されているオブジェクト(選択対象オブジェクト(属性803=被選択のオブジェクトである被選択用オブジェクト))と接触しているかを判定する(ステップS603)。
つまり、選択用オブジェクトの座標804及びサイズ805を特定し、当該選択用オブジェクトから所定範囲内にある他のオブジェクト(被選択用オブジェクト)の座標804及びサイズ805を特定して、選択用オブジェクトと重なっている他のオブジェクトが存在するか判定する。例えば、図9Bの930に示すように、被選択用オブジェクト911と3Dプリンタオブジェクト912が接触しているか判定する。接触しているか否かは、例えばオブジェクトの座標803と、後述する図15の所定範囲1510や図22の所定距離2240の値、各オブジェクトのサイズ805を用いて特定可能である。例えば、座標803=000.000.000を中心とした1000mm×1000mm×1000mmの直方体の内側の空間に、座標803=XX2.YY2.ZZ2を中心とした100mm×100mm×100mmの直方体の外面が入り込んでいる場合に(距離が0以下である場合に)、被選択用オブジェクト911と3Dプリンタオブジェクト912が接触していることを特定可能である。
当該接触判定のための所定範囲の値(不図示)は、予め、PC200の外部メモリに記憶されているものとする。
また、当該接触判定の方法は一例であり、オブジェクト同士が接触したか否かを判断できれば、他の既知の技術を使用してもよい。
尚、座標804とサイズ805の他に、オブジェクトの角度をPC200に記憶しておき、当該座標804とサイズ805、角度の情報を用いて、オブジェクト同士が接触しているか判定するようにしてもよい。
PC200のCPU201は、選択用オブジェクト903が、被選択用オブジェクトと接触していないと判定した場合(ステップS603でNO)、処理をステップS603の前に戻す。選択用オブジェクト903が、被選択用オブジェクトと接触していると判定した場合に(ステップS603でYES)、接触している被選択用オブジェクトの選択中フラグ807を1に変更し(つまり、被選択用オブジェクトを選択し/選択受付手段)、描画フレーム毎の選択デバイス105の移動量を取得する(ステップS604)。ここでいう移動量は、MR空間上での選択デバイス105の位置の変化量、および回転角度の変化量を指す。
また、ステップS603で、選択デバイス105で選択される直前の、被選択用オブジェクトの座標804の値を、外部メモリの所定の領域に、当該被選択用オブジェクトのオブジェクトIDと対応付けて記憶する。
PC200のCPU201は、選択デバイス105(選択用オブジェクト903)と接触している被選択用オブジェクトの表示位置を、ステップS604で取得した、選択デバイス105の移動量の分だけ変更する(ステップS605/移動制御手段)。つまり、選択デバイス105(選択用オブジェクト903)の移動に追従して、接触中の被選択用オブジェクトを表示するよう、接触中の被選択用オブジェクトの位置(座標804)を更新する。追従の様子は、例えば図9Bに示す。
PC200のCPU201は、3Dプリンタオブジェクトと、ステップ604で表示位置を変更している、選択中の被選択用オブジェクトが接触しているか否かを判定する(ステップS606)。
つまり、選択中フラグ807=1の被選択用オブジェクト(選択中のオブジェクト)の座標804及びサイズ805を特定し、当該選択用オブジェクトから所定範囲内にある3Dプリンタオブジェクトの座標804及びサイズ805を特定して、選択中のオブジェクトと重なっている3Dプリンタオブジェクトが存在するか判定する。
当該接触判定のための所定範囲の値(不図示)は、予め、PC200の外部メモリに記憶されているものとする。
また、当該接触判定の方法は一例であり、オブジェクト同士が接触したか否かを判断できれば、他の既知の技術を使用してもよい。
3Dプリンタオブジェクトと、選択中の被選択用オブジェクトが接触していないと判定した場合(ステップS606でNO)、処理をステップS606の前に戻す。3Dプリンタオブジェクトと、選択中の被選択用オブジェクトが接触したと判定した場合(ステップS606でYES)、PC200のCPU201は、被選択用オブジェクトの移動を停止する(ステップS607)。つまり、選択デバイスに追従して移動させる処理を終了する。
PC200のCPU201は、当該3Dプリンタオブジェクトに接触している被選択用オブジェクトのサイズ805を参照し(ステップS608)、当該3Dプリンタオブジェクトに対応する3Dプリンタの印刷可能サイズの情報を、外部メモリより取得する(ステップS609)。当該印刷可能サイズの情報は、3DプリンタオブジェクトのオブジェクトIDに対応付けられており、予めPC200の外部メモリに記憶されているものとする。
PC200のCPU201は、選択中の被選択用オブジェクトのサイズが、接触している3Dプリンタオブジェクトの示す3Dプリンタで印刷可能なサイズか判定する(ステップS610/印刷可否判定手段/処理可否判定手段)。
出力が不可能なサイズの場合(ステップS610でNO)、つまり、例えば、被選択用オブジェクトの大きさが、3Dプリンタで印刷可能なオブジェクトの大きさを超えていた場合、エラーを示す情報を3Dプリンタ300のディスプレイに表示させるべく、当該エラーを示す情報を、ステップS606で接触していると判定された3Dプリンタオブジェクトに対応する3Dプリンタ300に送信する(ステップS612)。
PC200のCPU201は、選択中の被選択用オブジェクトのサイズが、接触している3Dプリンタオブジェクトの示す3Dプリンタ300で印刷可能なサイズであると判定した場合(ステップS610でYES)、当該3Dプリンタオブジェクトに接触中の被選択用オブジェクトのファイルパス806を取得して(ステップS611)、当該被選択用オブジェクトの示す3Dモデルのファイル(オブジェクト名802に示す名称のファイル)を取得する(ステップS613)。
PC200のCPU201は、取得した3Dモデルのファイル及び当該3Dモデルを示す被選択用オブジェクトのオブジェクトIDを、ステップS606で接触していると判定された3Dプリンタ300に対して送信し(ステップS614/出力して印刷指示を行い)、3Dプリンタ300がこれを受信する(ステップS615)。
3Dプリンタ300のCPU301は、受信した3Dモデルのファイルを用いて、当該3Dモデルの印刷処理を開始し(ステップS616)、3Dプリンタ300の外部メモリ上に、印刷中の3Dモデルを示す被選択用オブジェクトのオブジェクトIDを、オブジェクトID811に有する印刷進捗情報810(図8)を作成し、進捗812に0(%)の値を挿入して記憶する(ステップS617)。以降、3Dプリンタ300のCPU301は、当該3Dモデルの印刷進捗状況を監視し、定期的に、進捗812の値を更新する。
PC200のCPU201は、ステップS614で印刷指示をした(3Dモデルのファイルを送信した)被選択用オブジェクトのオブジェクトIDを用いて、ステップS603で選択が行われる直前の当該被選択用オブジェクトの座標804を外部メモリから読み出し、当該被選択用オブジェクトを、当該選択前の座標804に配置しなおす(ステップS618)。つまり、選択前の位置に、被選択用オブジェクトを戻す処理を行う。以上が図6の説明である。
次に図7を参照して、本発明の第1の実施形態における、MRを用いた印刷状況の通知処理の流れについて説明する。
PC200のCPU201は、ステップS507で継続して取得している、HMD100の位置姿勢の情報と、PC200の外部メモリに予め記憶されている、HMD100の画角(HMD100に搭載されているカメラで撮像可能な範囲)、オブジェクトの座標804の情報を用いて、HMD100の視野内(カメラ221又はカメラ222の画角)に、印刷中の被選択用オブジェクト(オブジェクトID811のオブジェクト)が存在するか判定する(ステップS701)。
HMD100の視野内に印刷中の被選択用オブジェクトが存在しないと判定した場合(ステップS701でNO)、処理を終了する。HMD100の視野内に印刷中の被選択用オブジェクトが存在すると判定した場合(ステップS701でYES)、当該画角内に含まれる印刷中の被選択用オブジェクトの印刷進捗の情報(進捗812)の取得要求を、当該印刷中の被選択用オブジェクトを印刷している3Dプリンタに送信する(ステップS702)。当該印刷進捗の取得要求には、印刷進捗を要求する被選択用オブジェクトのオブジェクトIDが含まれているものとする。
3Dプリンタ300のCPU301は、印刷進捗状況の取得要求を受け付け(ステップ703)、当該取得要求に含まれるオブジェクトIDをオブジェクトID811に持つ印刷進捗情報810(オブジェクトID811及び進捗812の)をPC200に送信する(ステップS704)。
PC200のCPU201は、当該印刷進捗情報810を受信して(ステップS705/印刷状況取得手段/進捗情報取得手段)、印刷が完了しているか判定する(ステップS706)。つまり、進捗812=100%か判定する。
印刷が完了していると判定した場合(ステップS706でYES)、当該印刷が完了した被選択用オブジェクトを画角内(視野内)に収めていない、他のHMD(同一のMR空間上で起動しているHMD)に対して、当該被選択用オブジェクトの印刷が完了した旨を通知する(ステップS711)。
例えば、当該他のHMDの位置姿勢の情報と、印刷が完了した被選択用オブジェクトの座標を用いて、印刷が完了した被選択用オブジェクトの方向を示す矢印のオブジェクトを生成して現実画像に重畳し(図9Dのような画像を生成し)、当該他のHMDに表示させるべく送信する。
ここでいう矢印のオブジェクトとは、印刷完了をユーザに通知する通知オブジェクトであり、図9Dの951のようなオブジェクトである。図9DはHMD100のディスプレイに表示された重畳画像を示す。つまり、ユーザ(HMD100)の視界を示す。図9Dによれば、印刷が完了した被選択用オブジェクトは、ユーザの右方に存在する。
当該印刷完了を示す通知オブジェクトは、矢印の形状に限るものではなく、例えば、図9Dのオブジェクト951のように、印刷完了を示す吹き出しのようなオブジェクトでもよい。図9Dにおいては、矢印の通知オブジェクト952と、吹き出しの通知オブジェクト952の両方を、ステップS711で生成して重畳画像を生成している。
尚、当該通知オブジェクトは複数生成して重畳してもよいし、1つだけ生成して1つだけ重畳するようにしてもよい(矢印の通知オブジェクト952と、吹き出しの通知オブジェクト952いずれか一方を重畳するようにしてもよい)。
当該矢印のオブジェクト951を生成して、ユーザに提示することで、ユーザから見ていずれの方向に、印刷が完了した被選択用オブジェクトが配置されているかを、ユーザに通知することができる。
また、当該被選択用オブジェクトを画角内(視野内)に収めているHMD100に対しては、当該印刷が完了した被選択用オブジェクトを点滅させる等、強調表示した重畳画像を生成して、印刷完了を通知すべく送信する。HMD100は当該重畳画像を受信して表示画面に表示する。
PC200のCPU201は、HMD100の画角内にある被選択用オブジェクトの印刷が完了していないと判定した場合(ステップS706でNO)、当該HMD100と当該HMD100の画角内に存在する被選択用オブジェクトを印刷中である、3Dプリンタ(3Dプリンタオブジェクト)の間の距離が、所定の距離範囲内か判定する(ステップS707/第2の距離判定手段)。つまり、ユーザが3Dプリンタから所定以上離れているか、3Dプリンタの近くにいるかを判定する。
HMD100と3Dプリンタの間の距離が所定範囲内である場合(ステップS707でYES/ユーザが3Dプリンタから近い位置にいると判定した場合)、印刷中の被選択用オブジェクトの印刷進捗を示すオブジェクトを生成して(ステップS708)、当該被選択用オブジェクトの代わりにMR空間上に配置し、HMD100から取得した現実画像に重ね合わせた重畳画像を生成する(ステップS709)。そして、当該重畳画像をHMD100に送信する(ステップS710/印刷状況表示制御手段)
ステップS708で生成するオブジェクトは、例えば、図9Cに示す、オブジェクト931や、オブジェクト941のようなオブジェクトである。例えばオブジェクト931の場合、進捗812=20%のため、当該印刷がされた20%分を透過率0%とし、未印刷の80%分を所定の透過率(例:透過率50%)とした、当該印刷中の被選択用オブジェクトと同一形状のオブジェクトであるものとする。オブジェクト931とオブジェクト941は、印刷の進捗を通知する進捗通知オブジェクトである。尚、図9Cの930、940は、HMD100のディプレイに表示される重畳画像である。
オブジェクト931、オブジェクト941のように、印刷中の被選択用オブジェクトの表示を変更する(印刷進捗を示す、印刷中の被選択用オブジェクトに置き換える)ことで、ユーザに、いずれの被選択用オブジェクトが印刷中かを通知することができる。
また、当該印刷の進捗を、印刷中の被選択用オブジェクトと対応付けて、視覚的にユーザに確認させることができる。
つまり、印刷中の被選択用オブジェクトの印刷状態をユーザに通知することができる。
尚、進捗通知オブジェクトの態様・形状は、オブジェクト931、オブジェクト941の態様・形状に限るものではなく、印刷の進捗を示す情報(オブジェクト)を、印刷中のオブジェクトに紐付けて通知できればよい。
例えば、ステップS708で進捗通知オブジェクト932、進捗通知オブジェクト942のようなオブジェクトを生成し、図9Cに示すように、印刷中のオブジェクトから所定の距離範囲内に、進捗のパーセンテージを示す吹き出しのようなオブジェクトを生成・配置し、重畳画像を生成して(ステップS709)HMD100に送信するようにしてもよい(ステップS710)。
また、ステップS701でHMD100の視界内に存在すると判定された被選択用オブジェクトを印刷中の3Dプリンタの3Dプリンタオブジェクト912が、HMD100の視界内に存在するかを、例えば、ステップS707とS708の間で判定し、視界内に当該3Dプリンタオブジェクト912が存在する場合、ステップS708で、前記通知オブジェクトとあわせて、図9Cの933に示す、いずれの3Dプリンタでいずれの被選択用オブジェクトが印刷中かを示す印刷通知オブジェクトを生成して、3Dプリンタオブジェクト912から所定の距離範囲内に配置するようにしてもよい。
また、印刷中の被選択用オブジェクトを、印刷進捗のパーセンテージに応じて透過率0%で描画するようにしてもよい。つまり、オブジェクトそのものを置き換えるのではなく、ステップS708で、印刷中の被選択用オブジェクトを取得して、当該印刷の進捗812の割合(進捗分)に応じた当該被選択用オブジェクトの画像(HMD100の方向から見た画像)を生成して、ステップS709で重畳画像を生成するようにしてもよい。
また、印刷中の被選択用オブジェクトの色を、印刷進捗のパーセンテージに応じて変更するようにしてもよい(進捗812=20%の場合、オブジェクトの20%分の表面積部分の色を赤に変更して描画する等してもよい)。
当該印刷通知オブジェクト933を表示することで、ユーザに、いずれのいずれの3Dプリンタでいずれの被選択用オブジェクトが印刷中かを通知することができる。つまり、被選択用オブジェクトの印刷状態を通知することができる。
PC200のCPU201は、印刷の進捗状況をHMD100に通知すべく、ステップS709で生成した重畳画像(印刷された割合だけ透過率0%で描画された被選択用オブジェクトが写った重畳画像)を、HMD100で表示させるべく、HMD100に送信する(ステップS710/印刷状況表示制御手段)。
尚、HMD100の画角内に存在する印刷中の被選択用オブジェクトが複数存在する場合は、ステップS701〜S711の処理を、当該印刷中の被選択用オブジェクト分実行して処理を終了する。以上が図7の説明である。
MRは、現実空間とMR空間を合成して、より現実に近い空間をユーザに体感させるものと考えられ、そのため、MR空間上のオブジェクト(3Dモデル)は、極力現実に近しいものを作成・用意して配置し、ユーザに提示する。よって、オブジェクトの透明化(透明度の変更)や、図9Cの933等に示すような付加情報を示す、現実空間に存在しないようなオブジェクトは、普段は、空間上に配置・描画しないことが望まれる場合がある。
図7では、HMD100(ユーザ)が3Dプリンタに近い位置にいる場合、3Dプリンタの操作部、パネル又は、造形ステージを除くことが出来る窓を通して、どのオブジェクトを印刷中で、どの程度の印刷進捗か、3Dプリンタで直接確認可能であるため、例えば、(図9Cの931、941のような)印刷中の被選択用オブジェクトの透明化(一部透明化したオブジェクトとの置き換え)は行わない。よって、ユーザに、オブジェクトの印刷状況を確認させつつ、より現実感のある空間を体感させることができる。
また、不要な処理(オブジェクト931、オブジェクト941の作成処・描画の処理)を省略することができ、PC200の処理負荷を軽減できる。
以上説明したように、本発明の第1の実施形態によれば、MR空間上でオブジェクトの選択を行うことで、容易に、印刷装置にオブジェクトを印刷させる仕組みを提供することができる。
また、印刷状態を示すオブジェクトを生成して、印刷中の被選択用オブジェクトと対応付けて配置し、重畳画像を生成して、HMDに送信することで、印刷中の被選択用オブジェクトの印刷状態を、視覚的にユーザに通知することができる。
例えば、オブジェクト931、オブジェクト941のように、印刷中の被選択用オブジェクトの表示を変更する(印刷進捗を示す、印刷中の被選択用オブジェクトに置き換える)ことで、ユーザに、いずれの被選択用オブジェクトが印刷中かを通知することができる。
また、例えば、矢印のオブジェクト951を生成して、ユーザに提示することで、ユーザから見ていずれの方向に、印刷が完了した被選択用オブジェクトが配置されているかを、ユーザに通知することができる。
また、例えば、当該印刷通知オブジェクト933を表示することで、ユーザに、いずれのいずれの3Dプリンタでいずれの被選択用オブジェクトが印刷中かを通知することができる。
以上が本発明の第1の実施形態の説明である。
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。
第2の実施形態においては、第1の実施形態で説明した図5〜図9Dの内容・処理を実行するが、3Dプリンタオブジェクトと被選択用オブジェクトとが接触した場合に、被選択用オブジェクトが3Dプリンタで印刷可能なサイズでなかった場合(ステップS610でNO)、当該被選択用オブジェクトのサイズ(モデルサイズ)を変更する処理(図10のS1001=図11)を行う点で、第1の実施形態と異なる。
本発明の第2の実施形態では、3Dプリンタでのオブジェクトの印刷可否に応じて、MR空間上で、印刷対象のオブジェクトの状態を変更できる。
以下、図10〜図12を参照して、本発明の第2の実施形態について説明する。
まず図10を参照して、本発明の第2の実施形態における、オブジェクトの印刷処理の流れについて説明する。
PC200のCPU201は、ステップS601〜S610の処理を実行する。詳細は第1の実施形態の説明で記載したため、ここでは説明を割愛する。
PC200のCPU201は、図6のステップS610において、被選択用オブジェクトが3Dプリンタで印刷可能なサイズでないと判定した場合(ステップS610でNO)、当該被選択用オブジェクトのサイズ変更処理を行う(ステップS1001)。
PC200のCPU201は、ステップS611〜S618の処理を実行する。詳細は第1の実施形態の説明で記載したため、ここでは説明を割愛する。以上が図10の説明である。
次に図11を参照して、本発明の第2の実施形態における、オブジェクトのサイズ変更処理について説明する。
PC200のCPU201は、ステップS606で、3Dプリンタの印刷可能サイズより大きいと判定された被選択用オブジェクトの外形を覆うような、立方体(立方体オブジェクト)を生成し、当該立方体オブジェクトの各頂点に、サイズ変更用の小型の立方体(サイズ変更用オブジェクト)を生成する(ステップS1101/サイズ変更用オブジェクト生成手段)。
立方体オブジェクトとは、図12でいう立方体オブジェクト1202であり、立方体内部の被選択用オブジェクト911をユーザが閲覧可能なよう、半透明に描画される。つまり、PC200のCPU201は、例えば、所定の透過率(例:透過率=70%)の立方体オブジェクトをステップS1101で作成する。
当該立方体オブジェクト1202は、サイズ変更を行う被選択用オブジェクト911の中心位置1201(被選択用オブジェクト911の座標804)を位置情報(図8のオブジェクト情報800でいう座標804)とするよう生成される。
また、サイズ変更用オブジェクトとは、図12でいうサイズ変更用オブジェクト1203である。サイズ変更用オブジェクト1203は、立方体オブジェクト1202の各頂点を位置情報として有する(図8のオブジェクト情報800でいう座標804とする)、所定のサイズのオブジェクトである。
図12の1200に示すように、ユーザは、選択デバイス105を移動・操作し、選択用オブジェクト903とサイズ変更用オブジェクト1203を接触させて、選択デバイス105を移動させることで、立方体オブジェクト1202内の被選択用オブジェクト911を拡大・縮小する。
図11の説明に戻る。PC200のCPU201は、ステップS1101で生成した立方体オブジェクト1202、サイズ変更用オブジェクト1203を、MR空間上に配置して重畳画像を生成し、HMD100に送信する(ステップS1102/識別画像生成手段)。ここでは、立方体オブジェクト1202は、サイズ変更を行う被選択用オブジェクト911と同一の座標804に配置し、サイズ変更用オブジェクト1203は当該立方体オブジェクト1202の各頂点の座標に配置する。つまり、印刷が不可能である旨(印刷不可を示す判定結果)をMR空間上で(HMD100のディスプレイに)識別表示し、ユーザに通知する(印刷可否識別表示手段)。
PC200のCPU201は、選択デバイス105から、第1ボタン901の押下指示を受け付けた旨の操作信号を受け付ける(ステップS1103)。
PC200のCPU201は、選択デバイス105の選択用オブジェクト903と、サイズ変更用オブジェクト1203とが接触しているか判定する(ステップS1104)。接触していないと判定した場合には(ステップS1104でNO)、処理をステップS1104の前に戻す。
選択用オブジェクト903と、サイズ変更用オブジェクト1203とが接触していると判定した場合(ステップS1104でYES)、PC200のCPU201は、選択デバイスか104の移動量の取得を開始する(ステップS1105)。ここでいう移動量は、MR空間上での選択デバイス105の位置(選択用オブジェクト903の座標804)の変化量を指す。また、PC200のCPU201は、ステップS1104で、選択用オブジェクト903とサイズ変更用オブジェクト1203とが接触し、選択デバイス105の第1ボタン901が押下された時点(サイズ変更用オブジェクト1203が選択された時点)での、選択用オブジェクト903の座標804、サイズ805を外部メモリに記憶する。
PC200のCPU201は、選択デバイス105が移動され、選択用オブジェクト903が、被選択用オブジェクト911の座標804(中心位置)から離れたか、近付いたかを判定する(ステップS1106)。つまり、選択デバイス105で、サイズ変更用オブジェクトを選択し、空間上を移動させる処理(移動指示/移動処理)がされたか判定し、当該移動方向に基づいて、被選択用オブジェクト911の座標804(中心位置)から離れたか、近付いたかを判定する。
具体的には、PC200のCPU201は、外部メモリに記憶した、サイズ変更用オブジェクト1203が選択された時点での選択用オブジェクト903の座標804と被選択用オブジェクト911の座標804の間の距離と、現在の選択用オブジェクト903と被選択用オブジェクト911の座標804の間の距離とを比較する。そして、サイズ変更用オブジェクト1203選択時点における選択用オブジェクト903から被選択用オブジェクトまでの距離の方が大きい場合、選択用オブジェクト903が被選択用オブジェクト911に近付いたと判定する。また、サイズ変更用オブジェクト1203選択時点における選択用オブジェクト903から被選択用オブジェクトまでの距離の方が小さい場合、選択用オブジェクト903が被選択用オブジェクト911から離れたと判定する。
PC200のCPU201は、選択デバイス105が移動され、選択用オブジェクト903が、被選択用オブジェクト911の座標804から離れたと判定した場合、当該移動量に応じて被選択用オブジェクト911、及び立方体オブジェクト1202を拡大する(ステップS1107)。つまり、移動量に応じて変更されたサイズの情報を、被選択用オブジェクト911のサイズ805に上書して、被選択用オブジェクト911を拡大する。
選択デバイス105が移動され、選択用オブジェクト903が、被選択用オブジェクト911の座標804に近付いたと判定した場合、当該移動量に応じて被選択用オブジェクト911、及び立方体オブジェクト1202を縮小する(ステップS1111)。つまり、移動量に応じて変更されたサイズの情報を、被選択用オブジェクト911のサイズ805に上書して、被選択用オブジェクト911を縮小する。
当該移動量がどの程度の場合に、どの程度、各オブジェクトを縮小するかを示す情報は、予め、PC200の外部メモリに記憶されているものとする(不図示)。
PC200のCPU201は、被選択用オブジェクト911の拡大・縮小後のサイズが、3Dプリンタ300の印刷可能サイズ以下か判定する(ステップS1112)。つまり、被選択用オブジェクト911のサイズが印刷可能サイズになったか判定する。
PC200のCPU201は、被選択用オブジェクト911の拡大・縮小後のサイズが、3Dプリンタ300の印刷可能サイズ以下でないと判定した場合(ステップS1112でNO)、処理をステップS1108に移行する。
被選択用オブジェクト911の拡大・縮小後のサイズが、3Dプリンタ300の印刷可能サイズ以下であると判定した場合(ステップS1112でYES)、被選択用オブジェクト911が印刷可能なサイズになったことを識別表示すべく、被選択用オブジェクトの全面の色を、所定の色に変更する(ステップS1113)。当該所定の色の情報は、予め、PC200の外部メモリに記憶されているものとする。
PC200のCPU201は、選択デバイス105から操作信号を受け付け(ステップS1108)、当該操作信号が、第2ボタン902(図9A)の押下指示を受け付けた旨の操作信号か判定する(ステップS1109)。第2の実施形態において、第2ボタン902(図9A)は、サイズ変更用オブジェクト1203の選択の解除に用いられる。
PC200のCPU201は、選択デバイス105から操作信号を受け付け(ステップS1108)、当該操作信号が、第2ボタン902(図9A)の押下指示を受け付けた旨の操作信号か判定する(ステップS1109)。第2の実施形態において、第2ボタン902(図9A)は、サイズ変更用オブジェクト1203の選択の解除に用いられる。
PC200のCPU201は、受け付けた操作信号が、第2ボタン902(図9A)の押下を示す信号でないと判定した場合(ステップS1108でNO/例えば、第1ボタン901の押下等)、処理をステップS1105に戻す。
受け付けた操作信号が、第2ボタン902(図9A)の押下を示す信号であると判定した場合(ステップS1108でYES)、当該第2ボタン902が押下された時点での、被選択用オブジェクト911のサイズを、当該被選択用オブジェクト911の印刷サイズとして決定し、外部メモリに、当該被選択用オブジェクト911のオブジェクトIDと対応付けて、当該印刷サイズの情報を記憶する(ステップS1110)。以上が図11の説明である。
PC200のCPU201は、図11の処理後、図10のステップS608において、ステップS1110で決定・記憶した印刷サイズを取得して、ステップS610で、当該印刷サイズが、3Dプリンタ300において印刷可能なサイズかを判定するものとする。
また、図10のステップS618においては、サイズ変更にあたって、図11のステップS1104で記憶した、被選択用オブジェクト911が選択された時点でのサイズ805(サイズ変更前のサイズ)を取得して、被選択用オブジェクト911が選択された時点でのサイズ805の情報を、現在の被選択用オブジェクト911のサイズ805に上書して(つまり被選択用オブジェクトのサイズを、サイズ変更前の、元のサイズに戻して)、配置位置を戻す処理を行う。
以上説明したように、本発明の第2の実施形態によれば、3Dプリンタでのオブジェクトの印刷可否に応じて、MR空間上で、印刷対象のオブジェクトの状態を変更できる。
以上が本発明の第2の実施形態の説明である。
<第3の実施形態>
次に、本発明の第3の実施形態について説明する。
第3の実施形態においては、第1の実施形態で説明した図5〜図9Dの内容・処理を実行するが、HMDの利用及び印刷進捗の表示にユーザ情報を用いる点で、第1の実施形態と異なる。また、第3の実施形態においては、複数のHMD100(HMD100を装着したユーザ)が、同一のMR空間上に存在し、現実画像の撮像・重畳画像の表示を行っているものとする。
本発明の第3の実施形態では、印刷指示を行ったユーザのHMDに対して、当該ユーザが印刷指示をしたオブジェクトにかかる印刷状態を通知することができる。
以下、図13〜図15を参照して、本発明の第3の実施形態について説明する。第3の実施形態において、各装置は、HMD100の台数分(ユーザの人数分)、各フローチャートの処理を実行する。
PC200のCPU201は、ステップS601〜S610の処理を実行する。詳細は第1の実施形態の説明で記載したため、ここでは説明を割愛する。
まず図13を参照して、本発明の第3の実施形態における、印刷者の特定処理の流れについて説明する。
PC200のCPU201は、ステップS610で、被選択用オブジェクトが3Dプリンタ300で印刷可能なサイズであると判定した場合(ステップS610でYES)、3Dプリンタ300に接触した被選択用オブジェクト(印刷指示される3Dモデル)のオブジェクトIDと、当該被選択用オブジェクトの座標から所定範囲内に位置するHMDの識別情報を取得して(ステップS1301)、当該当該被選択用オブジェクトの座標から所定範囲内に位置するHMDの識別情報を、当該被選択用オブジェクトの印刷指示をした印刷者(ユーザ)の識別情報として、被選択用オブジェクトのオブジェクトIDと対応付けて記憶する(ステップS1302)。
当該対応付けの情報は、例えば図15に示す印刷者特定情報1500のような情報であり、PC200の外部メモリに生成・記憶される。また、当該所定範囲の情報は、所定範囲1510のような情報であり、予め、PC200の外部メモリに記憶されているものとする。図15によれば、所定範囲1510は、3Dプリンタオブジェクトと接触し、印刷指示された被選択用オブジェクトの中心位置からX=1m(横)、Y=1m(奥行き)、Z=1m(高さ)の範囲を示す。
印刷者HMD識別情報1501は、ユーザからの印刷指示がされた時点(ステップS610でYESと判定した時点)で、印刷指示された被選択用オブジェクト(印刷中オブジェクトID1502の示すオブジェクト)から、所定範囲1510内に存在したHMD100の識別情報(ID)である。
尚、ここでは、所定範囲1510内にあるHMD100が複数存在した場合、印刷指示された被選択用オブジェクトから最も近い位置にあるHMD100の識別情報を、印刷者HMD識別情報1501に記憶するものとする。
また、印刷中オブジェクトID1502の示すオブジェクトの印刷完了が通知された場合(ステップS711)、当該印刷完了通知がされた、印刷中オブジェクトID1502、印刷者HMD識別情報1501は、印刷者特定情報1500から削除されるものとする。
PC200のCPU201は、ステップS611〜S618の処理を実行する。詳細は第1の実施形態の説明で記載したため、ここでは説明を割愛する。以上が図13の説明である。
次に図14を参照して、本発明の第3の実施形態における、MRを用いた印刷状況の通知処理の流れについて説明する。
PC200のCPU201は、ステップS701の処理を実行する。詳細は第1の実施形態の説明で記載したため、ここでは説明を割愛する。
PC200のCPU201は、HMD100の視界内にオブジェクトが存在すると判定した場合(ステップS701でYES)、当該HMD100の識別情報をHMD100から取得し、視界内にあると判定されたオブジェクトの識別情報(オブジェクトID801)を、外部メモリから取得する(ステップS1401)。
PC200のCPU201は、当該HMD100が印刷者となった、印刷中の被選択用オブジェクトが、HMD100の視界内に存在するか判定する(ステップS1402)。
具体的には、PC200のCPU201は、外部メモリに記憶されている印刷者特定情報1500を参照し、ステップS1401で取得したHMD100の識別情報を印刷者HMD識別情報1501に有する印刷中オブジェクトID1502を取得して、当該視界内にあるオブジェクトのオブジェクトIDが、当該印刷中オブジェクトID1502と一致するか判定する。当該印刷中オブジェクトID1502と一致するオブジェクトIDの被選択用オブジェクト=HMD100が印刷者となった、印刷中の被選択用オブジェクトである。
PC200のCPU201は、ステップS1401で識別情報を取得したHMD100が印刷者となった、印刷中の被選択用オブジェクトが、HMD100の視界内に存在しないと判定した場合(ステップS1402でNO)、処理を終了する。
ステップS1401で識別情報を取得したHMD100が印刷者となった、印刷中の被選択用オブジェクトが、HMD100の視界内に存在すると判定した場合(ステップS1402でYES)、ステップS702〜S711の処理を実行する。詳細は第1の実施形態の説明で記載したため、ここでは説明を割愛する。
PC200のCPU201は、印刷中オブジェクトID1502の示すオブジェクトの印刷完了が通知された場合(ステップS711)、当該印刷完了通知がされた、印刷中オブジェクトID1502、印刷者HMD識別情報1501は、印刷者特定情報1500から削除する(ステップS1403)。
以上説明したように、本発明の第3の実施形態によれば、印刷指示を行ったユーザのHMDに対して、当該ユーザが印刷指示をしたオブジェクトにかかる印刷状態を通知することができる。
<第4の実施形態>
次に、本発明の第4の実施形態について説明する。
第4の実施形態においては、第1の実施形態で説明した図5〜図9Dの内容・処理を実行するが、図7のステップS707で、HMDと、印刷中の被選択用オブジェクトとの間の距離が所定距離以内か判定して、印刷進捗を示すオブジェクトの生成、重畳画像の生成、重畳画像の送信を行うか否かを決定する点で、第1の実施形態と異なる。
本発明の第4の実施形態では、ユーザと印刷中のオブジェクトとの距離に応じて、オブジェクトの印刷状況を確認させつつ、より現実感のある空間を体感させることができる。
MRは、現実空間とMR空間を合成して、より現実に近い空間をユーザに体感させるものと考えられる。そのため、MR空間上のオブジェクト(3Dモデル)は、極力現実に近しいものを作成・用意して配置し、ユーザに提示する。よって、オブジェクトの透明化(透明度の変更)や、図9Cの933等に示すような付加情報を示す、現実空間に存在しないようなオブジェクトは、特別な場合を除き、空間上に配置・描画しないことが望まれる場合がある。
本発明の第4の実施形態においては、ユーザと印刷中のオブジェクトが所定以上接近した場合に、ユーザが、当該印刷中のオブジェクトの詳細を確認したいものと推測し、印刷進捗を示すオブジェクトを表示するよう制御するものとする。
本発明の第4の実施形態において、PC200のCPU201は、第1の実施形態で説明した図7のステップS701〜S706の処理を実行した後、図7のステップS707で、HMD100の座標と、ステップS701で視界内にあると判定された、印刷中の被選択用オブジェクトの座標804とを特定して、当該2つの座標の間の距離が所定距離以内か判定する。当該所定距離の情報は、予め、PC200の外部メモリに記憶されているものとする。
HMD100と印刷中の被選択用オブジェクトとが所定距離以内に存在すると判定した場合、処理をステップS708に移行して、第1の実施形態で説明したように、ステップS708〜S710の処理を行う。つまり、例えば、ユーザ(HMD100)から近い位置にある、印刷中の被選択用オブジェクト印刷進捗を示すオブジェクトを生成して、重畳画像を生成し、HMD100に送信する。
HMD100と印刷中の被選択用オブジェクトとが所定距離以内にないと判定した場合、処理を終了する。
以上説明したように、本発明の第4の実施形態によれば、ユーザと印刷中のオブジェクトとの距離に応じて、オブジェクトの印刷状況を確認させつつ、より現実感のある空間を体感させることができる。
<第5の実施形態>
次に図16〜図22を参照して、本発明の第5の実施形態について説明する。
第5の実施形態においては、3Dプリンタやその他の装置に対してどのようにデータを送信するかを詳細に説明する。
また、第5の実施形態においては、第1の実施形態でいう3Dプリンタに対応する3Dオブジェクトの他に、例えば他の3Dプリンタに対応する3Dプリンタオブジェクト、ファクシミリ装置A(FAX装置A)に対応するFAX装置オブジェクトなど、MR空間上に、現実の装置に対応するオブジェクト(装置オブジェクト)が複数配置されているものとする。
第5の実施形態によれば、所定距離内に接近したオブジェクトに対応する装置に、接近した他のオブジェクトの情報を適切に送信させることができる。
図16は、本発明の第5の実施形態における情報処理システムの構成の一例を示す図である。前述したように、第5の実施形態においては、第1の実施形態で記載した装置(3Dプリンタ300)に加え、FAX装置1601、プリンタ1602、データ送信装置1603等の装置がネットワークを介して情報処理装置と通信可能に接続されている。また、3Dプリンタは、3DプリンタAと3DプリンタBの2機種が接続されているものとする。
3Dプリンタ300、FAX装置1601、プリンタ1602、データ送信装置1603は、3次元モデル(仮想オブジェクト/オブジェクト)の形状にかかるデータを造形処理、FAX処理、印刷処理、送信処理するデータ処理装置である。
図17は、本発明の第5の実施形態における、複合機のハードウェア構成の一例を示す図である。図17のハードウェア構成は、FAX装置1601、プリンタ1602、データ送信装置1603に適用可能な構成の一例であり、各装置の機能を1つの装置に搭載したと複合機のハードウェア構成を示す。第5の実施形態の説明においては、FAX装置1601、プリンタ1602、データ送信装置1603は別の筐体として説明するため、各装置は必ずしも図17に示す全ての構成を備えていなければならないものではなく、CPUや記憶領域及び各装置の主たる機能(プリンタであれば印刷データの受信と印刷機能、FAX装置であればFAXデータの受信と印刷機能、データ送信装置であればデータの送受信機能など)が実現できる程度の構成を最低限備えていればよいものとする。
図17において、1716はコントローラユニットで、画像入力デバイスとして機能するスキャナ1714や、画像出力デバイスとして機能するプリンタ部1712と接続する一方、LAN(例えば、図16に示したLAN101)や公衆回線(WAN)(例えば、PSTNまたはISDN等)と接続することで、画像データやデバイス情報の入出力を行う。
コントローラユニット1716において、1701はCPUで、システム全体を制御するプロセッサである。1702はRAMで、CPU1701が動作するためのシステムワークメモリであり、プログラムを記録するためのプログラムメモリや、画像データを一時記録するための画像メモリでもある。
1703はROMで、システムのブートプログラムや各種制御プログラムが格納されている。1704はハードディスクドライブ(HDD)で、システムを制御するための各種プログラム,画像データ等を格納する。
1707は操作部インタフェース(操作部I/F)で、操作部(キーボード)1708とのインタフェース部である。また、操作部I/F1707は、操作部1708から入力したキー情報(例えば、スタートボタンの押下)をCPU1701に伝える役割をする。
1705はネットワークインタフェース(Network I/F)で、ネットワーク(LAN)101に接続する。また、無線通信も可能な構成となっており、赤外線やBluetooth(登録商標)、Wi-Fi(登録商標)を用いた通信にて他の装置と接続する。データの入出力を行う。1706はモデム(MODEM)で、公衆回線に接続し、FAXの送受信等のデータの入出力を行う。
1718は外部インタフェース(外部I/F)で、USB、IEEE1394,プリンタポート,RS−232C等の外部入力を受け付けるI/F部であり、本実施形態においては認証で必要となる携帯端末のICカード(記憶媒体)の読み取り用のカードリーダ1719が外部I/F部1718に接続されている。そして、CPU1701は、この外部I/F1718を介してカードリーダ1719による携帯端末のICカードからの情報読み取りを制御し、該携帯端末のICカードから読み取られた情報を取得可能である。以上のデバイスがシステムバス1709上に配置される。
1720はイメージバスインタフェース(IMAGE BUS I/F)であり、システムバス1709と画像データを高速で転送する画像バス1715とを接続し、データ構造を変換するバスブリッジである。
画像バス1715は、PCIバスまたはIEEE1394で構成される。画像バス1715上には以下のデバイスが配置される。
1710はラスタイメージプロセッサ(RIP)で、例えば、PDLコード等のベクトルデータをビットマップイメージに展開する。1711はプリンタインタフェース(プリンタI/F)で、プリンタ部1712とコントローラユニット1716を接続し、画像データの同期系/非同期系の変換を行う。また、1713はスキャナインタフェース(スキャナI/F)で、スキャナ1714とコントローラユニット1716を接続し、画像データの同期系/非同期系の変換を行う。
1717は画像処理部で、入力画像データに対し補正、加工、編集を行ったり、プリント出力画像データに対して、プリンタの補正、解像度変換等を行う。また、これに加えて、画像処理部1717は、画像データの回転や、多値画像データに対してはJPEG、2値画像データはJBIG、MMR、MH等の圧縮伸張処理を行う。
スキャナ部1714は、原稿となる紙上の画像を照明し、CCDラインセンサで走査することで、ラスタイメージデータとして電気信号に変換する。原稿用紙は原稿フィーダのトレイにセットし、装置使用者が操作部1708から読み取り起動指示することにより、CPU1701がスキャナ1714に指示を与え、フィーダは原稿用紙を1枚ずつフィードし原稿画像の読み取り動作を行う。
プリンタ部1712は、ラスタイメージデータを用紙上の画像に変換する部分であり、その方式は感光体ドラムや感光体ベルトを用いた電子写真方式、微少ノズルアレイからインクを吐出して用紙上に直接画像を印字するインクジェット方式等があるが、どの方式でも構わない。プリント動作の起動は、CPU1701からの指示によって開始する。なお、プリンタ部1712には、異なる用紙サイズまたは異なる用紙向きを選択できるように複数の給紙段を持ち、それに対応した用紙カセットがある。
操作部1708は、LCD表示部を有し、LCD上にタッチパネルシートが貼られており、システムの操作画面を表示するとともに、表示してあるキーが押されるとその位置情報を操作部I/F1707を介してCPU1701に伝える。また、操作部1708は、各種操作キーとして、例えば、スタートキー、ストップキー、IDキー、リセットキー等を備える。
尚、表示部は複合機によって表示性能が異なり、タッチパネルを介して操作をできる複合機、単に液晶画面を備え文字列を表示(印刷状態や印刷している文書名の表示)させるだけの複合機によって本発明は構成されている。
ここで、操作部1708のスタートキーは、原稿画像の読み取り動作を開始する時などに用いる。スタートキーの中央部には、緑と赤の2色LEDがあり、その色によってスタートキーが使える状態にあるかどうかを示す。また、操作部1708のストップキーは、稼働中の動作を止める働きをする。また、操作部1708のIDキーは、使用者のユーザIDを入力する時に用いる。リセットキーは、操作部からの設定を初期化する時に用いる。
カードリーダ1719は、CPU1701からの制御により、ICカード(ICチップとして携帯端末内に備えられていてもよい)に記憶されている情報を読み取り、該読み取った情報を外部I/F1718を介してCPU1701へ通知する。また、カードリーダ1719はNFCの通信規格に対応しており、ICカードや携帯端末のICチップへの読み書きを行うことが可能な構成となっている(カードリーダ/ライタ)。なお、NFC規格対応のカードリーダに、NFC規格対応の携帯端末をかざすと、認証を行い、携帯端末と複合機とのペアリングを行う。そして、かざされた携帯端末と複合機で通信(P2P)を確立してデータの通信を行うことが可能である。その他、高速通信規格である、Bluetooth(登録商標)やWi-Fi(登録商標)に通信を引き継ぎ(ハンドオーバー)、携帯端末と複合機間で通信を行わせることも可能である。例えば、携帯端末をカードリーダにかざすことで、携帯端末に記憶されている画像を複合機へ送信することが可能となる。なお、NFCの通信規格の詳細は、従来技術であるため、説明を省略するものとする。
上述した複合機では、複合機を制御するためのプラットフォームが存在し、このプラットフォーム上で、認証サーバと通信するための認証アプリケーションが動作している。認証アプリケーションはHDD1704に記憶されている。プラットフォームが管理する、ログイン時にユーザ情報を格納するログインコンテキストや、各種設定情報は、HDD1704上に領域が確保されている。
また、プラットフォーム上には、複合機の本体機能を拡張したアプリケーションがインストールされ、動作している。これらアプリケーションは、プラットフォームのAPIを用いて実行される。
このプラットフォームを介して、複合機の各機能を制御することが可能な構成となっている。
また、複合機には、Webブラウザも記憶されており、Webシステムと連携することも可能である。この場合、Webアプリケーションサーバから受信した画面をWebブラウザを用いて表示する。Webブラウザ上で指示した命令は、Webアプリケーションサーバへ要求がなされ、Webアプリケーションサーバからの命令を受け付けることによって、複合機により動作(スキャンやプリント処理)を実行することが可能である。
以上のような構成によって、複合機は、スキャナ1714から読み込んだ画像データをLAN101上に送信したり、LAN101から受信した印刷データをプリンタ部1712により印刷出力することができる。
また、スキャナ1714から読み込んだ画像データをモデム1706により、公衆回線上にFAX送信したり、公衆回線からFAX受信した画像データをプリンタ部1712により出力することできる。以上が図17の説明である。
図18は、本発明の第5の実施形態における各種装置の機能構成の一例を示す図である。
PC200の、オブジェクト記憶部421は、オブジェクト(MR空間上に配置する3DCGモデル/仮想オブジェクトともいう)を記憶する記憶部である。例えば外部メモリに、図22のオブジェクト情報2200を記憶する。
オブジェクト位置特定部422、重畳画像送信部423の動作は図4の説明で前述したため割愛する。
距離判定部1801は、オブジェクト位置特定部422で特定した各オブジェクトの仮想空間上の位置の情報を用いて、選択されているオブジェクトと、データ処理装置に対応するオブジェクト(装置オブジェクト)との距離が所定距離内になったか判定する判定部である。例えば接触した場合は、2つのオブジェクトの距離が0になっているものとし、当該距離の値(0を示す値)が外部メモリに記憶されている閾値(所定距離・所定範囲の値)内になった場合に、選択されているオブジェクトと、データ処理装置に対応するオブジェクト(第1の実施形態でいう3Dプリンタオブジェクト/装置オブジェクト)との距離が所定距離内になったと判定する。距離判定部1801は図4でいう接触判定部424である。
データ送信部1802は、後述する送信用データ生成部で送信先の装置用に生成・変換された、距離判定部1801で所定距離内になったと判定されたオブジェクトに対応する、例えばオブジェクトの形状にかかるデータを、当該オブジェクトと所定距離内にあると判定された装置オブジェクトに対応する装置を送信先として送信する送信部である。データ送信部1802は、図4でいうオブジェクト送信部425である。
進捗情報受信部1803は、各データ処理装置より、データ送信部1802により送信されたデータの処理の進捗の情報を受信する受信部である。例えば造形の進捗、印刷の進捗、送信先への送信が何パーセント完了しているかを示す情報を受信する。進捗情報受信部1803は、図4でいう印刷進捗情報受信部426である。PC200のCPU201は、例えば図22の進捗情報2210に示すように、オブジェクトごとにどの装置でどの程度処理が完了したかを受信して外部メモリに記憶する。進捗情報2210は、各データ処理装置、PC200の外部メモリにそれぞれ記憶されている。
通知処理部427は、進捗情報受信部1803で受信した進捗の情報を、HMD100に送信して、ユーザに通知する。例えば、処理が完了している分(造形が完了しているパーセンテージ分)だけ、透過率0%で描画した、印刷中のオブジェクトを生成して現実画像に重畳し、HMD100のディスプレイに表示させるために、HMD100に送信する処理を行うことで、印刷状況をユーザに通知する。
ドライバ記憶部1804は、各データ処理装置に対応するドライバソフトウェアを記憶する記憶部である。例えば図22のドライバ一覧2230に示すように、各データ処理装置の機種に応じたドライバ(ドライバ名2231の示すドライバ)を記憶している。
ドライバ特定部1805は、距離判定部1801で所定距離内にあると判定された装置オブジェクト(例えば3Dプリンタオブジェクト)が、どの種類の装置のどの機種に対応する装置オブジェクトかを特定し、当該機種に対して送信する送信用データを生成するドライバソフトウェアを特定する特定部である。
送信用データ生成部1806は、ドライバ特定部1805で特定されたドライバを起動して、例えば3Dプリンタオブジェクトに近づいた被選択用オブジェクトを、当該3Dプリンタオブジェクトが対応する3Dプリンタの機種で造形可能な形式に変換する(生成する)。
光学センサ104の、位置情報特定部441、位置情報送信部442、HMD100の、撮像処理部411、重畳画像受信部412、重畳画像表示部413については、図4の説明で前述したため説明を割愛する。
各データ処理装置の、データ受信部1831は、PC200のデータ送信部1802で送信されたデータを受信する受信部である。処理部1832は、当該データ受信部1831で受信したデータの処理(例えば3Dプリンタの場合は受け付けた3オブジェクトの形状にかかるデータの造形処理、プリンタの場合は受け付けた印刷データの印刷などである)を実行する。進捗情報送信部1833は、各種データ処理装置で処理途中または処理が完了したオブジェクトの進捗状況(処理完了のパーセンテージの情報)をPC200に送信する送信部である。以上が図18の説明である。
図19〜図22の説明に移る。PC200のCPU201は、前述した実施形態同様、図5、図9A〜図9Dで説明した内容・当該内容に基づく処理を実行する。また、図6の処理の代わりに図19の処理(図19の一部を説明する図20のフローチャートの処理)を実行し、図7の処理の代わり図21の処理を行う。つまり、図5のステップS509で図19の処理を実行し、ステップS510で図21の処理を実行する。第1の実施形態と共通処理については説明を割愛する。
図19を参照して、本発明の第5の実施形態における、装置に対するオブジェクトのデータ送信処理の流れについて説明する。図19は、図20でデータ生成処理(データ送信のための詳細な処理)を説明するために、図6のステップS608〜S618の処理を簡略化して記載した図である。
図19のステップS601〜S605の処理は図6の同ステップ番号の処理と同じであるため説明は割愛する。
ステップS1901で、PC200のCPU201は、装置オブジェクト(例えば3Dプリンタオブジェクト)と、ステップ604で表示位置を変更している、選択中の被選択用オブジェクトが所定距離内にあるか判定する(ステップS1601)。当該所定距離の情報は例えば図22の所定距離2240に示すような情報であり、予めPC200の外部メモリに記憶されているものとする。(図22の各テーブルの情報はPC200の外部メモリに記憶されている。)例えば、第1の実施形態で説明したように2つのオブジェクトが接触している場合は、2つのオブジェクトの距離は0以下であるため、所定距離2240内であると判定する。
尚、ここでいう装置オブジェクトとは、図22の属性2203に所定の値を持つオブジェクト(例えば上述した実施形態における3Dプリンタオブジェクト)である。図22では、例えば、属性2203に3Dプリンタ、FAX装置、データ送信装置、プリンタの属性を持つオブジェクトを装置オブジェクトとする。
なお、2201〜2202、2204〜2207の説明はそれぞれ図8の801〜802、804〜807の説明と同じであるため説明は割愛する。送信先2208は、装置オブジェクトに対応する送信先の情報である。例えばFAX装置に対応する装置オブジェクトには、当該装置オブジェクトに近づいた(所定距離内の)被選択用オブジェクトの画像をFAX送信する送信先が対応付けて記憶されている。また、例えばデータ送信装置に対応する装置オブジェクトには、当該装置オブジェクトに近づいた被選択用オブジェクトのデータを送信して格納する先のURI(URL)の情報が送信先として記憶されている。処理可能な装置1809は、当該オブジェクトを処理可能な(処理を許可する)装置の識別情報である。
ステップS1901で、PC200のCPU201は、装置オブジェクトの座標2204と、選択中フラグ2207=1の選択中の被選択用オブジェクトの座標2204が、所定距離2240に示す距離以内にあるか判定する。
装置オブジェクトと選択中の被選択用オブジェクトが所定距離内にないと判定した場合(ステップS1901でNO)、処理をステップS1901の前に戻す。装置オブジェクトと選択中の被選択用オブジェクトが所定距離内にあると判定した場合(ステップS1901でYES)、PC200のCPU201は、選択中の被選択用オブジェクトの移動を終了し(ステップS607)、移動を終了した被選択用オブジェクトのファイルパス2206を取得して(ステップS611)、当該ファイルパスの示す記憶領域からオブジェクト名2202のファイル(当該オブジェクトの形状にかかるファイル)を取得する(ステップS613)。その後、処理をステップS1902に移行して、選択中の被選択用オブジェクトと所定距離まで近付いた装置オブジェクトの装置に送信するデータの生成処理を行う(ステップS1902)。当該データの生成処理とは、3次元モデルのデータ(オブジェクトの形状にかかるデータ)を、例えば3Dプリンタ等のデータ処理装置で造形可能なように、3Dプリンタのドライバで変換する処理である。当該データ生成処理の詳細については図20の説明で後述する。
図20を参照して、本発明の第5の実施形態における、装置に対して送信するデータ生成処理の流れについて説明する。
PC200のCPU201は、図19のステップS1901で所定距離内にあると判定された被選択用オブジェクトの、処理可能な装置2209(図22)の値を取得する(ステップS2001)。また、図19のステップS1901で所定距離内にあると判定された装置オブジェクトのオブジェクトID2201を特定し(ステップS2002)、当該オブジェクトID2201に対応する属性2203を取得する(ステップS2003)。
PC200のCPU201は、ステップS2003で取得した属性が3Dプリンタを示すか判定する(ステップS2004)。つまり、図19のステップS1901で所定距離内にあると判定された装置オブジェクトが3Dプリンタに対応するオブジェクトか判定する。
取得した属性が3Dプリンタを示す場合(ステップS2004でYES)、所定距離内にあると判定された当該被選択用オブジェクトについて、3Dプリンタでの造形処理が可能か(許可されているか)判定する(ステップS2005/処理可否判定手段)。具体的には、ステップS2001で取得した処理可能な装置2209に3Dプリンタが含まれているか判定する。含まれている場合は処理が可能と判定し、含まれていない場合は処理ができない(不許可)と判定する。
処理が可能でないと判定された場合(ステップS2005でNO)、ステップS2022に移行して、エラーを示す仮想オブジェクト(エラーオブジェクト/例えば図24の2411)を生成して(識別画像生成手段)、当該処理が不可能であると判定された装置オブジェクトの近傍の仮想空間中の位置に、図24の2410に示すように、当該エラーオブジェクトを配置する。HMD100のカメラが当該エラーオブジェクトの位置を撮影する方向を向いている場合は、図5のステップS508で当該エラーオブジェクトを含むMR画像を生成し、HMD100に送信する。
ステップS2005で処理が可能であると判定された場合(ステップS2005でYES)、PC200のCPU201は、当該装置オブジェクト(3Dプリンタオブジェクト)に対応する装置の機種を、装置特定情報2220を取得して参照し、特定する。オブジェクトの識別情報はオブジェクトID2221に示し、機種の情報は機種名2223に示す。オブジェクトID2221及び装置識別情報2222は、図8の821、822と同じであるため説明は割愛する。PC200のCPU201は、図22のドライバ一覧2230(PC200にインストールされているドライバソフトウェアの一覧)から当該3Dプリンタの機種名2223を対応機種2232に持つドライバを特定して起動し(ステップS2006)、図19のステップS1901で装置オブジェクトから所定距離内にあると判定された被選択用オブジェクトを当該3Dプリンタで造形可能なように、当該被選択用オブジェクト(オブジェクトの形状にかかるデータ/図22のファイルパス2206に保存されているデータ)を当該ドライバの機能を用いて変換する(ステップS2007)。つまり、データ処理装置で処理が可能なオブジェクトのデータを生成する。
ステップS2003で取得された属性が3Dプリンタを示さない場合(ステップS2004でNO)、ステップS2003で取得された属性がプリンタ(例えば複合機/2Dプリンタ)を示すか判定する(ステップS2008)。
ステップS2003で取得された属性がプリンタを示す場合(ステップS2008でYES)、所定距離内にあると判定された当該被選択用オブジェクトについて、プリンタでの印刷処理が可能か(許可されているか)判定する(ステップS2009/処理可否判定手段)。具体的には、ステップS2001で取得した処理可能な装置2209にプリンタ(印刷装置)が含まれているか判定する。含まれている場合は処理可能と判定し、含まれていない場合は処理ができない(不許可)と判定する。
処理が可能でないと判定された場合(ステップS2009でNO)、処理をステップS2022に移行する。処理が可能であると判定された場合(ステップS2009でYES)、当該被選択用オブジェクトに対応する画像を取得する(ステップS2010)。例えば、当該被選択用オブジェクトに対応付けられて当該被選択用オブジェクトの2次元図面の画像データが外部メモリに予め記憶されており、ステップS2010において当該2次元図面の画像データを取得するものとする。
PC200のCPU201は、当該装置オブジェクト(プリンタに対応する装置オブジェクトであるプリンタオブジェクト)に対応するプリンタの機種を、装置特定情報2220を取得して参照し、特定する。そして当該機種に対応するドライバを図22のドライバ一覧2230の対応機種2232と機種名2223から特定して起動する(ステップS2011)。
そして、ステップS1901で当該プリンタオブジェクトから所定距離内にあると判定された被選択用オブジェクトの画像データを当該プリンタオブジェクトの示すプリンタで印刷可能なように、当該画像データを当該ドライバの機能を用いて変換する(ステップS2012)。つまり、データ処理装置で処理が可能なオブジェクトのデータ(ここでは印刷データ)を生成する。
ステップS2003で取得された属性がプリンタを示さない場合(ステップS2008でNO)、ステップS2003で取得された属性がFAX装置を示すか判定する(ステップS2013)。
ステップS2003で取得された属性がFAX装置を示す場合(ステップS2013でYES)、所定距離内にあると判定された当該被選択用オブジェクトについて、FAX装置でのFAX送信処理が可能か(許可されているか)判定する(ステップS2014/処理可否判定手段)。具体的には、ステップS2001で取得した処理可能な装置2209にFAX装置を示す値が含まれているか判定する。含まれている場合は処理可能と判定し、含まれていない場合は処理ができない(不許可)と判定する。
処理が可能でないと判定された場合(ステップS2014でNO)、処理をステップS2022に移行する。処理が可能であると判定された場合(ステップS2014でYES)、例えばステップS2010で説明したように、装置オブジェクト(FAX装置の装置オブジェクトであるFAX装置オブジェクト)から所定距離内にあると判定された被選択用オブジェクトの画像データを取得する(ステップS2015)。
PC200のCPU201は、当該FAX装置オブジェクトに対応するFAX装置の機種を装置特定情報2220を取得して参照し、特定する。そして当該機種に対応するFAXドライバを図22のドライバ一覧2230の対応機種2232と、機種名2223から特定して起動する(ステップS2016)。
そして、ステップS1901で当該FAX装置オブジェクトから所定距離内にあると判定された被選択用オブジェクトの画像データを当該FAX装置オブジェクトの示すFAX装置でFAX送信可能なように、当該画像データを当該FAXドライバの機能を用いて変換する(ステップS2017)。つまり、データ処理装置で処理が可能なオブジェクトのデータを生成する。また、当該FAX装置オブジェクトに対応する送信先2208を取得する(ステップS2018)。
ステップS2003で取得された属性がFAX装置を示さない場合(ステップS2013でNO)、ステップS2003で取得された属性がデータ送信装置を示すか判定する(ステップS2019)。データ送信装置を示す場合は(ステップS2019でYES)、所定距離内にあると判定された当該被選択用オブジェクトについて、データ送信装置によるデータの送信処理が可能か(許可されているか)判定する(ステップS2020/処理可否判定手段)。具体的には、ステップS2001で取得した処理可能な装置2209にデータ送信装置を示す値が含まれているか判定する。含まれている場合は処理可能と判定し、含まれていない場合は処理ができない(不許可)と判定する。
処理が可能でないと判定された場合(ステップS2020でNO)、処理をステップS2022に移行する。処理が可能であると判定された場合(ステップS2020でYES)、当該データ送信装置の装置オブジェクト(データ送信装置オブジェクト)のに対応する識別情報(図22の装置識別情報2222)、装置オブジェクトに対応する送信先2208を取得する(ステップS2021)。以上が図20の説明である。
図19の説明に戻る。PC200のCPU201は、被選択用オブジェクトのデータを、当該被選択用オブジェクトから所定距離内にあると判定された装置オブジェクトの示すデータ処理装置に送信する(ステップS1903)。
具体的には、例えば、ステップS2007で3Dプリンタのドライバの機能を用いて生成したオブジェクトの形状にかかるデータを、ステップS2006で取得した装置特定情報2220における当該3Dプリンタの装置識別情報2222を送信先として、造形処理の開始指示とあわせて送信する。そして、進捗情報2210の2211に当該送信したデータに対応するオブジェクトのIDを書き込み、機種名2213に送信先の装置の機種名を書き込んで記憶する。また、当該データを受信した3DプリンタのCPUは、自装置の外部メモリに当該受信したデータを記憶し、進捗情報2210を生成し、オブジェクトID2211に受信したオブジェクトのIDを進捗2212に処理進捗のパーセンテージを書き込む。進捗2212には最初は0%を書き込み、外部メモリに記憶したオブジェクトのデータを読み出してオブジェクトの立体形状の造形処理(出力)を行い、当該処理が進むにつれて処理が完了したパーセンテージの値を進捗2212に書き込む。
また、例えば、ステップS2012でプリンタドライバの機能を用いて生成した印刷データを、ステップS2001で取得した装置特定情報2220における当該プリンタの装置識別情報2222を送信先として、印刷処理の開始指示とあわせて送信する。そして、進捗情報2210の2211に当該送信したデータに対応するオブジェクトのIDを書き込み、機種名2213に送信先の装置の機種名を書き込んで記憶する。また、当該データを受信したプリンタのCPUは、自装置の外部メモリに当該受信したデータを記憶し、進捗情報2210を生成し、オブジェクトID2211に受信したオブジェクトのIDを進捗2212に処理進捗のパーセンテージを書き込む。進捗2212には最初は0%を書き込み、外部メモリに記憶したオブジェクトのデータを読み出して印刷処理(出力)し、当該処理が進むにつれて処理が完了したパーセンテージの値を進捗2212に書き込む。
また、例えば、ステップS2017でFAXドライバの機能を用いて生成したFAXデータを、ステップS2001で取得した装置特定情報2220における当該FAX装置の装置識別情報2222を送信先として、ステップS2018で取得した送信先及び当該送信先に対するFAX処理の開始指示とあわせて送信する。そして、進捗情報2210の2211に当該送信したデータに対応するオブジェクトのIDを書き込み、機種名2213に送信先の装置の機種名を書き込んで記憶する。また、当該データを受信したFAX装置のCPUは、自装置の外部メモリに当該受信したデータを記憶し、進捗情報2210を生成し、オブジェクトID2211に受信したオブジェクトのIDを進捗2212に処理進捗のパーセンテージを書き込む。進捗2212には最初は0%を書き込み、外部メモリに記憶したオブジェクトのデータを読み出して、PC200から受信した(ステップS2018で取得された)送信先に対してFAX送信処理(出力)し、当該処理が進むにつれて送信処理が完了したパーセンテージの値を進捗2212に書き込む。
また、例えば、図19のステップS613で取得した被選択用オブジェクトの形状にかかるデータを、ステップS2001で取得した装置特定情報2220における当該データ送信装置の装置識別情報2222を送信先として、ステップS2021で取得した送信先及び当該送信先に対するデータ送信処理の開始指示とあわせて送信する。そして、進捗情報2210の2211に当該送信したデータに対応するオブジェクトのIDを書き込み、機種名2213に送信先の装置の機種名を書き込んで記憶する。また、当該データを受信したデータ送信装置のCPUは、自装置の外部メモリに当該受信したデータを記憶し、進捗情報2210を生成し、オブジェクトID2211に受信したオブジェクトのIDを進捗2212に処理進捗のパーセンテージを書き込む。進捗2212には最初は0%を書き込み、外部メモリに記憶したオブジェクトのデータを読み出して、PC200から受信した(ステップS2021で取得された)送信先の当該データのURIへの送信・格納処理(出力)を行い、当該処理が進むにつれて処理が完了したパーセンテージの値を進捗2212に書き込む。
PC200のCPU201は、処理をステップS618に移行し、ステップS603で選択が行われる直前の当該被選択用オブジェクトの座標2204を外部メモリから読み出し、当該被選択用オブジェクトを、当該選択前の座標2204に配置しなおす(ステップS618)。つまり、選択前の位置に、被選択用オブジェクトを戻す処理を行う。以上が図19の説明である。
次に図21を参照して、本発明の第5の実施形態における、MRを用いた処理状況の通知処理の流れについて説明する。
図21の処理の流れは、基本的には第1の実施形態における図7と同じである。
PC200のCPU201は、ステップS507で継続して取得している、HMD100の位置姿勢の情報と、PC200の外部メモリに予め記憶されている、HMD100の画角(HMD100に搭載されているカメラで撮像可能な範囲)、オブジェクトの座標804の情報を用いて、HMD100の視野内(カメラ221又はカメラ222の画角)に、データ処理装置で処理中の被選択用オブジェクト(オブジェクトID2211の示すオブジェクト=データ処理装置にデータを送信済みのオブジェクト)が存在するか判定する(ステップS2101)。
HMD100の視野内に処理中の被選択用オブジェクトが存在しないと判定した場合(ステップS2101でNO)処理を終了する。HMD100の視野内に処理中の被選択用オブジェクトが存在すると判定した場合(ステップS2101でYES)、当該オブジェクトの処理をしている装置(機種名2213の示す装置)を特定し(ステップS2112)、当該画角内に含まれる処理中の被選択用オブジェクトの処理進捗の情報(進捗2212に記憶する情報)の取得要求を、当該特定した装置に送信する(ステップS2102)。進捗情報の取得要求には、処理進捗を要求する被選択用オブジェクトのオブジェクトID2211の値が含まれているものとする。
データ処理装置(本実施形態においては、3Dプリンタ、プリンタ、FAX装置、データ送信装置のいずれか)のCPUは、進捗情報の取得要求を受け付け(ステップ2003)、当該取得要求に含まれるオブジェクトIDに対応する値を進捗情報2210のオブジェクトID2211に持つ、自装置の外部メモリに記憶された進捗情報2210(オブジェクトID2211及び進捗2212の)をPC200に送信する(ステップS2104)。
PC200のCPU201は、当該進捗情報2210を受信して(ステップS2105/進捗情報取得手段)、処理が完了しているか判定する(ステップS2106)。つまり、進捗2212=100%か判定する。
処理が完了していると判定した場合(ステップS2106でYES)、当該処理が完了した旨を各HMD100に通知する(ステップS2111)。通知の方法は図7のステップS711の説明で上述したとおりである。
PC200のCPU201は、HMD100の画角内にある被選択用オブジェクトの処理が完了していないと判定した場合(ステップS2106でNO)、当該HMD100と、当該HMD100の画角内に存在する被選択用オブジェクトのデータを処理中であるデータ処理装置との間の距離が所定の距離範囲内か判定する(ステップS2107)。つまり、ユーザがデータ処理装置から所定以上離れているか、データ処理装置の近くにいるかを判定する。
HMD100とデータ処理装置の間の距離が所定範囲内である場合(ステップS2107でYES/ユーザがデータ処理装置から近い位置にいると判定した場合)、処理中の被選択用オブジェクトの処理進捗を示すオブジェクトを生成して(ステップS2108)、当該被選択用オブジェクトの代わりにMR空間上に(当該被選択用オブジェクトの仮想空間上の位置/座標2204の位置に)配置し、HMD100から取得した現実画像に重ね合わせた重畳画像を生成する(ステップS2109)。そして、当該重畳画像をHMD100に送信する(ステップS2110)
ステップS2110で生成するオブジェクトは、例えば、図9Cに示す、オブジェクト931や、オブジェクト941のようなオブジェクトであり、その説明は図7のステップS710の説明で上述した通りである。
当該進捗を示すオブジェクトの生成・表示により、処理中の被選択用オブジェクトの処理進捗をユーザに通知することができる。
尚、進捗通知オブジェクトの態様・形状は、オブジェクト931、オブジェクト941の態様・形状に限るものではなく、進捗を示す情報(オブジェクト)を、印刷中のオブジェクトに紐付けて通知できればよい。例えば、上述したように、進捗のパーセンテージを示す吹き出しのようなオブジェクトを生成・配置し、重畳画像を生成してHMD100に送信するようにしてもよいし、進捗のパーセンテージに応じた色の情報を記憶しておき、当該パーセンテージに応じた色で処理中の被選択用オブジェクトを描画・重畳するようにしてもよい。
PC200のCPU201は、進捗状況をHMD100に通知すべく、ステップS2109で生成した重畳画像(例えば、処理がされた割合だけ透過率0%で描画された被選択用オブジェクトが写った重畳画像)を、HMD100で表示させるべく、HMD100に送信する(ステップS2110)。
尚、HMD100の画角内に存在する処理中の被選択用オブジェクトが複数存在する場合は、ステップS2101〜S2111の処理を、当該処理中の被選択用オブジェクト分実行して処理を終了する。以上が図21の説明である。
以上説明したように、本発明の第5の実施形態によれば、所定距離内に接近したオブジェクトに対応する装置に、接近した他のオブジェクトの情報を適切に送信させることができる。
具体的には、所定距離まで接近したオブジェクトの装置で処理可能な形式に、送信するデータを変換して送信することができる。よって、当該データを受信した装置において、当該データ適切に処理可能となる。
つまり、本発明によれば、仮想空間で選択されるオブジェクトにかかるデータを他のオブジェクトに対応する装置に容易に送信可能な仕組みを提供することができる。
尚、上述した第5の実施形態の説明においては1つの装置オブジェクトに対して1つの送信先の情報が対応付けて記憶されている例を記載したが、例えば1つの装置オブジェクトに対して複数の送信先の情報を対応付けて記憶するようにし、PC200のCPU201が当該複数の送信先を読み込んでユーザに選択させて、ユーザから選択された送信先をステップS2018またはステップS2021で取得するようにしてもよい。具体的には、例えばFAX装置の場合を例にあげて説明する。PC200のCPU201は、ステップS2018で複数の送信先を取得した場合、図23に示すようにFAX送信先選択オブジェクト2311を生成してFAX装置オブジェクトの近傍(装置オブジェクトの座標2204から所定距離はなれた座標/当該所定距離の値はPC200の外部メモリに予め記憶されているものとする)の仮想空間上に配置し、重畳画像を生成してHMD100に送信する。当該FAX送信先選択オブジェクト2311は、選択デバイス105のオブジェクト(オブジェクトの属性2203=選択デバイスのオブジェクト)に接している状態で選択デバイス105で所定のボタンのクリック操作を受け付けることで選択可能な送信先2208に対応するオブジェクト2312(送信先オブジェクト)を複数並べたオブジェクトである。また、FAX送信先選択オブジェクト2311上には「OK」ボタン、「キャンセル」ボタンのオブジェクトが配置されている。PC200のCPU201は、送信先オブジェクトを選択する操作を受け付けた場合に選択中であることが分かるように選択中の送信先オブジェクトの色を変更し、「OK」ボタンのオブジェクトの押下指示を受け付けることで、選択中の送信先オブジェクトの示す送信先を、選択中の被選択用オブジェクトのデータをFAX送信する送信先としてステップS2018で取得したものと決定する。よって、複数の送信先を取得した場合においても、データ処理装置において、所望の送信先に対してデータを送信させることができる。
尚、「キャンセル」ボタンが押されると、FAX送信をキャンセルして処理を終了するものとする。
また、例えば被選択用オブジェクトに対応する2次元図面等の画像データをデータ処理装置に送信する場合、図24に示すような、送信するデータの確認用オブジェクト2401を生成して、2400のようにデータ処理装置の装置オブジェクトの近傍(装置オブジェクトの座標2204から所定距離はなれた座標/当該所定距離の値はPC200の外部メモリに予め記憶されているものとする)に配置して、MR画像を生成、HMD100に送信して表示させるようにしてもよい。確認用オブジェクト2401上には、上述した送信先選択オブジェクト2311と同じように「OK」ボタン、「キャンセル」ボタンのオブジェクトが配置されている。また、実際にデータ処理装置に送信するデータを確認させるために、例えばデータ送信装置に送信する画像データ(例:2次元図面の画像)をテクスチャとして確認用オブジェクト2401上の所定の領域に貼り付けて、ユーザに当該画像を確認させるものである。PC200のCPU201は、例えばステップS2010又はステップS2016の後、当該確認用オブジェクト2401の生成とHMDへの送信処理を行い、「OK」ボタンの押下指示を受け付けた場合に処理をステップS2011、S2016にそれぞれ進めるものとする。当該確認用オブジェクト2401の生成、表示により、ユーザが選択したオブジェクトの形状自体とは異なるデータが装置に送信される場合であっても、当該送信するデータをユーザに確認させることできる。
また、上述した実施形態においては、プリンタ又はFAX装置に送信するデータは、各装置から所定距離内に接近した被選択用オブジェクトの2次元図面のデータであるものとしたが、例えば当該被選択用オブジェクトの立体を展開した展開図(3次元モデル/オブジェクトの形状にかかるデータの1つ)を送信するようにしてもよい。例えば展開図をプリンタで印刷し、組み立てることで当該オブジェクトの形状を現実物体として再現可能である。当該展開図の作成方法は公知技術であり、例えば特開2010−86237号公報等に記載されている方法を用いるものとする。
また、上述した実施形態においては、プリンタ、FAX装置、データ送信装置は別の装置であるものとして説明したが、例えばプリント機能、FAX機能、データ送信機能を備える1つの装置(複合機)を用いるようにしてもよい。複合機の場合、例えば図22のオブジェクト情報2200において複数の装置オブジェクトの属性2203に「複合機」の値が記憶される。また、これらの装置オブジェクトのID(2221)に対応する装置識別情報2222、機種名2223は同一の複合機の値が記憶される。ステップS1903により送信された処理の開始指示及びデータを受信した複合機のCPUは、受け付けた指示内容に応じて当該指示の示す処理を実行可能な自機機能(例えば、印刷機能、FAX機能、データ送信機能のいずれか)を起動して、受信したデータの処理(例えば、印刷、FAX送信、データ送信のいずれか)を実行するものである。
また、上述した実施形態においては、3Dプリンタ、プリンタ、FAX装置、データ送信装置を例にあげたが、装置オブジェクトに対応するデータ処理装置はこれに限るものではない。例えば大型のディスプレイを備え画像を表示する表示装置であってもよい。表示装置の場合、当該表示装置の装置オブジェクトとの距離が所定距離内であると判定された被選択用オブジェクトのデータを受信して記憶部に記憶し、自装置の備えるディスプレイに当該オブジェクトのデータを表示(出力)することができる。
また、オブジェクト同士が接触している場合に、オブジェクトIDを接触している先のオブジェクトのオブジェクトIDと対応付けた接触情報(不図示)をPC200の外部メモリに記憶し、当該接触情報に基づいて、オブジェクト同士の接触の判定、オブジェクト同士が所定距離内にあるかの判定を行ってもよい。具体的には、例えば上述した第5の実施形態において、ステップS1901で外部メモリに記憶されている接触情報を取得して、選択中の被選択用オブジェクトが接触しているオブジェクトが装置オブジェクトである場合に、当該被選択用オブジェクトが装置オブジェクトと所定距離内にあるものと判定して、処理をステップS607に移行し、選択中の被選択用オブジェクトが他のオブジェクトに接触していない又は接触しているオブジェクトが装置オブジェクトでない場合に、当該被選択用オブジェクトが装置オブジェクトと所定距離内にないものと判定して、処理をステップS1901の前に戻すようにしてもよい。
また、第5の実施形態と第2の実施形態を組み合わせてもよい。
具体的には、図10のステップS608〜S610、ステップS1001の処理を、図20のステップS2005で処理可能と判定された後に実行する。ステップS608〜ステップS609の処理は前述した通りのため説明は割愛する。PC200のCPU201は、3Dプリンタオブジェクトから所定距離内にあると判定された選択中の被選択用オブジェクトが、当該3Dプリンタオブジェクトの示す3Dプリンタで出力(造形)可能なサイズか判定する(ステップS610/処理可否判定手段)。造形可能なサイズの場合、処理をステップS2006に移行し、造形可能なサイズでない場合、処理をステップS1001に移行して図11の処理を実行する。ステップS1001の処理が終了したら、処理をステップS608の前に戻す。よって、3Dプリンタでのオブジェクトの造形可否に応じて、MR空間上で、造形対象のオブジェクトの状態を変更できる。
また、第5の実施形態と第3の実施形態を組み合わせてもよい。
具体的には、PC200のCPU201は、図19のステップS1902の後に、図13のステップS1301、ステップS1302の処理を順次行う。そして、処理をステップS1803に移行する。また、図21のステップS2101でHMD100の視界内に処理中のオブジェクトがあると判定された場合に、図14のステップS1401、ステップS1402の処理を順次行う。そして、PC200のCPU201は、ステップS1402で、処理中のオブジェクトが当該オブジェクトの仮想空間上の位置を視界内におさめたHMD100と対応付けて記憶されているオブジェクトであると判定された場合に、処理をステップS2112に移行する。また、PC200のCPU201は、ステップS2111の後に図14のステップS1403の処理を実行して図21の処理を終了するようにする。よって、処理開始の指示を行ったユーザのHMDに対して、当該ユーザが処理の開始指示をしたオブジェクトにかかる処理の進捗状態を通知することができる。
また、第5の実施形態と第3の実施形態を組み合わせてもよい。
具体的には、図21のステップS2106で、処理が完了していないと判定された場合に、ステップS2106で判定の対象となった被選択用オブジェクトを視界におさめたHMD100の座標2204と、当該被選択用オブジェクトの座標2204との値に基づいて、当該HMD100と当該被選択用オブジェクトとの距離が所定の距離内か判定する。所定の距離内であると判定した場合に処理をステップS2108に進め、所定の距離内でないと判定した場合は処理を終了する。よって、ユーザと処理中のオブジェクトとの距離に応じて、オブジェクトの処理の進捗を確認させることができる。
以上説明したように、本発明によれば、MR空間上でオブジェクトの選択を行うことで、容易に、印刷装置にオブジェクトを印刷させる仕組みを提供することができる。
本発明によれば、仮想空間で選択されるオブジェクトにかかるデータを他のオブジェクトに対応する装置に容易に送信可能な仕組みを提供することができる。
具体的には、仮想空間で選択されたオブジェクトの形状にかかるデータを他のオブジェクトに対応する装置であって、当該形状にかかるデータを処理する装置に容易に送信可能な仕組みを提供することができる。
また、所定距離内に接近したオブジェクトに対応する装置に、接近した他のオブジェクトの情報を適切に送信させることができる。
本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
また、本発明の各実施形態を組み合わせることが可能である。例えば、本発明の第3の実施形態における図13の処理を、本発明の第2の実施形態における図5の処理の代わりに各端末が実行し、本発明の第3の実施形態における図14の処理を、本発明の第2の実施形態における図7の処理の代わりに各端末が実行するようにしてもよい。
なお、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
なお、前述した実施形態は、本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。