(57)【要約】【課題】仮想空間の構造に基づいた排他的制御権の取得方法を提供することにより、操作する側に仮想空間の構造を特別に意識させることなく、必要な排他的制御権を適切に取得することを可能とする。【解決手段】ネットワークを介して接続された複数のクライアントによって複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理方法が提供される。この方法において、排他的制御権を設定するべく所望のデータアイテム（１７０１）が指示されると、複数のデータアイテムの階層構造情報に基づいて、指示されたデータアイテムよりも下位の階層に存在し、該指示されたデータアイテムに関連するデータアイテムが探索される。そして、指示されたデータアイテムと探索されたデータアイテム（１７０２）に対して排他的制御権が設定される。【選択図】  図１７
2004265081.tif 000002
【特許請求の範囲】
【請求項１】
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理方法であって、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示工程と、
前記複数のデータアイテムの階層構造情報に基づいて、前記第１指示工程で指示されたデータアイテムよりも下位の階層に存在し、該指示されたデータアイテムに関連するデータアイテムを探索する探索工程と、
前記指示されたデータアイテムと前記探索工程で探索されたデータアイテムに対して前記特定プロセスによる排他的制御権を設定する設定工程とを備えることを特徴とする情報処理方法。
【請求項２】
前記データは、仮想空間のコンピュータグラフィックスを生成する際に参照されるシーングラフデータベースであることを特徴とする請求項１記載の情報処理方法。
【請求項３】
前記設定工程は、前記指示されたデータアイテムと前記探索工程で探索された全てのデータアイテムに関して、他のプロセスによって排他的制御権が設定されていない場合に、前記特定プロセスによる排他的制御権を設定することを特徴とする請求項１に記載の情報処理方法。
【請求項４】
前記設定工程は、前記指定されたデータアイテムと前記探索工程で探索されたデータアイテムのうち、他のプロセスによって排他的制御権が設定されていないデータアイテムに対して、前記特定プロセスによる排他的制御権を設定することを特徴とする請求項１に記載の情報処理方法。
【請求項５】
排他的制御権を解放するべく所望のデータアイテムを指示する第２指示工程と、
前記第２指示工程で指示されたデータアイテムに関して前記探索工程によって関連するデータアイテムを探索し、指示されたデータアイテムと探索されたデータアイテムに対して前記特定プロセスによる排他的制御権を解放する第１解放工程とを更に備えることを特徴とする請求項１乃至４のいずれかに記載の情報処理方法。
【請求項６】
前記第２指示工程で指示されたデータアイテムに関して前記探索工程によって関連するすべてのデータアイテムを探索し、該すべてのデータアイテムと前記指示されたデータアイテムが他のプロセスによって排他的制御権が設定されていない場合に、前記特定プロセスによる排他的制御権を解放する第２解放工程とを更に備えることを特徴とする請求項１乃至４のいずれかに記載の情報処理方法。
【請求項７】
前記設定工程は、前記指示されたデータアイテムと前記探索工程で探索された全てのデータアイテムに関して他のプロセスによって排他的制御権が設定されていない場合に前記特定プロセスによる排他的制御権を設定する第１の設定モードと、前記指定されたデータアイテムと前記探索工程で探索されたデータアイテムのうち、他のプロセスによって排他的制御権が設定されていないデータアイテムに対して、前記特定プロセスによる排他的制御権を設定する第２の設定モードを有し、
前記第１及び第２の設定モードのうちの指定されたモードで排他的制御権の設定が実行されることを特徴とする請求項１に記載の情報処理方法。
【請求項８】
前記第１及び第２の設定モードのうちの所望のモードをユーザによって指定可能であることを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記第１及び第２の設定モードのうちのいずれのモードを適用するかが前記複数のデータアイテムの各々に付与されていることを特徴とする請求項７に記載の情報処理方法。
【請求項１０】
前記複数のデータアイテムの各々に対して排他的制御権の設定可能数が設定されており、
前記設定工程は、この設定可能数を限度に排他的制御権を設定することを特徴とする請求項１に記載の情報処理方法。
【請求項１１】
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理装置であって、
前記複数のデータアイテムの階層構造情報を保持する保持手段と、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示手段と、
前記保持手段に保持された階層構造情報に基づいて、前記第１指示手段で指示されたデータアイテムよりも下位の階層に存在し、該指示されたデータアイテムに関連するデータアイテムを探索する探索手段と、
前記指示されたデータアイテムと前記探索手段で探索されたデータアイテムに対して前記特定プロセスによる排他的制御権を設定する設定手段とを備えることを特徴とする情報処理装置。
【請求項１２】
請求項１乃至１０のいずれかに記載の情報処理方法をコンピュータに実行させるための制御プログラム。
【請求項１３】
請求項１乃至１０のいずれかに記載の情報処理方法をコンピュータに実行させるための制御プログラムを格納した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のプロセス間でデータを共有し操作する技術に関する。特に３次元仮想空間中の物体を記述するデータを保持するデータベースをネットワークを介して複数のプロセス間での排他制御に好適な技術に関する。
【０００２】
【従来の技術】
異なるコンピュータ端末間で３次元仮想空間を共有する技術は、遠隔会議システム、ネットワーク型対戦ゲーム、協調型デザインシステムなどを実現するために必須である。
【０００３】
このような３次元仮想空間を共有するシステムでは、各端末上で仮想空間の動画像をコンピュータグラフィクスにより描画するために仮想空間データが用いられる。このような仮想空間データを管理するための方式として以下のようなものがある。一つは、サーバ上に仮想空間データを持ち、各端末がネットワークを介してサーバ上の仮想空間データを参照し、ＣＧ画像を生成する方式である。また、別の方式として、各々の端末が仮想空間データのコピーを持ち、それを参照することによってＣＧ画像を生成する方式がある。各々の端末が仮想空間データのコピーを持つ方式の場合、あるコンピュータ端末上で仮想空間に対して何らかの操作、例えば仮想物体の移動や回転が行われた場合には、その操作に関する情報が他の端末にネットワーク経由で伝送され、各端末の持つデータベースに反映される。こうして、各コンピュータ端末におけるデータベースの同一性が保たれる。
【０００４】
しかしながら、いずれの方式においても、同一の仮想空間データに対して、各端末より同時または時間的に極めて近いタイミングで操作が行われた場合には、意図しない結果を引き起こしたり、仮想空間の整合が取れなくなる可能性がある。
【０００５】
この問題に対処するための方法として、排他的制御権という概念が知られている。これは、ある操作対象を操作しようとする端末は、あらかじめ、その操作対象を独占的に操作するための権利（排他的制御権）を取得してから操作を行うものである。排他的制御権が設定された操作対象については、排他的制御権を取得した端末以外からは操作されることがない。すなわち、同時に当該操作対象を操作することができる端末は唯一であることが保証されるため、上記の問題点については解消される。
【０００６】
【発明が解決しようとする課題】
一般に３次元空間中に配置される物体は階層的な相互関係を持っている。ある物体に対して移動させるなどの操作を行うと、その操作はその物体に属するすべての物体に対して波及する。例えば、物体の上に何か別の物体が載っているような場合、下の物体を移動させると、通常は上に載っている物体もそれに合わせて、位置を変化させる。この物体間の階層的な相互関係を適切に表現するため、仮想空間データはＮ分木などの木構造、あるいは非再帰有向グラフなどのデータ構造によって記述されるのが一般的である。
【０００７】
しかしながら、従来は、仮想空間の階層関係とは無関係に、個々の物体に対して排他的制御権が設定されていた。そのため、物体の操作を行うためには、あらかじめ物体が属する仮想空間の階層関係を知った上で、当該物体に関連する他の物体についても個別に排他的制御権を取得する必要があり、大変煩わしいものであったため、改善が求められていた。
【０００８】
本発明は、上記の課題に鑑みてなされたものであり、仮想空間の階層構造に基づいた排他的制御権の取得方法を提供することにより、操作する側に仮想空間の構造を特別に意識させることなく、必要な排他的制御権を適切に取得できるようにすることを目的とする。
【０００９】
【課題を解決するための手段】
上記の目的を達成するための本発明による情報処理方法は、
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理方法であって、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示工程と、
前記複数のデータアイテムの階層構造情報に基づいて、前記第１指示工程で指示されたデータアイテムよりも下位の階層に存在し、該指示されたデータアイテムに関連するデータアイテムを探索する探索工程と、
前記指示されたデータアイテムと前記探索工程で探索されたデータアイテムに対して前記特定プロセスによる排他的制御権を設定する設定工程とを備える。
【００１０】
また、上記の目的を達成するための本発明による情報処理装置は以下の構成を備える。すなわち、
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理装置であって、
前記複数のデータアイテムの階層構造情報を保持する保持手段と、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示手段と、
前記保持手段に保持された階層構造情報に基づいて、前記第１指示手段で指示されたデータアイテムよりも下位の階層に存在し、該指示されたデータアイテムに関連するデータアイテムを探索する探索手段と、
前記指示されたデータアイテムと前記探索手段で探索されたデータアイテムに対して前記特定プロセスによる排他的制御権を設定する設定手段とを備える。
【００１１】
【発明の実施の形態】
以下、添付の図面を参照して本発明の好適な実施形態を説明する。
【００１２】
〔第１実施形態〕
第１実施形態では、本願発明による情報処理方法を、仮想空間の構造と属性を記述するシーンデータベースを複数の端末で共有する仮想空間共有システムに適用した実現形態について説明する。
【００１３】
本実施形態の仮想空間共有システムの全体的な構成を図１に示す。システムには１つのサーバプロセス１０１（以下、「サーバ」と略す）と、複数のクライアントプロセス１０３（以下、「クライアント」と略す）があり、情報伝達媒体としてのネットワーク１０２を介してデータを交換する。それぞれのクライアントは共通の仮想空間の構造と属性を記述するシーンデータベースを保持する。なお、本実施形態では、ネットワーク１０２はイーサネット（登録商標）上に構築したＬＡＮである。また、以下の説明では、サーバとクライアントとを総称して「ホスト」と呼ぶことがある。なお、情報伝達媒体は有線でも無線でもかまわない。
【００１４】
ここで、以下の説明で用いる「データベース操作」という用語について説明しておく。データベースの「操作」とは、共有データベースを持つ任意のプロセスにおけるデータベースの内容を書き換える処理のことを差す。このデータベース操作は「操作指令」と「操作実行」の２段階に分かれる。操作指令はデータベースの更新要求であり、実際の書き換えは行われない。データベースに対する実際の書き換えは、操作実行の段階で行われる。以下の説明では特に断らない限り、単に「操作」と記述すれば「データベース操作」のことを指すものとする。操作対象がデータベース以外の場合は、「ユーザによる対話デバイスの操作」などのように操作対象を明示するものとする。
【００１５】
なお、操作指令はユーザが発生させることもあれば、プロセスが動作する過程で発生することもある。前者の例としては、ユーザがマウスなどの対話デバイスを操作して、仮想オブジェクトを移動させた際に操作指令が発生されることが挙げられる。一方、後者の例としては、シューティングゲーム・システムにおいて、ゲームプログラムが敵キャラクタをアルゴリズム的に移動・回転させた際に操作指令が発生されること等が挙げられる。
【００１６】
さて、図２はデータベースを更新するための基本的な情報の流れを示すものである。図２で、Ａ，Ｂ，Ｃ，Ｄ（２０１〜２０４）はクライアント、Ｘ（２０５）はサーバである。いま、クライアントＡ（２０１）がシーンデータベースの操作指令を行ったとする。操作指令の内容はネットワーク経由でサーバに送信される（図２で（１）の矢印の過程）。サーバは、この操作指令を受けてクライアントＡ（２０１）から送信されたデータを、接続されているすべてのクライアントに配信する（図２で（２）の矢印の過程）。このような過程を経ることによって、非操作者のクライアントＢ（２０２）、Ｃ（２０３）、Ｄ（２０４）も操作指令の内容を知ることができる。
【００１７】
次に、クライアントまたはサーバプロセスが動作する端末の構成を図３に示す。図３において、３０１はＣＰＵであり、端末全体の動作を制御する。３０２はメモリであり、ＣＰＵ３０１の動作に用いるプログラムやデータを格納する。３０３はバスであり、各構成モジュール間のデータ転送を司る。３０４はバス３０３と各種装置とのインタフェースである。３０５はネットワークと接続するための通信部、３０６はＣＰＵ３０１に読み込むプログラムやデータを格納する外部記憶装置、３０７および３０８はプログラムを起動したり、プログラムの動作を指定するための入力装置を構成するキーボードおよびマウス、３０９はプロセスの動作結果を表示するための表示部である。
【００１８】
本実施形態のシステムでは、ある操作指令に対する操作実行をサーバからのイベントの配信を待って行うことで、各クライアントのデータベースの更新タイミングを同期させる。図４は、時間の進行に沿った処理手順を模式的に示したものである。図４で、「操作者」は操作指令を行ったクライアント、「非操作者」は操作者以外のクライアントを指す。処理の進行は以下の通りである。
【００１９】
まず、手順Ｔ４０１で操作者クライアントがデータベースの操作指令を発する。この時点では、操作者クライアントのデータベースは更新されない。次に手順Ｔ４０２にて、Ｔ４０１の操作内容を示すイベントが生成され、Ｔ４０３でこのイベントがサーバに送信される。サーバは手順Ｔ４０４でイベントを受信すると、Ｔ４０５で当該サーバとの接続が確立しているすべてのクライアントに向けてイベントを送信する（接続の確立について図７のステップＳ７０２で後述する）。サーバより発行されたイベントを操作者クライアントが手順Ｔ４０６で受信し、その内容を分析して（Ｔ４０７）、データベースを書き換える（操作実行、Ｔ４０８）。イベントの受信から操作実行までの手順は、非操作者クライアントでも同様である（手順Ｔ４０９〜Ｔ４１１）。図４に示したように、本実施形態のデータベース操作では、操作指令（Ｔ４０１）から操作実行（Ｔ４０８）までタイムラグがある。しかし、ネットワーク上の情報転送の条件が同様であれば、操作者・非操作者クライアントともほぼ同時刻にデータベースが更新され、仮想空間の画像がクライアント間で同期することが期待できる。
【００２０】
図５は、クライアントからサーバに対して、或いはサーバからクライアントに対して発行されるイベントの構成を示したものである。イベントのデータは複数のフィールドから構成される。クライアントＩＤ５０１は、各クライアントを一意に識別するための番号で、クライアントがサーバとネットワーク接続を確立する際にサーバより割り当てられたものである（図７のステップＳ７０２により後述する）。操作ＩＤ５０２は操作を一意に識別するための番号で、各クライアントごとに操作指令を行った時点で割り当てられる。このクライアントＩＤ５０１および操作ＩＤ５０２の組を用いることにより、当該システム内部で発生したすべての操作指令を一意に特定することが可能である。
【００２１】
エントリＩＤ５０３は、データベースの各エントリを一意に識別するための番号で、データをファイルからロードした際に割り当てられる。操作内容５０４は、操作指令の具体的内容であり、例えばＣＧオブジェクトのＸ座標をある値に設定する操作であれば、Ｘ座標属性を識別する番号とＸ座標の設定値の組で表される。
【００２２】
なお、操作イベントを受信した時点で先に発行された別の操作イベントに対応した操作を実行中の場合には、後に受信した操作イベントは操作キューに保持され、先の操作実行が終了した後に順次実行される。図６は操作キューを示す図である。操作キューは、イベントの受信または実行処理を待機している操作指令のリストである。ある時点で待機状態にある操作指令がｍ個あるとすると、操作キューは図６のように操作指令に関するｍ個の情報（キューアイテム）を指令の発生順に並べたものとなる。
【００２３】
次に、クライアント、サーバのそれぞれについて、データベース操作の処理の流れを詳しく説明する。
【００２４】
図７は、クライアントの処理におけるデータベース操作の全体的な流れを示すフローチャートである。クライアントが起動されると、ステップＳ７０１にて仮想空間を記述するファイルを外部記憶装置３０６（図３）より読み込み、メモリ３０２（図３）上にシーングラフデータベースを構築する。クライアント間でのデータの同一性を維持するため、ここでロードするファイルはクライアント間で同じ内容を持つとする。次に、サーバとのネットワーク接続を確立する（ステップＳ７０２）。このとき、サーバから各クライアントを識別するためのクライアントＩＤ５０１（図５）が付与される。なお、クライアントとサーバ間のデータ交換は、ＴＣＰ／ＩＰプロトコルを用いた１対１のソケット通信にて行う。したがって、サーバは少なくともクライアントの数だけのソケット通信路を持つことになる。
【００２５】
続いて、ステップＳ７０３でプロセスを分岐し、操作指令を処理するための操作処理（ステップＳ７０４）およびサーバから受信するイベントを処理するための受信イベント処理（ステップＳ７０６）を起動する。なお、図７には図示していないが、シーングラフデータベースを参照して、仮想空間のＣＧ画像を生成するプロセスも起動する。この処理は、公知のＣＧ画像生成方法と同様であるのでその詳細な説明は省略する。また、操作処理および受信イベント処理については、後に詳しく説明する。
【００２６】
操作処理および受信イベント処理について、それぞれステップＳ７０５およびステップＳ７０７でプロセスの終了する指示があったかどうか判定され、終了指示がなければステップＳ７０４およびステップＳ７０６に戻って操作指令および受信イベントを継続して処理する。一方、終了指示があればステップＳ７０８でプロセスを統合し、サーバとのネットワーク接続を切断（ステップＳ７０９）した上で、データベースの内容を外部記憶装置３０６（図３）にファイルとしてセーブ（ステップＳ７１０）して、すべての処理を終了する。
【００２７】
ここで、ステップＳ７０４の操作処理について図８を参照して詳しく説明する。初めに、ステップＳ８０１にて操作指令の内容を入力する（Ｔ４０１）。このとき、操作指令を一意に特定する操作ＩＤ５０２（図５）を決定する。次に、ステップＳ８０２にて、ステップＳ８０１で入力した操作の内容に基づいて、イベントデータ（図５参照）を生成する（Ｔ４０２）。そして、ステップＳ８０３に進み、生成したイベントデータをサーバに向けて発信する（Ｔ４０３）。
【００２８】
続いて、ステップＳ７０６（図７）の受信イベント処理について詳しく説明する。図９は、受信イベント処理の流れを示した図である。受信イベントは、通信部３０５を介してサーバより受信され、不図示の受信イベントバッファに入力される。
【００２９】
ステップＳ９０１では、受信イベントバッファを検索する。続くステップＳ９０２で、受信イベントバッファにイベントが入力されているかどうか判定し、受信イベントがあればステップＳ９０３に進む。一方、受信イベントが存在しないと判定されれば、処理を終了する。受信イベントがある場合、そのイベントデータを解析し、操作指令の内容を抽出する（ステップＳ９０３、Ｔ４０６、Ｔ４０７、Ｔ４０９、Ｔ４１０）。次に、ステップＳ９０４でイベントに記述された操作を実行する（Ｔ４０８、Ｔ４１１）。具体的には、エントリＩＤ５０３によって指定されたエントリに関して、操作内容５０４の内容に従って設定値を変更する等の操作を実行する。
【００３０】
以上、クライアント側プロセスの流れを説明した。続いて、サーバ側プロセスの流れを図１０を用いて詳しく説明する。
【００３１】
最初にステップＳ１００１で、クライアントからの接続要求を受け付け、通信を確立する。このとき、通信を確立した各クライアントにクライアントＩＤ５０１を通知する。次に、受信イベントバッファを検索し（ステップＳ１００２）、受信イベントが存在するかどうか判定する（ステップＳ１００３）。受信イベントがあれば、ステップＳ１００４に進み、なければステップＳ１００５に進む。ステップＳ１００４では、接続している各クライアントに当該イベントを送信する（Ｔ４０４、Ｔ４０５）。ステップＳ１００５では、ユーザからの指令などによりサーバ処理を終了するかどうかを判定し、終了する場合はステップＳ１００６に進み、終了しない場合はステップＳ１００２に戻る。ステップＳ１００６では、接続している各クライアントに処理を終了することを通知し、次にクライアントとの接続を終了して（ステップＳ１００７）から処理を終了する。
【００３２】
次に、本実施形態でクライアントが読み込むデータベース記述ファイルの構成について説明する。
【００３３】
図１１はエントリ数がＮのデータのファイルフォーマットを模式的に示したものである。各エントリの属性は、スタートデリミタおよびエンドデリミタで囲まれたフィールドに記述される。図１１で、１番目、２番目、…、Ｎ番目のエントリのスタートデリミタはそれぞれ１１０１、１１０６、１１０９で示されている。一方、それぞれのエンドデリミタは１１０５、１１０８、１１１１である。エントリの属性は、１１０２〜１１０４のように、各属性を識別するための識別子および属性値の組で記述される。
【００３４】
また、上記の説明では、サーバ・クライアント間のデータ通信を１対１のＴＣＰ／ＩＰソケットにて行うとしているが、ブロードキャストあるいはマルチキャストによりイベントを交換してもよい。また、通信プロトコルはＴＣＰ／ＩＰに限らない。また、通信媒体としてはイーサネット（登録商標）を利用しているが、ＵＳＢやＦｉｒｅｗｉｒｅなど他の情報伝達媒体でも構わない。更に、ネットワークの形態もＬＡＮだけでなく、ＷＡＮ経由の接続でもよいし、ＬＡＮとＷＡＮを併用しても構わない。
【００３５】
また、サーバの数は、１つの共有データベースシステムにつき１つに限定する必要はなく、複数のサーバが存在してもよい。この場合、各サーバに処理を割り当てる形態は任意である。例えば、クライアントごとに異なるサーバを用いてもよいし、あるいはデータベースのエントリごとにサーバを設けてもよい。
【００３６】
更に、端末に対するプロセスの割当は１端末１プロセスに限定されるものではなく、１つの端末上で複数のプロセスを動作させることができる。その場合、プロセスの種別の組み合わせは任意であり、クライアントのみ、サーバのみ、クライアントおよびサーバの、いずれの組み合わせでもシステムは動作する。なお、同じ端末上のプロセスは、ネットワークに替えて、共有メモリを経由してデータを交換してもよい。
【００３７】
また、イベントはサーバが仲介して各端末に配信されるが、データ操作を行った端末が直接に他の端末にイベントを送信してもよい。
【００３８】
また、サーバプロセスにおいては、情報伝達媒体を介して通信可能に接続された複数のプロセスによって共有される共有データを該複数のプロセスの各々が保持して利用するシステムにおいて、各プロセスが保持する共有データの同一性を維持するために、複数のクライアントプロセスとの接続を確立し、これら複数のクライアントプロセスより共有データの変更に関るイベントを受信する。そして、受信したイベントを、上記複数のクライアントプロセスに対して発行する。
【００３９】
次に、本実施形態のシステムにおいて仮想空間を表現するシーンデータベースの構造について説明する。
【００４０】
本実施形態におけるシステムでのシーンデータベースは「シーングラフ」と呼ばれる木構造、あるいは非再帰有向グラフ構造をとる。シーングラフは、仮想空間の構造的な依存関係を記述するためのデータ構造である。図１２では床１２０１の上にテーブル１２０２があり、さらにテーブル１２０２の上に箱１２０３が載っている仮想空間の例を示している。また、図１３では、図１２の仮想空間を表現するシーングラフの例を示している。図１３中の丸印は木構造の節（ノード）を、直線は枝を意味する。以後、添付の図面において、特に断らない限りは、シーングラフのノードは丸印で、枝は直線で表現されるものとする。なお、各ノードは操作対象のデータアイテムを表す。
【００４１】
図１３のシーングラフでは、木構造の根に床１２０１が配置され、その子としてテーブル１２０２が、さらにテーブル１２０２の子として箱１２０３が配置されている。このようなデータ構造を用いることにより、仮想空間において床１２０１を移動させると、あたかもテーブル１２０２が床１２０１に、箱１２０３がテーブル１２０２の上に実際に載っているかのように、テーブル１２０２、箱１２０３も床１２０１に追従して移動させることができる。
【００４２】
ところで、本実施形態のシステムにおいて、データベース中のある操作対象に対して、複数のクライアントが同時に操作指令を発行した場合には、操作者が意図しない結果を引き起こす可能性が生じる。例えば、不図示のクライアント１、クライアント２およびサーバがデータベースを共有しており、クライアント１が不図示の操作対象ＴをＸ軸の正方向に１だけ平行移動させる操作指令Ａを、クライアント２が操作対象ＴをＸ軸の負方向に１だけ平行移動させる操作指令Ｂをほぼ同時に発行する場合を考える。サーバではクライアント１からの操作指令Ａ，クライアント２からの操作指令Ｂを受け取り、各操作指令がサーバに到着した順に操作対象Ｔに対して操作を実行する。操作指令Ａ、操作指令Ｂの順に実行した場合には、操作対象Ｔは、操作指令ＡによってＸ軸の正方向に１だけ平行移動し、操作指令ＢによってＸ軸の負方向に１だけ平行移動する。この結果、操作指令Ｂが終了した時点で操作対象Ｔは、操作対象Ａが実行される直前の状態と等しくなる。操作指令Ｂ、操作指令Ａの順に実行した場合も、操作指令Ａが終了した時点で操作対象Ｔは、操作対象Ｂが実行される直前の状態と等しくなる。操作指令Ａ、操作指令Ｂは微小時間内に実行されるため、各クライアントまたはサーバでは、操作対象Ｔはまったく移動しないか、または、振動しているように観察される。すなわち、この場合、クライアント１は操作対象Ｔが操作指令ＡによってＸ軸の正方向に１だけ平行移動することを意図しており、また、クライアント２は操作指令ＢによってＸ軸の負方向に１だけ平行移動することを意図しているため、実際の操作結果はクライアント１，２のどちらにとっても意図しないものとなっている。
【００４３】
上記のような問題を回避するため、ある操作対象を操作しようとするホストは、事前に当該操作対象を独占的に操作する権利を取得し、その後に当該操作対象の操作指令を発行する。この権利を「排他的制御権」と呼ぶ。排他的制御権が設定されている操作対象については、排他的制御権を取得しているホスト以外からの操作指令は実行されず、排他的制御権を取得しているホストのみが当該操作対象の操作を行うことが可能となる。また、あるホストが排他的制御権を有している操作対象に関しては、当該操作対象の排他的制御権を取得したホストが排他的制御権を解放するまでの間、他のホストが排他的制御権を取得することはできない。排他的制御権を取得したホストが排他的制御権を解放した場合、当該操作対象は排他的制御権が設定されていない状態となり、すべてのホストの操作が許可されることになる。
【００４４】
ホストが排他的制御権の取得を行うときには、「排他的制御権取得」の操作要求を発行する。具体的には、クライアントが３次元空間の表示画面上より所望の操作対象を選択して排他的制御権の取得要求を操作イベントとして発行する。この取得要求はサーバによって受信され各クライアントへ通知される。当該取得要求の発行元のクライアントでは以下に説明するように選択された操作対象とこれに関連する対象（データアイテム）について排他的制御権の取得が行われる。排他的制御権の取得結果サーバを介して全クライアントに通知される。
【００４５】
通常、排他的制御権は操作対象ごとに独立に設定される。そのため、操作対象ごとにそれぞれ異なるホストが排他的制御権を取得することが可能である。例えば図１４のシーングラフにおいて、クライアント１が操作対象１４０１の排他的制御権を、クライアント２が操作対象１４０２の排他的制御権を同時に取得することが可能である。
【００４６】
上記の方法では、操作対象ごとに完全に独立して排他的制御権を取得することができるため、階層構造を持つシーングラフに適用した場合に問題が生じることがある。例えば図１３のシーングラフにおいて、図示しないホストＡが床１２０１の排他的制御権を取得した場合、図示しない別のホストＢがテーブル１２０２の排他的制御権を、さらに図示しない別のホストＣが箱１２０３の排他的制御権を取得することができる。図１３のシーングラフでは、テーブル１２０２は床１２０１に、箱１２０３はテーブル１２０２と床１２０１に属している。そのため、床１２０１の排他的制御権を取得しているホストＡが床１２０１を操作すると、テーブル１２０２、箱１２０３にまでその操作の影響が波及する場合がある。しかし、ホストＡは床１２０１のみの排他的制御権しか取得していないため、テーブル１２０２、箱１２０３に関しては、他のホストによって操作されて意図しない操作結果となる可能性がある。
【００４７】
これを回避するためには、ホストＡはテーブル１２０２、箱１２０３の排他的制御権についても床１２０１の排他的制御権と同時に取得しておかなければならない。上記の方法では、ホストＡはシーングラフの構造に基づいて、操作するノードに階層的に関連したノードの排他的制御権を個別に取得する必要がある。すなわち、各ホストは操作するシーングラフの階層構造を正確に把握した上で、操作対象となる全ノードについて排他的制御権を取得しなければならない。この作業は、シーングラフの規模に比例して煩雑なものとなる。
【００４８】
本実施形態では、シーングラフ中で上位のノードに該当する操作対象の排他的制御権を取得した場合には、その下位の全ノードに該当する操作対象について排他的制御権を取得する。すなわち、ある操作対象の排他的制御権を取得すると、当該操作対象を根とする部分木（サブシーングラフ）に含まれるすべての操作対象の排他的制御権をも取得する。以後、本明細書では、シーングラフ中のノードに該当する操作対象について排他的制御権を取得することを、単に「ノードの排他的制御権を取得する」と表現する。また、サブシーングラフに含まれるすべての操作対象の排他的制御権を取得することを、単に「サブシーングラフの排他的制御権を取得する」と表現する。本実施形態によれば、操作対象以下のサブシーングラフのすべてのノードの排他的制御権が自動的に取得される。このため、操作を行うホストは操作対象の情報のみを所持していればよく、シーングラフの構造を正確に把握している必要はない。
【００４９】
図１５は、上記に述べた排他的制御権を取得する処理の流れを示している。ステップＳ１５００では、指定の操作対象について、排他的制御権を取得する処理を開始する。ステップＳ１５０５では、指定のホスト（排他的制御権の取得要求元のクライアント）以外のホストが自ノード（その階層における排他的制御権の設定対象ノード）に対して排他的制御権を取得しているかを確認する。排他的制御権が取得されていた場合には、ステップＳ１５０８に進み、処理の呼び出し元（再帰処理を行なう上位の階層のノードに対する処理）に「失敗」を示す情報を通知して本処理を終了する。当該自ノードがホストより排他的制御権の取得を要求されたノードの場合は、当該ホストに対して取得の失敗を返すことになる。
【００５０】
取得されていなかった場合にはステップＳ１５０１に進む。ステップＳ１５０１では、当該自ノードのすべての子ノードについて、排他的制御権を取得する処理が完了したかを判定する。すべての子ノードについて排他的制御権を取得する処理が完了したか、または、子ノードが存在しない場合にはステップＳ１５０６に進む。そうでない場合には、ステップＳ１５０２に進む。ステップＳ１５０２では、各子ノードについて、排他的制御権を取得する処理を行う。この処理は再帰的に行われる。すなわち、処理対象を子ノードとして、新たに排他的制御権を取得するための処理を呼び出す。より具体的には、現時点までの処理結果を保存してから処理を中断し、処理対象とした子ノードに対する処理（当該子ノードを自ノードとした処理）を新たにステップＳ１５００から開始する。
【００５１】
ステップＳ１５０３では、ステップＳ１５０２で呼び出した新たな排他的制御権を取得するための処理が成功したか失敗したかを判定する。成功した場合には、次の子ノードを処理するべくステップＳ１５０１に戻る。失敗した場合には、ステップＳ１５０４に進む。ステップＳ１５０４では、処理の呼び出し元に「失敗」を示す情報を通知し、ステップＳ１５０９に進む。
【００５２】
ステップＳ１５０１において未処理の子ノードが存在しないと判定されたならば、ステップＳ１５０６で自ノードに排他的制御権を設定し、データベースに排他的制御権を取得したホストのホストＩＤを書き込む。そして、ステップＳ１５０７において、処理の呼び出し元に「成功」を示す情報を通知し、ステップＳ１５０９に進む。一方、ステップＳ１５０８では、処理の呼び出し元に「失敗」を示す情報を通知し、ステップＳ１５０９に進む。ステップＳ１５０９では、排他的制御権の取得処理を終了する。再帰呼び出しの過程で中断している処理がある場合には、中断している処理を再開する。
【００５３】
例えば、図２３に示すようなシーングラフがあった場合、処理は、Ｏ→Ａ→Ｃ→Ｄ→Ｂ→Ｅの順に行われる。Ｏに対する処理が開始されると、未処理の子ノードが存在するので処理はステップＳ１５０２に進み、Ｏに対する処理を中断してＡに対する処理がステップＳ１５００より開始される。同様に、Ａに対する処理を行うと、ステップＳ１５０２に進み、Ａに対する処理が中断されて、Ｃの処理がステップＳ１５００から開始される。Ｃには子ノードがないので、Ｃに対して排他的制御権が設定されていなければステップＳ１５０１→Ｓ１５０６→Ｓ１５０７→Ｓ１５０９と処理が進み、Ｃの処理に成功して終了することになる。この結果、呼び出し元の処理（Ｃの上の階層のＡに対する処理）が再開され、ステップＳ１５０３からステップＳ１５０１へ戻ることになる。
【００５４】
Ａには、未だ未処理の子ノードＤが存在するので、ステップＳ１５０２へ進み、Ｄの処理がステップＳ１５００から開始される。Ｃと同様にＤの処理に成功すると、再びＡの処理が再開される。今度は全ての子ノードについて処理が終了しているので、ステップＳ１５０１からステップＳ１５０６へ進み、Ａに対して排他的制御権が設定され、処理が終了する。Ａに対する処理が終了すると、中断していたＯに対する処理が再開されるが、Ｏには未処理の子ノードＢが存在するので、再び処理が中断され、Ｂに対する処理が開始されることになる。以上のようにして、Ｏ、Ａ、Ｃ、Ｄ、Ｂ、Ｅの全てのノードについて排他的制御権の設定に成功した場合に、Ｏに対する排他的制御権が設定されることになる。
【００５５】
一方、排他的制御権を解放する場合については、あるサブシーングラフの排他的制御権を取得しているとき、解放すべきサブシーングラフの根となるノードの排他的制御権の解放を指示することにより、その下位の全ノードの排他的制御権が解放される。
【００５６】
図１６は、排他的制御権を解放する処理の流れを示している。ステップＳ１６００では、指定の操作対象について、排他的制御権を解放する処理を開始する。ステップＳ１６０１では、当該ノードのすべての子ノードについて、排他的制御権を解放する処理が完了したかを判定する。すべての子ノードについて排他的制御権を解放する処理が完了したか、または、子ノードが存在しない場合にはステップＳ１６０３に進む。そうでない場合には、ステップＳ１６０２に進む。
【００５７】
ステップＳ１６０２では、各子ノードについて、排他的制御権を解放する処理を行う。この処理は再帰的に行われる。すなわち、処理対象を子ノードとして、新たに排他的制御権を解放するための処理を呼び出す。現時点までの処理結果を保存してから処理を中断し、子ノードに対する処理を新たにステップＳ１６００から開始する。
【００５８】
ステップＳ１６０３では、自ノードに対して排他的制御権を設定したホストが、指定のホストと一致するかを確認する。なお、本実施形態では排他的制御権を解放できるのは対象ノードに排他的制御権を設定したホストのみとしている。すなわち、排他的制御権を設定したときに、そのノード（のデータ領域）に排他的制御権を設定したホストのＩＤを登録しておき、解放時には保持されているＩＤと解放処理を呼び出しているホストのＩＤとを照合し、これが一致したときのみ解放を行う。排他的制御権が設定されていない、あるいはホストが一致しない場合には、ステップＳ１６０５に進む。それ以外の場合にはステップＳ１６０４に進む。
【００５９】
ステップＳ１６０４では、自ノードに対して設定されている排他的制御権を解放し、データベースに記述されている排他的制御権を取得したホストのホストＩＤを削除する。ステップＳ１６０５では、排他的制御権の解放処理を終了する。再帰呼び出しの過程で中断している処理がある場合には、中断している処理を再開する。
【００６０】
例えば、図１７のシーングラフにおいて、黒で示されるノードの排他的制御権を取得しようとしている場合、黒に加えて、灰色で示される下位ノードの排他的制御権も同時に取得する。同様に、黒で示されるノード１７０１の排他的制御権を解放すると、ノード１７０１に加えて、灰色で示される下位ノード（１７０２）の排他的制御権も同時に解放する。
【００６１】
ここで、当該操作対象を根とするサブシーングラフのうち、一つでも排他的制御権を取得することができないノードが存在する場合には、そのサブシーングラフのすべてのノードの排他的制御権を取得できない。例えば、図１８のシーングラフにおいて、図示しないホストＡが黒の丸で示されるノード１８０１の排他的制御権を取得しようとしており、既に灰色の四角形で示されるノードの排他的制御権が図示しないホストＢによって取得されているような場合には、ホストＡは灰色の四角印の下位ノードの排他的制御権を取得することができない。よって、ホストＡは黒の丸印で示されるノード１８０１の排他的制御権についても取得することができない。すなわち、あるノードの排他的制御権を取得する場合には、当該ノードを根とするサブシーングラフ中の全てのノードの排他的制御権が取得可能でなければならない。この条件が満たされない場合には、当該ノードの排他的制御権を取得することはできない。
【００６２】
また、排他的制御権を取得したサブシーングラフについて、その一部を解放することも可能である。図１９は、図示しないホストＡが黒で示されるノード以下のサブシーングラフ１９０１の排他的制御権を取得している様子を示している。すなわち、ホストＡは黒および灰色で示されているノード群の排他的制御権を取得している。一方、図２０は、図１９の状態から、ホストＡが黒で示されるノード２００１以下のサブシーングラフの排他的制御権を解放した状態を示している。すなわち、図１９の状態において、ホストＡがノード２００１を指定して排他的制御権の解放を指示すると、図２０に示されるようにノード２００１以下のサブシーングラフの排他的制御権が解放される。
【００６３】
また、排他的制御権を取得したサブシーングラフの一部を解放し、他のホストがその部分の排他的制御権を取得することも可能である。図２１では、図２０の状態から、上述したホストＢが黒の四角印で示されるノード２００１以下のサブシーングラフ２１０１の排他的制御権を取得した状態を示している。図２１では、灰色の丸印のノード群２１０２に関してホストＡが、黒および灰色の四角印のノード群２１０１に関してホストＢが排他的制御権を取得している状態を示している。
【００６４】
例えば図１２のシーンにおいて、不図示のホストＡが床１２０１の排他的制御権を取得したとする。このとき、テーブル１２０２および箱１２０３は床１２０１のサブシーングラフであるので（図１３）、テーブル１２０２および箱１２０３の排他的制御権もホストＡによって同時に取得される。次に、ホストＡはテーブル１２０２の排他的制御権を解放し、不図示のホストＢがテーブル１２０２の排他的制御権を取得する。このとき、ホストＡは同時に箱１２０３の排他的制御権も解放することになるので、ホストＢは同時にテーブル１２０２と箱１２０３の排他的制御権を取得することになる。この結果、ホストＡは床１２０１の排他的制御権を、ホストＢはテーブル１２０２と箱１２０３の排他的制御権を取得している状態となる。
【００６５】
また、当該ノードを根とするサブシーングラフ中に、他のホストが排他的制御権を取得しているノードが存在した場合には、サブシーングラフ中の全てのノードの排他的制御権を解放できないようにすることも可能である。すなわち、サブシーングラフ中のいずれかのノードについて、他のホストが排他的制御権を取得している場合には、当該ホストが当該ノードの排他的制御権を解放しない限りは、その上位のノードあるいはサブシーングラフの排他的制御権を取得しているホストは、当該ノードあるいはサブシーングラフの排他的制御権を解放できないようにすることができる。
【００６６】
上述したように、従来例においては個別にノードの排他的制御権を設定する。したがって、従来例においても排他的制御権を取得したノードの子ノードまたはサブシーングラフを、他のホストに操作させるようにすることも可能ではある。しかしながら、その手順は本実施形態よりも煩雑となる。例えば上記の場合、従来例ではホストＡはテーブル１２０２および箱１２０３の排他的制御権を解放し、ホストＢはテーブル１２０２および箱１２０３の排他的制御権を取得する必要がある。このため、排他的制御権を解放・取得の操作を行う回数の合計は４回となる。一方、本実施形態の場合、ホストＡはテーブル１２０２の排他的制御権を解放し、ホストＢはテーブル１２０２の排他的制御権を取得すれば済むので、排他的制御権を解放・取得する回数の合計は２回となる。この差は、シーングラフの規模が大きくなり、シーングラフの構造が複雑になるほど顕著に現れる。
【００６７】
なお、上記の説明では、３次元仮想空間データを共有するとしているが、データベースの内容はこれに限らず任意であることはいうまでもない。また、データベース全体を共有する場合のみならず、その一部のみを共有する場合にも上記実施形態で説明した方法が適用可能であることは言うまでもない。これらの特徴は、以下の実施形態についても同様である。
【００６８】
以上のように、第１実施形態によれば、情報伝達媒体を介して接続された複数のプロセスによってデータを共有し、データは単数または複数の階層構造を持つ部分データから構成され、部分データは単数または複数のデータアイテムから構成されるシステムにおいて、データアイテムについて特定のプロセスからの操作を許可し、当該プロセス以外のプロセスからの操作を拒否する排他的制御権を設定するための情報処理方法が開示され、排他的制御権を設定する対象ノードを指定すると、当該シーングラフの構造に基づき、対象ノード以下のサブシーングラフの排他的制御権をも同時に取得される。また、排他的制御権を取得した対象ノードを解放するときにも、シーングラフの構造に基づき、対象ノード以下のサブシーングラフの排他的制御権をも同時に解放される。このため、排他的制御権の取得、解放が容易になる。
【００６９】
さらに、第１実施形態によれば、排他的制御権を取得したサブシーングラフの一部について排他的制御権を解放し、解放した排他的制御権を他のプロセスに取得させることが可能となる。柔軟な排他的制御権の設定を容易な操作で行なえる。
【００７０】
〔第２実施形態〕
第１実施形態では、操作対象を根とするサブシーングラフのうち、一つでも排他的制御権を取得することができないノードが存在する場合には、そのサブシーングラフのすべてのノードの排他的制御権を取得できない。第２実施形態では、そのような場合に、サブシーングラフ中で排他的制御権を取得可能ノードについて排他的制御権を取得するようにする。
【００７１】
図２２は、第２実施形態による排他的制御権を取得する処理の流れを示している。ステップＳ２２００では、指定の操作対象について、排他的制御権を取得する処理を開始する。ステップＳ２２０１では、当該ノードのすべての子ノードについて、排他的制御権を取得する処理が完了したかを判定する。すべての子ノードについて排他的制御権を取得する処理が完了したか、または、子ノードが存在しない場合にはステップＳ２２０３に進む。そうでない場合には、ステップＳ２２０２に進む。
【００７２】
ステップＳ２２０２では、各子ノードについて、排他的制御権を取得する処理を行う。この処理は再帰的によって行われる。すなわち、処理対象を子ノードとして、新たに排他的制御権を取得するための処理を呼び出す。現時点までの処理結果を保存してから処理を中断し、子ノードに対する処理を新たにステップＳ２２００から開始する。
【００７３】
ステップＳ２２０３では、指定のホスト以外のホストが自ノードに対して排他的制御権を取得しているかを確認する。排他的制御権が取得されていた場合には、ステップＳ２２０５に進み、取得されていなかった場合にはステップＳ２２０４に進む。ステップＳ２２０４では、自ノードに排他的制御権を設定し、データベースに排他的制御権を取得したホストのホストＩＤを書き込む。
【００７４】
ステップＳ２２０５では、排他的制御権の取得処理を終了する。再帰呼び出しの過程で中断している処理がある場合には、中断している処理を再開する。
【００７５】
第２実施形態では、子ノードが排他的制御権を取得する処理（ステップＳ２２０２）の後に、その処理が成功したか否かの判定を行わない。すなわち、子ノードが排他的制御権を取得できなかった場合においても、そこで処理を停止することなく、サブシーングラフの全ノードに対して排他的制御権の取得を試みる。なお、第２実施形態における、排他的制御権の解放の手順については、第１実施形態と同じである。
【００７６】
以上のように、第２実施形態によれば、操作対象を根とするサブシーングラフのうち、排他的制御権を取得することができないノードが存在する場合においても、サブシーングラフ中で排他的制御権を取得できるノードについてのみ、排他的制御権を取得することが可能となる。
【００７７】
〔他の実施形態〕
なお、第１実施形態と第２実施形態における排他的制御権の取得方法のうちいずれかの取得方法を選択して、排他的制御権の取得処理を起動できるようにしてもよい。
【００７８】
また、第１実施形態、第２実施形態における排他的制御権の取得方法のうちのいずれの取得方法を、適用するかをあらかじめノードごとに設定しておき、排他的制御権の取得処理が起動されると、当該ノードに設定された取得
方法を用いて処理を実行するようにしてもよい。
【００７９】
また、上記各実施形態においては、あるノードの排他的制御権を同時に取得できるホストはただ一つとしているが、各ノードについて、あらかじめ定められた数だけの複数のホストが排他的制御権を取得することを可能にしてもよい。この場合において、排他的制御権を取得した複数のホストが同時に操作を行ったときには、排他的制御は行われないため、先述したように、意図しない操作結果を引き起こす可能性がある。しかし、同一ノードに同時に操作を行わないことが保証されるホストのみが排他的制御権を取得するようにすることで、そのような問題を回避することが可能である。
【００８０】
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００８１】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８２】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００８３】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８４】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００８５】
【発明の効果】
以上説明したように、本発明によれば、仮想空間の構造に基づいた排他的制御権の取得方法を提供することにより、操作する側に仮想空間の構造を特別に意識させることなく、必要な排他的制御権を適切に取得することが可能となる。
【図面の簡単な説明】
【図１】第１実施形態におけるデータベース共有システム全体の構成を示すブロック図である。
【図２】第１実施形態によるプロセス間の基本的な情報伝達方法を示す図である。
【図３】第１実施形態による端末装置のハードウエア構成を示すブロック図である。
【図４】第１実施形態によるデータベースの更新手順を示す図である。
【図５】イベントデータのデータ構成例を示す図である。
【図６】操作キューのデータ構成例を示す図である。
【図７】第１実施形態によるクライアントプロセスのフローチャートである。
【図８】図７のクライアントプロセスにおける操作処理を示すフローチャートである。
【図９】図７のクライアントプロセスにおける受信イベント処理を示すフローチャートである。
【図１０】第１実施形態によるサーバプロセスを説明するフローチャートである。
【図１１】データベースの記述ファイルフォーマットを示す図である。
【図１２】仮想空間の構造の例を示す図である。
【図１３】図１２の仮想空間を表現するシーングラフの例を示す図である。
【図１４】操作対象別に排他的制御権を設定する例を示す図である。
【図１５】第１実施形態による排他的制御権を取得する手順を説明するフローチャートである。
【図１６】排他的制御権を解放する手順を説明するフローチャートである。
【図１７】サブシーングラフの排他的制御権を取得する例を示す図である。
【図１８】サブシーングラフの排他的制御権を取得できない例を示す図である。
【図１９】サブシーングラフにおける排他的制御権の取得及び解放を説明する図である。
【図２０】サブシーングラフにおける排他的制御権の取得及び解放を説明する図である。
【図２１】サブシーングラフにおける排他的制御権の取得及び解放を説明する図である。
【図２２】第２実施形態による排他的制御権を取得する手順を説明するフローチャートである。
【図２３】図１５に示した処理において、再帰呼び出しが必要となるシーングラフの一例を示す図である。
【図１】
2004265081.tif 000003
【図２】
2004265081.tif 000004
【図３】
2004265081.tif 000005
【図４】
2004265081.tif 000006
【図５】
2004265081.tif 000007
【図６】
2004265081.tif 000008
【図７】
2004265081.tif 000009
【図８】
2004265081.tif 000010
【図９】
2004265081.tif 000011
【図１０】
2004265081.tif 000012
【図１１】
2004265081.tif 000013
【図１２】
2004265081.tif 000014
【図１３】
2004265081.tif 000015
【図１４】
2004265081.tif 000016
【図１５】
2004265081.tif 000017
【図１６】
2004265081.tif 000018
【図１７】
2004265081.tif 000019
【図１８】
2004265081.tif 000020
【図１９】
2004265081.tif 000021
【図２０】
2004265081.tif 000022
【図２１】
2004265081.tif 000023
【図２２】
2004265081.tif 000024
【図２３】
2004265081.tif 000025
【手続補正書】
【提出日】平成16年6月1日(2004.6.1)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理方法であって、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示工程と、
前記複数のデータアイテムの階層構造情報に基づいて、前記第１指示工程で指示されたデータアイテムに関して下位の階層に属するデータアイテムを探索する探索工程と、
前記指示されたデータアイテムと前記探索工程で探索されたデータアイテムに対して前記特定プロセスによる排他的制御権を設定する設定工程とを備えることを特徴とする情報処理方法。
【請求項２】
前記データは、仮想空間のコンピュータグラフィックスを生成する際に参照されるシーングラフデータベースであることを特徴とする請求項１記載の情報処理方法。
【請求項３】
前記設定工程は、前記指示されたデータアイテムと前記探索工程で探索された全てのデータアイテムに他のプロセスによる排他的制御権が設定されていない場合に、前記特定プロセスによる排他的制御権を設定することを特徴とする請求項１記載の情報処理方法。
【請求項４】
前記設定工程は、前記指定されたデータアイテムと前記探索工程で探索されたデータアイテムのうち、他のプロセスによって排他的制御権が設定されていないデータアイテムに対して、前記特定プロセスによる排他的制御権を設定することを特徴とする請求項１記載の情報処理方法。
【請求項５】
排他的制御権を解放するべく所望のデータアイテムを指示する第２指示工程と、
前記第２指示工程で指示されたデータアイテムに関して前記探索工程によって関連するデータアイテムを探索し、指示されたデータアイテムと探索されたデータアイテムに対して前記特定プロセスによる排他的制御権を解放する第１解放工程とを更に備える請求項１乃至４のいずれかに記載の情報処理方法。
【請求項６】
前記第２指示工程で指示されたデータアイテムに関して前記探索工程によって関連するすべてのデータアイテムを探索し、該すべてのデータアイテムと前記指示されたデータアイテムが他のプロセスによって排他的制御権が設定されていない場合に、前記特定プロセスによる排他的制御権を解放する第２解放工程とを更に備えることを特徴とする請求項５に記載の情報処理方法。
【請求項７】
前記設定工程は、前記指示されたデータアイテムと前記探索工程で探索された全てのデータアイテムに関して他のプロセスによって排他的制御権が設定されていない場合に前記特定プロセスによる排他的制御権を設定する第１の設定モードと、前記指定されたデータアイテムと前記探索工程で探索されたデータアイテムのうち、他のプロセスによって排他的制御権が設定されていないデータアイテムに対して、前記特定プロセスによる排他的制御権を設定する第２の設定モードを有し、
前記第１及び第２の設定モードのうちの指定されたモードで排他的制御権の設定が実行されることを特徴とする請求項１に記載の情報処理方法。
【請求項８】
前記第１及び第２の設定モードのうちの所望のモードをユーザによって指定可能であることを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記第１及び第２の設定モードのうちのいずれのモードを適用するかが前記複数のデータアイテムの各々に割り当てられていることを特徴とする請求項７に記載の情報処理方法。
【請求項１０】
前記複数のデータアイテムの各々に対して排他的制御権の設定可能数が設定されており、
前記設定工程は、この設定可能数を限度に排他的制御権を設定することを特徴とする請求項１に記載の情報処理方法。
【請求項１１】
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理方法であって、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示工程と、
前記指示されたデータアイテムと、前記複数のデータアイテムの階層構造情報に基づいて、前記第１指示工程で指示されたデータアイテムに関して下位の階層に属するデータアイテムとに対して前記特定プロセスによる排他的制御権を設定する設定工程とを備えることを特徴とする情報処理方法。
【請求項１２】
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理装置であって、
前記複数のデータアイテムの階層構造情報を保持する保持手段と、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示手段と、
前記指示されたデータアイテムと、前記階層構造情報に基づいて、該指示されたデータアイテムに関連し、前記第１指示手段で指示されたデータアイテムよりも下位の階層に存在するデータアイテムとに対して前記特定プロセスによる排他的制御権を設定する設定手段とを備えることを特徴とする情報処理装置。
【請求項１３】
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理装置であって、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示手段と、
前記複数のデータアイテムの階層構造情報に基づいて、前記第１指示手段で指示されたデータアイテムに関して下位の階層に属するデータアイテムを探索する探索手段と、
前記指示されたデータアイテムと前記探索手段で探索されたデータアイテムに対して前記特定プロセスによる排他的制御権を設定する設定手段とを備えることを特徴とする情報処理装置。
【請求項１４】
請求項１乃至１１のいずれかに記載の情報処理方法をコンピュータに実行させるための制御プログラム。
【請求項１５】
請求項１乃至１１のいずれかに記載の情報処理方法をコンピュータに実行させるための制御プログラムを格納した記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
【課題を解決するための手段】
上記の目的を達成するための本発明による情報処理方法は、
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理方法であって、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示工程と、
前記複数のデータアイテムの階層構造情報に基づいて、前記第１指示工程で指示されたデータアイテムに関して下位の階層に属するデータアイテムを探索する探索工程と、
前記指示されたデータアイテムと前記探索工程で探索されたデータアイテムに対して前記特定プロセスによる排他的制御権を設定する設定工程とを備える。


【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
また、上記の目的を達成するための本発明の他の態様による情報処理方法は、
情報伝達媒体を介して通信可能な複数のプロセスによって、複数のデータアイテムで構成されたデータを共有するシステムにおいて、特定プロセスによるデータアイテムの排他的制御権を設定するための情報処理方法であって、
排他的制御権を設定するべく所望のデータアイテムを指示する第１指示工程と、
前記指示されたデータアイテムと、前記複数のデータアイテムの階層構造情報に基づいて、前記第１指示工程で指示されたデータアイテムに関して下位の階層に属するデータアイテムとに対して前記特定プロセスによる排他的制御権を設定する設定工程とを備える。