(57)【特許請求の範囲】
【請求項１】
所定のネットワークを介して接続されたサーバとユーザ端末から構成され、複数のユーザが共有する仮想空間上のオブジェクトと前記ユーザを表すアバタとを制御する仮想空間制御システムにおいて、
前記ユーザ端末は、
前記ユーザからの移動操作を受け付けて、前記仮想空間上で前記ユーザを表す前記アバタの移動情報を収集する収集手段と、
前記収集手段によって収集された前記アバタの移動情報と前記サーバから供給される前記オブジェクトの位置情報とに基づき、前記仮想空間上の前記オブジェクトと前記アバタの現在地情報を管理する現在地情報管理手段と、
前記現在地情報管理手段によって管理された前記仮想空間上の前記オブジェクトと前記アバタの現在地情報に基づいて、移動する前記アバタの衝突判定を行う第１衝突判定手段と、
前記第１衝突判定手段の衝突判定結果に対応する処理を行う衝突判定対応処理手段と、
前記第１衝突判定手段の衝突判定結果に基づき、前記サーバに前記アバタの位置情報を出力する出力手段とを備え、
前記サーバは、
前記ユーザ端末の前記出力手段から出力された前記アバタの位置情報と、前記オブジェクトの位置情報に基づいて、前記移動するアバタの衝突判定を行う第２衝突判定手段を備え、
前記ユーザ端末は、
前記第１衝突判定手段と前記第２衝突判定手段との衝突判定結果が異なる場合、前記第１衝突判定手段の衝突判定結果に対応する前記衝突判定対応処理手段による処理を、前記第２衝突判定手段の衝突判定結果に対応して修正する修正手段をさらに備える
ことを特徴とする仮想空間制御システム。
【請求項２】
所定のネットワークを介して接続されたサーバとユーザ端末から構成され、複数のユーザが共有する仮想空間上のオブジェクトと前記ユーザを表すアバタとを制御する仮想空間制御システムの仮想空間制御方法において、
前記ユーザ端末における、前記ユーザからの移動操作を受け付けて、前記仮想空間上で前記ユーザを表す前記アバタの移動情報を収集する収集ステップと、
前記ユーザ端末における、前記収集ステップの処理で収集された前記アバタの移動情報と前記サーバから供給される前記オブジェクトの位置情報とに基づき、前記仮想空間上の前記オブジェクトと前記アバタの現在地情報を管理する現在地情報管理ステップと、
前記ユーザ端末における、前記現在地情報管理ステップで管理された前記仮想空間上の前記オブジェクトと前記アバタの現在地情報に基づいて、移動する前記アバタの衝突判定を行う第１衝突判定ステップと、
前記ユーザ端末における、前記第１衝突判定ステップの処理での衝突判定結果に対応する処理を行う衝突判定対応処理ステップと、
前記ユーザ端末における、前記第１衝突判定ステップの処理での衝突判定結果に基づき、前記サーバに前記アバタの位置情報を出力する出力ステップと、
前記サーバにおける、前記ユーザ端末の前記出力ステップの処理で出力された前記アバタの位置情報と、前記オブジェクトの位置情報に基づいて、前記移動するアバタの衝突判定を行う第２衝突判定ステップと、
前記ユーザ端末における、前記第１衝突判定ステップの処理と前記第２衝突判定ステップの処理との衝突判定結果が異なる場合、前記第１衝突判定ステップの処理の衝突判定結果に対応する前記衝突判定対応処理ステップによる処理を、前記第２衝突判定ステップの処理の衝突判定結果に対応して修正する修正ステップと
を含むことを特徴とする仮想空間制御方法。
【請求項３】
所定のネットワークを介してサーバと接続し、ユーザが他のユーザとともに共有する仮想空間上のオブジェクトと前記ユーザを表すアバタとを制御するためのプログラムであって、
前記ユーザからの移動操作を受け付けて、前記仮想空間上で前記ユーザを表す前記アバタの移動情報を収集する収集ステップと、
前記収集ステップの処理で収集された前記アバタの移動情報と前記サーバから供給される前記オブジェクトの位置情報とに基づき、前記仮想空間上の前記オブジェクトと前記アバタの現在地情報を管理する現在地情報管理ステップと、
前記現在地情報管理ステップで管理された前記仮想空間上の前記オブジェクトと前記アバタの現在地情報に基づいて、移動する前記アバタの衝突判定を行う衝突判定ステップと、
前記衝突判定ステップの処理での衝突判定結果に対応する処理を行う衝突判定対応処理ステップと、
前記衝突判定ステップの処理での衝突判定結果に基づき、前記サーバに前記アバタの位置情報を出力する出力ステップと、
前記サーバにおける、前記ユーザ端末の前記出力ステップの処理で出力された前記アバタの位置情報と、前記オブジェクトの位置情報に基づいて、前記移動するアバタの衝突判定を行う第２衝突判定ステップと、
前記衝突判定ステップの処理と、前記サーバにおいて行われる前記移動するアバタの衝突判定処理との衝突判定結果が異なる場合、前記衝突判定ステップの処理の衝突判定結果に対応する前記衝突判定対応処理ステップによる処理を、前記サーバにおいて行われる前記移動するアバタの衝突判定処理の衝突判定結果に対応して修正する修正ステップと
を含む処理をコンピュータに実行させるプログラムが記録されていることを特徴とする記録媒体。
【請求項４】
所定のネットワークを介してサーバと接続し、ユーザが他のユーザとともに共有する仮想空間上のオブジェクトと前記ユーザを表すアバタとを制御する仮想空間制御装置において、
前記ユーザからの移動操作を受け付けて、前記仮想空間上で前記ユーザを表す前記アバタの移動情報を収集する収集手段と、
前記収集手段によって収集された前記アバタの移動情報と前記サーバから供給される前記オブジェクトの位置情報とに基づき、前記仮想空間上の前記オブジェクトと前記アバタの現在地情報を管理する現在地情報管理手段と、
前記現在地情報管理手段によって管理された前記仮想空間上の前記オブジェクトと前記アバタの現在地情報に基づいて、移動する前記アバタの衝突判定を行う衝突判定手段と、
前記収集手段によって収集された前記アバタの過去の移動情報を保管する移動情報保管手段と、
前記移動情報保管手段によって保管された過去の移動情報に基づいて、前記アバタの移動位置を予測する移動位置予測手段と、
前記移動位置予測手段によって予測された移動位置に基づいて衝突予測を行う衝突予測手段と
を備えることを特徴とする仮想空間制御装置。
【請求項５】
所定のネットワークを介してサーバと接続し、ユーザが他のユーザとともに共有する仮想空間上のオブジェクトと前記ユーザを表すアバタとを制御する仮想空間制御方法において、
前記ユーザからの移動操作を受け付けて、前記仮想空間上で前記ユーザを表す前記アバタの移動情報を収集する収集ステップと、
前記収集ステップの処理で収集された前記アバタの移動情報と前記サーバから供給される前記オブジェクトの位置情報とに基づき、前記仮想空間上の前記オブジェクトと前記アバタの現在地情報を管理する現在地情報管理ステップと、
前記現在地情報管理ステップの処理で管理された前記仮想空間上の前記オブジェクトと前記アバタの現在地情報に基づいて、移動する前記アバタの衝突判定を行う衝突判定ステップと、
前記収集ステップの処理で収集された前記アバタの過去の移動情報を保管する移動情報保管ステップと、
前記移動情報保管ステップの処理で保管された過去の移動情報に基づいて、前記アバタの移動位置を予測する移動位置予測ステップと、
前記移動位置予測ステップの処理で予測された移動位置に基づいて衝突予測を行う衝突予測ステップと
を含むことを特徴とする仮想空間制御方法。
【請求項６】
所定のネットワークを介してサーバと接続し、ユーザが他のユーザとともに共有する仮想空間上のオブジェクトと前記ユーザを表すアバタとを制御するためのプログラムであって、
前記ユーザからの移動操作を受け付けて、前記仮想空間上で前記ユーザを表す前記アバタの移動情報を収集する収集ステップと、
前記収集ステップの処理で収集された前記アバタの移動情報と前記サーバから供給される前記オブジェクトの位置情報とに基づき、前記仮想空間上の前記オブジェクトと前記アバタの現在地情報を管理する現在地情報管理ステップと、
前記現在地情報管理ステップの処理で管理された前記仮想空間上の前記オブジェクトと前記アバタの現在地情報に基づいて、移動する前記アバタの衝突判定を行う衝突判定ステップと、
前記収集ステップの処理で収集された前記アバタの過去の移動情報を保管する移動情報保管ステップと、
前記移動情報保管ステップの処理で保管された過去の移動情報に基づいて、前記アバタの移動位置を予測する移動位置予測ステップと、
前記移動位置予測ステップの処理で予測された移動位置に基づいて衝突予測を行う衝突予測ステップと
を含む処理をコンピュータに実行させるプログラムが記録されていることを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、仮想空間制御装置および方法、並びに記録媒体に関し、特に、ユーザ端末においてアバタの衝突判定を行うことにより、アバタの移動を円滑に行うことができるようにした仮想空間制御装置および方法、並びに記録媒体に関する。
【０００２】
【従来の技術】
複数のユーザが共有する仮想空間（ネットワークとコンピュータを使って実現する社会、いわゆるサイバースペース）を制御する仮想空間制御システムは、図２１に示すように、仮想空間を管理するサーバ１と、インターネットに代表されるネットワーク２を介してサーバ１に接続される複数のユーザ端末（クライアント）３−１乃至３−３（以下、各ユーザ端末３−１乃至３−３を個々に区別する必要がない場合、単にユーザ端末３と記述する）から構成される。仮想空間上には、図２２乃至２４に示すように、複数のオブジェクト（家具、または電化製品等）と、アバタ（仮想空間においてユーザの代わりに行動する。例えば、移動、挙手等を行う）が存在する。アバタは、ユーザの操作に対応して、仮想空間上を移動する。なお、この明細書において、システムの用語は、複数の装置で構成される全体の装置を表すものとして使用する。
【０００３】
従来の仮想空間制御システムの構成の一例について、図２５を参照して説明する。サーバ１は、仮想空間管理部１１、通信制御部１２、仮想空間情報格納部１３、オブジェクト・アバタ管理部１４、および衝突判定部１５から構成される。仮想空間管理部１１は、ユーザ端末３−１乃至３−３から入力された情報（仮想空間への参加要求、およびアバタの移動情報等）の処理を、オブジェクト・アバタ管理部１４、または衝突判定部１５に行わせ、その処理結果を通信制御部１２に出力するようになされている。さらに、仮想空間管理部１１は、仮想空間に参加しているユーザの名前、およびユーザに対応するアバタの名前を管理している。
【０００４】
通信制御部１２は、ユーザ端末３−１乃至３−３とネットワーク２を介して行われる情報の通信を制御するようになされている。仮想空間情報格納部１３には、仮想空間の初期状態のデータ（オブジェクトの座標等）、並びに、空間背景、オブジェクト、およびアバタの画像データが格納されている。オブジェクト・アバタ管理部１４は、現在のオブジェクトとアバタの位置、および状態を管理する。衝突判定部１５は、アバタが移動された場合、オブジェクト・アバタ管理部１４が管理する位置情報に基づいて、移動されるアバタと、他のアバタ、またはオブジェクトが衝突するか否かを判定する。
【０００５】
ユーザ端末３−１は、仮想空間管理部３１、通信制御部３２、仮想空間情報格納部３３、ＵＩ制御部３４、およびオブジェクト・アバタ管理部３５から構成される。仮想空間管理部３１は、ＵＩ制御部３４、およびオブジェクト・アバタ管理部３５を制御して、サーバ１から入力された情報（衝突判定の結果、および他のユーザに対応するアバタの位置等）の処理を行わせるようになされている。さらに、仮想空間管理部３１は、サーバ１に出力する情報（アバタの移動情報等）を通信制御部３２に出力する。通信制御部３２は、ネットワーク２を介したサーバ１との通信を制御する。仮想空間情報格納部３３には、空間背景、オブジェクト、およびアバタの画像データが格納されている。ＵＩ制御部３４は、図示せぬ表示部に仮想空間を表示するとともに、ユーザの操作（アバタの移動等）を受け付けるようになされている。オブジェクト・アバタ管理部３５は、現在のオブジェクトとアバタの位置、および状態を管理する。
【０００６】
なお、ユーザ端末３−２，３−３の構成は、ユーザ端末３−１の構成と同様であるので、その説明を省略する。
【０００７】
次に、仮想空間制御システムにおけるアバタの移動処理について、図２６のフローチャートと図２７を参照して説明する。なお、図２７は図２６の各ステップに対応する情報の入出力を矢印で示している。ステップＳ１０１において、ユーザは、表示部に表示される仮想空間上のアバタを移動する操作を行う（例えば、アバタをマウスでクリックし、移動したい位置にドラッグする）。ステップＳ１０２において、ＵＩ制御部３４は、ユーザの移動操作を受け付け、その移動操作に対応した移動情報（移動されるアバタ名と移動先の位置）を仮想空間管理部３１に出力する。ステップＳ１０３において、仮想空間管理部３１は、移動情報を通信制御部３２に出力し、通信制御部３２は、移動情報をネットワーク２を介して、サーバ１に出力する。サーバ１においては、通信制御部１２が、移動情報を受け付け、仮想空間管理部１１に出力する。
【０００８】
ステップＳ１０４において、仮想空間管理部１１は、移動情報を衝突判定部１５に入力させる。衝突判定部１５は、移動情報とオブジェクト・アバタ管理部１４が管理する現在のオブジェクト、およびアバタの位置情報に基づいて、移動後のアバタと、他のアバタ、またはオブジェクトが衝突するか否かを判定し、衝突しない場合、その旨を仮想空間管理部１１に通知し、ステップＳ１０５に進む。ステップＳ１０５において、仮想空間管理部１１は、オブジェクト・アバタ管理部１４で管理されるアバタの位置情報を移動先の位置に更新する。ステップＳ１０６において、仮想空間管理部１１は、衝突判定結果と更新されたアバタの位置情報を通信制御部１２に出力し、通信制御部１２は、衝突判定結果と更新されたアバタの位置情報をネットワーク２を介してユーザ端末３−１乃至３−３に出力する。
【０００９】
ステップＳ１０７において、仮想空間管理部３１は、オブジェクト・アバタ管理部３５で管理されているアバタの位置情報を、サーバ１から入力された位置情報に更新する。ステップＳ１０８において、仮想空間管理部３１は、衝突判定結果をＵＩ制御部３４に出力し、ＵＩ制御部３４は、オブジェクト・アバタ管理部３５で管理されているアバタの位置情報に基づいて、表示されている仮想空間上のアバタの位置を更新する（アバタを移動する）。
【００１０】
ステップＳ１０４において、移動後のアバタと他のアバタ、またはオブジェクトが衝突すると判定された場合、ステップＳ１０９に進む。ステップＳ１０９において、仮想空間管理部１１は、衝突判定結果を通信制御部１２に出力し、通信制御部１２は、衝突判定結果をネットワーク２を介してユーザ端末３−１に出力する。ユーザ端末３−１においては、入力された判定結果が「衝突発生」であるので、アバタの位置を更新する処理は行われない（アバタは移動されない）。
【００１１】
【発明が解決しようとする課題】
このように、アバタを移動させる場合、移動させるアバタと、仮想空間上の他のアバタ、またはオブジェクトが衝突するか否かを判定する必要がある。この判定は、サーバ１において行われているので、ユーザがアバタの移動操作を行う毎に、ユーザ端末３−１はサーバ１に、衝突が発生するか否かを問い合わせる必要がある。ユーザ端末３−１に表示されているアバタの位置の更新（アバタの移動）は、サーバ１の衝突判定結果がユーザ端末３−１に届いてから実行されるので、ネットワーク２の混雑状況によっては、アバタの移動が円滑に行われない課題があった。
【００１２】
また、サーバ１が全ての衝突判定を一括して処理するので、複数の衝突判定が同時に発生した場合、仮想空間制御システム全体の処理能力が低下する課題があった。
【００１３】
本発明はこのような状況に鑑みてなされたものであり、ユーザ端末で衝突判定を行うことにより、アバタの移動を円滑に行うとともに、仮想空間制御システム全体の処理能力の低下を防止するものである。
【００１４】
【発明の属する技術分野】
本発明の仮想空間制御システムは、ユーザ端末が、ユーザからの移動操作を受け付けて、仮想空間上でユーザを表すアバタの移動情報を収集する収集手段と、収集手段によって収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報を管理する現在地情報管理手段と、現在地情報管理手段によって管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの衝突判定を行う第１衝突判定手段と、第１衝突判定手段の衝突判定結果に対応する処理を行う衝突判定対応処理手段と、第１衝突判定手段の衝突判定結果に基づき、サーバにアバタの位置情報を出力する出力手段とを備え、サーバが、ユーザ端末の出力手段から出力されたアバタの位置情報と、オブジェクトの位置情報に基づいて、移動するアバタの衝突判定を行う第２衝突判定手段を備え、前記ユーザ端末が、第１衝突判定手段とサーバにおける第２衝突判定手段との衝突判定結果が異なる場合、第１衝突判定手段の衝突判定結果に対応する衝突判定対応処理手段による処理を、第２衝突判定手段の衝突判定結果に対応して修正する修正手段をさらに備えることを特徴とする。
【００１５】
本発明の第１の仮想空間制御方法は、ユーザ端末における、ユーザからの移動操作を受け付けて、仮想空間上でユーザを表すアバタの移動情報を収集する収集ステップと、ユーザ端末における、収集ステップの処理で収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報を管理する現在地情報管理ステップと、ユーザ端末における、現在地情報管理ステップで管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの衝突判定を行う第１衝突判定ステップと、ユーザ端末における、第１衝突判定ステップの処理での衝突判定結果に対応する処理を行う衝突判定対応処理ステップと、ユーザ端末における、第１衝突判定ステップの処理での衝突判定結果に基づき、サーバにアバタの位置情報を出力する出力ステップと、サーバにおける、ユーザ端末の出力ステップの処理で出力されたアバタの位置情報と、オブジェクトの位置情報に基づいて、移動するアバタの衝突判定を行う第２衝突判定ステップと、ユーザ端末における、第１衝突判定ステップの処理と第２衝突判定ステップの処理との衝突判定結果が異なる場合、第１衝突判定ステップの処理の衝突判定結果に対応する衝突判定対応処理ステップによる処理を、第２衝突判定ステップの処理の衝突判定結果に対応して修正する修正ステップと含むことを特徴とする。
本発明の第１の記録媒体に記録されているプログラムは、ユーザからの移動操作を受け付けて、仮想空間上でユーザを表すアバタの移動情報を収集する収集ステップと、収集ステップの処理で収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報を管理する現在地情報管理ステップと、現在地情報管理ステップで管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの衝突判定を行う衝突判定ステップと、衝突判定ステップの処理での衝突判定結果に対応する処理を行う衝突判定対応処理ステップと、衝突判定ステップの処理での衝突判定結果に基づき、サーバにアバタの位置情報を出力する出力ステップと、サーバにおける、ユーザ端末の出力ステップの処理で出力されたアバタの位置情報と、オブジェクトの位置情報に基づいて、移動するアバタの衝突判定を行う第２衝突判定ステップと、衝突判定ステップの処理と、サーバにおいて行われる移動するアバタの衝突判定処理との衝突判定結果が異なる場合、衝突判定ステップの処理の衝突判定結果に対応する衝突判定対応処理ステップによる処理を、サーバにおいて行われる移動するアバタの衝突判定処理の衝突判定結果に対応して修正する修正ステップとを含むことを特徴とする。
【００１６】
本発明の仮想空間制御装置は、ユーザからの移動操作を受け付けて、仮想空間上でユーザを表すアバタの移動情報を収集する収集手段と、収集手段によって収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報を管理する現在地情報管理手段と、現在地情報管理手段によって管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの衝突判定を行う衝突判定手段と、収集手段によって収集されたアバタの過去の移動情報を保管する移動情報保管手段と、移動情報保管手段によって保管された過去の移動情報に基づいて、アバタの移動位置を予測する移動位置予測手段と、移動位置予測手段によって予測された移動位置に基づいて衝突予測を行う衝突予測手段とを備えることを特徴とする。
本発明の第２の仮想空間制御方法は、ユーザからの移動操作を受け付けて、仮想空間上でユーザを表すアバタの移動情報を収集する収集ステップと、収集ステップの処理で収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報を管理する現在地情報管理ステップと、現在地情報管理ステップの処理で管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの衝突判定を行う衝突判定ステップと、収集ステップの処理で収集されたアバタの過去の移動情報を保管する移動情報保管ステップと、移動情報保管ステップの処理で保管された過去の移動情報に基づいて、アバタの移動位置を予測する移動位置予測ステップと、移動位置予測ステップの処理で予測された移動位置に基づいて衝突予測を行う衝突予測ステップとを含むことを特徴とする。
本発明の第２の記録媒体に記録されているプログラムは、ユーザからの移動操作を受け付けて、仮想空間上でユーザを表すアバタの移動情報を収集する収集ステップと、収集ステップの処理で収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報を管理する現在地情報管理ステップと、現在地情報管理ステップの処理で管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの衝突判定を行う衝突判定ステップと、収集ステップの処理で収集されたアバタの過去の移動情報を保管する移動情報保管ステップと、移動情報保管ステップの処理で保管された過去の移動情報に基づいて、アバタの移動位置を予測する移動位置予測ステップと、移動位置予測ステップの処理で予測された移動位置に基づいて衝突予測を行う衝突予測ステップとを含むことを特徴とする。
【００１７】
本発明の仮想空間制御システムおよび方法、並びに記録媒体のプログラムにおいては、ユーザ端末により、ユーザからの移動操作が受け付けられて仮想空間上でユーザを表すアバタの移動情報が収集され、収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報が管理される。また、管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの第１の衝突判定が行われ、この衝突判定結果に対応する処理が行われる。さらに、サーバにより、ユーザ端末から出力されたアバタの位置情報と、オブジェクトの位置情報に基づいて、移動するアバタの第２の衝突判定が行われ、ユーザ端末により、第１および第２の衝突判定の衝突判定結果が異なる場合、第１の衝突判定結果に対応する処理が、第２の衝突判定結果に対応して修正される。
本発明の仮想空間制御装置および方法、並びに記録媒体のプログラムにおいては、ユーザからの移動操作が受け付けられて仮想空間上でユーザを表すアバタの移動情報が収集され、収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報が管理され、管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの衝突判定が行われる。また、収集されたアバタの過去の移動情報が保管され、保管された過去の移動情報に基づいて、アバタの移動位置が予測され、予測された移動位置に基づいて衝突予測が行われる。
【００１８】
【発明の実施の形態】
以下に本発明の実施の形態を説明するが、特許請求の範囲に記載の発明の各手段と以下の実施の形態との対応関係を明らかにするために、各手段の後の括弧内に、対応する実施の形態（但し一例）を付加して本発明の特徴を記述すると、次のようになる。
【００１９】
請求項１に記載の仮想空間制御システムは、ユーザ端末（例えば、図１のユーザ端末３０１）が、ユーザからの移動操作を受け付けて、仮想空間上でユーザを表すアバタの移動情報を収集する収集手段（例えば、図１の仮想空間管理部３１）と、収集手段によって収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報を管理する現在地情報管理手段（例えば、図１のオブジェクト・アバタ管理部３５）と、現在地情報管理手段によって管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの衝突判定を行う第１衝突判定手段（例えば、図１の衝突判定部３６）と、第１衝突判定手段の衝突判定結果に対応する処理を行う衝突判定対応処理手段（例えば、図１の仮想空間管理部３１）と、第１衝突判定手段の衝突判定結果に基づき、サーバにアバタの位置情報を出力する出力手段（例えば、図１の通信制御部３２）とを備え、サーバ（例えば、図１のサーバ１）が、ユーザ端末の出力手段から出力されたアバタの位置情報と、オブジェクトの位置情報に基づいて、移動するアバタの衝突判定を行う第２衝突判定手段（例えば、図１の衝突判定部１５）を備え、ユーザ端末が、第１衝突判定手段とサーバにおける第２衝突判定手段との衝突判定結果が異なる場合、第１衝突判定手段の衝突判定結果に対応する衝突判定対応処理手段による処理を、第２衝突判定手段の衝突判定結果に対応して修正させる修正手段（例えば、図３のステップＳ１５乃至１７の処理を行う図１の仮想空間管理部３１）をさらに備えることを特徴とする。
【００２１】
請求項４に記載の仮想空間制御装置（例えば、図９のユーザ端末）は、ユーザからの移動操作を受け付けて、仮想空間上でユーザを表すアバタの移動情報を収集する収集手段（例えば、図９の仮想空間管理部３１）と、収集手段によって収集されたアバタの移動情報とサーバから供給されるオブジェクトの位置情報とに基づき、仮想空間上のオブジェクトとアバタの現在地情報を管理する現在地情報管理手段（例えば、図９のオブジェクト・アバタ管理部３５）と、現在地情報管理手段によって管理された仮想空間上のオブジェクトとアバタの現在地情報に基づいて、移動するアバタの衝突判定を行う衝突判定手段（例えば、図９の衝突判定部３６）と、収集手段によって収集されたアバタの過去の移動情報を保管する移動情報保管手段（例えば、図９のオブジェクト・アバタ管理部３５）と、移動情報保管手段によって保管された過去の移動情報に基づいて、アバタの移動位置を予測する移動位置予測手段（例えば、図９の衝突判定部３６）と、移動位置予測手段によって予測された移動位置に基づいて衝突予測を行う衝突予測手段（例えば、図９の衝突判定部３６）とを備えることを特徴とする。
【００２２】
但し勿論この記載は、各手段を記載したものに限定することを意味するものではない。
【００２３】
本発明を適用した仮想空間制御システムの構成について、図１を参照して説明する。この仮想空間制御システムと図２５に示した仮想空間制御システムとの違いは、ユーザ端末３−１乃至３−３に衝突判定部３６が追加されたことである。衝突判定部３６は、仮想空間管理部３１から入力される移動情報（移動されるアバタ名と移動先の位置）と、オブジェクト・アバタ管理部３５から入力される現在のオブジェクト、およびアバタの位置情報に基づいて、衝突が発生するか否かを判定し、判定結果を仮想空間管理部３１に出力するようになされている。衝突判定部３６以外の各部は、図２５に示した仮想空間制御システムと同様であるので、その説明は省略する。
【００２４】
次に、各部で管理される情報の構造の一例を示す。サーバ１の仮想空間管理部１１は、サーバ１に接続しているユーザ端末名、および接続しているユーザ数を管理する。
接続しているユーザ端末名
ｃｌｉｅｎｔ＿ｍａｃｈｉｎｅ＿１
ｃｌｉｅｎｔ＿ｍａｃｈｉｎｅ＿２
接続しているユーザ数
２
【００２５】
仮想空間情報格納部１３は、仮想空間情報、オブジェクト情報、およびアバタ情報を管理する。
0003562554.tif 000002
【００２６】
オブジェクト・アバタ管理部１４は、現在のオブジェクト、およびアバタの位置情報を管理する。
0003562554.tif 000003
【００２７】
ユーザ端末３−１の仮想空間管理部３１は、接続しているサーバ名を管理する。
サーバ名
ｓｅｒｖｅｒ＿ｍａｃｈｉｎｅ＿１
【００２８】
仮想空間情報格納部３３は、仮想空間情報、オブジェクト情報、およびアバタ情報を管理する。
0003562554.tif 000004
【００２９】
オブジェクト・アバタ管理部３５は、現在のオブジェクトとアバタの位置情報を管理する。
0003562554.tif 000005
【００３０】
0003562554.tif 000006
【００３１】
0003562554.tif 000007
【００３２】
次に、この仮想空間制御システムにおけるアバタの移動処理について、図２と図３のフローチャート、並びに図４を参照して説明する。なお、図２の各ステップと図３のステップＳ１２乃至Ｓ１７は、主にユーザ端末３−１の処理を示し、図３のステップＳ８乃至Ｓ１１，Ｓ１４は主にサーバ１の処理を示し、図４は図２と図３のフローチャートの各ステップに対応する情報の入出力を示している。
【００３３】
ステップＳ１において、ユーザは、図示せぬ表示部に表示される仮想空間上のアバタを移動する操作を行う。例えば、アバタをマウスでクリックし、移動したい方向にドラッグする。なお、アバタの移動距離は、マウスの移動速度に対応する。すなわち、マウスを速く移動するとアバタは長い距離を移動し、マウスを遅く移動するとアバタは短い距離を移動する。ＵＩ制御部３４は、ユーザの移動操作を受け付け、その移動操作に対応した移動情報を仮想空間管理部３１に出力する。ステップＳ２において、仮想空間管理部３１は、衝突判定部３６に移動情報を出力し、衝突判定を行わせる。この衝突判定処理の詳細については後述する。ステップＳ３において、衝突判定部３６による衝突判定結果が「衝突なし」と判定された場合、ステップＳ４に進む。
【００３４】
ステップＳ４において、仮想空間管理部３１は、オブジェクト・アバタ管理部３５で管理されるアバタの位置情報を移動情報に含まれる移動先の位置の座標に更新する。ステップＳ５において、仮想空間管理部３１は、衝突判定結果をＵＩ制御部３４に出力する。ステップＳ６において、ＵＩ制御部３４は、オブジェクト・アバタ管理部３５で管理されるアバタの位置情報に基づいて、仮想空間上のアバタの表示位置を更新する。ステップＳ７において、仮想空間管理部３１は、移動情報を通信制御部３２に出力し、通信制御部３２は、移動情報をネットワーク２を介してサーバ１に出力する。サーバ１においては、通信制御部１２が移動情報を受け付け、仮想空間管理部１１に出力する。
【００３５】
ステップＳ８において、仮想空間管理部１１は、移動情報を衝突判定部１５に出力し、衝突判定を行わせる。ステップＳ９において、衝突判定部１５による衝突判定結果が「衝突なし」であると判定された場合、ステップＳ１０に進む。ステップＳ１０において、仮想空間管理部１１は、オブジェクト・アバタ管理部１４で管理されるアバタの位置情報を移動情報に含まれる移動先の位置の座標に更新する。ステップＳ１１において、仮想空間管理部１１は、衝突判定結果と更新されたアバタの位置情報を通信制御部１２に出力し、通信制御部１２は、衝突判定結果と更新されたアバタの位置情報をネットワーク２を介してユーザ端末３−１に出力する。ユーザ端末３−１においては、通信制御部３２が、衝突判定結果と更新されたアバタの位置情報を受け付け、仮想空間管理部３１に出力する。
【００３６】
ステップＳ１２において、仮想空間管理部３１は、入力された衝突判定結果が「衝突なし」であると判定された場合、既にアバタの位置は更新されているので処理を終了する。
【００３７】
ステップＳ３において、ステップＳ２における衝突判定部３６の衝突判定結果が「衝突発生」であると判定された場合、ステップＳ１３に進む。ステップＳ１３において、衝突発生の情報が仮想空間管理部３１からＵＩ制御部３４に出力される。ＵＩ制御部３４は、アバタを移動させず、衝突発生の情報（例えば、「衝突するので、移動できません」のようなメッセージ）を表示部に表示する。また、同時に図示せぬスピーカからビープ音が発せられる。
【００３８】
ステップＳ９において、ステップＳ８における衝突判定部１５の衝突判定結果が「衝突発生」であると判定された場合、ステップＳ１４に進む。ステップＳ１４において、仮想空間管理部１１は、衝突発生の情報を通信制御部１２に出力し、通信制御部１２は、衝突判定結果をネットワーク２を介してユーザ端末３−１に出力する。ユーザ端末３−１においては、通信制御部３２が、衝突判定結果を受け付け、仮想空間管理部３１に出力する。このとき、ステップＳ１２において、衝突判定結果が「衝突発生」であると判定されるので、ステップＳ１５に進む。ステップＳ１５において、仮想空間管理部３１は、オブジェクト・アバタ管理部３５が管理する現在のアバタの位置情報を、移動する前の座標に戻す。ステップＳ１６において、仮想空間制御部３１は、ＵＩ制御部３４に衝突発生の情報を出力する。ステップＳ１７において、ＵＩ制御部３４は、オブジェクト・アバタ管理部３５で管理されている現在のアバタの位置情報に基づいて、仮想空間上のアバタの表示位置を更新する（アバタを移動する前の位置に戻して表示する）。
【００３９】
次に、ステップＳ２における衝突判定部３６の衝突判定処理の詳細について、図５のフローチャートを参照して説明する。なお、図５のステップＳ２１，Ｓ２５、およびＳ２６におけるオブジェクト・アバタ管理部３５と仮想空間管理部３１の動作を、それぞれオブジェクト・アバタ管理部１４と仮想空間管理部１１の動作と読み替えることにより、図３のステップＳ８におけるサーバ１の衝突判定部１５の衝突判定処理も説明される。
【００４０】
衝突判定部３６は、仮想空間管理部３１から移動されるアバタの移動情報が入力されると衝突判定処理を開始する。ステップＳ２１において、衝突判定部３６は、オブジェクト・アバタ管理部３５からアバタ、またはオブジェクトの位置情報を１つ取得する。ステップＳ２２において、衝突判定部３６は、ステップＳ２１において取得した位置情報が移動されるアバタの位置情報であるか否かを判定し、移動されるアバタの位置情報ではないと判定した場合、ステップＳ２３に進む。
【００４１】
ステップＳ２３において、衝突判定部３６は、移動されるアバタとステップＳ２１で取得した位置情報に対応するアバタ、またはオブジェクトが衝突するか否かを判定し、衝突しないと判定した場合、ステップＳ２４に進む。ステップＳ２４において、衝突判定部３６は、移動されるアバタと仮想空間上の全てのアバタ、およびオブジェクトとの衝突判定が行われたか否かを判定し、全ての衝突判定が行われたと判定された場合、ステップＳ２５に進む。ステップＳ２５において、衝突判定部３６は、仮想空間管理部３１に衝突判定結果として「衝突なし」と出力する。
【００４２】
ステップＳ２２において、ステップＳ２１において取得した位置情報が移動されるアバタの位置情報であると判定された場合、いま移動しようとしているアバタが、自分自身と衝突するか否か判定する必要はないので、ステップＳ２３をスキップし、ステップＳ２４に進む。ステップＳ２３において、移動されるアバタとステップＳ２１で取得した位置情報に対応するアバタ、またはオブジェクトが衝突すると判定された場合、ステップＳ２６に進む。ステップＳ２６において、衝突判定部３６は、仮想空間管理部３１に衝突判定結果として「衝突発生」を出力する。
【００４３】
ステップＳ２４において、移動されるアバタと仮想空間上の全てのアバタ、およびオブジェクトとの衝突判定が行われていないと判定された場合、次のアバタ、またはオブジェクトの位置情報を取得するためステップＳ２１に戻る。
【００４４】
ステップＳ２３の衝突判定の詳細について、図６乃至図８を参照して説明する。図６と図７に示すように、いま、仮想空間上には、アバタ１，２、およびオブジェクト１，２が存在する。これらには、図８に示すように、円形の領域が設定されている（図８には、アバタ１とオブジェクト１だけが示されているが、アバタ２とオブジェクト２にも、同様に、所定の半径の領域が設定されている）。衝突は、移動されるアバタ１の領域と、他のアバタ２、またはオブジェクト１，２の領域が重なるか否かで判定される。例えば図８に示すように、アバタ１の領域を示す円の中心をＡ、半径をＲＡとし、オブジェクト１の領域を示す円の中心をＢ、半径をＲＢとすれば、移動されるアバタ１とオブジェクト１の距離ＡＢが、アバタ１の半径ＲＡとオブジェクト１の半径ＲＢの和（ＲＡ＋ＲＢ）よりも小さい場合、衝突発生と判定され、アバタ１とオブジェクト１の距離ＡＢが、アバタ１の半径ＲＡとオブジェクト１の半径ＲＢの和（ＲＡ＋ＲＢ）よりも大きい場合、衝突は発生しないと判定される。なお、上述の説明においてはオブジェクトの領域の形状を円形としたが、オブジェクトの形状に応じて、例えば矩形としてもよい。
【００４５】
次に、図１に示した仮想空間制御システムのユーザ端末３−１に更新情報保管部３７を追加した仮想空間制御システムについて、図９を参照して説明する。更新情報保管部３７は、アバタの過去の移動情報をシーケンス番号を付加し、保管するようになされている。なお、他の各部については、図１に示した仮想空間制御システムと同様であるので、その説明を省略する。
【００４６】
更新情報保管部３７を追加した仮想空間制御システムの動作について、図１０乃至図１２のフローチャートを参照して説明する。なお、図１０と図１２は、主にユーザ端末３−１の処理を示し、図１１は主にサーバ１の処理を示している。
【００４７】
ステップＳ３１において、ユーザは、図示せぬ表示部に表示される仮想空間上のアバタを移動する操作を行う。ＵＩ制御部３４は、ユーザの移動操作を受け付け、その移動操作に対応した移動情報を仮想空間管理部３１に出力する。ステップＳ３２において、仮想空間管理部３１は、衝突判定部３６に移動情報を出力し、衝突判定を行わせる。衝突判定部３６は、移動情報とオブジェクト・アバタ管理部３５から入力される現在のオブジェクト、およびアバタの位置情報に基づいて、移動されるアバタと、他のアバタまたはオブジェクトが衝突するか否かを判定し、その判定結果を仮想空間管理部３１に出力する。ステップＳ３３において、仮想空間管理部３１は、入力された衝突判定結果が「衝突なし」と判定されたである場合、ステップＳ３４に進む。
【００４８】
ステップＳ３４において、仮想空間管理部３１は、オブジェクト・アバタ管理部３５で管理されるアバタの位置情報を移動情報に含まれる移動先の位置の座標に更新する。ステップＳ３５において、更新情報保管部３７は、仮想空間管理部３１の制御により、移動情報にシーケンス番号を付加して保管する。ステップＳ３６において、仮想空間管理部３１は、衝突判定結果をＵＩ制御部３４に出力する。ステップＳ３７において、ＵＩ制御部３４は、オブジェクト・アバタ管理部３５で管理されているアバタの位置情報に基づいて、仮想空間上のアバタの表示位置を更新する。ステップＳ３８において、仮想空間管理部３１は、移動情報を通信制御部３２に出力し、通信制御部３２は、移動情報をネットワーク２を介して、サーバ１に出力する。サーバ１においては、通信制御部１２が移動情報を受け付け、仮想空間管理部１１に出力する。
【００４９】
ステップＳ３９において、仮想空間管理部１１は、移動情報を衝突判定部１５に出力し、衝突判定を行わせる。衝突判定部１５は、移動情報とオブジェクト・アバタ管理部１４から入力される現在のオブジェクト、およびアバタの位置情報に基づいて、衝突が発生するか否かを判定し、判定結果を仮想空間管理部１１に出力する。ステップＳ４０において、仮想空間管理部１１は、入力された衝突判定結果が「衝突なし」であると判定された場合、ステップＳ４１に進む。ステップＳ４１において、仮想空間管理部１１は、オブジェクト・アバタ管理部１４で管理されるアバタの位置情報を移動情報に含まれる移動先の位置の座標に更新する。ステップＳ４２において、仮想空間管理部１１は、衝突判定結果と更新されたアバタの位置情報を通信制御部１２に出力し、通信制御部１２は、衝突判定結果と更新されたアバタの位置情報をネットワーク２を介してユーザ端末３−１に出力する。ユーザ端末３−１においては、通信制御部３２が、衝突判定結果と更新されたアバタの位置情報を受け付け、仮想空間管理部３１に出力する。
【００５０】
ステップＳ４３において、サーバ１から入力された衝突判定結果が「衝突なし」であると判定された場合、ステップＳ４４に進む。ステップＳ４４において、仮想空間管理部３１は、入力された衝突判定結果に対応する移動情報を更新情報保管部３７から削除する。
【００５１】
ステップＳ３３において、衝突判定結果が「衝突発生」であると判定された場合、ステップＳ４５に進む。ステップＳ４５において、衝突発生の情報がＵＩ制御部３４に出力され、アバタは移動されず、ＵＩ制御部３４は、衝突発生の情報を表示部に表示する。また、同時に図示せぬスピーカからビープ音が発せられる。
【００５２】
ステップＳ４０において、衝突判定部１５が、移動されるアバタと他のアバタ、またはオブジェクトが衝突すると判定した場合、ステップＳ４６に進む。ステップＳ４６において、仮想空間管理部１１は、衝突判定結果として「衝突発生」を通信制御部１２に出力し、通信制御部１２は、衝突判定結果をネットワーク２を介してユーザ端末３−１に出力する。ユーザ端末３−１においては、通信制御部３２が、衝突判定結果を受け付け、仮想空間管理部３１に出力する。
【００５３】
このとき、ステップＳ４３においては、サーバ１から入力された衝突判定結果が「衝突発生」であると判定されるので、ステップＳ４７に進む。ステップＳ４７において、仮想空間管理部３１は、サーバ１から入力された衝突判定結果に対応する移動情報が更新情報保管部３７に存在するか否かを判定し、対応する移動情報が存在しない場合、処理を終了し、対応する移動情報が存在する場合、ステップＳ４８に進む。ステップＳ４８において、仮想空間管理部３１は、更新情報保管部３７からＵＩ制御部３４に、サーバ１から入力された衝突判定結果に対応する移動情報から最新のシーケンス番号を持つ移動情報までを出力する（アバタが移動した後、その衝突判定結果がネットワーク２を介して返ってくるまでに期間がかかるので、その間に、アバタがさらに移動すると、その移動に伴う情報が、更新情報保管部３７に保管されている）。
【００５４】
ステップＳ４９において、ＵＩ制御部３４は、入力された移動情報を逆時系列順に用いて画面表示を更新する（アバタを移動軌跡に沿って後退表示する）。ステップＳ５０において、仮想空間管理部３１は、ＵＩ制御部３４に出力した移動情報を更新情報保管部３７から削除する。ステップＳ５１において、仮想空間管理部３１は、オブジェクト・アバタ管理部３５で管理される位置情報を移動前の値に更新する（移動前の値に戻す）。
【００５５】
次に、図９に示した仮想空間制御システムと同様の構成であり、ユーザ端末３−１の衝突判定部３６に衝突予測の機能を付加した仮想空間制御システムについて説明する。この場合、衝突判定部３６は、仮想空間管理部３１から入力される移動情報とオブジェクト・アバタ管理部３５が管理するオブジェクト、およびアバタの位置情報に基づいて衝突判定を行う。また、衝突判定部３６は、移動されるアバタの移動情報と位置情報から予想移動位置を計算し、オブジェクト・アバタ管理部３５が管理するオブジェクト、および他のアバタの予想移動位置と比較して衝突する可能性があるか否かを判定する。
【００５６】
ユーザ端末３−１は、アバタの予想移動位置を移動情報とともにサーバ１に出力し、サーバ１は、入力された予想移動位置をユーザ端末３−２，３−３に出力する。なお、衝突判定部３６以外の各部は、図９に示した仮想空間制御システムと同様であるので、その説明を省略する。ユーザ端末３−２，３−３は、ユーザ端末３−１と同様であるので、その説明を省略する。
【００５７】
オブジェクト・アバタ管理部３５で管理されるオブジェクトとアバタ、それぞれの位置情報、および予想移動位置の一例を示す。
0003562554.tif 000008
【００５８】
次に、図１３乃至図１５のフローチャートを参照して、この仮想空間管理システムの動作について説明する。なお、図１３と図１５は、主にユーザ端末３−１の処理を示し、図１４は、主にサーバ１の処理を示している。
【００５９】
ステップＳ６１において、ユーザは、図示せぬ表示部に表示される仮想空間上のアバタを移動する操作を行う。ＵＩ制御部３４は、ユーザの移動操作を受け付け、その移動操作に対応した移動情報を仮想空間管理部３１に出力する。ステップＳ６２において、仮想空間管理部３１は、衝突判定部３６に移動情報を出力し、衝突判定および衝突予測を行わせる。
【００６０】
ステップＳ６２における衝突判定部３６の衝突判定および衝突予測処理の詳細について、図１６のフローチャートを参照して説明する。仮想空間管理部３１がアバタの移動情報を衝突判定部３６に入力すると、衝突判定部３６は、衝突判定および衝突予測処理を開始する。ステップＳ９１において、衝突判定部３６は、オブジェクト・アバタ管理部３５からアバタ、またはオブジェクトの位置情報を１つ取得する。なお、この位置情報の中には、他のユーザ端末３−２，３−３のアバタの予想移動位置も含まれている。ステップＳ９２において、衝突判定部３６は、ステップＳ９１において取得した位置情報が移動されるアバタの位置情報であるか否かを判定し、移動されるアバタの位置情報ではないと判定した場合、ステップＳ９３に進む。ステップＳ９３において、衝突判定部３６は、移動されるアバタとステップＳ９１で取得した位置情報に対応するアバタ、またはオブジェクトが衝突するか否かを判定し、衝突しないと判定した場合、ステップＳ９４に進む。
【００６１】
ステップＳ９４において、衝突判定部３６は、更新情報保管部３７が管理する移動情報とオブジェクト・アバタ管理部３５が管理する現在の位置情報から次の移動位置（予想移動位置）を計算する。なお、この場合、アバタの移動量は線形であるとして計算される。例えば、現在のアバタの位置の座標をＴ０（０，０，０）、移動先の位置の座標をＴ１（１０，５，０）とした場合、予想移動位置の座標は、移動先の位置Ｔ１（１０，５，０）に、Ｔ０からＴ１への変位量［１０，５，０］を加えたＴ２（２０，１０，０）となる。
【００６２】
さらに、衝突判定部３６は、ステップＳ９１で取得した位置情報（他のアバタの予想移動位置の情報を含む）に対応するアバタまたはオブジェクトと、移動されるアバタが、同じタイミングでそれぞれの予想移動位置に移動した場合、衝突するか否かを判定し、衝突しないと判定した場合、ステップＳ９５に進む。
【００６３】
ステップＳ９５において、衝突判定部３６は、移動されるアバタと仮想空間内の全てのアバタ、およびオブジェクトとの衝突判定および衝突予測を行ったか否かを判定し、全ての衝突判定および衝突予測を行ったと判定した場合、ステップＳ９６に進む。ステップＳ９６において、衝突判定部３６は、仮想空間管理部３１に衝突判定結果として「衝突なし」と出力する。
【００６４】
ステップＳ９２において、ステップＳ９１において取得した位置情報が移動されるアバタの位置情報である（同一の位置情報である）と判定された場合、ステップＳ９３，Ｓ９４をスキップし、ステップＳ９５に進む。
【００６５】
ステップＳ９３において、移動されるアバタとステップＳ９１で取得した位置情報に対応するアバタ、またはオブジェクトが衝突すると判定された場合、ステップＳ９７に進む。ステップＳ９７において、衝突判定部３６は、仮想空間管理部３１に衝突判定結果として「衝突発生」と出力する。
【００６６】
ステップＳ９４において、移動されるアバタとステップＳ９１で取得した位置情報に対応するアバタ、またはオブジェクトが、予測移動位置において衝突すると判定された場合、ステップＳ９８に進む。ステップＳ９８において、衝突判定部３６は、仮想空間管理部３１に衝突予想結果として「衝突発生の可能性あり」と出力する。
【００６７】
ステップＳ９５において、移動されるアバタと仮想空間内の全てのアバタ、およびオブジェクトとの衝突判定が行われていないと判定された場合、次のアバタ、またはオブジェクトの位置情報を取得するためにステップＳ９１に戻る。
【００６８】
図１３の説明に戻る。ステップＳ６３において、衝突判定結果が「衝突なし」であると判定された場合、ステップＳ６４に進む。ステップＳ６４において、衝突予測の結果が「衝突発生の可能性あり」であると判定された場合、サーバ１から衝突判定結果が入力されるまで処理を保留するために、ステップＳ６５乃至Ｓ６８をスキップし、衝突予測結果が「衝突発生の可能性あり」ではない場合、ステップＳ６５に進む。
【００６９】
ステップＳ６５において、仮想空間管理部３１は、オブジェクト・アバタ管理部３５で管理されるアバタの位置情報を移動情報に含まれる移動先に位置の座標に更新する。ステップＳ６６において、更新情報保管部３７は、仮想空間管理部３１の制御により、移動情報にシーケンス番号を付加して保管する。ステップＳ６７において、仮想空間管理部３１は、衝突判定結果をＵＩ制御部３４に出力する。ステップＳ６８において、ＵＩ制御部３４は、オブジェクト・アバタ管理部３５で管理されているアバタの位置情報に基づいて、表示画面上のアバタの位置を更新する。ステップＳ６９において、仮想空間管理部３１は、移動情報（この移動情報には、予想移動位置の情報も含まれる）を通信制御部３２に出力し、通信制御部３２は、移動情報をネットワーク２を介して、サーバ１に出力する。サーバ１においては、通信制御部１２が、移動情報を受け付け、仮想空間管理部１１に出力する。
【００７０】
ステップＳ７０において、仮想空間管理部１１は、移動情報を衝突判定部１５に出力し、衝突判定を行わせる。衝突判定部１５は、移動情報とオブジェクト・アバタ管理部１４で管理される現在のオブジェクト、およびアバタの位置情報に基づいて、衝突（衝突発生の可能性ではなく、実際の衝突）が発生するか否かを判定し、衝突判定結果を仮想空間管理部１１に出力する。ステップＳ７１において、衝突判定結果が「衝突なし」であると判定された場合、ステップＳ７２に進む。ステップＳ７２において、仮想空間管理部１１は、オブジェクト・アバタ管理部１４で管理されるアバタの位置情報を更新する。ステップＳ７３において、仮想空間管理部１１は、衝突判定結果と更新されたアバタの位置情報を通信制御部１２に出力し、通信制御部１２は、衝突判定結果と更新されたアバタの位置情報をネットワーク２を介してユーザ端末３−１乃至３−３に出力する。ユーザ端末３−１においては、通信制御部３２が、衝突判定結果と更新されたアバタの位置情報を受け付け、仮想空間管理部３１に出力する。また、このとき、ユーザ端末３−２，３−３には、ユーザ端末３−１から伝送されてきた予想移動位置の情報が出力される。
【００７１】
ステップＳ７４において、サーバ１から入力された衝突判定結果が「衝突なし」であると判定された場合、ステップＳ７５に進む。ステップＳ７５において、ステップＳ６４における衝突予測の結果が、「衝突発生の可能性あり」ではないと判定された場合、ステップＳ７６に進む。ステップＳ７６において、仮想空間管理部３１は、衝突判定結果に対応する移動情報を更新情報保管部３７から削除する。この場合、ステップＳ６５で、既に移動情報は更新されているので処理を終了する。
【００７２】
ステップＳ７５において、ステップＳ６４における衝突予測の結果が「衝突発生の可能性あり」であると判定された場合、ステップＳ７７に進む。ステップＳ７７において、仮想空間管理部３１は、オブジェクト・アバタ管理部３５で管理されるアバタの位置情報を更新する。ステップＳ７８において、仮想空間管理部３１は、衝突判定結果をＵＩ制御部３４に出力する。ステップＳ７９において、ＵＩ制御部３４は、オブジェクト・アバタ管理部３５で管理されているアバタの位置情報に基づいて、表示画面上のアバタの位置を更新する。
【００７３】
ステップＳ６３において、衝突判定結果が「衝突発生」であると判定された場合、ステップＳ８０に進む。ステップＳ８０において、衝突発生の情報がＵＩ制御部３４に出力され、ＵＩ制御部３４は、衝突発生の情報を表示部に表示する。
【００７４】
ステップＳ７１において、衝突判定結果が「衝突発生」であると判定された場合、ステップＳ８１に進む。ステップＳ８１において、仮想空間管理部１１は、衝突発生の情報を通信制御部１２に出力し、通信制御部１２は、衝突発生情報をネットワーク２を介してユーザ端末３−１に出力する。ユーザ端末３−１においては、通信制御部３２が、衝突発生情報を受け付け、仮想空間管理部３１に出力する。このとき、ステップＳ７４においては、衝突判定結果が「衝突発生」であると判定されるので、ステップＳ８２に進む。
【００７５】
ステップＳ８２において、仮想空間管理部３１は、サーバ１から入力された判定結果に対応する移動情報が更新情報保管部３７に存在するか否かを判断し、対応する移動情報が存在しない場合、処理を終了し、対応する移動情報が存在する場合、ステップＳ８３に進む。ステップＳ８３において、仮想空間管理部３１は、更新情報保管部３７が保管するサーバ１から入力された衝突判定結果に対応する移動情報から最新の移動情報までをＵＩ制御部３４に出力する。ステップＳ８４において、ＵＩ制御部３４は、入力された移動情報をシーケンス番号の逆順に用いてアバタの表示位置を更新する（アバタを移動軌跡に沿って後退させる）。ステップＳ８５において、仮想空間管理部３１は、更新情報管理部３７からＵＩ制御部３４に出力した移動情報を、更新情報保管部３７から削除する。ステップＳ８６において、仮想空間管理部３１は、オブジェクト・アバタ管理部３５で管理されている位置情報を移動する前の座標に更新する（元に戻す）。
【００７６】
以上の説明のように、ユーザ端末３−１の衝突判定部３６が、衝突予測を行い、衝突発生の可能性があると判定した場合、サーバ１から衝突判定結果が入力されるまでアバタの位置の更新処理（オブジェクト・アバタ管理部３５が管理するアバタの位置情報の更新、および表示部に表示されるアバタの位置の更新）を保留するので、ユーザ端末３−１における衝突判定結果とサーバ１における衝突判定結果が異なるために生ずる修正処理（アバタを元の位置に後退させる）回数を減少させることができる。
【００７７】
なお、仮想空間には、３次元の座標が設定されており、オブジェクト、およびアバタの位置は、３次元座標で表される。図７と図１７に示すように、仮想空間の背景画像（例えば、広い室内の画像）は、遠近法を用いた２次元画像であり、他の背景画像（例えば、商店街の画像）に変更可能である。仮想空間の背景画像は、仮想空間の外部に位置する視点から仮想空間を見た画像である。図１８と図１９に示すオブジェクトや、図２０に示すアバタの２次元画像は、背景画像上に遠近法を用いて表される。すなわち、図７または図１７に示すように、視点から異なる距離にあるアバタを比較した場合、視点から遠方にあるアバタの方が小さく表示される。なお、図２０に示すように、アバタの画像としては、アバタの進行方向に対応して８種類の画像が用意されており、（図２０には、５種類の画像を示す）、適宜、所定のものが選択され、表示される。
【００７８】
上記した各種の処理はコンピュータにより行わせることができる。そのコンピュータのプログラムは、フロッピディスク、光ディスク、ハードディスクなどの記録媒体に記録し、ユーザに提供することができる。
【００７９】
【発明の効果】
本発明によれば、ユーザ端末においても、アバタの衝突判定を行うようにしたので、アバタの移動が円滑に行われるとともに、仮想空間制御システム全体の処理能力の低下を防止することができる。
【図面の簡単な説明】
【図１】本発明を適用した仮想空間制御システムの構成を示すブロック図である。
【図２】図１の仮想空間制御システムの移動処理を説明するフローチャートである。
【図３】図１の仮想空間制御システムの移動処理を説明するフローチャートである。
【図４】図２と図３のフローチャートの各ステップに対応する情報の入出力を示す図である。
【図５】図２のステップＳ３の衝突判定処理の詳細を説明するフローチャートである。
【図６】仮想空間の平面図である。
【図７】図６に対応する仮想空間の正面図である。
【図８】衝突判定処理を説明する図である。
【図９】本発明を適用した仮想空間制御システムの他の構成を示すブロック図である。
【図１０】図９の仮想空間制御システムの移動処理を説明するフローチャートである。
【図１１】図９の仮想空間制御システムの移動処理を説明するフローチャートである。
【図１２】図９の仮想空間制御システムの移動処理を説明するフローチャートである。
【図１３】図９の衝突判定部３６に衝突予測機能を付加した仮想空間制御システムの移動処理を説明するフローチャートである。
【図１４】図９の衝突判定部３６に衝突予測機能を付加した仮想空間制御システムの移動処理を説明するフローチャートである。
【図１５】図９の衝突判定部３６に衝突予測機能を付加した仮想空間制御システムの移動処理を説明するフローチャートである。
【図１６】図１３のステップＳ６３，Ｓ６４の衝突判定および衝突予測処理の詳細を説明するフローチャートである。
【図１７】仮想空間を示す図である。
【図１８】オブジェクトを示す図である。
【図１９】オブジェクトを示す図である。
【図２０】アバタを示す図である。
【図２１】従来の仮想空間制御システムの一例の構成を示す概略図である。
【図２２】仮想空間を示す図である。
【図２３】オブジェクトを示す図である。
【図２４】オブジェクトを示す図である。
【図２５】従来の仮想空間制御システムの一例の構成を示すブロック図である。
【図２６】図２５の仮想空間制御システムの移動処理を説明するフローチャートである。
【図２７】図２５のフローチャートの各ステップに対応する情報の入出力を示す図である。
【符号の説明】
１  サーバ
２  ネットワーク
３  ユーザ端末
１１  仮想空間管理部
１２  通信制御部
１３  仮想空間情報格納部
１４  オブジェクト・アバタ管理部
１５  衝突判定部
３１  仮想空間管理部
３２  通信制御部
３３  仮想空間情報格納部
３４  ＵＩ制御部
３５  オブジェクト・アバタ管理部
３６  衝突判定部
３７  更新情報保管部
【図１】
0003562554.tif 000009
【図２】
0003562554.tif 000010
【図３】
0003562554.tif 000011
【図４】
0003562554.tif 000012
【図５】
0003562554.tif 000013
【図６】
0003562554.tif 000014
【図７】
0003562554.tif 000015
【図８】
0003562554.tif 000016
【図９】
0003562554.tif 000017
【図１０】
0003562554.tif 000018
【図１１】
0003562554.tif 000019
【図１２】
0003562554.tif 000020
【図１３】
0003562554.tif 000021
【図１４】
0003562554.tif 000022
【図１５】
0003562554.tif 000023
【図１６】
0003562554.tif 000024
【図１７】
0003562554.tif 000025
【図１８】
0003562554.tif 000026
【図１９】
0003562554.tif 000027
【図２０】
0003562554.tif 000028
【図２１】
0003562554.tif 000029
【図２２】
0003562554.tif 000030
【図２３】
0003562554.tif 000031
【図２４】
0003562554.tif 000032
【図２５】
0003562554.tif 000033
【図２６】
0003562554.tif 000034
【図２７】
0003562554.tif 000035