(57)【要約】【課題】複数のプロセスがデータを共有するシステムへのプロセスの参加を制限する技術を提供すること。【解決手段】自装置が特定条件を満たすか否か判定し、その結果に応じて特定条件の設定又は解除を指示する指令を、データを共有する全てのクライアント装置に発信する。また、指令を受信した場合、受信した指令が特定条件の設定又は解除を指示していれば、該特定条件に関する違反を判定する。自装置が違反している場合はサーバ装置との間の通信路を切断し、違反していない場合は指令に従って特定条件を満たす装置に関する情報を更新する。【選択図】        図１２
2004334566.tif 000002
【特許請求の範囲】
【請求項１】
サーバ機能を有する装置を介して他の装置と通信可能である情報処理装置に適用可能な情報処理方法であって、
特定条件を満たすか否か判定する特定条件判定工程と、
前記特定条件判定工程の結果、特定条件が満たされている場合に、自端末の識別情報および前記特定条件を設定することを示す情報を含む特定条件設定情報を前記サーバ機能を有する装置に送信する工程と、
前記サーバ機能を有する装置より前記特定条件設定情報を受信する受信工程と、
前記受信した特定条件設定情報に基づき、前記特定条件に関するルールに自装置が違反するか否か判定する特定条件違反判定工程と、
前記特定条件違反判定工程によって、自装置が前記特定条件に関するルールを違反していると判定された場合に、前記サーバ機能を有する装置との通信路を切断する工程とを有することを特徴とする情報処理方法。
【請求項２】
仮想空間の構造と属性を記述するシーンデータベースを複数の装置で共有するための情報処理方法であり、
シーンデータベースの操作に関する指示に応じて、該シーンデータベースの操作に関する指示を前記サーバ機能を有する装置に送信する工程と、
前記サーバ機能を有する装置から前記シーンデータベースの操作に関する指示を受信する工程と、
前記受信したシーンデータベースの操作に関する指示に基づき、自装置内に保持しているシーンデータベースを操作する操作工程とを有することを特徴とする請求項１記載の情報処理方法。
【請求項３】
サーバ機能を有する装置を介して他の装置と通信可能である情報処理装置に適用可能である情報処理方法であって、
特定条件を満たすか否か判定する特定条件判定工程と、
前記特定条件判定工程の結果、特定条件が満たされている場合に、少なくとも自端末の識別情報および前記特定条件を設定することを示す情報を含む特定条件設定情報を前記サーバ機能を有する装置に送信する工程と、
前記特定条件判定工程の結果、前記特定条件が満たされていない場合に、少なくとも自装置の識別情報および前記特定条件を解除することを示す情報を含む特定条件解除情報を前記サーバ機能を有する装置に送信する工程と、
前記サーバ機能を有する装置より情報を受信する受信工程と、
前記受信工程で受信した情報が前記特定条件設定情報或いは前記特定条件解除情報である場合に、前記特定条件に関する違反である特定条件違反に自装置が違反するか否か判定する特定条件違反判定工程と、
前記特定条件違反判定工程の結果、前記特定条件違反である場合に、自装置及び前記サーバ機能を有する装置間の通信路を切断する工程と、
前記特定条件違反判定工程の結果、前記特定条件違反でない場合に、前記特定条件を満たす装置に関する情報を更新する工程とを備えることを特徴とする情報処理方法。
【請求項４】
コンピュータに請求項１乃至請求項３のいずれかに記載の情報処理方法を実行させることを特徴とするプログラム。
【請求項５】
サーバ機能を有する装置を介して自装置及び他の装置と通信可能である情報処理装置であって、
特定条件を満たすか否か判定する特定条件判定手段と、
前記特定条件判定手段の結果、特定条件が満たされている場合に、少なくとも自端末の識別情報および前記特定条件を設定することを示す情報を含む特定条件設定情報を前記サーバ機能を有する装置に送信する手段と、
前記特定条件判定手段の結果、前記特定条件が満たされていない場合に、少なくとも自装置の識別情報および前記特定条件を解除することを示す情報を含む特定条件解除情報を前記サーバ機能を有する装置に送信する手段と、
前記サーバ機能を有する装置より情報を受信する受信手段と、
前記受信手段で受信した情報が前記特定条件設定情報或いは前記特定条件解除情報である場合に、前記特定条件に関する違反である特定条件違反に自装置が違反するか否か判定する特定条件違反判定手段と、
前記特定条件違反判定手段の結果、前記特定条件違反である場合に、自装置及び前記サーバ機能を有する装置間の通信路を切断する手段と、
前記特定条件違反判定手段の結果、前記特定条件違反でない場合に、前記特定条件を満たす装置に関する情報を更新する手段とを備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のプロセスが互いにデータを交換することによって協調的動作を行う技術であって、特に共有システムに参加するプロセスを限定するための技術に関する。
【０００２】
【従来の技術】
複数のプロセスが互いにデータを交換することによって協調的動作を行う技術の一例として、データベースの共有方法に関する「情報処理方法及び装置」（特願２００２−３４８７２６）が挙げられる。この発明では、共有データのコピーを各プロセスが保持する。共有データに対する操作要求が発生した場合には、その操作要求を表す要求情報をネットワークを介してプロセス間で交換し、受信した操作要求に基づいてデータを更新する。
【０００３】
【発明が解決しようとする課題】
前記の発明において、データを共有するプロセス群への参加に関して制約は設けていなかった。しかし、総プロセス数を制限するなど、何らかの条件に基づいてプロセスを制限することが必要な場合も考えられ、改善の余地があった。
【０００４】
【課題を解決するための手段】
上記課題を解決するために、本発明は以下の構成を有することを特徴とする。
【０００５】
本願請求項１記載の発明は、サーバ機能を有する装置を介して他の装置と通信可能である情報処理装置に適用可能な情報処理方法であって、特定条件を満たすか否か判定する特定条件判定工程と、前記特定条件判定工程の結果、特定条件が満たされている場合に、自端末の識別情報および前記特定条件を設定することを示す情報を含む特定条件設定情報を前記サーバ機能を有する装置に送信する工程と、前記サーバ機能を有する装置より前記特定条件設定情報を受信する受信工程と、前記受信した特定条件設定情報に基づき、前記特定条件に関するルールに自装置が違反するか否か判定する特定条件違反判定工程と、前記特定条件違反判定工程によって、自装置が前記特定条件に関するルールを違反していると判定された場合に、前記サーバ機能を有する装置との通信路を切断する工程とを有することを特徴とする。
【０００６】
本願請求項３記載の発明は、サーバ機能を有する装置を介して他の装置と通信可能である情報処理装置に適用可能である情報処理方法であって、特定条件を満たすか否か判定する特定条件判定工程と、前記特定条件判定工程の結果、特定条件が満たされている場合に、少なくとも自端末の識別情報および前記特定条件を設定することを示す情報を含む特定条件設定情報を前記サーバ機能を有する装置に送信する工程と、前記特定条件判定工程の結果、前記特定条件が満たされていない場合に、少なくとも自装置の識別情報および前記特定条件を解除することを示す情報を含む特定条件解除情報を前記サーバ機能を有する装置に送信する工程と、前記サーバ機能を有する装置より情報を受信する受信工程と、前記受信工程で受信した情報が前記特定条件設定情報或いは前記特定条件解除情報である場合に、前記特定条件に関する違反である特定条件違反に自装置が違反するか否か判定する特定条件違反判定工程と、前記特定条件違反判定工程の結果、前記特定条件違反である場合に、自装置及び前記サーバ機能を有する装置間の通信路を切断する工程と、前記特定条件違反判定工程の結果、前記特定条件違反でない場合に、前記特定条件を満たす装置に関する情報を更新する工程とを備えることを特徴とする情報処理方法。
【０００７】
【発明の実施の形態】
以下添付図面を参照し、本発明を好適な実施形態に従って詳細に説明する。
【０００８】
［第１の実施形態］
本実施形態に係るシステムは、仮想空間の構造と属性を記述するシーンデータベースを複数の端末で共有する仮想空間共有システムである。以下、本実施形態に係る仮想空間共有システムについて説明する。
【０００９】
本実施形態では、システムに参加するプロセスを制限する条件として、仮想空間を観察する際の視点の種類を用いる。各プロセスは仮想空間を観察する視点を有するが、その種類として「主観視点」および「客観視点」が存在する。主観視点は、視点位置および観察方向が移動可能な視点であり、例えばシステムの利用者の頭部に３次元位置・姿勢センサを装着し、そのセンサの出力から視点位置・観察方向を算出して設定する。一方、客観視点は、視点位置および観察方向が固定の視点である。本実施形態では、主観視点を持つプロセスの数が所定数を超えないように、プロセスの参加を制限する。なお、以降の説明では、システムへのプロセスの参加を制限するか否かを決定するための要素条件を「特定条件」と呼ぶ。本実施例の場合は、「（プロセスが）主観視点を持つこと」が特定条件に相当する。
【００１０】
図１は本実施形態に係る仮想空間共有システムの概略構成を示す図である。システムは１つのサーバ装置１０１と、複数のクライアント端末装置（同図ではクライアント端末装置１−クライアント端末装置Ｎ）により構成されており、サーバ装置１０１とクライアント端末装置とは通信媒体１０２を介して通信可能である。また、夫々のクライアント端末装置は仮想空間の構造と属性を記述するシーンデータベースを内部に保持している。
【００１１】
また通信媒体１０２は、本実施形態ではイーサネット（登録商標）上に構築したＬＡＮである。なお、通信媒体としてはＵＳＢやＦｉｒｅｗｉｒｅ（登録商標）など他の情報伝達媒体でも構わない。更に、ネットワークの形態もＬＡＮだけでなく、ＷＡＮ経由の接続でもよいし、ＬＡＮとＷＡＮを併用しても構わない。
【００１２】
ここで、以下の説明で用いる「データベース操作」という用語について説明しておく。データベースの操作とは、データベースの内容を書き換える処理のことを差す。データベース操作は「操作指令」と「操作実行」の２段階に分かれる。操作指令はデータベースの更新要求であり、実際の書き換えは行われない。データベースに対する実際の書き換えは、「操作実行」の段階で行われる。以下の説明では特に断らない限り、単に「操作」と記述すれば「データベース操作」のことを指すものとする。操作対象がデータベース以外の場合は、「ユーザによる対話デバイスの操作」などのように操作対象を明示するものとする。
また、データベースの操作指令およびネットワーク接続の状態変更指令をあわせて「指令」と呼ぶ。ネットワーク接続の状態変更指令には、クライアント・サーバ間の接続を確立する「接続指令」と、その接続を切断する「切断指令」が含まれる。
【００１３】
なお、指令はユーザが発生させることもあれば、クライアント端末装置内で実行されるプログラムの動作によって発生することもある。前者の例としては、ユーザがマウスなどの対話デバイスを操作して、仮想オブジェクトを移動させた際に指令が発生されることが挙げられる。一方、後者の例としては、シューティングゲーム・システムにおいて、クライアント端末装置において実行されるゲームプログラムが敵キャラクタをアルゴリズム的に移動・回転させた際に指令が発生されること等が挙げられる。
【００１４】
図２は本実施形態に係るシステムにおいて、データベースを更新するための基本的な情報の流れを示す図である。同図において、Ａ、Ｂ、Ｃ、Ｄはクライアント端末装置、Ｘはサーバ装置である。いま、クライアント端末装置Ａが共有シーンデータベースの操作指令を行ったとする。操作指令の内容を示すデータはネットワーク経由でサーバ装置Ｘに送信される（クライアント端末装置Ａからサーバ装置Ｘへのデータの送信は同図では▲１▼で示している）。
【００１５】
サーバ装置Ｘは、この操作指令を受けてクライアント端末装置Ａから送信されたデータを、すべてのクライアント端末装置（Ａ、Ｂ、Ｃ、Ｄ）に配信する（サーバ装置Ｘから全てのクライアント端末装置へのデータの送信は同図では▲２▼で示している）。
【００１６】
このような過程を経ることによって、クライアント端末装置Ｂ、Ｃ、Ｄもクライアント端末装置Ａによる操作の内容を知ることができる。なお、操作指令の内容としては、少なくとも操作対象を特定するための情報、および操作の種類を特定するための情報を含む。操作の種類によっては、さらに操作実行に必要なパラメータを含むこともありうる。
【００１７】
図３は、サーバ装置、クライアント端末装置の基本構成を示すブロック図である。３０１はＣＰＵで、サーバ装置、もしくはクライアント端末装置全体の制御を行うと共に、キーボード３０７やマウス３０８から入力された指令、もしくはメモリ３０２にロードされたプログラムを実行することで発生した指令に応じた処理等を行う。
【００１８】
３０２はメモリで、外部記憶装置３０６からロードされたプログラムやシーンデータベースを含むデータを一時的に保持するエリアを備えると共に、処理中に使用するデータなどを一時的に保持するためのエリアをも備える。また、通信部３０５を介して外部に送信するデータを一時的に保持するためのエリア（送信バッファ）や、受信したデータなどを一時的に保持するためのエリア（受信バッファ）も備える。
【００１９】
さらに、メモリ３０２には特定条件に関するデータ「特定条件データ］を保持するエリアを備える。特定条件データは、個々のプロセスを識別するための識別番号のリストである。このリストには、特定条件を満たすプロセス、即ち主観視点を持つプロセスの識別番号が蓄えられる。リストの長さは、主観視点を持つことの出来るプロセスの個数の限界値に等しい。なお、この限界値は予め設定されているものとする。
【００２０】
３０３は同図に示した各部を繋ぐバスである。３０４はバス３０３と後述の各部とを繋ぐためのインターフェースである。３０５は通信部で、通信媒体１０２を介して外部の機器とのデータ通信を行う。
【００２１】
３０６は、メモリ３０２にロードするプログラムやデータを保持する外部記憶装置で、例えばハードディスクなどの記憶装置である。また、図３に示した構成がサーバ装置のものである場合には後述のサーバ装置が行う処理に対応するプログラムが、図３に示した構成がクライアント端末装置のものである場合には後述のクライアント端末装置が行う処理に対応するプログラムが、保存されており、これらは必要に応じてメモリ３０２にロードされ、ＣＰＵ３０１の処理対象となる。３０７、３０８は夫々キーボード、マウスで、ＣＰＵ３０１に対して各種の指示を入力することができ、上記指令を入力することもできる。
【００２２】
３０９は表示部で、ＣＰＵ３０１による処理結果を表示することができ、例えばクライアント端末装置間で共有する仮想空間の画像を表示することができる。
【００２３】
３１０は入出力部で、外部の装置を接続し、この装置とデータの入出力を行う為のものである。
【００２４】
図４はクライアント端末装置内で行われる処理の模式図である。矢印はデータの流れを表している。４０１はクライアント端末装置を表す。クライアント端末装置４０１が行う処理には、指令を処理するための指令処理モジュール４０３および指令に基づいてデータベース４０５を更新する更新処理モジュール４０４が含まれる。また、４０６は通信媒体１０２としてのＬＡＮ４０２へのデータ送信を行う送信モジュール、４０７はＬＡＮ４０２からのデータ受信を行う受信モジュールである。これらのモジュール間でのデータの受け渡しは、送信キュー４０８および受信キュー４０９と呼ぶ（クライアント端末装置内のメモリ３０２に設けられる）バッファを経由して行われる。
【００２５】
図５は、クライアント端末装置が行うメインの処理のフローチャートである。なお同図のフローチャートに従ったプログラムは外部記憶装置３０６に保存されており、必要に応じてメモリ３０２にロードされ、ＣＰＵ３０１により実行される。その結果クライアント端末装置は、同図のフローチャートに従った処理を行うことになる。
【００２６】
クライアント装置を起動するとプロセスを分岐し（ステップＳ５０１）、通信媒体１０２を介してサーバ装置にデータの送信を行う送信処理（ステップＳ５０３）、通信媒体１０２を介してサーバ装置からデータの受信を行う受信処理（ステップＳ５０４）を行う。なお、同図には示していないが、これ以外にもＣＧ画像生成処理や、表示ウィンドウ処理も行う。ＣＧ画像生成処理は、シーングラフデータベースを参照して、仮想空間のＣＧ画像を生成する処理である。一方、表示ウィンドウ処理は、ＣＧ画像などユーザに提示する情報を表示部３０９上のウィンドウとして表示するとともに、そのウィンドウに関するマウス・キーボードなどの対話デバイスによるユーザの入力操作を処理する。なお、ＣＧ画像生成処理および表示ウィンドウ処理は、公知のＣＧ画像生成方法および表示ウィンドウの処理方法と同様であるのでその詳細な説明は省略する。
【００２７】
また、上記ステップ以外にもプロセスを分岐し（ステップＳ５０２）、指令を処理するための指令処理（ステップＳ５０５）、シーングラフデータベースを更新するための更新処理（ステップＳ５０６）を行う。上記送信処理、受信処理、指令処理および更新処理は、夫々ステップＳ５０９、ステップＳ５１０、ステップＳ５０７、ステップＳ５０８において処理の終了指示が発生したか否かが判定される。終了指示がなければ、夫々ステップＳ５０３、ステップＳ５０４、ステップＳ５０５、ステップＳ５０６に戻って処理を継続する。一方、終了指示があれば以上の処理を終了する。なお、送信処理、受信処理、指令処理および更新処理について詳しくは後述する。
【００２８】
次に、上記ステップＳ５０５における処理、即ち、指令を処理するための指令処理の詳細について説明する。図６は、ステップＳ５０５における処理の詳細を示すフローチャートである。
【００２９】
先ず、指令の入力を検知する（ステップＳ６０１）。次に、入力された指令を解析し、この指令が通信媒体１０２を介したサーバ装置との通信路の確立（即ちサーバ装置と通信媒体１０２を介して接続）を要求する指令（接続指令）であるかを判断し（ステップＳ６０２）、接続指令であればステップＳ６０３に進み、通信部３０５によってサーバ装置との通信路を確立し、指令処理を終了する。
【００３０】
一方、接続指令でない場合はステップＳ６０４に進む。ステップＳ６０４では、ステップＳ６０１で入力された指令を解析し、この指令が通信媒体１０２を介したサーバ装置との通信路の切断（即ち通信媒体１０２を介したサーバ装置との接続の切断）を要求する指令（切断指令）であるかを判断し、切断指令であればステップＳ６０５に進み、通信部３０５によってサーバ装置との通信路を切断し、指令処理を終了する。
【００３１】
一方、ステップＳ６０１で入力された指令が切断指令でない（即ち、接続指令でも切断指令でもない）場合、この指令をデータベースの操作指令と判定してステップＳ６０６に進む。ステップＳ６０６では、操作指令の内容を示すイベントと呼ぶデータを作成する。
【００３２】
続いて、ステップＳ６０６で作成したイベントをメモリ３０２内に設けられた送信キュー４０８に入力し（ステップＳ６０７）、指令処理を終了する。
【００３３】
以上の処理により、指令の種類に基づいて、通信路の確立／切断、指令の伝送を行うことが出来る。
【００３４】
次に、上記ステップＳ５０６における処理、即ち、データベースを更新するための更新処理の詳細について説明する。図７は、ステップＳ５０６における処理の詳細を示すフローチャートである。
【００３５】
先ず、特定条件を満たすか否かをチェックし、特定条件を満たしていれば全てのプロセスに、その旨を通知する特定条件検査・通知処理を行う（ステップＳ７０１）。ステップＳ７０１については、後に詳述する。
【００３６】
次にメモリ３０２内に設けられている受信キュー４０９内のイベントの有無をチェックする（ステップＳ７０２）。イベントが受信キュー４０９内に存在する場合には処理をステップＳ７０３からステップＳ７０４に進め、受信キュー４０９内のイベントを取得して解析し、操作指令の内容を抽出する（ステップＳ７０４）。そして解析した操作指令の内容に従ってデータベースの操作を実行する（ステップＳ７０５）。一方、ステップＳ７０３で受信キュー４０９にイベントがないと判断した場合は、更新処理を終了する。なお、ステップＳ７０５については、後に詳述する。
【００３７】
ここで、上記ステップＳ７０１における処理、特定条件検査・通知処理の詳細について説明する。図１１は、ステップＳ７０１における処理の詳細を示すフローチャートである。
【００３８】
先ず、ステップＳ１１０１にて、当該のプロセスに関して特定条件を満たすか否か判定する。本実施形態では、視点の種類が主観視点かどうかを判定する。
【００３９】
特定条件を満たす場合は処理をステップＳ１１０２に進め、当該のプロセスが特定条件を満たすことを全プロセスに通知するためのデータである特定条件設定イベントを作成し、処理をステップＳ１１０４に進める。一方、特定条件を満たさない場合は、当該のプロセスが特定条件を満たさないことを全プロセスに通知するためのデータである特定条件解除イベントを作成し（ステップＳ１１０３）、処理をステップＳ１１０４に進める。
【００４０】
ステップＳ１１０４では、ステップＳ１１０２あるいはステップＳ１１０３で作成したイベントをメモリ３０２内に設けられた送信キュー４０８に入力し、特定条件検査・通知処理を終了する。
【００４１】
なお、以下の説明では、上記の特定条件設定イベントおよび特定条件解除イベントをあわせて「特定条件指示イベント」と呼ぶ。特定条件指示イベントには、少なくとも発信元プロセスの識別番号、および特定条件指示イベントと他のイベントの種類を区別するための情報、および特定条件の設定／解除を指定するための情報を含む。
【００４２】
次に、上記ステップＳ７０５における処理、即ち、操作実行処理の詳細について説明する。図１２は操作実行処理の詳細を示すフローチャートである。
【００４３】
先ず、ステップＳ１２０１にて、ステップＳ７０４で解釈したイベントが特定条件指示イベントであるか判定する。特定条件指示イベントである場合はステップＳ１２０２に進み、当該プロセスが特定条件に違反しているか否か判定する。即ち、次の４つの条件（３つの前記特定条件に関するルール（１）〜（３）と、自プロセスか否か判定（４））を同時に満たす場合に自プロセスが限界値を超えて主観視点を設定しようとしているため特定条件に違反していると判定する。それ以外の場合は、特定条件に違反していないと判定する。
（１）特定条件指示イベントの種類が特定条件設定イベントである
（２）メモリ３０２に蓄えられた特定条件データに関して、主観視点のプロセス数が予め設定された限界値と同一
（３）特定条件指示イベントに示された発信元プロセス識別番号が主観視点のプロセスのリストに含まれない
（４）特定条件指示イベントの発信者が自プロセスである
ステップＳ１２０２にて特定条件違反と判定された場合、ステップＳ１２０３に進み、通信媒体１０２を介したサーバ装置との通信路を解消し、操作実行処理を終了する。一方、特定条件違反でない場合は、ステップＳ１２０４に進む。ステップＳ１２０４では、以下のルールを判定し、メモリ３０２に蓄えられた特定条件データを更新（追加および削除）する。
【００４４】
即ち、下記の（ｉ）〜（ｉｉｉ）の３つの条件を同時に満たす場合は、特定条件指示イベントに示された発信元プロセス識別番号を主観視点のプロセスのリストに追加する。
（ｉ）特定条件指示イベントの種類が特定条件設定イベントである
（ｉｉ）メモリ３０２に蓄えられた特定条件データに関して、主観視点のプロセスの数が予め設定された限界値未満である
（ｉｉｉ）特定条件指示イベントに示された発信元プロセス識別番号が主観視点のプロセスのリストに含まれない
あるいは、下記の（Ｉ）〜（ＩＩ）の２つの条件を同時に満たす場合は、特定条件指示イベントに示された発信元プロセス識別番号を主観視点のプロセスのリストから削除する。
（Ｉ）特定条件指示イベントの種類が特定条件解除イベントである。
（ＩＩ）特定条件指示イベントに示された発信元プロセス識別番号が主観視点のプロセスのリストに含まれる。
【００４５】
前述したように、（ｉ）〜（ｉｉｉ）を同時に満たす場合、または（Ｉ）〜（ＩＩ）を同時に満たす場合は、ステップＳ１２０４において、メモリ３０２に蓄えられた特定条件データが更新される．これ以外の場合は、ステップＳ１２０４において、特定条件データを更新しない。上記ステップＳ１２０４の処理が終了したら、操作実行処理を終了する。
【００４６】
ステップＳ１２０１において、特定条件指示イベントでないと判定した場合はステップＳ１２０５に進み、メモリ３０２のシーンデータベースをイベントの内容に従って更新し、操作実行処理を終了する。
【００４７】
次に、上記ステップＳ５０３における処理、即ち、通信媒体１０２を介してサーバ装置にデータの送信を行う送信処理の詳細について説明する。図８は、ステップＳ５０３における処理の詳細を示すフローチャートである。
【００４８】
先ず、メモリ３０２内に設けられている送信キュー４０８内のイベントの有無をチェックする（ステップＳ８０１）。イベントが送信キュー４０８内に存在する場合には処理をステップＳ８０２からステップＳ８０３に進め、クライアント端末装置とサーバ装置との通信路が確立されているかをチェックし（ステップＳ８０３）、確立されていれば送信キュー４０８内のイベントをサーバ装置に送信する（ステップＳ８０４）。一方、通信路が確立されていない場合は、送信処理を終了する。
【００４９】
次に、上記ステップＳ５０４における処理、即ち、通信媒体１０２を介してサーバ装置からデータの受信を行う受信処理の詳細について説明する。図９は、ステップＳ５０４における処理の詳細を示すフローチャートである。
【００５０】
先ず、メモリ３０２内に設けられており、サーバ装置から送信されるイベントのデータを一時的に蓄積する受信バッファ内のイベントの有無をチェックする（ステップＳ９０１）。イベントが受信バッファ内に存在する場合には処理をステップＳ９０２からステップＳ９０３に進め、受信バッファ内のイベントのデータを受信キュー４０９内に移動させる（ステップＳ９０３）。一方、受信バッファ内にイベントのデータがない場合には受信処理を終了する。
【００５１】
次に、サーバ装置が行う処理について説明する。図１０はサーバ装置が行うメインの処理のフローチャートである。なお同図のフローチャートに従ったプログラムは外部記憶装置３０６に保存されており、必要に応じてメモリ３０２にロードされ、ＣＰＵ３０１により実行される。その結果サーバ装置は、同図のフローチャートに従った処理を行うことになる。
【００５２】
先ずサーバ装置はクライアント端末装置から通信路確立要求が送信されてきたか否かを判定し（ステップＳ１００１）、要求があれば処理をステップＳ１００２に進め、要求元のクライアント端末装置との通信路を確立する（ステップＳ１００２）。
【００５３】
一方、接続要求がない場合は接続済みクライアント端末装置からの通信路切断要求が送信されてきたか否かを判定し（ステップＳ１００３）、要求があれば処理をステップＳ１００４に進め、要求元のクライアント端末装置との通信路を切断する（ステップＳ１００４）。
【００５４】
一方、切断要求がない場合は処理をステップＳ１００５に進め、クライアント端末装置から受信したイベントの有無をチェックする（ステップＳ１００５）。受信イベントがあると判定した場合は（ステップＳ１００６）、処理をステップＳ１００７に進め、その受信イベントを各クライアント端末装置に配信した後、処理をステップＳ１００８に進める。
【００５５】
一方、受信イベントがない場合には（ステップＳ１００６）、処理をステップＳ１００８に進める。ステップＳ１００８では、プログラムを終了する指示があったかどうか判定し、終了指示があれば以上の処理を終了する。一方、終了指示がなければ処理をステップＳ１００１に戻し、以降の処理を続行する。
【００５６】
ここで、視点の種類を設定するための方法について説明する。図１３は、クライアント端末装置の表示部３０９に表示される画面例を示す図である。データベースの内容は３次元仮想空間に係るデータであるので、表示ウィンドウ１３０１中の３次元空間表示部１３０２にはこの３次元仮想空間に係るデータに従った３次元仮想物体１３０３、１３０４のＣＧ画像が表示されている。
【００５７】
また、３次元空間表示部１３０２の下部には、視点の種類（主観視点もしくは客観視点）を設定するための視点モード設定部１３０５が設けられている。視点モード設定部１３０５には、主観視点および客観視点に対応したラジオボタン１３０７、１３０８が表示されている。視点モードを設定するためには、端末のユーザがマウス３０８を操作し、カーソル１３０６が視点モード設定部１３０５にあるラジオボタンのうち所望のモードに対応するラジオボタン（主観視点に設定する場合にはラジオボタン１３０７、客観視点に設定する場合にはラジオボタン１３０８）を指示するようにしたのち、マウス３０８の左ボタンを押下して有効にする。なお、設定した視点モードを示すデータはメモリ３０２内に記憶されるものとする。
【００５８】
なお、この操作についてはキーボード３０７を用いても良いし、その操作方法については特に限定されるものではない。
【００５９】
上記の視点モードの設定操作は、不図示の表示ウィンドウ描画処理に関連するマウス操作あるいはキーボード操作の処理工程において処理される。
【００６０】
なお、視点モードの設定方法は対話的操作に限るものではなく、プログラムを実行することにより任意のアルゴリズムに基づいて決定し、決定した視点モードを設定しても構わない。
【００６１】
以上の構成により、所定数を超えて主観視点を設定しようとするプロセスは自ら通信路を切断するため、共有データベースシステムに参加する主観視点を持つプロセスの数を限定できる。しかも、サーバ装置は、プロセスの数の制限を行うために特別な構成を必要とない。
【００６２】
なお、本実施形態では特定条件を「主観視点を持つこと」、システムへのプロセスの参加を制限する条件を「主観視点を持つプロセスの数が限界値を超えたこと」としているが、これらの条件に限ったものでないことは明らかである。
【００６３】
また、データベースの更新要求に関する情報が全てのプロセスに伝達され、かつ各プロセスが受信した該情報に基づきデータベースを更新するのであれば、データベース操作の手順も上記の説明に限られるものではない。
【００６４】
［第２の実施形態］
上記第１実施形態に係るシステムの構成はサーバ・クライアント構成であったが、これに限定されるものではない。例えば、各クライアント端末装置がクライアントとしての役割を果たしつつ、サーバとしての機能（接続・切断要求の受付機能、クライアントへのデータ配送機能）を兼ねれば、各クライアント端末装置が他のすべてのクライアント端末装置と接続する構成で上記実施形態と同様の効果を得ることが可能である。
【００６５】
［第３の実施形態］
上記第１乃至２の実施形態では共有するデータは、仮想空間の構造と属性を表すシーンデータであるとしている。しかしながらこれに限定されるものではなく、各種のデータが共有するデータとして適用可能である。
【００６６】
また、共有データには前記の特定条件データが含まれていれば十分であり、これ以外の種類のデータは必ずしも存在しなくても構わない。
【００６７】
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【００６８】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。前述したサーバ端末の機能を有するプログラムであるサーバ・プログラム、およびクライアント端末の機能を有するプログラムであるクライアント・プログラムは、１つの端末上で１つまたは複数が動作可能である。また、１つの端末で複数のプログラムを実行する場合、サーバ・プログラムとクライアント・プログラムの組み合わせは任意である。
【００６９】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００７０】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。なお、前述のプログラムコードは、ＯＳの管理するプロセスとして実行されてもよいし、あるプロセスのスレッドの中で実行されてもよい。
【００７１】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００７２】
【発明の効果】
以上説明したように、本実施形態によれば、データを共有するプロセス群へのプロセスの参加を、サーバ機能を有する装置において、特別な処理を行うことなく、特定の条件に基づいて制限することができる。
【図面の簡単な説明】
【図１】第１の実施形態に係る仮想空間共有システムの概略構成を示す図である。
【図２】第１の実施形態に係るシステムにおいて、データベースを更新するための基本的な情報の流れを示す図である。
【図３】サーバ装置、クライアント端末装置の基本構成を示すブロック図である。
【図４】クライアント端末装置内で行われる処理の模式図である。
【図５】第１の実施形態に係るクライアント端末装置が行うメインの処理のフローチャートである。
【図６】ステップＳ５０５における処理の詳細を示すフローチャートである。
【図７】ステップＳ５０６における処理の詳細を示すフローチャートである。
【図８】ステップＳ５０３における処理の詳細を示すフローチャートである。
【図９】ステップＳ５０４における処理の詳細を示すフローチャートである。
【図１０】第１の実施形態に係るサーバ装置が行うメインの処理のフローチャートである。
【図１１】ステップＳ７０１における処理の詳細を示すフローチャートである。
【図１２】ステップＳ７０５における処理の詳細を示すフローチャートである。
【図１３】第１の実施形態に係るクライアント端末装置の表示部３０９に表示される画面例を示す図である。
【図１】
2004334566.tif 000003
【図２】
2004334566.tif 000004
【図３】
2004334566.tif 000005
【図４】
2004334566.tif 000006
【図５】
2004334566.tif 000007
【図６】
2004334566.tif 000008
【図７】
2004334566.tif 000009
【図８】
2004334566.tif 000010
【図９】
2004334566.tif 000011
【図１０】
2004334566.tif 000012
【図１１】
2004334566.tif 000013
【図１２】
2004334566.tif 000014
【図１３】
2004334566.tif 000015