(57)【特許請求の範囲】
【請求項１】
複数の仮想領域で構成される仮想空間内の複数のオブジェクトの位置を取得して記憶するサーバと、
該サーバとデータ通信することが可能に接続してあり、所定のオブジェクトの移動位置を該オブジェクト単位で制御する複数のクライアント制御装置と
を有し、前記仮想空間内を移動するオブジェクトの動作を制御するオブジェクト移動制御システムにおいて、
前記サーバとデータ通信することが可能に接続してあり、所定の仮想領域内にて所定のオブジェクト間の衝突を判定する複数の衝突判定クライアントを備え、
前記クライアント制御装置は、
一のオブジェクトの仮想空間内の位置に関する情報及び移動に関する情報を取得する移動位置取得手段と、
取得した位置に関する情報及び移動に関する情報に基づいて、移動した場合の前記一のオブジェクトが含まれる所定の仮想領域内に存在する他のオブジェクトを検出するオブジェクト検出手段と、
前記一のオブジェクト及び検出された他のオブジェクト相互間の距離を算出する距離算出手段と、
算出された距離が所定の閾値より短いか否かを判断する距離判断手段と、
該距離判断手段で前記所定の閾値より短いと判断されたオブジェクトの総数を算出する近接オブジェクト数算出手段と、
算出されたオブジェクトの総数が所定個数より多いか否かを判定する判定手段と、
該判定手段で所定個数より多いと判定された場合、前記仮想領域内に存在する複数のオブジェクトに関する情報を前記サーバへ送信するオブジェクト情報送信手段と
を備え、
前記サーバは、
前記仮想領域内に存在する複数のオブジェクトに関する情報を受信するオブジェクト情報受信手段と、
受信した前記複数のオブジェクトから一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する前記衝突判定クライアントを割り当てる割当手段と
を備えることを特徴とするオブジェクト移動制御システム。
【請求項２】
前記サーバは、
前記衝突判定クライアントの処理負荷を示す指標値を取得する負荷取得手段を備え、
前記割当手段は、取得した指標値に基づいて、一対のオブジェクトが割り当てられる衝突判定クライアントを特定するようにしてあることを特徴とする請求項１記載のオブジェクト移動制御システム。
【請求項３】
前記距離算出手段は、各オブジェクトの位置を示す代表点間の距離を算出するようにしてあることを特徴とする請求項１又は２記載のオブジェクト移動制御システム。
【請求項４】
複数の仮想領域で構成される仮想空間内の複数のオブジェクトの位置を取得して記憶するサーバ、及び
該サーバとデータ通信することが可能に接続してあり、所定のオブジェクトの移動位置を該オブジェクト単位で制御する複数のクライアント制御装置で実行することが可能であり、
前記仮想空間内を移動するオブジェクトの動作を制御するオブジェクト移動制御方法において、
所定の仮想領域内にて所定のオブジェクト間の衝突を判定する複数の衝突判定クライアントと前記サーバとがデータ通信することが可能に接続してあり、
前記クライアント制御装置は、
一のオブジェクトの仮想空間内の位置に関する情報及び移動に関する情報を取得し、
取得した位置に関する情報及び移動に関する情報に基づいて、移動した場合の前記一のオブジェクトが含まれる所定の仮想領域内に存在する他のオブジェクトを検出し、
前記一のオブジェクト及び検出された他のオブジェクト相互間の距離を算出し、
算出された距離が所定の閾値より短いか否かを判断し、
前記所定の閾値より短いと判断されたオブジェクトの総数を算出し、
算出されたオブジェクトの総数が所定個数より多いか否かを判定し、
所定個数より多いと判定された場合、前記仮想領域内に存在する複数のオブジェクトに関する情報を前記サーバへ送信し、
前記サーバは、
前記仮想領域内に存在する複数のオブジェクトに関する情報を受信し、
受信した前記複数のオブジェクトから一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する前記衝突判定クライアントを割り当てることを特徴とするオブジェクト移動制御方法。
【請求項５】
所定のオブジェクトの移動位置を該オブジェクト単位で制御する複数のクライアント制御装置、及び所定の仮想領域内にて所定のオブジェクト間の衝突を判定する複数の衝突判定クライアントとデータ通信することが可能に接続してあり、複数の前記仮想領域で構成される仮想空間内の複数のオブジェクトの位置を取得して記憶するサーバにおいて、
前記仮想領域内に存在する複数のオブジェクトに関する情報を前記クライアント制御装置から受信するオブジェクト情報受信手段と、
受信した前記複数のオブジェクトから一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する前記衝突判定クライアントを割り当てる割当手段と、
前記衝突判定クライアントの処理負荷を示す指標値を取得する負荷取得手段とを備え、
前記割当手段は、取得した指標値に基づいて、一対のオブジェクトが割り当てられる衝突判定クライアントを特定するようにしてあることを特徴とするサーバ。
【請求項６】
所定のオブジェクトの移動位置を該オブジェクト単位で制御する複数のクライアント制御装置、及び所定の仮想領域内にて所定のオブジェクト間の衝突を判定する複数の衝突判定クライアントとデータ通信することが可能に接続してあり、複数の前記仮想領域で構成される仮想空間内の複数のオブジェクトの位置を取得して記憶するサーバで実行することが可能なコンピュータプログラムにおいて、
前記サーバを、
前記仮想領域内に存在する複数のオブジェクトに関する情報を前記クライアント制御装置から受信するオブジェクト情報受信手段、
受信した前記複数のオブジェクトから一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する前記衝突判定クライアントを割り当てる割当手段、及び
前記衝突判定クライアントの処理負荷を示す指標値を取得する負荷取得手段として機能させ、
前記割当手段を、取得した指標値に基づいて、一対のオブジェクトが割り当てられる衝突判定クライアントを特定する手段
として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理負荷を分散することにより、仮想的なオブジェクトの仮想空間上での位置情報の更新を円滑に実行することができるオブジェクト移動制御システム、オブジェクト移動制御方法、サーバ及びコンピュータプログラムに関する。
【背景技術】
【０００２】
近年のコンピュータ技術の急速な進展に伴い、プロセッサ単位で処理可能なデータ量は急速に増大している。しかし、あらゆる産業において情報処理技術が適用される昨今では、プロセッサの能力向上速度よりもデータ処理能力に対する需要の方が大きく上回る結果となっており、プロセッサ単体では処理能力が不足する場合が多くなっているのが現状である。
【０００３】
それに対して、複数のプロセッサによる並列処理により、データ処理能力の向上を図ることが多い。特にソフトウェアにより特定された仮想空間上に、仮想的なアバター等の仮想オブジェクトの移動、状態等を演算して表示する仮想空間提供システムでは、複数のプロセッサを用いた並列処理を実行しない限り、仮想オブジェクトの動きの応答が悪く、仮想現実感を損なってしまうという問題点があった。
【０００４】
斯かる問題点を解決するべく、例えば特許文献１では、複数のセルプロセッサを有し、高速に並列処理を実行することができるマルチプロセッサシステムが開示されている。特許文献１では、すべてのセルプロセッサに対してデータをブロードキャストし、各セルプロセッサは、自己に割当てられた処理に必要なデータを取捨選択して所定の演算処理を実行する。そしてＣＰＵコアが、すべてのセルプロセッサからの演算処理結果を取得して、演算処理負荷の大きいデータ処理を高速に実行している。特に段落番号（００５４）乃至（００５７）には、仮想オブジェクトの衝突判定処理にマルチプロセッサシステムを適用した例が開示されている。
【特許文献１】特開２００２−１７５２８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に開示されているマルチプロセッサシステムでは、一連の処理に必要なデータを、データ通信することが可能に接続されているすべてのセルプロセッサに対して、一斉にブロードキャストしており、ネットワークの処理負荷は却って増大しているため、演算処理全体のスループットの向上率が減少してしまうという問題点があった。また、段落番号（００５４）乃至（００５７）に開示されている仮想オブジェクトの衝突判定処理では、セルプロセッサにて演算処理負荷の大きい衝突判定処理を実行しており、各セルプロセッサで同時に実行される衝突判定処理以外の演算処理、例えば位置算出処理、表示画像データの生成処理等に対して影響が出るおそれもあった。
【０００６】
また、各セルプロセッサでの演算処理負荷は、時系列に変化することから、一意的に実行するべき処理を割り当てる方法では、却って演算処理負荷の偏在を生じさせる結果となり、全体のスループットの向上のボトルネックとなる可能性が残されている。
【０００７】
本発明は斯かる事情に鑑みてなされたものであり、演算処理負荷を適切に分散することにより、高速にオブジェクトの仮想空間上での位置情報を更新することができるオブジェクト移動制御システム、オブジェクト移動制御方法、サーバ及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために第１発明に係るオブジェクト移動制御システムは、複数の仮想領域で構成される仮想空間内の複数のオブジェクトの位置を取得して記憶するサーバと、該サーバとデータ通信することが可能に接続してあり、所定のオブジェクトの移動位置を該オブジェクト単位で制御する複数のクライアント制御装置とを有し、前記仮想空間内を移動するオブジェクトの動作を制御するオブジェクト移動制御システムにおいて、前記サーバとデータ通信することが可能に接続してあり、所定の仮想領域内にて所定のオブジェクト間の衝突を判定する複数の衝突判定クライアントを備え、前記クライアント制御装置は、一のオブジェクトの仮想空間内の位置に関する情報及び移動に関する情報を取得する移動位置取得手段と、取得した位置に関する情報及び移動に関する情報に基づいて、移動した場合の前記一のオブジェクトが含まれる所定の仮想領域内に存在する他のオブジェクトを検出するオブジェクト検出手段と、前記一のオブジェクト及び検出された他のオブジェクト相互間の距離を算出する距離算出手段と、算出された距離が所定の閾値より短いか否かを判断する距離判断手段と、該距離判断手段で前記所定の閾値より短いと判断されたオブジェクトの総数を算出する近接オブジェクト数算出手段と、算出されたオブジェクトの総数が所定個数より多いか否かを判定する判定手段と、該判定手段で所定個数より多いと判定された場合、前記仮想領域内に存在する複数のオブジェクトに関する情報を前記サーバへ送信するオブジェクト情報送信手段とを備え、前記サーバは、前記仮想領域内に存在する複数のオブジェクトに関する情報を受信するオブジェクト情報受信手段と、受信した前記複数のオブジェクトから一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する前記衝突判定クライアントを割り当てる割当手段とを備えることを特徴とする。
【０００９】
また、第２発明に係るオブジェクト移動制御システムは、第１発明において、前記サーバは、前記衝突判定クライアントの処理負荷を示す指標値を取得する負荷取得手段を備え、前記割当手段は、取得した指標値に基づいて、一対のオブジェクトが割り当てられる衝突判定クライアントを特定するようにしてあることを特徴とする。
【００１０】
また、第３発明に係るオブジェクト移動制御システムは、第１又は第２発明において、前記距離算出手段は、各オブジェクトの位置を示す代表点間の距離を算出するようにしてあることを特徴とする。
【００１１】
次に、上記目的を達成するために第４発明に係るオブジェクト移動制御方法は、複数の仮想領域で構成される仮想空間内の複数のオブジェクトの位置を取得して記憶するサーバ、及び該サーバとデータ通信することが可能に接続してあり、所定のオブジェクトの移動位置を該オブジェクト単位で制御する複数のクライアント制御装置で実行することが可能であり、前記仮想空間内を移動するオブジェクトの動作を制御するオブジェクト移動制御方法において、所定の仮想領域内にて所定のオブジェクト間の衝突を判定する複数の衝突判定クライアントと前記サーバとがデータ通信することが可能に接続してあり、前記クライアント制御装置は、一のオブジェクトの仮想空間内の位置に関する情報及び移動に関する情報を取得し、取得した位置に関する情報及び移動に関する情報に基づいて、移動した場合の前記一のオブジェクトが含まれる所定の仮想領域内に存在する他のオブジェクトを検出し、前記一のオブジェクト及び検出された他のオブジェクト相互間の距離を算出し、算出された距離が所定の閾値より短いか否かを判断し、前記所定の閾値より短いと判断されたオブジェクトの総数を算出し、算出されたオブジェクトの総数が所定個数より多いか否かを判定し、所定個数より多いと判定された場合、前記仮想領域内に存在する複数のオブジェクトに関する情報を前記サーバへ送信し、前記サーバは、前記仮想領域内に存在する複数のオブジェクトに関する情報を受信し、受信した前記複数のオブジェクトから一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する前記衝突判定クライアントを割り当てることを特徴とする。
【００１２】
次に、上記目的を達成するために第５発明に係るサーバは、所定のオブジェクトの移動位置を該オブジェクト単位で制御する複数のクライアント制御装置、及び所定の仮想領域内にて所定のオブジェクト間の衝突を判定する複数の衝突判定クライアントとデータ通信することが可能に接続してあり、複数の前記仮想領域で構成される仮想空間内の複数のオブジェクトの位置を取得して記憶するサーバにおいて、前記仮想領域内に存在する複数のオブジェクトに関する情報を前記クライアント制御装置から受信するオブジェクト情報受信手段と、受信した前記複数のオブジェクトから一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する前記衝突判定クライアントを割り当てる割当手段と、前記衝突判定クライアントの処理負荷を示す指標値を取得する負荷取得手段とを備え、前記割当手段は、取得した指標値に基づいて、一対のオブジェクトが割り当てられる衝突判定クライアントを特定するようにしてあることを特徴とする。
【００１４】
次に、上記目的を達成するために第６発明に係るコンピュータプログラムは、所定のオブジェクトの移動位置を該オブジェクト単位で制御する複数のクライアント制御装置、及び所定の仮想領域内にて所定のオブジェクト間の衝突を判定する複数の衝突判定クライアントとデータ通信することが可能に接続してあり、複数の前記仮想領域で構成される仮想空間内の複数のオブジェクトの位置を取得して記憶するサーバで実行することが可能なコンピュータプログラムにおいて、前記サーバを、前記仮想領域内に存在する複数のオブジェクトに関する情報を前記クライアント制御装置から受信するオブジェクト情報受信手段、受信した前記複数のオブジェクトから一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する前記衝突判定クライアントを割り当てる割当手段、及び前記衝突判定クライアントの処理負荷を示す指標値を取得する負荷取得手段として機能させ、前記割当手段を、取得した指標値に基づいて、一対のオブジェクトが割り当てられる衝突判定クライアントを特定する手段として機能させることを特徴とする。
【００１６】
第１発明及び第４発明では、サーバとデータ通信することが可能に接続してあり、所定の仮想領域内にて所定のオブジェクト間の衝突を判定する複数の衝突判定クライアントを別個に設けてあり、サーバとデータ通信することが可能に接続されている複数のクライアント制御装置は、それぞれ一のオブジェクトの仮想空間内の位置に関する情報及び移動に関する情報を取得し、取得した位置に関する情報及び移動に関する情報に基づいて、移動した場合に一のオブジェクトが含まれる所定の仮想領域内に存在する他のオブジェクトを検出する。一のオブジェクト及び検出された他のオブジェクト相互間の距離を逐次算出して、算出された距離が所定の閾値より短いか否かを判断する。所定の閾値より短いと判断されたオブジェクトの総数を算出して、算出されたオブジェクトの総数が所定個数より多い場合に、仮想領域内に存在する複数のオブジェクトに関する情報をサーバへ送信する。これにより、オブジェクト相互間で衝突が生じる可能性があるオブジェクトが一の仮想領域内に存在するか否かを判断することができ、衝突が生じる可能性が高いオブジェクトのみ衝突可能性を判断するようにすることで、全体の演算処理負荷を軽減することができる。
【００１７】
また、サーバは、仮想領域内に存在する複数のオブジェクトに関する情報を受信し、受信した複数のオブジェクトから一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する衝突判定クライアントを割り当てる。これにより、演算処理負荷の大きい衝突判定処理を衝突判定処理専用に設けてある衝突判定クライアントで実行させるので、クライアント制御装置の演算処理負荷を大きく軽減することができ、全体としてオブジェクトの移動可能性を判定して移動位置を特定する処理のスループットを向上させることが可能となる。
【００１８】
ここで、「仮想空間」とは、コンピュータ上に人工的に設定した空間を意味しており、所定の大きさの複数の「仮想領域」で構成されている。オブジェクトは、一の仮想領域内へ移動することもできるし、一の仮想領域から他の仮想領域へ移動することもできる。クライアント制御装置は、仮想領域内に存在するオブジェクトの位置情報を制御するのではなく、位置のオブジェクト自体に着目して、該オブジェクトが存在する仮想領域内に存在するオブジェクトの位置情報を制御する点でも従来の方法とは相違する。仮想領域間でオブジェクトが移動する場合、従来の方法であれば仮想領域を制御するクライアント制御装置間で種々の情報交換が必要となるが、オブジェクト単位にすることで、サーバから該オブジェクトが存在する仮想領域内に存在する他のオブジェクトに関する情報のみを取得すれば足り、ネットワーク負荷の軽減を図ることもできる。
【００１９】
第２発明、第５発明及び第６発明では、サーバは、衝突判定クライアントの処理負荷を示す指標値を取得し、取得した指標値に基づいて、一対のオブジェクトが割り当てられる衝突判定クライアントを特定する。これにより、演算処理負荷の比較的小さい衝突判定クライアントには、より多くのオブジェクト間の衝突判定処理を割り当てることができ、複数の衝突判定クライアントの負荷を略均等にすることができる。したがって、一の衝突判定クライアントに演算処理負荷が偏ることによるスループットの悪化を防止することができ、全体として安定したスループットの向上を図ることができる。
【００２０】
ここで、「処理負荷を示す指標値」とは、コンピュータ上での処理負荷の程度を示す指標値を意味しており、例えば異なるクライアント間で正規化された負荷を示す値、オペレーティングシステムが管理するシステム負荷の値、プロセス数等のいずれか、又はこれらの組み合わせを意味する。
【００２１】
第３発明では、各オブジェクトの位置を示す代表点間の距離を算出することにより、一の仮想領域内に存在するオブジェクトの密度を簡易的に評価することができ、演算処理負荷を大きくすることなく、衝突判定処理を実行するべき一対のオブジェクトを特定することが可能となる。
【００２５】
なお、後述する実施の形態では、移動位置取得手段は、ＣＰＵ２１のステップＳ９０１及びステップＳ９０２の処理が、オブジェクト検出手段は、ＣＰＵ２１のステップＳ９０３乃至ステップＳ９０５の処理が、距離算出手段は、ＣＰＵ２１のステップＳ９０７の処理が、距離判断手段は、ＣＰＵ２１のステップＳ９０８の処理が、近接オブジェクト数算出手段は、ＣＰＵ２１のステップＳ９０９の処理が、判定手段は、ＣＰＵ２１のステップＳ９１１の処理が、オブジェクト情報送信手段は、ＣＰＵ２１のステップＳ９１２の処理が、それぞれ該当する。また、オブジェクト情報受信手段は、ＣＰＵ１１のステップＳ１００１の処理が、割当手段は、ＣＰＵ１１のステップＳ１００３の処理が、それぞれ該当する。さらに、負荷取得手段は、ＣＰＵ１１のステップＳ１２０１の処理が該当する。
【発明の効果】
【００２６】
本発明によれば、所定の閾値より短いと判断されたオブジェクトの総数が所定個数より多い場合にのみ、オブジェクト相互間で衝突が生じる可能性があると判断し、別個に設けてある衝突判定クライアントにて衝突可能性を判断するようにすることで、全体の演算処理負荷を軽減することができ、オブジェクトの仮想空間上での移動位置の演算処理のスループットを向上させることが可能となる。
【００２７】
また、仮想領域間でオブジェクトが移動する場合、従来の方法であれば仮想領域を制御するクライアント制御装置間で種々の情報交換が必要となるが、オブジェクト単位にすることで、サーバから該オブジェクトが存在する仮想領域内に存在する他のオブジェクトに関する情報のみを取得すれば足り、ネットワーク負荷の軽減を図ることもできる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態に係るオブジェクト移動制御システムについて、図面に基づいて具体的に説明する。図１は、本発明の実施の形態に係るオブジェクト移動制御システムの構成を示すブロック図である。本発明の実施の形態に係るオブジェクト移動制御システムは、仮想空間に相当する画像を表示出力するクライアント４、４、・・・、複数のクライアント４、４、・・・から特定のオブジェクトに対する指示情報等を送受信する複数のクライアント制御装置２、２、・・・、特定の組み合わせのオブジェクトが仮想空間上の移動位置にて衝突するか否かを判定する衝突判定クライアント３、３、・・・及びサーバ１で構成されている。
【００２９】
なお、「仮想空間」とは、仮想的に三次元座標値が割り当てられた空間を意味しており、特定の大きさを有する仮想的なオブジェクトが存在する空間の三次元座標値、ポリゴンデータ等を用いて、空間上での仮想的なオブジェクトの配置を定めることができる。本実施の形態では、仮想空間上での各オブジェクトの配置は、クライアント４、４、・・・で表示することができ、オブジェクトに対する移動指示もクライアント４、４、・・・から入力する。
【００３０】
図２は、本発明の実施の形態に係るオブジェクト移動制御システムのサーバ１を、ＣＰＵ１１を用いて具現化した場合のハードウェア構成を示すブロック図である。図２において、本実施の形態に係るサーバ１は、少なくとも、ＣＰＵ（中央演算装置）１１、ＲＡＭ１２、記憶装置１３、入力装置１４、出力装置１５、通信装置１６、可搬型ディスクドライブ１７及び上述したハードウェアを接続する内部バス１８で構成されている。
【００３１】
ＣＰＵ１１は、内部バス１８を介してサーバ１の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置１３に記憶されているコンピュータプログラム１００に従って、種々のソフトウェア的機能を実行する。ＲＡＭ１２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム１００の実行時にロードモジュールが展開され、コンピュータプログラム１００の実行時に発生する一時的なデータ等を記憶する。
【００３２】
記憶装置１３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置１３に記憶されているコンピュータプログラム１００は、プログラム及びデータ等の情報を記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体９０から、可搬型ディスクドライブ１７によりダウンロードされ、実行時には記憶装置１３からＲＡＭ１２へ展開して実行される。もちろん、通信装置１６を介して外部のコンピュータからダウンロードされたコンピュータプログラムであっても良い。
【００３３】
また記憶装置１３は、仮想空間を複数の領域に分割した各領域を識別する識別情報、及び各領域に存在しているオブジェクトを識別する識別情報を記憶しているオブジェクト状態情報記憶部１３１を備えている。オブジェクト状態情報記憶部１３１には、各オブジェクトの移動を制御するクライアント制御装置２を識別する識別情報、各オブジェクトの仮想的な二次元平面上における位置座標値等も記憶されている。
【００３４】
図３は、オブジェクト状態情報記憶部１３１のデータ構成の例示図である。図３に示すように、オブジェクト状態情報記憶部１３１には、少なくとも複数の領域を識別する識別情報であるリージョンＩＤ、各領域に存在しているオブジェクトを識別する識別情報であるオブジェクトＩＤ、各オブジェクトの移動を制御するクライアント制御装置２を識別する識別情報であるクライアント制御装置ＩＤ、及びオブジェクトごとの各領域におけるＸ座標値、Ｙ座標値を記憶してある。このようにすることで、近接する複数のオブジェクトが検出された場合、衝突判定を行うための詳細情報をどのクライアント制御装置２、２、・・・から取得すれば良いのか容易に判断することができる。
【００３５】
通信装置１６は内部バス１８に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワーク網に接続されることにより、外部のコンピュータ、例えばクライアント制御装置２、２、・・・、衝突判定クライアント３、３、・・・等とデータ送受信を行うことが可能となっている。
【００３６】
入力装置１４は、キーボード及びマウス等のデータ入力媒体であり、出力装置１５は、ＣＲＴモニタ、ＬＣＤ等の表示装置、あるいはレーザプリンタ、ドットプリンタ等の印刷装置等である。
【００３７】
図４は、本発明の実施の形態に係るオブジェクト移動制御システムのクライアント制御装置２を、ＣＰＵ２１を用いて具現化した場合のハードウェア構成を示すブロック図である。図４において、本実施の形態に係るクライアント制御装置２は、少なくとも、ＣＰＵ（中央演算装置）２１、ＲＡＭ２２、記憶装置２３、入力装置２４、出力装置２５、通信装置２６、及び上述したハードウェアを接続する内部バス２７で構成されている。
【００３８】
ＣＰＵ２１は、内部バス２７を介してクライアント制御装置２の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置２３に記憶されているコンピュータプログラム１０１に従って、種々のソフトウェア的機能を実行する。ＲＡＭ２２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム１０１の実行時にロードモジュールが展開され、コンピュータプログラム１０１の実行時に発生する一時的なデータ等を記憶する。
【００３９】
記憶装置２３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置２３に記憶されているコンピュータプログラム１０１は、実行時には記憶装置２３からＲＡＭ２２へ展開して実行される。コンピュータプログラム１０１は、別個の図示しない可搬型ディスクドライブを介して、ＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体からダウンロードしても良いし、通信装置２６を介して外部のコンピュータからダウンロードしても良い。
【００４０】
また記憶装置２３は、移動を制御するオブジェクト以外のオブジェクト、例えば建物、道路等の移動しないオブジェクトの形状、位置等に関する背景情報を記憶する背景情報記憶部２３１と、移動を制御するオブジェクトを識別する識別情報に対応付けて、該オブジェクトの形状、位置等に関する情報を記憶しているオブジェクト情報記憶部２３２を備えている。いずれも形状に関する情報は、三次元のポリゴンデータとして記憶されており、位置に関する情報は、オブジェクトの重心位置等の代表点の二次元平面上での座標値として記憶してある。
【００４１】
通信装置２６は内部バス２７に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワーク網に接続されることにより、外部のコンピュータ、例えばサーバ１、衝突判定クライアント３、３、・・・、クライアント４、４、・・・等とデータ送受信を行うことが可能となっている。
【００４２】
入力装置２４は、キーボード及びマウス等のデータ入力媒体であり、出力装置２５は、ＣＲＴモニタ、ＬＣＤ等の表示装置、あるいはレーザプリンタ、ドットプリンタ等の印刷装置等である。
【００４３】
図５は、本発明の実施の形態に係るオブジェクト移動制御システムの衝突判定クライアント３を、ＣＰＵ３１を用いて具現化した場合のハードウェア構成を示すブロック図である。図５において、本実施の形態に係る衝突判定クライアント３は、少なくとも、ＣＰＵ（中央演算装置）３１、ＲＡＭ３２、記憶装置３３、通信装置３４、及び上述したハードウェアを接続する内部バス３５で構成されている。
【００４４】
ＣＰＵ３１は、内部バス３５を介して衝突判定クライアント３の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置３３に記憶されているコンピュータプログラム１０２に従って、種々のソフトウェア的機能を実行する。ＲＡＭ２２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム１０２の実行時にロードモジュールが展開され、コンピュータプログラム１０２の実行時に発生する一時的なデータ等を記憶する。
【００４５】
記憶装置３３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置３３に記憶されているコンピュータプログラム１０２は、実行時には記憶装置３３からＲＡＭ３２へ展開して実行される。コンピュータプログラム１０２は、別個の図示しない可搬型ディスクドライブを介して、ＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体からダウンロードしても良いし、通信装置３４を介して外部のコンピュータからダウンロードしても良い。
【００４６】
通信装置３４は内部バス３５に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワーク網に接続されることにより、外部のコンピュータ、例えばサーバ１、クライアント制御装置２、２、・・・等とデータ送受信を行うことが可能となっている。
【００４７】
すなわち、衝突判定処理に必要となる情報は、サーバ１からの指示情報に従って、判定に必要なオブジェクトの移動を制御している一又は複数のクライアント制御装置２、２から通信装置３４を介して入手する。算出した衝突判定結果に関する情報についても、通信装置３４を介してサーバ１へ送信する。
【００４８】
図６は、本発明の実施の形態に係るオブジェクト移動制御システムのクライアント４を、ＣＰＵ４１を用いて具現化した場合のハードウェア構成を示すブロック図である。図６において、本実施の形態に係るクライアント４は、少なくとも、ＣＰＵ（中央演算装置）４１、ＲＡＭ４２、記憶装置４３、入力装置４４、表示装置４５、通信装置４６、及び上述したハードウェアを接続する内部バス４７で構成されている。
【００４９】
ＣＰＵ４１は、内部バス４７を介してクライアント４の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置４３に記憶されているコンピュータプログラム１０３に従って、種々のソフトウェア的機能を実行する。ＲＡＭ４２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム１０３の実行時にロードモジュールが展開され、コンピュータプログラム１０３の実行時に発生する一時的なデータ等を記憶する。
【００５０】
記憶装置４３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置４３に記憶されているコンピュータプログラム１０３は、実行時には記憶装置４３からＲＡＭ４２へ展開して実行される。コンピュータプログラム１０３は、別個の図示しない可搬型ディスクドライブを介して、ＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体からダウンロードしても良いし、通信装置４６を介して外部のコンピュータからダウンロードしても良い。
【００５１】
通信装置４６は内部バス４７に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワーク網に接続されることにより、外部のコンピュータ、例えばクライアント制御装置２、２、・・・等とデータ送受信を行うことが可能となっている。
【００５２】
入力装置４４は、キーボード及びマウス等のデータ入力媒体であり、画面上に表示されているオブジェクトの移動情報等の入力を受け付ける。表示装置４５は、ＣＲＴモニタ、ＬＣＤ等の表示装置であり、例えばクライアント制御装置２、２、・・・から送信された背景情報及びオブジェクトの形状、位置等に関する情報に基づいて、仮想空間上に所定のオブジェクトを三次元画像として表示する。
【００５３】
上述した構成のオブジェクト移動制御システムの処理の流れについて説明する。図７は、本発明の実施の形態に係るオブジェクト移動制御システムのクライアント４のＣＰＵ４１のオブジェクト移動指示の受付処理手順を示すフローチャートである。
【００５４】
クライアント４のＣＰＵ４１は、背景情報及びオブジェクトの形状、位置等に関する情報に基づいて、所定のオブジェクトに関する三次元画像を表示装置４５に表示する（ステップＳ７０１）。表示対象となるデータは、通信装置４６を介してクライアント制御装置２から取得する。ＣＰＵ４１は、表示するオブジェクトを識別するオブジェクトＩＤに対応付けて、該オブジェクトの移動を制御するクライアント制御装置２を識別するクライアント制御装置ＩＤを取得する（ステップＳ７０２）。
【００５５】
図８は、本実施の形態に係るオブジェクト移動制御システムでの仮想空間の説明図である。仮想空間は三次元空間であり、所定のＸ座標値、Ｙ座標値で複数の仮想領域に区分けされている。便宜上、ＸＹ平面上で仮想領域を区分けし、それぞれの仮想領域を順次Ｒ１、Ｒ２、・・・と識別している。オブジェクトは、仮想領域のいずれかの領域内に存在する。
【００５６】
ＣＰＵ４１は、入力装置４４を介して、移動対象となるオブジェクトの指定を受け付け（ステップＳ７０３）、指定を受け付けたオブジェクトを識別するオブジェクトＩＤを取得する（ステップＳ７０４）。ＣＰＵ４１は、指定を受け付けたオブジェクトに対する移動情報、例えば移動距離及び方向に関する情報の入力を受け付け（ステップＳ７０５）、取得したオブジェクトＩＤ及び移動情報を、オブジェクトＩＤに対応するクライアント制御装置ＩＤを有するクライアント制御装置２へ送信する（ステップＳ７０６）。ここで、「移動情報」とはオブジェクトを移動させる場合に必要となる情報を意味しており、例えば移動方向、移動速度及び移動距離に関する情報を意味する。
【００５７】
図９は、本発明の実施の形態に係るオブジェクト移動制御システムのクライアント制御装置２のＣＰＵ２１の処理手順を示すフローチャートである。クライアント制御装置２のＣＰＵ２１は、移動を制御する対象となっているオブジェクトが表示されているクライアント４から、ユーザによる指定を受け付けたオブジェクトを識別するオブジェクトＩＤ及び移動に関する移動情報を受信し（ステップＳ９０１）、受信したオブジェクトＩＤに対応するオブジェクトの仮想空間上での位置に関する位置情報を記憶装置２３のオブジェクト情報記憶部２３２から読み出す（ステップＳ９０２）。「移動情報」は、少なくとも移動する方向、速度、及び移動量に関する情報を含む。「位置情報」は、仮想領域（仮想空間）内での三次元座標値に関する情報である。
【００５８】
ＣＰＵ２１は、読み出した位置情報および受信した移動情報に基づいて、移動した場合にオブジェクトが到達尻位置情報を算出し（ステップＳ９０３）、算出した移動後の位置情報をオブジェクトＩＤに対応付けてサーバ１へ送信する（ステップＳ９０４）。そして、該オブジェクトが存在する仮想的な領域を識別するリージョンＩＤ、同一リージョンＩＤ内に存在する他のオブジェクトのオブジェクトＩＤ、及び各オブジェクトの位置情報をサーバ１から受信する（ステップＳ９０５）。サーバ１のＣＰＵ１１は、受信した位置情報及びオブジェクトＩＤをキー情報として、記憶装置１３のオブジェクト状態情報記憶部１３１を照会して、リージョンＩＤ、同一リージョンＩＤ内に存在する他のオブジェクトのオブジェクトＩＤ、及び各オブジェクトの位置情報を抽出して送信する。
【００５９】
本実施の形態では、オブジェクトが存在する仮想的な領域に関する情報、同一領域に存在する他のオブジェクトに関する情報をサーバ１に集約して記憶しているが、オブジェクトが一の仮想的な領域へ移動した時点でサーバ１から仮想的な領域に関する情報をダウンロードして各クライアント制御装置２に記憶しておいても良い。
【００６０】
ＣＰＵ２１は、受信した他のオブジェクトの中から、所定の他のオブジェクトを選択し（ステップＳ９０６）、選択した他のオブジェクトの位置情報、及び読み出した位置情報に基づいて、指定を受け付けた一のオブジェクトと、選択された他のオブジェクトとの間の距離を算出する（ステップＳ９０７）。ＣＰＵ２１は、算出された距離が所定の閾値Ｓより短いか否かを判断し（ステップＳ９０８）、ＣＰＵ２１が、距離が所定の閾値Ｓより短いと判断した場合（ステップＳ９０８：ＹＥＳ）、ＣＰＵ２１は、カウンタを１インクリメントし（ステップＳ９０９）、受信したすべての他のオブジェクトについて選択したか否かを判断する（ステップＳ９１０）。ＣＰＵ２１が、距離が所定の閾値Ｓ以上であると判断した場合（ステップＳ９０８：ＮＯ）、ＣＰＵ２１は、ステップＳ９０９をスキップする。
【００６１】
ＣＰＵ２１が、受信したすべての他のオブジェクトを選択していないと判断した場合（ステップＳ９１０：ＮＯ）、ＣＰＵ２１は、処理をステップＳ９０６へ戻して、上述した処理を繰り返す。ＣＰＵ２１が、受信したすべての他のオブジェクトを選択したと判断した場合（ステップＳ９１０：ＹＥＳ）、ＣＰＵ２１は、カウンタの累計値が所定値より大きいか否かを判断する（ステップＳ９１１）。ＣＰＵ２１が、所定値以下であると判断した場合（ステップＳ９１１：ＮＯ）、ＣＰＵ２１は、衝突を判定する必要が無いと判断して処理を終了する。ＣＰＵ２１が、所定値より大きいと判断した場合（ステップＳ９１１：ＹＥＳ）、ＣＰＵ２１は、カウント対象となったオブジェクトに関する情報をサーバ１へ送信する（ステップＳ９１２）。
【００６２】
なお、本実施の形態では、オブジェクト相互間の距離を仮想領域におけるＸＹ平面における直線距離で算出して、距離の大小を判断しているが、Ｘ座標値のみで所定の差異の範囲内となるオブジェクトを絞り込み、続いてＹ座標値のみで所定の差異の範囲内となるオブジェクトを特定する方法であっても良い。
【００６３】
図１０は、本発明の実施の形態に係るオブジェクト移動制御システムのサーバ１のＣＰＵ１１の割当処理の手順を示すフローチャートである。図１０において、サーバ１のＣＰＵ１１は、各クライアント制御装置２から、仮想領域内に存在し、しかも近接しているオブジェクトに関する情報を受信する（ステップＳ１００１）。ＣＰＵ１１は、複数のクライアント制御装置２、２、・・・から受信した近接しているオブジェクトに関する情報に基づいて、互いに近接するオブジェクト群を特定する（ステップＳ１００２）。
【００６４】
つまり、仮想領域内に存在する近接しているオブジェクトに関する情報を受信した状態では、一のオブジェクトを基準として距離が短いと判定されたオブジェクトの組み合わせ情報を取得するに留まる。この場合、各クライアント制御装置２は、それぞれのオブジェクトからの距離が所定範囲内であるか否かのみで判断しているので、互いに近接しているオブジェクトでは、２つのクライアント制御装置２、２から受信した近接しているオブジェクトに関する情報の両方に同じオブジェクトが含まれている。これらを整理して一群の近接オブジェクトを特定する必要がある。
【００６５】
図１１は、本発明の実施の形態に係るオブジェクト移動制御システムのサーバ１のＣＰＵ１１の互いに近接するオブジェクト群を特定する処理手順を示すフローチャートである。図１１において、サーバ１のＣＰＵ１１は、各クライアント制御装置２から受信したオブジェクト群を集約し（ステップＳ１１０１）、受信したオブジェクト群の中から２つのオブジェクト群を選択する（ステップＳ１１０２）。
【００６６】
ＣＰＵ１１は、２つのオブジェクト群の中に共通のオブジェクトが存在するか否かを判断する（ステップＳ１１０３）。ＣＰＵ１１が、存在すると判断した場合（ステップＳ１１０３：ＹＥＳ）、ＣＰＵ１１は、２つのオブジェクト群をマージする（ステップＳ１１０４）。なお。マージとは、例えば一のオブジェクト群ＡがオブジェクトＡ１、Ａ２、Ａ３を含み、他のオブジェクト群ＢがオブジェクトＡ３、Ａ４、Ａ５を含む場合に、オブジェクトＡ１、Ａ２、Ａ３、Ａ４、Ａ５を含む一つのオブジェクト群を生成する処理を意味している。
【００６７】
ＣＰＵ１１が、存在しないと判断した場合（ステップＳ１１０３：ＮＯ）、ＣＰＵ１１は、ステップＳ１１０４をスキップし、すべての組み合わせを選択したか否かを判断する（ステップＳ１１０５）。ＣＰＵ１１が、すべての組み合わせを選択したと判断した場合（ステップＳ１１０５：ＹＥＳ）、ＣＰＵ１１は、処理を終了する。ＣＰＵ１１が、選択されていない組み合わせが存在すると判断した場合（ステップＳ１１０５：ＮＯ）、ＣＰＵ１１は、処理をステップＳ１１０２へ戻し、上述した処理を繰り返す。
【００６８】
図１０に戻って、サーバ１のＣＰＵ１１は、特定されたオブジェクト群から一対のオブジェクトを選択した一の組み合わせごとに、衝突判定処理を実行する衝突判定クライアント３を割り当てる（ステップＳ１００３）。ＣＰＵ１１は、割り当てられた衝突判定クライアント３ごとに、対応する一対のオブジェクトに関する情報を送信する（ステップＳ１００４）。オブジェクト群にｎ個のオブジェクトが含まれている場合、衝突判定クライアント３を割り当てるべき一対のオブジェクトの数は
nＣ2 となる。
【００６９】
このように、オブジェクト間の距離が一定の距離より短いオブジェクトが、所定の個数以上集まっている場合、一のオブジェクトに着目すると、該オブジェクトが他のオブジェクトに衝突することなく移動できる範囲は、所定の個数集まっていない場合と比べて非常に狭くなる。したがって、オブジェクトが他のオブジェクトと衝突する可能性が高い状況にあると判断することができる。
【００７０】
そして、オブジェクト間の衝突判定処理を、クライアント制御装置２とは別個独立した衝突判定クライアント３で実行させることにより、演算処理負荷の大きい衝突判定処理をクライアント制御装置２とは別個のコンピュータで実行させることができ、クライアント制御装置２の演算処理負荷を軽減することができる。したがって、全体としてスループットを向上させることが可能となる。
【００７１】
割り当て対象となる衝突判定クライアント３を選択する場合、演算処理負荷の小さい衝突判定クライアント３から順に割り当てることが好ましい。衝突判定クライアント３、３、・・・の演算処理負荷が略均等になることでボトルネックとなる衝突判定クライアント３が生じることがなく、全体のスループットの低下を未然に防止することができるからである。
【００７２】
演算処理負荷の大小を判定する指標値としては、例えば異なるクライアント間で正規化された負荷を示す値、オペレーティングシステムが管理するシステム負荷の値、プロセス数等のいずれか、又はこれらの組み合わせ等を用いる。以下、演算処理負荷の大小を判定する指標値として稼動しているプロセス数を用いる場合の処理について説明する。
【００７３】
図１２は、本発明の実施の形態に係るオブジェクト移動システムのサーバ１のＣＰＵ１１の割当処理の詳細手順を示すフローチャートである。図１２において、サーバ１のＣＰＵ１１は、接続されているすべての衝突判定クライアント３、３、・・・で動作しているプロセス数を衝突判定クライアント３ごとに取得する（ステップＳ１２０１）。そして、ＣＰＵ１１は、衝突判定クライアント３を割り当てる対象となる
nＣ2 個の一対のオブジェクトから所定の一対のオブジェクトを選択する（ステップＳ１２０２）。
【００７４】
ＣＰＵ１１は、取得したプロセス数が最小である衝突判定クライアント３を特定し（ステップＳ１２０３）、特定された衝突判定クライアント３へ一対のオブジェクトを割り当てる（ステップＳ１２０４）。ＣＰＵ１１は、すべての一対のオブジェクトを割り当てたか否かを判断し（ステップＳ１２０５）、ＣＰＵ１１が、まだ割り当てていない一対のオブジェクトが存在すると判断した場合（ステップＳ１２０５：ＮＯ）、ＣＰＵ１１は、次の一対のオブジェクトを選択し（ステップＳ１２０６）、処理をステップＳ１２０３へ戻して上述した処理を繰り返す。ＣＰＵ１１が、すべての一対のオブジェクトを割り当てたと判断した場合（ステップＳ１２０５：ＹＥＳ）、ＣＰＵ１１は、処理を終了する。
【００７５】
このように、割り当てする衝突判定クライアント３を特定する時点でプロセス数が最小である衝突判定クライアント３に優先して割り当てていくことにより、衝突判定クライアント３、３、・・・の演算処理負荷を略均等に制御することができる。なお、演算処理負荷をプロセス数で判断する方法に限定されるものではなく、タスク数等の他の指標を用いても良いことは言うまでもない。
【００７６】
図１３は、本発明の実施の形態に係るオブジェクト移動制御システムの衝突判定クライアント３のＣＰＵ３１の衝突判定の処理手順を示すフローチャートである。図１３において、衝突判定クライアント３のＣＰＵ３１は、サーバ１から一対のオブジェクトに関する情報を受信し（ステップＳ１３０１）、受信した一対のオブジェクトについて互いに衝突するか否かを判定する（ステップＳ１３０２）。
【００７７】
衝突判定を正確に行うため、衝突判定クライアント３は一対のオブジェクトそれぞれのポリゴンデータを取得する。そして、ポリゴンデータ相互間の、三次元空間における干渉の有無を判定し、干渉が生じている場合には衝突していると判定する。ポリゴンデータ間の干渉の検出方法は、特に限定されるものではなく、周知の方法であればなんでも良い。
【００７８】
また、衝突判定クライアント３の演算処理負荷を少しでも軽減するべく、クライアント制御装置２でオブジェクトが近接しているか否かを判断する場合に用いる距離の閾値よりも小さい第２の閾値を用いて、さらに絞り込んだ後に、干渉する可能性が高い一対のオブジェクトについてのみ、ポリゴンデータ相互間の、三次元空間における干渉の有無を判定しても良い。このようにすることで、演算処理負荷が大きいポリゴンデータ間の三次元干渉検出処理の回数を減じることができ、全体として演算処理負荷を軽減することができる。
【００７９】
図１４は、オブジェクトが人間の形状をした三次元ポリゴンデータである場合の、オブジェクト間の位置関係の例示図である。図１４（ａ）及び（ｂ）に示すように、オブジェクトＯ１とオブジェクトＯ２との間の距離が同じΔｄであっても、オブジェクトが横に並んでいる場合には図１４（ａ）のように衝突しないし、図１４（ｂ）のようにオブジェクトが縦に並んでいる場合には、三次元干渉領域Ｃが生じる。そして、Δｄが短いほど、三次元干渉領域Ｃが生じる可能性が高くなり、両オブジェクトが衝突する可能性が高くなる。
【００８０】
そこで、同じ仮想領域にオブジェクトが集中していることを確認するための第１の閾値として、オブジェクトの向きによらず近接しているか否かを判定できる程度の距離、例えば１ｍ５０ｃｍ程度の閾値を採用し、オブジェクトの向きによっては衝突する可能性が高い距離、例えば５０ｃｍ程度を第２の閾値として採用することで、第１の閾値ではオブジェクトが集中しているか否かのみを広く判定し、第２の閾値では衝突可能性の高いオブジェクトの組み合わせを抽出するという２段階処理とすることができる。このようにすることで、本当に衝突判定が必要なオブジェクト間のみ、演算処理負荷の高いポリゴンデータを用いた衝突判定処理を実行することで、全体の演算処理負荷を軽減することができる。
【００８１】
図１３に戻って、ＣＰＵ３１は、衝突するか否かの判定結果に関する情報を、サーバ１へ送信する（ステップＳ１３０３）。送信する判定結果に関する情報は、衝突判定を実行した一対のオブジェクトを識別する識別情報、及び衝突するか否かに関する情報である。
【００８２】
図１５は、本発明の実施の形態に係るオブジェクト移動制御システムのサーバ１のＣＰＵ１１の衝突判定結果の転送処理手順を示すフローチャートである。図１５において、サーバ１のＣＰＵ１１は、衝突判定クライアント３から衝突判定処理の判定結果に関する情報を受信し（ステップＳ１５０１）、受信した判定結果に関する情報が衝突する旨を示す情報であるか否かを判断する（ステップＳ１５０２）。
【００８３】
ＣＰＵ１１が、受信した判定結果に関する情報が衝突する旨を示す情報であると判断した場合（ステップＳ１５０２：ＹＥＳ）、ＣＰＵ１１は、衝突する旨を示す情報を、対応する一対のオブジェクトの移動位置を制御する一又は複数のクライアント制御装置２、２へ転送する（ステップＳ１５０３）。ＣＰＵ１１が、受信した判定結果に関する情報が衝突しない旨を示す情報であると判断した場合（ステップＳ１５０２：ＮＯ）、ＣＰＵ１１は、衝突しない、すなわち移動することが可能であると判断し、処理を終了する。
【００８４】
図１６は、本発明の実施の形態に係るオブジェクト移動制御システムのクライアント制御装置２のＣＰＵ２１の位置更新処理の手順を示すフローチャートである。図１６において、クライアント制御装置２のＣＰＵ２１は、衝突する旨を示す情報を受信したか否かを判断する（ステップＳ１６０１）。ＣＰＵ２１が、衝突する旨を示す情報を受信したと判断した場合（ステップＳ１６０１：ＹＥＳ）、ＣＰＵ２１は、オブジェクトの移動に障害物が存在するため移動することができないと判断することができ、オブジェクトの位置情報を更新しない（ステップＳ１６０２）。
【００８５】
ＣＰＵ２１が、衝突する旨を示す情報を受信していないと判断した場合（ステップＳ１６０１：ＮＯ）、ＣＰＵ２１は、オブジェクトの移動に障害物が存在しないため移動することができると判断することができ、オブジェクトの位置情報及び移動情報に基づいて、オブジェクトの位置情報を更新する（ステップＳ１６０３）。
【００８６】
ＣＰＵ２１は、表示するべきオブジェクトに関する表示情報を生成して（ステップＳ１６０４）、クライアント４へ送信する（ステップＳ１６０５）。表示情報には、背景情報及びオブジェクトの形状、位置等に関する情報を含んでいる。
【００８７】
図１７は、本発明の実施の形態に係るオブジェクト移動制御システムのクライアント４のＣＰＵ４１のオブジェクト表示処理手順を示すフローチャートである。クライアント４のＣＰＵ４１は、表示情報として、背景情報及びオブジェクトの形状、位置等に関する情報を受信し（ステップＳ１７０１）、受信した表示情報に基づいて所定のオブジェクトに関する三次元画像を表示装置４５に表示する（ステップＳ１７０２）。
【００８８】
例えばオブジェクトが仮想空間上でのアバターである場合、クライアント４にてユーザがアバターを移動させるよう操作する。操作を受け付けたクライアント４は、操作の対象となるアバターの動作を制御するクライアント制御装置２へ操作に伴う情報を送信し、近接している他のアバター及び背景の障害物等との間で一定の近さにあるものについてのみ衝突判定を行う。
【００８９】
衝突判定自体は、アバターの動作を制御するクライアント制御装置２とは別個独立した専用のプロセッサを用いることで演算処理負荷を軽減し、衝突判定処理の演算時間を短縮する。ユーザが操作したアバターの移動が他のアバター、背景の障害物等と衝突しないとの判定結果を受信した場合、クライアント４はアバターが操作による移動位置へ移動された状態の三次元画像が表示されるのを確認することができる。ユーザが操作したアバターの移動が他のアバター、背景の障害物等と衝突するとの判定結果を受信した場合、クライアント４は、ビープ音等を発してアバターが操作による移動位置へ移動することができない旨を知らせることができる。このように本実施の形態では、演算処理負荷を軽減することにより処理全体のスループットを短縮することができ、ユーザ操作に対するアバター動作の表示レスポンスを高めることが可能となる。
【００９０】
以上のように本実施の形態によれば、所定の閾値より短いと判断されたオブジェクトの総数が所定数より多い場合にのみ、オブジェクト相互間で衝突が生じる可能性があると判断し、別個独立した衝突判定クライアント３にて衝突可能性を判断するようにすることで、全体の演算処理負荷を軽減することができ、オブジェクトの仮想空間上での移動位置の演算処理のスループットを向上させることが可能となる。
【００９１】
また、仮想領域間でオブジェクトが移動する場合、従来の方法であれば仮想領域を制御するクライアント制御装置２、２間で種々の情報交換が必要となるが、オブジェクト単位に仮想領域上での動作を制御することで、サーバ１から該オブジェクトが存在する仮想領域内に存在する他のオブジェクトに関する情報のみを取得すれば足り、ネットワーク負荷の軽減を図ることもできる。
【００９２】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変形、置換等が可能であることは言うまでもない。
【図面の簡単な説明】
【００９３】
【図１】本発明の実施の形態に係るオブジェクト移動制御システムの構成を示すブロック図である。
【図２】本発明の実施の形態に係るオブジェクト移動制御システムのサーバを、ＣＰＵを用いて具現化した場合のハードウェア構成を示すブロック図である。
【図３】オブジェクト状態情報記憶部のデータ構成の例示図である。
【図４】本発明の実施の形態に係るオブジェクト移動制御システムのクライアント制御装置を、ＣＰＵを用いて具現化した場合のハードウェア構成を示すブロック図である。
【図５】本発明の実施の形態に係るオブジェクト移動制御システムの衝突判定クライアントを、ＣＰＵを用いて具現化した場合のハードウェア構成を示すブロック図である。
【図６】本発明の実施の形態に係るオブジェクト移動制御システムのクライアントを、ＣＰＵを用いて具現化した場合のハードウェア構成を示すブロック図である。
【図７】本発明の実施の形態に係るオブジェクト移動制御システムのクライアントのＣＰＵのオブジェクト移動指示の受付処理手順を示すフローチャートである。
【図８】本実施の形態に係るオブジェクト移動制御システムでの仮想空間の説明図である。
【図９】本発明の実施の形態に係るオブジェクト移動制御システムのクライアント制御装置のＣＰＵの処理手順を示すフローチャートである。
【図１０】本発明の実施の形態に係るオブジェクト移動制御システムのサーバのＣＰＵの割当処理の手順を示すフローチャートである。
【図１１】本発明の実施の形態に係るオブジェクト移動制御システムのサーバのＣＰＵの互いに近接するオブジェクト群を特定する処理手順を示すフローチャートである。
【図１２】本発明の実施の形態に係るオブジェクト移動制御システムのサーバのＣＰＵの割当処理の詳細手順を示すフローチャートである。
【図１３】本発明の実施の形態に係るオブジェクト移動制御システムの衝突判定クライアントのＣＰＵの衝突判定の処理手順を示すフローチャートである。
【図１４】オブジェクトが人間の形状をした三次元ポリゴンデータである場合の、オブジェクト間の位置関係の例示図である。
【図１５】本発明の実施の形態に係るオブジェクト移動制御システムのサーバのＣＰＵの衝突判定結果の転送処理手順を示すフローチャートである。
【図１６】本発明の実施の形態に係るオブジェクト移動制御システムのクライアント制御装置のＣＰＵの位置更新処理の手順を示すフローチャートである。
【図１７】本発明の実施の形態に係るオブジェクト移動制御システムのクライアントのＣＰＵのオブジェクト表示処理手順を示すフローチャートである。
【符号の説明】
【００９４】
１  サーバ
２  クライアント制御装置
３  衝突判定クライアント
４  クライアント
１１、２１、３１、４１  ＣＰＵ
１２、２２、３２、４２  ＲＡＭ
１３、２３、３３、４３  記憶装置
１４、２４、４４  入力装置
１５、２５  出力装置
１６、２６、３４、４６  通信装置
１７  可搬型ディスクドライブ
１８、２７、３５、４７  内部バス
４５  表示装置
９０  可搬型記録媒体
１００、１０１、１０２、１０３  コンピュータプログラム
１３１  オブジェクト状態情報記憶部
２３１  背景情報記憶部
２３２  オブジェクト情報記憶部
【図１】
0005039950.tif 000002
【図２】
0005039950.tif 000003
【図３】
0005039950.tif 000004
【図４】
0005039950.tif 000005
【図５】
0005039950.tif 000006
【図６】
0005039950.tif 000007
【図７】
0005039950.tif 000008
【図８】
0005039950.tif 000009
【図９】
0005039950.tif 000010
【図１０】
0005039950.tif 000011
【図１１】
0005039950.tif 000012
【図１２】
0005039950.tif 000013
【図１３】
0005039950.tif 000014
【図１４】
0005039950.tif 000015
【図１５】
0005039950.tif 000016
【図１６】
0005039950.tif 000017
【図１７】
0005039950.tif 000018