(57)【要約】  【課題】  仮想物体の属性を規定するデータを複数のプロセスで共有する仮想空間共有システムにおいて、プロセス毎に設定可能な属性値を他のプロセスから参照、変更することができなかった。  【解決手段】  各プロセスで設定可能な属性値については、各プロセスが用いる共有データベースにプロセス毎の領域を設ける。さらに、属性値を変更する場合には、変更する属性値と変更内容を全プロセスに通知し、各プロセスが同様の操作をデータベースに対して行う。  【選択図】図６
2005122573.tif 000002
【特許請求の範囲】
【請求項１】
仮想空間を定義する属性のデータを複数のプロセスで共有するための情報処理方法であって、
前記属性は、前記複数のプロセスの各々に対して独立した値を設定可能な独立属性を含み、
前記独立属性のデータについては前記複数のプロセス毎のデータ領域を有する、前記属性のデータベースを生成するステップと、
前記複数のプロセスの各々において、前記データベース中のデータを操作する際には操作対象と操作内容とを特定可能な情報を送信するステップと、
前記操作対象及び操作内容に従って前記データベース中のデータを操作するステップとを有することを特徴とする情報処理方法。
【請求項２】
前記属性には、前記独立属性又は、複数のプロセスで同一の属性値を用いる統一属性の一方として選択可能な選択可能属性が含まれ、
前記データベースを生成するステップにおいて、前記選択可能属性については、予め定められた情報に基づいて前記独立属性又は前記統一属性のいずれかとして前記データベースを生成することを特徴とする請求項１記載の情報処理方法。
【請求項３】
前記データベースを生成するステップにおいて、所定の属性に対する独占的アクセス権を特定のプロセスに与えるための領域を設けるステップを更に有することを特徴とする請求項１又は請求項２に記載の情報処理方法。
【請求項４】
前記データベースを生成するステップと、前記データを操作するステップとが、前記複数のプロセスの各々において行われることを特徴とする請求項１乃至請求項３のいずれか１項に記載の情報処理方法。
【請求項５】
前記操作対象と操作内容とを特定可能な情報を受信し、前記複数のプロセスの各々に配信するステップを更に有することを特徴とする請求項１乃至請求項４のいずれか１項に記載の情報処理方法。
【請求項６】
請求項１乃至請求項５のいずれか１項に記載の情報処理方法をコンピュータに実行させるプログラム。
【請求項７】
請求項６記載のプログラムを格納したコンピュータ読み取り可能な記録媒体。
【請求項８】
仮想物体を定義する属性のデータを複数の情報処理装置で共有するための情報処理システムであって、
前記属性は、前記複数のプロセスの各々に対して独立した値を設定可能な独立属性を含み、
前記独立属性のデータについては前記複数のプロセス毎のデータ領域を有する、前記属性のデータベースを生成する手段と、
前記データベース中のデータを操作する際、操作対象と操作内容とを特定可能な情報を送信する手段と、
前記操作対象及び操作内容に従って前記データベース中のデータを操作する手段とを有することを特徴とする情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィクス（ＣＧ：Computer Graphics）で用いる仮想空間のデータを複数の端末間で共有する技術に関する。
【背景技術】
【０００２】
従来より、仮想空間及び仮想空間中の物体を表すモデル情報や属性情報に基づいて、仮想空間の投影画像を生成するコンピュータグラフィックス技術が知られている。そして、コンピュータ技術の進歩や低価格化により、今やさまざまな分野でコンピュータグラフィックス技術が利用されている。
【０００３】
また、コンピュータネットワークが広く利用されるに従い、複数のコンピュータ端末により情報を共有して作業を行うことも一般的に行われている。
【０００４】
このような背景から、コンピュータグラフィックス技術の分野においても、同一仮想空間情報を共用することにより異なるコンピュータ端末間で同一の３次元仮想空間を共有するシステムが実現されている（例えば非特許文献１参照）。このようなシステムの応用例としては遠隔会議システム、ネットワーク型対戦ゲーム、協調型デザインシステムなど様々なものが考えられる。
【０００５】
【非特許文献１】G.Heshina et.al. : "Distributed Open Inventor : A Practical Approach to Distributed 3D Graphics", in Proc. of the ACM Symposium on Virtual Reality Software and Technology (VRST'99), pp.74-81, 1999.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
異なる端末間による同一の仮想空間の共有は、仮想空間を規定する情報を共有することによって実現される。しかし、従来の技術では、共有する情報は全端末に対して共通の値を設定することのみが許されており、その情報を使用する端末に応じて異なる値を設定することはできなかった。
【０００７】
一方、仮想空間を規定する情報の属性の一部または全部を端末間で共有せず、各端末が独自に有するデータをその属性に適用するように制御することも可能であったが、各端末が有する非共有のデータに他の端末からアクセスできないという問題があった。
【０００８】
さらに、非特許文献１に記載の技術では、データの共有状態と非共有状態を切り換えるために、仮想空間を規定する階層的なデータ構造を変更しなければならなかった。
【０００９】
本発明は上記の課題に鑑みてなされたものであり、その主な目的は、仮想空間データを複数のクライアントで共有する仮想空間共有システムにおいて、クライアント毎に独立した値を割り当て可能な属性データに複数のクライアントからアクセス可能とすることにある。
【００１０】
また、本発明の別の目的は、仮想空間データのある属性について、複数のクライアントで共通した値を用いるか、クライアント毎の値を用いるかを容易に切り換え可能とすることにある。
【００１１】
さらに、本発明の別の目的は、属性データに対する参照や変更を行う権限を特定のクライアントのみに制限するなど、属性データに対する権限設定を容易に行えるようにすることにある。
【課題を解決するための手段】
【００１２】
上述の目的は、仮想物体を定義する属性のデータを複数のプロセスで共有するための情報処理方法であって、属性は、複数のプロセスの各々に対して独立した値を設定可能な独立属性を含み、独立属性のデータについては複数のプロセス毎のデータ領域を有する、属性のデータベースを生成するステップと、複数のプロセスの各々において、データベース中のデータを操作する際には操作対象と操作内容とを特定可能な情報を送信するステップと、操作対象及び操作内容に従ってデータベース中のデータを操作するステップとを有することを特徴とする情報処理方法によって達成される。
【００１３】
また、上述の目的は、仮想物体を定義する属性のデータを複数の情報処理装置で共有するための情報処理システムであって、属性は、複数のプロセスの各々に対して独立した値を設定可能な独立属性を含み、独立属性のデータについては複数のプロセス毎のデータ領域を有する、属性のデータベースを生成する手段と、データベース中のデータを操作する際、操作対象と操作内容とを特定可能な情報を送信する手段と、操作対象及び操作内容に従ってデータベース中のデータを操作する手段とを有することを特徴とする情報処理システムによっても達成される。
【００１４】
また、上述の目的は、本発明の情報処理方法をコンピュータ装置に実行させるプログラム又は当該プログラムを格納したコンピュータ読み取り可能な記録媒体によっても達成される。
【発明の効果】
【００１５】
本発明によれば、共有仮想空間データに関して、端末毎に設定される属性データに、複数の端末がアクセス可能となる。
さらに、属性値として複数のクライアントで共通した値を用いるか、クライアント毎の値を用いるかを容易に切り換えることが可能となる。
加えて、共有データに対するアクセス権限を容易に設定可能になる。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面を参照して本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の説明では属性の設定値を「属性値」と記述する場合がある。
【００１７】
●＜第１の実施形態＞
本実施形態では、仮想空間中のＣＧオブジェクトの投影画像を表示するか否か（生成するか否か）を決定する「可視属性」に関して、端末毎の設定値を共有する例を示す。
【００１８】
本実施形態の情報処理装置から構成される仮想空間共有システムの全体的な構成を模式的に図１に示す。システムには１つのサーバプロセス１０１（以下、「サーバ」と略す）と、複数のクライアントプロセス１０３（以下、「クライアント」と略す）があり、ネットワーク１０２を介してデータを交換する。それぞれのクライアントは仮想空間の属性を記述する共通のデータベースを保持する。なお、本実施形態では、ネットワーク１０２はイーサネット（登録商標）を用いて構築したＬＡＮである。ただし、ネットワークは他の任意の形態であって良い。
【００１９】
ここで、以下の説明で用いる「データベース操作」という用語について説明する。共有データベースの「操作」とは、共有データベースを保持する任意のクライアントプロセスにおいて、データベースの内容を書き換える処理のことを差す。データベース操作は「操作指令」と「操作実行」の２段階に分かれる。操作指令はデータベースの更新要求であり、実際の書き換えは行われない。そして、書き換えは、操作実行の段階で行われる。本実施形態の以下の説明では「ユーザによる対話デバイスの操作」などのように、操作対象として共有データベースでないものを明示した場合を除き、「操作」とは「データベース操作」のことを意味するものとする。
【００２０】
なお、操作指令はユーザが発生させることもあれば、プロセスが動作の過程で発生することもある。前者の例としては、ユーザがマウスなどの対話デバイスを操作して、仮想オブジェクト（ＣＧオブジェクト）を移動させた際に発生する操作指令等が挙げられる。一方、後者の例としては、シューティングゲーム・システムにおいて、ゲームプログラムが敵キャラクタを移動・回転させた際に発生する操作指令等が挙げられる。
【００２１】
さて、図２はデータベースを更新するための基本的な情報の流れを示すものである。図２で、Ａ，Ｂ，Ｃ，Ｄ（２０１〜２０４）はクライアント、Ｘ２０５はサーバである。いま、クライアントＡ２０１が共有データベース（本実施形態ではシーンデータベース）操作指令を行ったとする。操作指令の内容はネットワーク（図示せず）経由でサーバＸ２０５に送信される（矢印１）。サーバＸ２０５は、クライアントＡ２０１から送信された操作指令を、送信元であるクライアントＡ２０１を含むすべてのクライアントＡ〜Ｄ（２０１〜２０４）に配信する（矢印２）。このように、サーバＸ２０５が受信した操作指令を全クライアントに配信することによって、あるクライアントが発行した操作指令の内容を、全クライアントが知ることができる。
【００２２】
次に、クライアントまたはサーバプロセスを稼働可能な、本実施形態に係る情報処理装置のハードウェア構成例を図３に示す。情報処理装置３００は、プログラムを実行することにより装置全体の動作を制御するＣＰＵ３０１、ＣＰＵ３０１が実行するプログラムやデータを格納する、ＲＯＭやＲＡＭから構成されるメモリ３０２、装置内の各構成モジュール間のデータ転送を司るバス３０３、バス３０３と各種装置とのインタフェース３０４、ネットワークインタフェースや、シリアルインタフェースとモデムとの組み合わせなどから構成される、外部装置と通信を行うための通信部３０５、ＣＰＵ３０１が実行する各種プログラムやデータを格納する外部記憶装置３０６、ユーザが本情報処理装置３００に対して指示を与えるためのユーザインタフェースとしてのキーボード３０７及びマウス３０８、各種表示を行う表示部３０９及び、ネットワークインタフェースやシリアルインタフェース等、他の装置を直接又は間接的に接続するための入出力部３１０とを有する。このような情報処理装置はパーソナルコンピュータとして一般に入手又は組立可能な汎用コンピュータによって実現可能である。
【００２３】
＜クライアント処理＞
次に、クライアント、サーバそれぞれの処理を詳しく説明する。
図４は、クライアントの処理の全体的な流れである。クライアントが起動されると、ステップＳ４０１にて仮想空間を記述するシーン記述ファイルを外部記憶装置３０６（図３）より読み込み、メモリ３０２（図３）上にシーンデータベースを構築する。本実施形態においては各クライアントが共通のデータベースを個々に保持するため、各クライアントが保持するデータベースの内容を統一する必要があり、ステップＳ４０１でロードするファイルは全クライアントで同一内容を有する。シーン記述ファイルの内容、及びメモリ３０２上に構築するシーンデータベースの内容については後述する。
【００２４】
次に、サーバとのネットワーク接続を確立する（ステップＳ４０２）。このとき、サーバから各クライアントを識別するためのクライアントＩＤが付与される。クライアントＩＤは固有情報であり、その後クライアントが発行する情報にこのクライアントＩＤを付与することにより、情報の発信元が識別できる。なお、本実施形態において、クライアントとサーバ間のデータ交換は、ＴＣＰ／ＩＰプロトコルを用いた１対１のソケット通信にて行う。したがって、サーバは少なくともクライアントの数だけのソケット通信路を持つことになる。
【００２５】
続いて、ステップＳ４０３でプロセスを分岐し、操作指令を処理するための操作処理プロセス（ステップＳ４０４）及びサーバから受信するイベントを処理するための受信イベント処理プロセス（ステップＳ４０６）を起動する。なお、図４には図示していないが、シーンデータベースを参照して、仮想空間のＣＧ画像（仮想物体の投影画像）を生成するプロセスも起動する。投影画像生成処理は、ＣＧ画像生成方法として公知であるので、その詳細についての説明は省略する。また、操作処理及び受信イベント処理については、後に詳しく説明する。操作処理及び受信イベント処理はそれぞれステップＳ４０５及びステップＳ４０７でプロセスの終了指示があったかどうか判定され、終了指示がなければステップＳ４０４及びステップＳ４０６に戻って操作指令及び受信イベントを継続して処理する。一方、終了指示があればステップＳ４０８でプロセスを統合し、サーバとのネットワーク接続を切断（ステップＳ４０９）した上で、すべての処理を終了する。
【００２６】
＜シーン記述ファイルの構成＞
次に、本実施形態でクライアントがステップＳ４０１で読み込む、シーン記述ファイルの構成例について説明する。
図５はＣＧオブジェクト数がｍのシーン記述ファイルの構成例を模式的に示したものである。各ＣＧオブジェクトの属性は、スタートデリミタ及びエンドデリミタで囲まれたフィールドに記述される。図５で、１番目、２番目、ｍ番目のオブジェクトのスタートデリミタはそれぞれ５０１、５０６、５０９で示されている。一方、それぞれのエンドデリミタは５０５、５０８、５１１である。オブジェクトの属性は、５０２〜５０４のように、各属性を識別するための識別子及び属性値の組で記述される。各ＣＧオブジェクトの可視属性も、可視属性の識別子とその値によって記述されている。なお、図５には示していないが、ファイルの種類（シーン記述ファイル）や、含まれるＣＧオブジェクトの数などの情報が含まれるファイルヘッダや、ファイルの終わりを意味するＥＯＦデータなどが実際には含まれてもよい。
【００２７】
＜共有データベースの構成＞
図６に、クライアントがステップＳ４０１において図５に示すシーン記述ファイルを読み込み、そこからメモリ上に構築する共有データベースの構造例を示す。クライアントは、例えば予め設定された情報に基づいて、各オブジェクトが有するｎの属性を、クライアント毎に値を設定可能な属性（以下、「独立属性」と呼ぶ）と、全クライアントで値を共有する属性（以下、「統一属性」と呼ぶ）とに識別してデータベースを構築する。
【００２８】
例えば、オブジェクト１が有する属性のうち、可視属性が独立属性、不透明属性が統一属性であるとすると、図６に示すように、可視属性については本実施形態の仮想空間共有システムで予め定められたクライアント数の最大値（Ｎ）分の領域（６０１〜６０４）を、不透明属性については１つの領域（６０５）を有するデータベースを構築する。
【００２９】
なお、独立属性における各クライアントの属性初期値はどのように決定しても良いが、例えばシーン記述ファイルで記載されている属性値を全クライアントに対する属性初期値とする方法や、上述した、属性の種別を表す情報とともに予めクライアント毎の初期値を設定しておき、その設定値を用いる方法等を用いることが可能である。
【００３０】
このようにして、シーン記述ファイルに含まれる全てのオブジェクトの、全ての属性についてのデータベースを構築する。なお、言うまでもないが、各オブジェクトが必ず独立属性と統一属性の両方を有する必要はなく、いずれか一方の種類の属性のみを有しても良い。
【００３１】
＜操作処理＞
続いて、ステップＳ４０４の操作処理について図７を参照して詳しく説明する。初めに、ステップＳ７０１にて操作指令の内容を入力する。操作指令の入力方法については、後述する。
【００３２】
次に、ステップＳ７０１で入力した操作の内容に基づいて、イベントデータを生成する（ステップＳ７０２）。そして、生成したイベントデータをステップＳ７０３でサーバに向けて発信する。
【００３３】
図８は、クライアントからサーバに対して、或いはサーバからクライアントに対して発行されるイベントのデータ構造を示したものである。イベントのデータは２つのフィールドから構成される。
【００３４】
エントリＩＤ８０１は、各クライアントで構築し、保有する共有データベースに含まれる各エントリ（データ）を一意に識別するための番号で、データベースを構築する際にクライアントによって割り当てられる。例えば、図６のようなデータベースを構築した場合、最初の領域６０１から順に１、２、３、．．．のように割り当てる。従って、エントリＩＤ８０１の値が「３」であれば、クライアント３の可視属性値に対する操作であることが特定できる。
【００３５】
操作内容８０２は、操作指令の具体的内容であり、例えば可視属性を設定する操作であれば、表示又は非表示を表す属性値である。
【００３６】
なお、イベントデータは受信したクライアントが共有データベースのどのデータに対する操作であるのか、操作内容（データの値）は何かが特定可能であれば、図８に示した構成に限らず任意の構成を有しうる。
【００３７】
図９は、本実施形態におけるシステムのクライアント（例えばクライアント＃１）でなされる画面表示例を示したものである。表示ウィンドウ９０１中の３次元空間表示部９０２に、ＣＧオブジェクトである３次元仮想物体９０３及び９０４の投影画像が表示されている。マウスカーソル９０５はマウス（図３の３０８）の動きに連動して位置が変化する。
【００３８】
３次元表示部９０２の下部には、特定のＣＧオブジェクトを選択するためのオブジェクト選択部９０６が設けられている。オブジェクト選択部９０６には、オブジェクト番号デクリメントボタン９０７、オブジェクト番号インクリメントボタン９０８、オブジェクト番号表示部９０９がある。オブジェクト番号デクリメントボタン９０７にマウスカーソル９０５を合わせて、マウスのボタンをクリックすると、現在選択されているＣＧオブジェクトよりも１つ小さい番号のＣＧオブジェクトが選択される。反対に、オブジェクト番号インクリメントボタン９０８を用いると、１つ大きい番号のＣＧオブジェクトを選択できる。オブジェクト番号表示部９０９には、選択中のオブジェクトの番号が表示される。図９の例では、１番目のオブジェクトが選択されており、これは直方体のＣＧオブジェクト９０３に相当するとする。
【００３９】
なお、３次元表示部９０２に表示されている（可視属性が「表示」状態である）ＣＧオブジェクトの選択は、オブジェクト選択部９０６を利用せず、直接マウスカーソル９０５を選択したいＣＧオブジェクトに合わせてマウスボタンをクリックすることでも可能である。マウスによりＣＧオブジェクトを選択した場合にも、オブジェクト選択部９０６のオブジェクト番号表示部９０９には選択中のＣＧオブジェクトの番号が表示される。
【００４０】
オブジェクト選択部９０６の下部には、選択されているＣＧオブジェクトが有する独立属性を閲覧、設定するための属性設定部９１０が設けられている。選択されているＣＧオブジェクトが複数の独立属性を有する場合には、どの独立属性を閲覧、設定するかを選択する属性設定部（図示せず）が、例えばオブジェクト選択部９０６と同様の形式で表示される。ここでは、説明及び理解を簡単にするため、選択されているＣＧオブジェクト９０３が独立属性として可視属性のみを有するものとする。
【００４１】
属性設定部９１０はクライアント単位の設定部に分割されている。図９の例では、クライアントの数が３である場合を示し、属性設定部９１０はクライアント＃１〜＃３に対応する設定部９１１〜９１３に分割されている。各クライアントの属性設定部９１１〜９１３には可視属性を設定するためのラジオボタンが設けられている。例えば、第３のクライアントに対する設定部９１３に設けられたラジオボタン９１４及び９１５は、第３のクライアントに関する選択中のオブジェクト（図９の例ではＣＧオブジェクト９０３）の可視属性をそれぞれ「表示」及び「非表示」に設定するためのものである。
【００４２】
各クライアントに対応する設定部のラジオボタンの状態は現在の可視属性の設定値を示している。図９の例では直方体オブジェクト９０３に関してクライアント＃１〜３は、それぞれ表示、非表示、表示に設定されている。このときクライアント＃１では、図４のステップＳ４０３でのプロセス分岐により生成される投影画像生成処理プロセスから発行される直方体オブジェクト９０３の可視属性の利用要求に対して、クライアントプロセスが保持する共有データベースからクライアント＃１の第１オブジェクトに関する可視属性の設定値である「表示」が出力され、結果として図９に示すように直方体オブジェクト９０３の投影画像が表示される。
【００４３】
可視属性を変更する際には、オブジェクト選択部９０６又はマウスカーソル９０５を用いて、属性値を変更したいオブジェクトを選択する。このとき、そのオブジェクトに設定されている各クライアントの可視属性に対応したラジオボタンが選択表示される。
【００４４】
次に、属性設定部９１０にあるラジオボタンのうち、所望のクライアント及び所望の可視属性に対応するものにマウスカーソル９０５を合わせ、マウスのボタンでクリックして有効にする。このように、ユーザの対話的操作によって、各クライアントに関する可視属性をユーザの希望に応じて設定することができる。
【００４５】
図１０は、図９に示すような可視属性が設定されている状態において、クライアント＃２でなされる画面表示例を示す図である。クライアント＃２に対しては、第１のオブジェクト（直方体）９０３の可視属性が非表示に設定されているため、クライアント＃２における投影画像生成処理プロセスに対しては直方体オブジェクト９０３の可視属性が「非表示」と出力され、直方体オブジェクト９０３の投影画像が生成されない。
【００４６】
＜受信イベント処理＞
続いて、ステップＳ４０６（図４）の受信イベント処理について詳しく説明する。図１１は、受信イベント処理の流れを示した図である。受信イベントは、通信部３０５を介してサーバより受信し、メモリ３０２上の所定領域である受信イベントバッファに入力される。
【００４７】
ステップＳ１１０１では、受信イベントバッファを検索する。続くステップＳ１１０２で、受信イベントバッファにイベントが入力されているかどうか判定し、受信イベントがあればステップＳ１１０３に進む。一方、受信イベントが存在しないと判定されれば、受信イベント処理を終了する。受信イベントがある場合、そのイベントデータを解析し、操作指令の内容を抽出する（ステップＳ１１０３）。次に、ステップＳ１１０４でイベントに記述された操作を実行する。具体的には、指定されたエントリＩＤ８０１（図８）のデータに関して、操作内容８０２に従い設定値を変更する。
以上、クライアント側プロセスの流れを説明した。
【００４８】
＜サーバ処理＞
続いて、サーバ側プロセスの処理を図１２に示すフローチャートを用いて詳しく説明する。
サーバにおいても、クライアントと同様、通信部３０５を介して受信したクライアントからのイベントを、メモリ３０２上の所定領域である受信イベントバッファに順次格納しているものとする。
【００４９】
最初にステップＳ１２０１で、クライアントからの接続要求を受け付け、通信を確立する。このとき、通信を確立した各クライアントに、固有のクライアントＩＤを通知する。
次に、受信イベントバッファを検索し（ステップＳ１２０２）、受信イベントが存在するかどうか判定する（ステップＳ１２０３）。受信イベントがあれば、ステップＳ１２０４に進み、なければステップＳ１２０５に進む。
【００５０】
ステップＳ１２０４では、接続している各クライアントに受信イベントを配信する。ステップＳ１２０５では、ユーザからの指令（例えば、キーボード３０９のいずれかのキーを終了ボタンとして割り当て、そのキーが押下されたことをもってユーザからの終了指令とする）などによりサーバ処理を終了するかどうかを判定し、終了する場合はステップＳ１２０６に進み、終了しない場合はステップＳ１２０２に戻る。ステップＳ１２０６では、接続している各クライアントに処理を終了することを通知し、次にクライアントとの接続を終了して（ステップＳ１２０７）から処理を終了する。
【００５１】
以上説明したように、本実施形態によれば、いずれのクライアントにおいても、クライアント毎に設定可能な属性（独立属性）に対する他のクライアントの設定値を閲覧及び設定もしくは変更することが可能であり、かつ可視属性のデータはいずれのクライアントでも同一に保たれる。
【００５２】
なお、本実施形態ではＣＧオブジェクトの独立属性として、可視属性をクライアント間で共有した場合を説明したが、オブジェクトのスケール率など他の任意の属性を独立属性として共有可能である。また、共有する独立属性の数も任意の数であって良い。
【００５３】
さらに、仮想物体の属性ではなく、仮想空間を構成するシーングラフのノードの属性を共有してもよい。
なお、シーングラフとは仮想空間の構造と属性を表すためにコンピュータグラフィクスの分野で広く用いられるデータ構造である。また、ノードとは、シーングラフの構造を決定する最小の単位であり、単数または複数の属性を持つ。
【００５４】
なお、本実施形態では、説明を簡単にするため、属性として２状態のみを取りうる可視属性を例にして説明したが、不透明度のように所定範囲の連続値を取りうる属性については、ラジオボタンの代わりにスライドバーや数値を直接代入可能なテキストボックスといった、数値を設定する際に通常用いられるＧＵＩによって属性値設定部を構成すればよい。
【００５５】
●＜第２の実施形態＞
第１の実施形態では、それぞれのクライアントに対して独立して割り当てられた属性データ（独立属性の設定値）を全てのクライアントで利用可能な構成を示した。
しかしながら、第１の実施形態では、属性の種類は独立属性か統一属性のいずれかに固定されていた。本実施形態では、ＣＧオブジェクトのある属性について、属性の種類をクライアント毎に切り換え可能な構成を示す。
【００５６】
図１３は、本実施形態においてクライアントが構築する共有データベースのデータ構造のうち、ある１つの属性に関する部分を示している。
１３０１は統一属性値を保持するデータで、１３０２から１３０５には第１から第Ｎのクライアント毎に保持するデータが配置される。なお、Ｎは本実施形態の仮想空間共有システムで予め定められたクライアント数の最大値である。それぞれのクライアントに対応するデータは、独立属性値を保持するデータと「独立フラグ」と呼ぶフラグのデータから構成される。独立フラグは、ＣＧオブジェクトの投影画像生成など、この属性を利用する処理において、各クライアントが、統一属性値及び独立属性値のうち、いずれを用いるかを指定するためのものである。具体的には、独立フラグがＯＮのとき各クライアントの独立属性値を用い、ＯＦＦの場合は統一属性値を用いる。
【００５７】
例えば、図６に示したデータベースにおいて、オブジェクト１の可視属性が種別切替可能な属性であったとすると、オブジェクト１の属性データの可視属性データ部分が図１３に示すような形式となる。
【００５８】
本実施形態における、クライアント及びサーバの処理の流れは第１の実施形態と同様である。ただし、データベース操作として各クライアントの独立フラグを変更する操作が加わる。
【００５９】
図１４は第１のクライアントにおける画面の表示例で、１４０１から１４１５は、それぞれ図９の９０１から９１５と同様である。ただし、各クライアントに対応する属性設定部１４１１〜１４１３は、属性値を設定するラジオボタン１４１４、１４１５だけでなく、各クライアントが統一属性値を用いるのか、独立属性値を用いるのかを設定する（すなわち、図１３における独立フラグデータを設定する）ためのラジオボタン１４１８、１４１９も設けられている。
【００６０】
また、図１４においては、新たにラジオボタン１４１６及び１４１７を有する統一属性設定部１４２０が設けられている。なお、ここでは、第１の実施形態と同様、説明を簡単にするため、ＣＧオブジェクトが属性として可視属性のみを有するものとする。
【００６１】
統一属性設定部１４２０のラジオボタン１４１６、１４１７は、現在選択中のＣＧオブジェクト１４０３の属性である可視属性の、統一属性値を表示又は非表示に設定するためのラジオボタンである。図１４の場合は、統一属性値が不可視に設定されている。また、各クライアントに対応する属性設定部１４１１〜１４１３には、独立フラグを設定するためのラジオボタンが配置されている（例えば１４１８及び１４１９）。図１４の場合、クライアント＃１〜３の独立フラグは、それぞれＯＮ、ＯＦＦ、ＯＦＦである。
【００６２】
すなわち、クライアント＃１は、可視属性として独立属性値を用いるよう設定されており、かつ独立属性値は表示である。したがってクライアント＃１では、投影画像生成処理プロセスから発行される直方体オブジェクト１４０３の可視属性の利用要求に対して、クライアントプロセスが保持する共有データベースからクライアント＃１の第１オブジェクトに関する可視属性の設定値である「表示」が出力され、結果として図１４に示すように直方体オブジェクト１４０３の投影画像が表示される。
【００６３】
一方、図１５は図１４に示すような可視属性が設定されている状態において、クライアント＃２、＃３でなされる画面表示例を示す図である。これらのクライアントは可視属性として統一属性値を用いるように設定されており、かつ統一属性値は「非表示」である。したがって、クライアント＃２における投影画像生成処理プロセスに対しては、各クライアントの独立属性値に関係なく設定値「非表示」が出力され、結果として直方体オブジェクト１４０３の投影画像が生成されない。
【００６４】
ラジオボタン１４１６または１４１７にマウスカーソル１４０５の位置を合わせて、マウスのボタンをクリックすると、その位置のボタンが選択される。このとき、選択されたボタンに割り当てられた属性を設定するための操作指令が発生する。例えば、図１４の状態で１４１６のボタンを選択すると、ボタン１４１６が選択状態、ボタン１４１７が非選択状態となり、統一属性値を「表示」に設定する操作指令が起こる。この指令に関する情報が各クライアントの受信イベント処理にて処理されると、実際に統一属性値が可視に設定される。なお、図１４の状態から統一属性値を「表示」に変更すると、クライアント＃２〜＃３における第１のオブジェクトの可視属性は「表示」となり、「表示」の独立属性を用いるクライアント＃１とともに全てのクライアントで第１のオブジェクト１４０３の可視属性が「表示」となる。
【００６５】
各クライアントの独立フラグを設定するボタンにマウスカーソル１４０５の位置を合わせて、マウスのボタンをクリックすると、その位置のボタンが選択される。このとき、選択されたボタンに割り当てられた属性を設定するための操作指令が発生する。例えば、図１４の状態で１４１９のボタンを選択すると、ボタン１４１８が非選択状態、ボタン１４１９が選択状態となり、クライアント＃３の独立フラグをＯＮに設定する操作指令が起こる。この指令に関する情報が各クライアントの受信イベント処理にて処理されると、実際にクライアント＃３の独立フラグがＯＮに変わる。
【００６６】
図１４の状態からクライアント＃３の独立フラグをＯＮに変更すると、クライアント＃３における投影画像生成処理プロセスから発行される直方体オブジェクトの可視属性の利用要求に対して、共有データベースから独立属性値である「表示」が出力されるようになる。したがって、直方体オブジェクト１４０３は非表示状態から表示状態に変化する。
【００６７】
以上述べたように、本実施形態によれば、クライアント毎に独立して設定される属性値と、クライアントで共通の属性値のいずれを選択して利用するかを切り換えることが可能となる。
【００６８】
なお、クライアントが外部記憶装置からファイルを読み込み、データベースを構築する際、各オブジェクトの属性毎に、統一属性、独立属性又はそのいずれかを選択可能であるのかを識別する方法は、例えばデータベース記述ファイルに識別子を予め設定しておく、別途識別子とその種類とを対応付けたテーブルを設け、データベース構築時に参照する等、任意の方法を採用しうる。また属性値の初期値についても任意の方法で決定することが可能である。
【００６９】
なお、上記の説明では統一属性値が独立属性値とは別に保持・変更される。これに対して、統一属性値が独立属性値から決定されるように構成しても良い。例えば、オブジェクトの不透明度属性の値（浮動小数点数とする）であれば、統一属性値を独立属性値の平均値とすることができる。なお、統一属性値を決定するための論理あるいは算術式は任意であって、システムに予め割り当てられた固定のものであっても良いし、あるいはコールバック関数などの形式により動的に割り当てても良い。
【００７０】
上記の説明では、統一属性値が１つであることを仮定しているが、統一属性値の数は複数であっても構わない。例えば、上述の不透明度のように所定範囲の値を取りうる属性において、複数の統一属性値を予め用意しておき、その中から所望の属性値を統一属性値として選択するように構成することが可能である。
【００７１】
●＜第３の実施形態＞
第１及び第２の実施形態では、全てのクライアントが全ての共有データベース中の属性値データを参照、設定（変更）可能である。これに対して、本実施形態では、共有データへのアクセスを特定のクライアントに制限可能な構成を示す。
【００７２】
図１６は、本実施形態における共有データベースのデータ構造のうち、あるオブジェクトの１つの属性に関する部分を示している。１６０１はこの属性に関連する全ての属性値１６０２〜１６０５に対する排他的制御権を保持するクライアントのＩＤ番号データである。あるクライアントが排他的制御権を持つ属性データは、他のクライアントが変更することはできない。１６０２から１６０５はクライアント＃１〜＃Ｎに割り当てた属性データである。なお、Ｎは本実施形態の仮想空間共有システムで予め定められたクライアント数の最大値である。
【００７３】
本実施形態における、クライアント処理及びサーバ処理は基本的に第１の実施形態と同様である。ただし、データベース操作として排他的制御権を変更する操作が加わる。なお、本実施形態においても説明を簡単にするため、各ＣＧオブジェクトが１つの属性を有するものとする。
【００７４】
図１７はクライアント＃１における画面表示の例を示す図で、１７０１から１７１５は図９の９０１から９１５と同様である。図１７においては、自クライアントに排他的制御権を設定／解除するためのラジオボタン１７１７及び１７１８を有する排他的制御権設定部１７１６が新たに設けられている。
【００７５】
図１７の状態では、第１のオブジェクト１７０３の可視属性に関する排他的制御権が第１のクライアントに設定されている。このとき、共有データベースの領域１６０１には、クライアント＃１のＩＤ番号が記憶されているとする。
【００７６】
一方、図１８は図１７に対応するクライアント＃２の画面表示例である。現在選択中の第１のＣＧオブジェクト１７０３に対し、クライアント＃２は排他的制御権が設定されていないため、排他的制御権設定部１７１６に示される設定はオフである。そして、クライアント＃２は第１のオブジェクト１７０３に対する属性の排他的制御権を持たないため、可視属性設定部１７１０は表示されない。また、排他的制御権設定部１７１６の表示はなされるが、その設定を変更することはできない。クライアント＃２のユーザは、この画面表示から、オブジェクト１の属性は他のクライアントに排他的制御権が与えられていることを知ることができる。
【００７７】
クライアント＃１が排他的制御権を持つ図１７の状態でボタン１７１８にマウスカーソル１７０５を合わせ、マウスボタンをクリックすると、第１のオブジェクトに関する排他的制御権を放棄するための操作指令が発生する。その指令がサーバを経て、各クライアントの受信イベント処理で処理されると、各クライアントの共有データベースにおけるデータ領域１６０１のクライアントＩＤの値がいずれのクライアントでもない値（例えば０）に変化する。そして、クライアント＃１を含む全クライアントの表示画面は図１７の状態（ただし、ボタン１７１７及び１７１８の状態が反転し、排他的制御権がオフの状態）に切り替わる。
【００７８】
このあと、いずれかのクライアント（例えばクライアント＃２）の表示画面で、マウスカーソルをボタン１８０１に合わせ、マウスボタンをクリックすると、第１のオブジェクトに対してそのクライアントが排他的制御権を取得するための操作指令が発生する。その指令がサーバを経て、各クライアントの受信イベント処理で処理されると、共有データベースのデータ領域１６０１のクライアントＩＤの値が、クライアント＃２のＩＤ（例えば「２」）に変化する。そして、クライアント＃２の表示画面は図１７の状態に切り替わり、クライアント＃２以外のクライアント（例えばクライアント＃１）の表示画面は図１８の状態に切り替わる。
【００７９】
以上説明した通り、本実施形態によれば、ＣＧオブジェクトの属性値を共有するシステムにおいて、特定のＣＧオブジェクトの特定の属性の参照及び設定を独占的に行う権限を特定のクライアントに設定することができる。また、権限をもつクライアントが権限を放棄することで、他のクライアントが権限を得ることも可能となる。
【００８０】
なお、説明を簡単にするため、上述の説明では１つの属性を有する１つのＣＧオブジェクトに対する処理を説明したが、実際には複数のＣＧオブジェクトの各々が有する複数の属性毎に同様の排他的制御権の設定を適用することが可能である。また、独立属性のみならず、統一属性に関しても排他的制御権を設定可能である。
【００８１】
また、上述の説明では、独立属性に排他的制御権を設定する場合、全クライアントの属性データに対して有効な１つの排他的制御権を設定している。しかしながら、独立属性に排他的制御権を割り当てる場合、その排他的制御権が有効なクライアントは任意に設定可能であることは言うまでもない。例えば、上述の例において、各クライアントに対する属性データ値毎に排他的制御権を設定することができる。
【００８２】
また、上述の例では属性の参照と変更の両方に有効な排他的制御権を割り当てているが、いずれか一方又は個別に排他的制御権を設定しても良い。
【００８３】
また、排他的制御権を設定できる属性を制限することも可能である。例えば、あるクライアントは自クライアントに対応する属性のみに排他的制御権を設定しても良い。排他的制御権に関する共有データは、クライアントのＩＤ情報に替えて、排他的制御権が設定されているか否かを表すフラグでも構わない。
【００８４】
さらに、排他的制御権をクライアント毎に割り当てるのではなく、複数のクライアントに対して設定しても良い。この場合、排他的制御権に関する共有データは例えば、制御権を有するクライアントのＩＤ情報を列挙したものになる。
【００８５】
また、本実施形態における排他的制御権の設定を、第１及び第２の実施形態のすくなくとも一方と組み合わせることももちろん可能である。
【００８６】
●＜他の実施形態＞
データの共有方法は任意の方法を採用できる。例えば、上述の説明のようにクライアントとサーバ間をイーサーネット（登録商標）によるＬＡＮで接続する必然性はないし、クライアント・サーバ方式でなくともよい。また、データの同一性を保つ方法としては、前述のようにデータの変更に関する情報を通信することにより実現する方法に限らない。例えば、サーバのみにデータベースを保持しておき、ＲＰＣ（Remote Procedure Call）などの手段によりデータベースへのデータ書き込みやデータベースからのデータ読み込みを行う方式でも良い。
【００８７】
なお、上述の実施形態においては、イベントを送信したクライアントにおいても、サーバを介して受信したイベントを処理することにより操作を行っていた。しかし、イベントの送信元クライアントに限って、受信イベント処理を行う前に操作を行うように構成しても良い。
【００８８】
また、イベントに送信元クライアントＩＤを含ませることにより、送信元クライアントが自分の送信したイベントを識別して重複する処理を行わないようにすることも可能である。
【００８９】
イベントに送信元クライアントＩＤが含まれる場合、サーバにおいても全クライアントにイベントを配信するのではなく、送信元クライアントを除くクライアントにイベントを配信するようにしても良い。この場合、サーバが配信するイベントからは送信元クライアントＩＤを取り除いても良い。
【００９０】
上述の実施形態においては、１つの機器から構成される情報処理装置についてのみ説明したが、同等の機能を複数の機器から構成されるシステムによって実現しても良い。
【００９１】
尚、前述した実施形態の機能を実現するソフトウェアのプログラムを、記録媒体から直接、或いは有線／無線通信を用いて当該プログラムを実行可能なコンピュータを有するシステム又は装置に供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムを実行することによって同等の機能が達成される場合も本発明に含む。
【００９２】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータに供給、インストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明の機能処理を実現するためのコンピュータプログラム自体も本発明に含まれる。
【００９３】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００９４】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記録媒体、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ等の光／光磁気記憶媒体、不揮発性の半導体メモリなどがある。
【００９５】
有線／無線通信を用いたプログラムの供給方法としては、コンピュータネットワーク上のサーバに本発明を形成するコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイル等、クライアントコンピュータ上で本発明を形成するコンピュータプログラムとなりうるデータファイル（プログラムデータファイル）を記憶し、接続のあったクライアントコンピュータにプログラムデータファイルをダウンロードする方法などが挙げられる。この場合、プログラムデータファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに配置することも可能である。
【００９６】
つまり、本発明の機能処理をコンピュータで実現するためのプログラムデータファイルを複数のユーザに対してダウンロードさせるサーバ装置も本発明に含む。
【００９７】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件を満たしたユーザに対して暗号化を解く鍵情報を、例えばインターネットを介してホームページからダウンロードさせることによって供給し、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００９８】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００９９】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【図面の簡単な説明】
【０１００】
【図１】第１実施形態におけるデータベース共有システム全体の構成例を示すブロック図である。
【図２】第１実施形態のシステムにおけるプロセス間の基本的な情報伝達方法を模式的に示す図である。
【図３】本発明の実施形態に係る情報処理装置の構成例を示すブロック図である。
【図４】第１の実施形態におけるクライアント処理の例を示すフローチャートである。
【図５】データベースの記述ファイルフォーマット例を示す図である。
【図６】第１の実施形態における共有データベースのデータ構造例を示す図である。
【図７】図４における操作処理の詳細を示すフローチャートである。
【図８】イベントデータのデータ構成例を示す図である。
【図９】第１実施形態におけるクライアント表示画面の一例を示す図である。
【図１０】第１実施形態におけるクライアント表示画面の別の一例を示す図である。
【図１１】図４における受信イベント処理の詳細を示すフローチャートである。
【図１２】第１実施形態によるサーバ処理の例を示すフローチャートである。
【図１３】第２実施形態における共有データベースのデータ構造の一部を示す図である。
【図１４】第２実施形態におけるクライアント表示画面の一例を示す図である。
【図１５】第２実施形態におけるクライアント表示画面の他の一例を示す図である。
【図１６】第３実施形態における共有データベースのデータ構造の一部を示す図である。
【図１７】第３実施形態において、排他的制御権を持つクライアント表示画面の一例を示す図である。
【図１８】第３実施形態において、排他的制御権を持たないクライアント表示画面の一例を示す図である。
【図１】
2005122573.tif 000003
【図２】
2005122573.tif 000004
【図３】
2005122573.tif 000005
【図４】
2005122573.tif 000006
【図５】
2005122573.tif 000007
【図６】
2005122573.tif 000008
【図７】
2005122573.tif 000009
【図８】
2005122573.tif 000010
【図９】
2005122573.tif 000011
【図１０】
2005122573.tif 000012
【図１１】
2005122573.tif 000013
【図１２】
2005122573.tif 000014
【図１３】
2005122573.tif 000015
【図１４】
2005122573.tif 000016
【図１５】
2005122573.tif 000017
【図１６】
2005122573.tif 000018
【図１７】
2005122573.tif 000019
【図１８】
2005122573.tif 000020