(57)【要約】【課題】データを共有するシステムを柔軟、且つ整合性の取れたシステムにする技術を提供すること。【解決手段】指令がサーバ装置との通信路の確立を要求する指令であればサーバ装置との通信路を確立し（Ｓ６０３）、共有モードをパブリックモードに設定する（Ｓ６０４）。指令がサーバ装置との通信路の切断を要求する指令であればサーバ装置との通信路を切断し（Ｓ６０６）、共有モードをプライベートモードに設定する（Ｓ６０７）。指令がデータベースの操作指令の場合、操作指令の内容を示すイベントを作成し（Ｓ６０８）、共有モードがパブリックモードである場合には送信キューに（Ｓ６１０）、共有モードがプライベートモードである場合には受信キュー４０９に入力する（Ｓ６１１）。【選択図】  図６
2004265193.tif 000002
【特許請求の範囲】
【請求項１】
サーバ装置を介して自装置及び他の装置と通信可能である情報処理装置であると共に、当該情報処理装置から前記サーバ装置に送信される指令の内容を示すデータを保持するための第１の保持手段と、前記情報処理装置内で処理される指令の内容を示すデータを保持するための第２の保持手段とを備える情報処理装置が行う情報処理方法であって、
入力された指令を解析する解析工程と、
前記解析工程による解析の結果、前記入力された指令が前記サーバ装置との通信路の確立もしくは切断を要求する指令である場合、当該指令に応じて当該通信路の確立もしくは切断を行う制御工程と、
前記解析工程による解析の結果、前記入力された指令が所定のデータベースに対する操作を要求する指令である場合、前記入力された指令を示すデータを作成し、前記制御工程によって前記通信路が確立されているか切断されているかに応じて、作成した前記データを前記第１の保持手段、前記第２の保持手段の何れかに出力する出力工程と
を備えることを特徴とする情報処理方法。
【請求項２】
前記通信路が確立されている場合、前記第１の保持手段に保持されているデータを前記サーバ装置に対して送信する送信工程を更に備えることを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記送信工程で前記サーバ装置に送信したデータは、前記サーバ装置を介して前記自装置及び他の装置に送信されることを特徴とする請求項２に記載の情報処理方法。
【請求項４】
前記送信工程では、前記サーバ装置と通信路を確立している装置の数を得るための情報を用いて、前記サーバ装置と通信路を確立している装置の数が所定数以上である場合に、前記第１の保持手段に保持されているデータを前記サーバ装置に対して送信することを特徴とする請求項２又は３に記載の情報処理方法。
【請求項５】
更に、前記第２の保持手段に保持されたデータが示す指令に従って前記データベースを操作する処理工程を備えることを特徴とする請求項１乃至４の何れか１項に記載の情報処理方法。
【請求項６】
前記制御工程では更に、前記作成したデータを前記出力工程で前記第１の保持手段、前記第２の保持手段の何れに出力するのかを決定するためのモードを、前記通信路の確立／切断に応じて設定することを特徴とする請求項１乃至５の何れか１項に記載の情報処理方法。
【請求項７】
前記モードは、前記通信路が確立されている場合には第１のモード、前記通信路が切断されていれば第２のモードに設定され、
前記出力工程では、前記モードが第１のモードである場合には前記作成されたデータを第１の保持手段に出力し、前記モードが第２のモードである場合には前記作成されたデータを第２の保持手段に出力することを特徴とする請求項６に記載の情報処理方法。
【請求項８】
前記制御工程では更に、前記作成したデータを前記出力工程で前記第１の保持手段、前記第２の保持手段の何れに出力するのかを決定するためのモードを、外部からの指示に従って設定することを特徴とする請求項１乃至５の何れか１項に記載の情報処理方法。
【請求項９】
前記モードは外部からの指示に従って第１のモード、第２のモードの何れかに設定され、
前記出力工程では、前記モードが前記第１のモードに設定され、且つ前記通信路が確立されている場合には前記作成されたデータを第１の保持手段に出力し、前記モードが前記第２のモードに設定されている場合、もしくは前記モードが前記第１のモードに設定され、且つ前記通信路が切断されている場合には前記作成されたデータを第２の保持手段に出力することを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
通信可能な他プロセスにデータを出力する第１のモードと、自プロセスにデータを出力する第２のモードとを有する情報処理方法であって、
データに対する操作要求示す操作要求情報を生成する生成工程と、
前記生成された要求情報を送信キューに入力し、他のプログラムに送信する送信工程と、
前記他のプログラムで生成された操作要求情報を受信し受信キューに入力する受信工程と、
前記受信キューに入力された操作要求情報にしたがって、データの操作を実行する操作実行工程とを有し、
前記第１のモードが設定されている場合は、前記生成工程で生成された操作要求情報を前記送信工程にて前記送信キューに入力し他のプログラムに送信し、
前記第２のモードが設定されている場合は、前記生成工程で生成された操作要求情報を前記受信キューに入力し、前記操作実行工程にて前記受信キューに入力された操作要求情報に従ってデータの操作を実行することを特徴とする情報処理方法。
【請求項１１】
前記第１のモードはデータを共有する共有モードであり、前記第２のモードはデータを共有しない非共有モードであることを特徴とする請求項１０記載の情報処理方法。
【請求項１２】
前記データは、データベースアイテムのデータであることを特徴とする請求項１０に記載の情報処理方法。
【請求項１３】
前記データは、データベースアイテムの属性のデータであることを特徴とする請求項１０に記載の情報処理方法。
【請求項１４】
ネットワークを介して複数のクライアント端末装置と通信可能なサーバ装置の制御方法であって、
前記ネットワークを介して１つ以上のクライアント端末装置から、指令のデータを受け付ける受付工程と、
前記ネットワークを介して前記サーバ装置との通信路を確立するクライアント端末装置の数を計数する計数工程と、
前記計数工程で計数した結果が所定の数以上である場合に、前記受付工程で受け付けたデータを前記複数のクライアント端末装置に対して送信する送信工程と
を備えることを特徴とするサーバ装置の制御方法。
【請求項１５】
前記計数工程で計数した結果が所定の数よりも少ない場合に、前記受付工程で受け付けたデータを破棄する破棄工程を更に備えることを特徴とする請求項１４に記載のサーバ装置の制御方法。
【請求項１６】
サーバ装置を介して自装置及び他の装置と通信可能である情報処理装置であって、
前記情報処理装置から前記サーバ装置に送信される指令の内容を示すデータを保持するための第１の保持手段と、
前記情報処理装置内で処理される指令の内容を示すデータを保持するための第２の保持手段と、
入力された指令を解析する解析手段と、
前記解析手段による解析の結果、前記入力された指令が前記サーバ装置との通信路の確立もしくは切断を要求する指令である場合、当該指令に応じて当該通信路の確立もしくは切断を行う制御手段と、
前記解析手段による解析の結果、前記入力された指令が所定のデータベースに対する操作を要求する指令である場合、前記入力された指令を示すデータを作成し、前記制御手段によって前記通信路が確立されているか切断されているかに応じて、作成した前記データを前記第１の保持手段、前記第２の保持手段の何れかに出力する出力手段と
を備えることを特徴とする情報処理装置。
【請求項１７】
通信可能な他プロセスにデータを出力する第１のモードと、自プロセスにデータを出力する第２のモードとを有する情報処理装置であって、
データに対する操作要求示す操作要求情報を生成する生成手段と、
前記生成された要求情報を送信キューに入力し、他のプログラムに送信する送信手段と、
前記他のプログラムで生成された操作要求情報を受信し受信キューに入力する受信手段と、
前記受信キューに入力された操作要求情報にしたがって、データの操作を実行する操作実行手段とを有し、
前記第１のモードが設定されている場合は、前記生成手段が生成した操作要求情報を前記送信手段によって前記送信キューに入力し他のプログラムに送信し、
前記第２のモードが設定されている場合は、前記生成手段が生成した操作要求情報を前記受信キューに入力し、前記操作実行手段によって前記受信キューに入力された操作要求情報に従ってデータの操作を実行することを特徴とする情報処理装置。
【請求項１８】
ネットワークを介して複数のクライアント端末装置と通信可能なサーバ装置であって、
前記ネットワークを介して１つ以上のクライアント端末装置から、指令のデータを受け付ける受付手段と、
前記ネットワークを介して前記サーバ装置との通信路を確立するクライアント端末装置の数を計数する計数手段と、
前記計数手段によって計数した結果が所定の数以上である場合に、前記受付手段によって受け付けたデータを前記複数のクライアント端末装置に対して送信する送信手段と
を備えることを特徴とするサーバ装置。
【請求項１９】
サーバ装置を介して自装置および他の装置と通信可能であるコンピュータであると共に、当該コンピュータから前記サーバ装置に送信される指令の内容を示すデータを保持するための第１の保持手段と、前記コンピュータ内で処理される指令の内容を示すデータを保持するための第２の保持手段とを備えるコンピュータに請求項１乃至９の何れか１項に記載の情報処理方法を実行させることを特徴とするプログラム。
【請求項２０】
サーバ装置を介して自装置及び他の装置と通信可能であるコンピュータであると共に、当該他の装置と共有するデータを保持する保持手段と、前記コンピュータから前記サーバ装置に送信されるデータを保持するための第１の保持手段と、前記コンピュータ内で処理されるデータを保持するための第２の保持手段とを備えるコンピュータに請求項１０乃至１３の何れか１項に記載の情報処理方法を実行させることを特徴とするプログラム。
【請求項２１】
コンピュータに請求項１４に記載のサーバ装置の制御方法を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データを扱う技術に関するものである。
【０００２】
【従来の技術】
異なるコンピュータ端末間で３次元仮想空間を共有する技術は、遠隔会議システム、ネットワーク型対戦ゲーム、協調型デザインシステムなどを実現するために必須である。
【０００３】
このような仮想空間共有システムの実現例としては、以下のようなものがある（例えば非特許文献１を参照）。
【０００４】
例えば従来の仮想空間共有システムでは、ある端末で共有データを変更すると、変更内容がネットワークを介して接続された他の端末に伝送され、その変更内容に基づいて、それら他の端末がデータを変更することによって、端末間でデータの同一性を保つ。
【０００５】
各端末が保持するデータは、夫々の端末において実行されるプログラム間で共有される状態に設定したり、あるいは逆に共有されない状態に設定したりすることができる。この共有／非共有の切り換えは、仮想空間データを構成する「ノード」と呼ばれるオブジェクトの単位で行うことができる。
【非特許文献１】
Ｄｉｓｔｒｉｂｕｔｅｄ  Ｏｐｅｎ  Ｉｎｖｅｎｔｏｒ（出展：Ｇ．Ｈｅｓｈｉｎａ  ｅｔ．ａｌ．  ：  ”Ｄｉｓｔｒｉｂｕｔｅｄ  Ｏｐｅｎ  Ｉｎｖｅｎｔｏｒ  ：  Ａ  Ｐｒａｃｔｉｃａｌ  Ａｐｐｒｏａｃｈ  ｔｏ  Ｄｉｓｔｒｉｂｕｔｅｄ  ３Ｄ  Ｇｒａｐｈｉｃｓ”，  ｉｎ  Ｐｒｏｃ．  ｏｆ  ｔｈｅ  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ  Ｓｏｆｔｗａｒｅ  ａｎｄ  Ｔｅｃｈｎｏｌｏｇｙ  （ＶＲＳＴ’９９），  ｐｐ．７４−８１，  １９９９）
【０００６】
【発明が解決しようとする課題】
しかし上述の仮想空間共有システムでは、データの共有／非共有の切り換えのために、仮想空間データの構造を変更しなければならなかった。また、プログラムごとやオブジェクトの属性ごとなどの単位で共有／非共有の切り換えが出来なかった。
【０００７】
さらに、仮想空間を共有するすべてのコンピュータ端末がネットワーク接続を完了する前に、何れかのコンピュータ端末が共有データを変更した場合、まだネットワークに接続していないコンピュータ端末はその変更に関する情報を受信することが出来ず、夫々の端末において実行されるプログラム間でデータの矛盾が生じるという別の問題があった。
【０００８】
本発明は以上の問題に鑑みてものであり、データを共有するシステムを柔軟、且つ整合性の取れたシステムにする技術を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明の目的を達成するために、例えば本発明の情報処理方法は以下の構成を備える。
【００１０】
すなわち、サーバ装置を介して自装置及び他の装置と通信可能である情報処理装置であると共に、当該情報処理装置から前記サーバ装置に送信される指令の内容を示すデータを保持するための第１の保持手段と、前記情報処理装置内で処理される指令の内容を示すデータを保持するための第２の保持手段とを備える情報処理装置が行う情報処理方法であって、
入力された指令を解析する解析工程と、
前記解析工程による解析の結果、前記入力された指令が前記サーバ装置との通信路の確立もしくは切断を要求する指令である場合、当該指令に応じて当該通信路の確立もしくは切断を行う制御工程と、
前記解析工程による解析の結果、前記入力された指令が所定のデータベースに対する操作を要求する指令である場合、前記入力された指令を示すデータを作成し、前記制御工程によって前記通信路が確立されているか切断されているかに応じて、作成した前記データを前記第１の保持手段、前記第２の保持手段の何れかに出力する出力工程と
を備えることを特徴とする。
【００１１】
本発明の目的を達成するために、例えば本発明の情報処理方法は以下の構成を備える。
【００１２】
すなわち、通信可能な他プロセスにデータを出力する第１のモードと、自プロセスにデータを出力する第２のモードとを有する情報処理方法であって、
データに対する操作要求示す操作要求情報を生成する生成工程と、
前記生成された要求情報を送信キューに入力し、他のプログラムに送信する送信工程と、
前記他のプログラムで生成された操作要求情報を受信し受信キューに入力する受信工程と、
前記受信キューに入力された操作要求情報にしたがって、データの操作を実行する操作実行工程とを有し、
前記第１のモードが設定されている場合は、前記生成工程で生成された操作要求情報を前記送信工程にて前記送信キューに入力し他のプログラムに送信し、
前記第２のモードが設定されている場合は、前記生成工程で生成された操作要求情報を前記受信キューに入力し、前記操作実行工程にて前記受信キューに入力された操作要求情報に従ってデータの操作を実行することを特徴とする。
【００１３】
本発明の目的を達成するために、例えば本発明のサーバ装置の制御方法は以下の構成を備える。
【００１４】
すなわち、ネットワークを介して複数のクライアント端末装置と通信可能なサーバ装置の制御方法であって、
前記ネットワークを介して１つ以上のクライアント端末装置から、指令のデータを受け付ける受付工程と、
前記ネットワークを介して前記サーバ装置との通信路を確立するクライアント端末装置の数を計数する計数工程と、
前記計数工程で計数した結果が所定の数以上である場合に、前記受付工程で受け付けたデータを前記複数のクライアント端末装置に対して送信する送信工程と
を備えることを特徴とする。
【００１５】
本発明の目的を達成するために、例えば本発明の情報処理装置は以下の構成を備える。
【００１６】
すなわち、サーバ装置を介して自装置及び他の装置と通信可能である情報処理装置であって、
前記情報処理装置から前記サーバ装置に送信される指令の内容を示すデータを保持するための第１の保持手段と、
前記情報処理装置内で処理される指令の内容を示すデータを保持するための第２の保持手段と、
入力された指令を解析する解析手段と、
前記解析手段による解析の結果、前記入力された指令が前記サーバ装置との通信路の確立もしくは切断を要求する指令である場合、当該指令に応じて当該通信路の確立もしくは切断を行う制御手段と、
前記解析手段による解析の結果、前記入力された指令が所定のデータベースに対する操作を要求する指令である場合、前記入力された指令を示すデータを作成し、前記制御手段によって前記通信路が確立されているか切断されているかに応じて、作成した前記データを前記第１の保持手段、前記第２の保持手段の何れかに出力する出力手段と
を備えることを特徴とする。
【００１７】
本発明の目的を達成するために、例えば本発明の情報処理装置は以下の構成を備える。
【００１８】
すなわち、通信可能な他プロセスにデータを出力する第１のモードと、自プロセスにデータを出力する第２のモードとを有する情報処理装置であって、
データに対する操作要求示す操作要求情報を生成する生成手段と、
前記生成された要求情報を送信キューに入力し、他のプログラムに送信する送信手段と、
前記他のプログラムで生成された操作要求情報を受信し受信キューに入力する受信手段と、
前記受信キューに入力された操作要求情報にしたがって、データの操作を実行する操作実行手段とを有し、
前記第１のモードが設定されている場合は、前記生成手段が生成した操作要求情報を前記送信手段によって前記送信キューに入力し他のプログラムに送信し、
前記第２のモードが設定されている場合は、前記生成手段が生成した操作要求情報を前記受信キューに入力し、前記操作実行手段によって前記受信キューに入力された操作要求情報に従ってデータの操作を実行することを特徴とする。
【００１９】
本発明の目的を達成するために、例えば本発明のサーバ装置は以下の構成を備える。
【００２０】
すなわち、ネットワークを介して複数のクライアント端末装置と通信可能なサーバ装置であって、
前記ネットワークを介して１つ以上のクライアント端末装置から、指令のデータを受け付ける受付手段と、
前記ネットワークを介して前記サーバ装置との通信路を確立するクライアント端末装置の数を計数する計数手段と、
前記計数手段によって計数した結果が所定の数以上である場合に、前記受付手段によって受け付けたデータを前記複数のクライアント端末装置に対して送信する送信手段と
を備えることを特徴とする。
【００２１】
【発明の実施の形態】
以下添付図面を参照し、本発明を好適な実施形態に従って詳細に説明する。
【００２２】
［第１の実施形態］
本実施形態に係るシステムは、仮想空間の構造と属性を記述するシーンデータベースを複数の端末で共有する仮想空間共有システムである。以下、本実施形態に係る仮想空間共有システムについて説明する。
【００２３】
図１は本実施形態に係る仮想空間共有システムの概略構成を示す図である。システムは１つのサーバ装置１０１と、複数のクライアント端末装置（同図ではクライアント端末装置１〜クライアント端末装置Ｎ）により構成されており、サーバ装置１０１とクライアント端末装置とは通信媒体１０２を介して通信可能である。また、夫々のクライアント端末装置は仮想空間の構造と属性を記述するシーンデータベースを内部に保持している。
【００２４】
また通信媒体１０２は、本実施形態ではイーサネット（登録商標）上に構築したＬＡＮである。なお、通信媒体としてはＵＳＢやＦｉｒｅｗｉｒｅ（登録商標）など他の情報伝達媒体でも構わない。更に、ネットワークの形態もＬＡＮだけでなく、ＷＡＮ経由の接続でもよいし、ＬＡＮとＷＡＮを併用しても構わない。
【００２５】
ここで、以下の説明で用いる「データベース操作」という用語について説明しておく。データベースの操作とは、データベースの内容を書き換える処理のことを差す。データベース操作は「操作指令」と「操作実行」の２段階に分かれる。操作指令はデータベースの更新要求であり、実際の書き換えは行われない。データベースに対する実際の書き換えは、「操作実行」の段階で行われる。以下の説明では特に断らない限り、単に「操作」と記述すれば「データベース操作」のことを指すものとする。操作対象がデータベース以外の場合は、「ユーザによる対話デバイスの操作」などのように操作対象を明示するものとする。
【００２６】
また、データベースの操作指令およびネットワーク接続の状態変更指令をあわせて「指令」と呼ぶ。ネットワーク接続の状態変更指令には、クライアント・サーバ間の接続を確立する「接続指令」と、その接続を切断する「切断指令」が含まれる。
【００２７】
なお、指令はユーザが発生させることもあれば、クライアント端末装置内で実行されるプログラムの動作によって発生することもある。前者の例としては、ユーザがマウスなどの対話デバイスを操作して、仮想オブジェクトを移動させた際に指令が発生されることが挙げられる。一方、後者の例としては、シューティングゲーム・システムにおいて、クライアント端末装置において実行されるゲームプログラムが敵キャラクタをアルゴリズム的に移動・回転させた際に指令が発生されること等が挙げられる。
【００２８】
図２は本実施形態に係るシステムにおいて、データベースを更新するための基本的な情報の流れを示す図である。同図において、Ａ、Ｂ、Ｃ、Ｄはクライアント端末装置、Ｘはサーバ装置である。いま、クライアント端末装置Ａが共有シーンデータベースの操作指令を行ったとする。操作指令の内容を示すデータはネットワーク経由でサーバ装置Ｘに送信される（クライアント端末装置Ａからサーバ装置Ｘへのデータの送信は同図では２１０で示している）。
【００２９】
サーバ装置Ｘは、この操作指令を受けてクライアント端末装置Ａから送信されたデータを、すべてのクライアント端末装置（Ａ，Ｂ，Ｃ，Ｄ）に配信する（サーバ装置Ｘから全てのクライアント端末装置へのデータの送信は同図では２１１，２１２，２１３，２１４で示している）。
【００３０】
このような過程を経ることによって、クライアント端末装置Ｂ、Ｃ、Ｄもクライアント端末装置Ａによる操作の内容を知ることができる。なお、操作指令の内容としては、少なくとも操作対象を特定するための情報、および操作の種類を特定するための情報を含む。操作の種類によっては、さらに操作実行に必要なパラメータを含むこともありうる。
【００３１】
図３は、サーバ装置、クライアント端末装置の基本構成を示すブロック図である。３０１はＣＰＵで、サーバ装置、もしくはクライアント端末装置全体の制御を行うと共に、キーボード３０７やマウス３０８から入力された指令、もしくはメモリ３０２にロードされたプログラムを実行することで発生した指令に応じた処理等を行う。
【００３２】
３０２はメモリで、外部記憶装置３０６からロードされたプログラムやシーンデータベースを含むデータを一時的に保持するエリアを備えると共に、処理中に使用するデータなどを一時的に保持するためのエリアをも備える。また、通信部３０５を介して外部に送信するデータを一時的に保持するためのエリア（送信バッファ）や、受信したデータなどを一時的に保持するためのエリア（受信バッファ）も備える。３０３は同図に示した各部を繋ぐバスである。３０４はバス３０３と後述の各部とを繋ぐためのインターフェースである。３０５は通信部で、通信媒体１０２を介して外部の機器とのデータ通信を行う。
【００３３】
３０６は、メモリ３０２にロードするプログラムやデータを保持する外部記憶装置で、例えばハードディスクなどの記憶装置である。また、図３に示した構成がサーバ装置のものである場合には後述のサーバ装置が行う処理に対応するプログラムが、図３に示した構成がクライアント端末装置のものである場合には後述のクライアント端末装置が行う処理に対応するプログラムが、保存されており、これらは必要に応じてメモリ３０２にロードされ、ＣＰＵ３０１の処理対象となる。３０７，３０８は夫々キーボード、マウスで、ＣＰＵ３０１に対して各種の指示を入力することができ、上記指令を入力することもできる。
【００３４】
３０９は表示部で、ＣＰＵ３０１による処理結果を表示することができ、例えばクライアント端末装置間で共有する仮想空間の画像を表示することができる。
【００３５】
３１０は入出力部で、外部の装置を接続し、この装置とデータの入出力を行う為のものである。
【００３６】
図４はクライアント端末装置内で行われる処理の模式図である。矢印はデータの流れを表している。４０１はクライアント端末装置を表す。クライアント端末装置４０１が行う処理には、指令を処理するための指令処理モジュール４０３および指令に基づいてデータベース４０５を更新する更新処理モジュール４０４が含まれる。また、４０６は通信媒体１０２としてのＬＡＮ４０２へのデータ送信を行う送信モジュール、４０７はＬＡＮ４０２からのデータ受信を行う受信モジュールである。これらのモジュール間でのデータの受け渡しは、送信キュー４０８および受信キュー４０９と呼ぶ（クライアント端末装置内のメモリ３０２に設けられる）バッファを経由して行われる。なお、指令処理モジュール４０３は、送信キュー４０８及び受信キュー４０９にデータを入力可能に構成されている。
【００３７】
図５は、クライアント端末装置が行うメインの処理のフローチャートである。なお同図のフローチャートに従ったプログラムは外部記憶装置３０６に保存されており、必要に応じてメモリ３０２にロードされ、ＣＰＵ３０１により実行される。その結果クライアント端末装置は、同図のフローチャートに従った処理を行うことになる。
【００３８】
クライアント装置を起動するとプロセスを分岐し（ステップＳ５０１）、通信媒体１０２を介してサーバ装置にデータの送信を行う送信処理（ステップＳ５０３）、通信媒体１０２を介してサーバ装置からデータの受信を行う受信処理（ステップＳ５０４）を行う。なお、同図には示していないが、これ以外にもシーングラフデータベースを参照して、仮想空間のＣＧ画像を生成し、表示部３０９に表示する処理も行う。なおＣＧ画像を生成する処理は、公知のＣＧ画像生成方法と同様であるのでその詳細な説明は省略する。
【００３９】
また、上記ステップ以外にもプロセスを分岐し（ステップＳ５０２）、指令を処理するための指令処理（ステップＳ５０５）、シーングラフデータベースを更新するための更新処理（ステップＳ５０６）を行う。上記送信処理、受信処理、指令処理および更新処理は、夫々ステップＳ５０９、ステップＳ５１０、ステップＳ５０７、ステップＳ５０８において処理の終了指示が発生したか否かが判定される。終了指示がなければ、夫々ステップＳ５０３、ステップＳ５０４、ステップＳ５０５、ステップＳ５０６に戻って処理を継続する。一方、終了指示があれば以上の処理を終了する。なお、送信処理、受信処理、指令処理および更新処理について詳しくは後述する。
【００４０】
ここでデータの共有／非共有に関連する用語を説明しておく。以下では、あるデータが共有／非共有のいずれになっているかを表す言葉として「共有モード」を用いる。そして、あるデータをクライアント端末装置間で共有する状態であることを、そのデータに関して「共有モードがパブリックモードである」と表現する。逆に、データをクライアント端末装置間で共有しない状態であることを「共有モードがプライベートモードである」と表現する。なお、クライアント端末装置の起動時における共有モードの初期値はプライベートモードである。また、この共有モードを表すデータはクライアント端末装置内のメモリ３０２内に保持されているものとする。
【００４１】
次に、上記ステップＳ５０５における処理、即ち、指令を処理するための指令処理の詳細について説明する。図６は、ステップＳ５０５における処理の詳細を示すフローチャートである。
【００４２】
先ず、指令の入力を検知する（ステップＳ６０１）。次に、入力された指令を解析し、この指令が通信媒体１０２を介したサーバ装置との通信路の確立（即ちサーバ装置と通信媒体１０２を介して接続）を要求する指令（接続指令）であるかを判断し（ステップＳ６０２）、接続指令であればステップＳ６０３に進み、通信部３０５によってサーバ装置との通信路を確立し、ＣＰＵ３０１はメモリ３０２内に保持している共有モードのデータを操作してパブリックモードに設定し（ステップＳ６０４）、指令処理を終了する。
【００４３】
一方、接続指令でない場合はステップＳ６０５に進む。ステップＳ６０５では、ステップＳ６０１で入力された指令を解析し、この指令が通信媒体１０２を介したサーバ装置との通信路の切断（即ち通信媒体１０２を介したサーバ装置との接続の切断）を要求する指令（切断指令）であるかを判断し（ステップＳ６０５）、切断指令であればステップＳ６０６に進み、通信部３０５によってサーバ装置との通信路を切断し、ＣＰＵ３０１はメモリ３０２内に保持している共有モードのデータを操作してプライベートモードに設定し（ステップＳ６０７）、指令処理を終了する。
【００４４】
一方、ステップＳ６０１で入力された指令が切断指令でない（即ち、接続指令でも切断指令でもない）場合、この指令をデータベースの操作指令と判定してステップＳ６０８に進む。ステップＳ６０８では、操作指令の内容を示すイベントと呼ぶデータを作成する（ステップＳ６０８）。
【００４５】
続いて、メモリ３０２内に保持されている共有モードのデータを参照して、共有モードがパブリックモードであるかプライベートモードであるかを判定する（ステップＳ６０９）。共有モードがパブリックモードである場合には処理をステップＳ６１０に進め、ステップＳ６０８で作成したイベントをメモリ３０２内に設けられた送信キュー４０８に入力し（ステップＳ６１０）、指令処理を終了する。
【００４６】
一方、共有モードがプライベートモードである場合には処理をステップＳ６１１に進め、ステップＳ６０８で作成したイベントをメモリ３０２内に設けられた受信キュー４０９に入力し（ステップＳ６１１）、指令処理を終了する。
【００４７】
以上の処理により、パブリックモード／プライベートに応じてイベントを送信キュー４０８／受信キュー４０９に入力することができる。
【００４８】
次に、上記ステップＳ５０６における処理、即ち、シーングラフデータベースを更新するための更新処理の詳細について説明する。図７は、ステップＳ５０６における処理の詳細を示すフローチャートである。
【００４９】
先ず、メモリ３０２内に設けられている受信キュー４０９内のイベントの有無をチェックする（ステップＳ７０１）。イベントが受信キュー４０９内に存在する場合には処理をステップＳ７０２からステップＳ７０３に進め、受信キュー４０９内のイベントを取得して解析し、操作指令の内容を抽出する（ステップＳ７０３）。そして解析した操作指令の内容に従ってシーンデータベースの操作を実行する（ステップＳ７０４）。一方、ステップＳ７０２で受信キュー４０９にイベントがないと判断した場合は、更新処理を終了する。
【００５０】
次に、上記ステップＳ５０３における処理、即ち、通信媒体１０２を介してサーバ装置にデータの送信を行う送信処理の詳細について説明する。図８は、ステップＳ５０３における処理の詳細を示すフローチャートである。
【００５１】
先ず、メモリ３０２内に設けられている送信キュー４０８内のイベントの有無をチェックする（ステップＳ８０１）。イベントが送信キュー４０８内に存在する場合には処理をステップＳ８０２からステップＳ８０３に進め、クライアント端末装置とサーバ装置との通信路が確立されているかをチェックし（ステップＳ８０３）、確立されていれば送信キュー４０８内のイベントをサーバ装置に送信する（ステップＳ８０４）。一方、通信路が確立されていない場合は、送信処理を終了する。
【００５２】
次に、上記ステップＳ５０４における処理、即ち、通信媒体１０２を介してサーバ装置からデータの受信を行う受信処理の詳細について説明する。図９は、ステップＳ５０４における処理の詳細を示すフローチャートである。
【００５３】
先ず、メモリ３０２内に設けられており、サーバ装置から送信されるイベントのデータを一時的に蓄積する受信バッファ内のイベントの有無をチェックする（ステップＳ９０１）。イベントが受信バッファ内に存在する場合には処理をステップＳ９０２からステップＳ９０３に進め、受信バッファ内のイベントのデータを受信キュー４０９内に移動させる（ステップＳ９０３）。一方、受信バッファ内にイベントのデータがない場合には受信処理を終了する。
【００５４】
次に、サーバ装置が行う処理について説明する。図１０はサーバ装置が行うメインの処理のフローチャートである。なお同図のフローチャートに従ったプログラムは外部記憶装置３０６に保存されており、必要に応じてメモリ３０２にロードされ、ＣＰＵ３０１により実行される。その結果サーバ装置は、同図のフローチャートに従った処理を行うことになる。
【００５５】
先ずサーバ装置はクライアント端末装置から通信路確立要求が送信されてきたか否かを判定し（ステップＳ１００１）、要求があれば処理をステップＳ１００２に進め、要求元のクライアント端末装置との通信路を確立する（ステップＳ１００２）。
【００５６】
一方、接続要求がない場合は接続済みクライアント端末装置からの通信路切断要求が送信されてきたか否かを判定し（ステップＳ１００３）、要求があれば処理をステップＳ１００４に進め、要求元のクライアント端末装置との通信路を切断する（ステップＳ１００４）。
【００５７】
一方、切断要求がない場合は処理をステップＳ１００５に進め、クライアント端末装置から受信したイベントの有無をチェックする（ステップＳ１００５）。受信イベントがあると判定した場合は（ステップＳ１００６）、処理をステップＳ１００７に進め、その受信イベントを各クライアント端末装置に配信した後、処理をステップＳ１００８に進める。
【００５８】
一方、受信イベントがない場合には（ステップＳ１００６）、処理をステップＳ１００８に進める。ステップＳ１００８では、プログラムを終了する指示があったかどうか判定し、終了指示があれば以上の処理を終了する。一方、終了指示がなければ処理をステップＳ１００１に戻し、以降の処理を続行する。
【００５９】
以上の説明により、本実施形態に係るシステムによると、イベントをクライアント端末装置からサーバ装置に送信するか、あるいはクライアント端末装置内部で処理するかを決定することができ、その結果、データ構造を変更せずにデータの共有／非共有を設定することができ、より柔軟なシステムを構築することができる。
【００６０】
なお、上記の説明では指令処理および受信処理が１つの受信キューを共用しているが、複数の受信キューが存在する構成も可能である。この場合、更新処理のステップＳ７０１ではすべての受信キューに保持されているイベントをチェックし、ステップＳ７０２以降では全てのイベントに対しての処理を行う。
【００６１】
［第２の実施形態］
第１の実施形態に係るシステムでは、指令をユーザが発生させるか、プログラムが動作によって発生させていた。本実施形態に係るシステムでは更に、ファイルに記述された内容から指令を発生させる。以下、本実施形態に係るシステムについて説明するが、以下説明する点以外については第１の実施形態と同様である。
【００６２】
図１１は本実施形態に係るクライアント端末装置内で行われる処理の模式図である。矢印はデータの流れを表している。同図において１１０１〜１１０９の各部は夫々図４における各部４０１〜４０９と同様である。
【００６３】
１１１１は、仮想空間の構造および属性を記したデータベースファイルであり、外部記憶装置３０６に格納されている。１１１０はファイル解釈モジュールで、データベースファイル１１１１の内容を解釈して、データベース１１０５を構築するための操作指令の列を生成する。
【００６４】
次に、本実施形態に係るクライアント端末装置が読み込むデータベースファイルの構成について説明する。
【００６５】
図１２はエントリ数がＮのデータのファイルフォーマットを模式的に示したものである。各エントリの属性は、スタートデリミタおよびエンドデリミタで囲まれたフィールドに記述される。図１２で、１番目、２番目、Ｎ番目のエントリのスタートデリミタはそれぞれ１２０１、１２０６、１２０９で示されている。一方、夫々のエンドデリミタは１２０５、１２０８、１２１１で示されている。
【００６６】
エントリの属性は、１２０２〜１２０４のように、各属性を識別するための識別子および属性値の組で記述される。いずれの属性も必ずしも記述する必要はない。もし記述がなければ、データベースを構築する時点で、予めシステムによって決められたデフォルト値に設定される。
【００６７】
上記の構成により、サーバ装置に接続しているクライアント端末装置がこのようなデータベースファイルを読み込むと、データベースの各エントリを作成するための操作指令及び各エントリの各属性を設定するための操作指令が全てのクライアント端末装置に配送され、この操作指令に基づいた処理が夫々のクライアント端末装置において実行され、同じデータベースが構築される。また、サーバ装置に接続していない場合は、データベースファイルを読み込んだクライアント端末装置内部で操作指令が処理されて、データベースが構築される。
【００６８】
なお、クライアント端末装置が読み込むファイルの種類は上記データベースファイルに限定されない。例えば、単数または複数のデータベースに対する操作内容を記述したファイルをファイル解釈モジュールが解釈し、操作指令を発行してもよい。
【００６９】
［第３の実施形態］
第１，２の実施形態では、クライアント端末装置がサーバ装置との通信路を確立しているか否か応じて共有モードを決定していた。本実施形態に係るシステムは、この共有モードをシステムの利用者が設定可能な構成を有する。以下、本実施形態に係るシステムについて説明するが、以下説明する点以外については第１の実施形態と同様である。
【００７０】
図１３は、クライアント端末装置の表示部３０９に表示される画面例を示す図である。第１の実施形態と同様に、データベースの内容は３次元仮想空間に係るデータであるので、表示ウィンドウ１３０１中の３次元空間表示部１３０２にはこの３次元仮想空間に係るデータに従った３次元仮想物体１３０３、１３０４のＣＧ画像が表示されている。
【００７１】
また、３次元空間表示部１３０２の下部には、共有モードを設定するための共有モード設定部１３０５が設けられている。共有モード設定部１３０５には、パブリックモードおよびプライベートモードに対応したラジオボタン１３１０，１３１１が表示されている。共有モードを設定するためには、まずカーソル１３０６を共有モード設定部１３０５にあるラジオボタンのうち、所望のモードに対応するラジオボタン（パブリックモードに設定する場合にはラジオボタン１３１０、プライベートモードに設定する場合にはラジオボタン１３１１）をマウス３０８の左ボタンでクリックして有効にする。なお、設定した共有モードを示すデータはメモリ３０２内に記憶されるものとする。
【００７２】
なお、この操作についてはキーボード３０７を用いても良いし、その操作方法については特に限定されるものではない。
【００７３】
図１９は、本実施形態に係る指令処理のフローチャートである。先ず、指令の入力を検知する（ステップＳ１９０１）。次に、入力された指令を解析し、この指令が通信媒体１０２を介したサーバ装置との通信路の確立（即ちサーバ装置と通信媒体１０２を介して接続）を要求する指令（接続指令）であるかを判断し（ステップＳ１９０２）、接続指令であればステップＳ１９０３に進み、通信部３０５によってサーバ装置との通信路を確立し（ステップＳ１９０３）、指令処理を終了する。
【００７４】
一方、接続指令でない場合はステップＳ１９０４に進む。ステップＳ１９０４では、ステップＳ１９０１で入力された指令を解析し、この指令が通信媒体１０２を介したサーバ装置との通信路の切断（即ち通信媒体１０２を介したサーバ装置との接続の切断）を要求する指令（切断指令）であるかを判断し（ステップＳ１９０４）、切断指令であればステップＳ１９０５に進み、通信部３０５によってサーバ装置との通信路を切断し、指令処理を終了する。
【００７５】
一方、ステップＳ１９０１で入力された指令が切断指令でない（即ち、接続指令でも切断指令でもない）場合、この指令をデータベースの操作指令と判定してステップＳ１９０６に進む。ステップＳ１９０６では、操作指令の内容を示すイベントと呼ぶデータを作成する（ステップＳ１９０６）。
【００７６】
続いて、メモリ３０２内に保持されている共有モードのデータを参照して、共有モードがパブリックモードであるかプライベートモードであるかを判定する（ステップＳ１９０７）。共有モードがパブリックモードである場合には処理をステップＳ１９０８に進め、更に、通信路が確立されているか否かを判断する（ステップＳ１９０８）。
【００７７】
通信路が確立されていれば処理をステップＳ１９０９に進め、ステップＳ１９０６で作成したイベントをメモリ３０２内に設けられた送信キューに入力し（ステップＳ１９０９）、指令処理を終了する。
【００７８】
一方、ステップＳ１９０７で共有モードがプライベートモードである場合、もしくはステップＳ１９０８で通信路が確立されていない場合には処理をステップＳ１９１０に進め、ステップＳ１９０６で作成したイベントをメモリ３０２内に設けられた受信キューに入力し（ステップＳ１９１０）、指令処理を終了する。
【００７９】
以上の処理により、データの共有／非共有をシステムの利用者が希望に応じて任意のタイミングで対話的に設定することができる。
【００８０】
なお、共有モードの設定方法は対話的操作に限るものではなく、プログラムを実行することにより任意のアルゴリズムに基づいて決定し、決定した共有モードを設定しても構わない。
【００８１】
［第４の実施形態］
上記第１乃至３の実施形態では、共有モードがプログラムの動作中に変更される可能性がある。これに対し、共有モードを変更しない構成も可能である。この場合、共有モードの設定値は、例えばプログラムの起動時に、起動パラメータとして指定する。
【００８２】
［第５の実施形態］
上記第１乃至４の実施形態に係るシステムでは、端末単位で共有モードが決定される。本実施形態に係るシステムは、データベースに含まれるデータアイテム単位で共有モードが設定可能な構成を有する。以下、本実施形態に係るシステムについて説明するが、以下説明する点以外については第３の実施形態と同様である。なお、ここではデータアイテムは仮想物体に相当する。ただし、データアイテムの種類はこれに限定されるものではなく、任意の内容や種類のデータを用いることができる。
【００８３】
図１４は、クライアント端末装置の表示部３０９に表示される画面例を示す図である。第１の実施形態と同様に、データベースの内容は３次元仮想空間に係るデータであるので、表示ウィンドウ１４０１中の３次元空間表示部１４０２にはこの３次元仮想空間に係るデータに従った３次元仮想物体１４０３、１４０４のＣＧ画像が表示されている。
【００８４】
また、３次元空間表示部１４０２の下部には、３次元空間表示部１４０２に表示されている３次元仮想物体の位置、姿勢および共有モードを設定するための、位置設定部１４０６、姿勢設定部１４０７および共有モード設定部１４０８が設けられている。
【００８５】
共有モード設定部１４０８には、共有モードをパブリックモードに設定するためのラジオボタン１４１０、プライベートモードに設定するためのラジオボタン１４１１が設けられている。ここで３次元空間表示部１４０２に表示された仮想物体に対する共有モードの設定を、仮想物体１４０３を例に取り説明する。
【００８６】
まずマウス３０８を操作し、カーソル１４０５を仮想物体１４０３上に移動させ、左ボタンをクリックすることにより、仮想物体１４０３を選択する。そして共有モード設定部１４０８にあるラジオボタンのうち、所望のモードに対応するラジオボタン（パブリックモードに設定する場合にはラジオボタン１４１０、プライベートモードに設定する場合にはラジオボタン１４１１）をマウス３０８の左ボタンでクリックして有効にする。
【００８７】
このようにすることで、所望の仮想物体（この場合仮想物体１４０３）に対して所望のモードを設定することができる。なお、仮想物体１４０３に対して設定した共有モードを示すデータはメモリ３０２内に記憶されるものとする。
【００８８】
またこのような操作を仮想物体１４０４に対しても行うことで、仮想物体１４０４に対しても所望のモードを設定することができる。すなわち、それぞれの仮想物体に対して個別に共有モードを設定することができる。又その場合、メモリ３０２にはそれぞれの仮想物体に対して設定された共有モードのデータが記憶される。
【００８９】
なお、位置設定部１４０６および姿勢設定部１４０７には、スライダが表示されており、これを操作することによって選択した仮想物体の位置および姿勢を対話的に変更することができる。
【００９０】
なお、以上の操作についてはキーボード３０７を用いても良いし、その操作方法については特に限定されるものではない。
【００９１】
図１５は、別の表示例を示したものである。同図の表示についてもクライアント端末装置の表示部３０９に表示される。ここでは、ユーザがＨＭＤ（ＨｅａｄＭｏｕｎｔｅｄ  Ｄｉｓｐｌａｙ）を頭部に装着し、ユーザはＨＭＤの表示部に表示された図１５のような仮想空間の３次元表示画面１５０１を観察している。画面中で、１５０２および１５０３は仮想物体、１５０４は物体を選択・操作するためのポインタである。ユーザは図１６に示したスタイラス装置１６０１を手に持ち、これを動かすことによりポインタ１５０４の位置や姿勢を制御することができる。
【００９２】
このような構成において、仮想物体に対して共有モードを設定、変更するためには、まずポインタ１５０４がモードを変更したい仮想物体像を差すようにスタイラス装置１６０１を動かして、選択ボタン１６０２を押下することにより、その物体を選択する。このとき、ユーザが観察する画面上には選択した物体の属性を表すアノテーション表示１５０５が現れる。アノテーション表示１５０５の中には、現在選択されている共有モードも記されている。
【００９３】
次に、スタイラス装置の端部に設けられたダイヤル１６０３を回転させる。この回転に従って、アノテーション表示１５０５中の共有モードがプライベートモード、パブリックモード交互に入れ替わり、所望のモードが表示された時点でダイヤルの回転を止める。このように、ユーザの対話的操作によって、共有モードをユーザの希望に応じて設定することができる。
【００９４】
なお、ＨＭＤは表示部（図３の３０９）に相当するもので、クライアント端末装置に接続されている。また、スタイラス装置は入出力部（図３の３１０）とデータ伝送ケーブル１６０４を介してクライアント端末装置と接続し、位置・姿勢・選択ボタン１６０２の選択状態・ダイヤル１６０３の回転状態はＣＰＵ３０１によって読み出される。
【００９５】
また、図１４や図１５のように仮想空間を３次元表示するのに替えて、２次元表示を用いてもよい。図１７は２次元表示の例を示す図である。同図の例では、表示ウィンドウ１７０１の中の２次元表示部１７０２に、３次元空間をある方向から観察した様子が平面状に表示されている。２次元表示部１７０２の中には、仮想物体１７０３および１７０４がアイコンで表示され、カーソル１７０５をアイコン上に置いてマウス３０８の左ボタンをクリックすることにより、物体を選択できる。共有モードを設定する際には、物体を選択した後、キーボード３０７の所定のキーを押下する。
【００９６】
このように、ユーザの対話的操作によって、共有モードをユーザの希望に応じて設定することができる。なお、物体を選択した際に、画面上に選択した物体の属性を表すアノテーション表示１７０６を表示してもよい。アノテーション表示１７０６の中に、現在選択されている共有モードも記せば、モードを確認しながら設定操作を行うことができる。
【００９７】
なお、上記何れの場合でも、各データアイテムを操作するための操作イベントは、そのデータアイテムに対し設定された共有モードに応じて受信キュー、送信キューの何れかに出力されることになる。
【００９８】
また、上記いずれの場合でも、第１乃至３の実施形態と同様に、操作方法に関しては上記の説明に限定されるものではない。
【００９９】
以上はデータベースアイテムごとに共有モードを設定する例について説明した。以下では、アイテムの属性ごとに共有モードを設定する場合について説明する。図１８は、アイテムの属性ごとに共有モードを設定するための画面表示例である。同図に示した画面はクライアント端末装置の表示部３０９に表示される。なお、ここでは仮想物体の位置や姿勢のデータがデータアイテムの属性に相当する。ただし、データアイテムの属性の種類はこれに限定されるものではなく、任意の内容や種類のデータを用いることができる。
【０１００】
１８０１〜１８０５は、それぞれ１４０１〜１４０５と同様である。３次元表示部１８０２の下部には、仮想物体の位置および位置に関する共有モードを設定するための位置属性設定部１８０６、仮想物体の姿勢および姿勢に関する共有モードを設定するための姿勢属性設定部１８０９が設けられている。
【０１０１】
位置属性設定部１８０６はさらに、位置を設定するための位置設定部１８０７および位置に関する共有モードを設定するための位置共有モード設定部１８０８から構成される。
【０１０２】
また、姿勢属性設定部はさらに、姿勢を設定するための姿勢設定部１８１０および姿勢に関する共有モードを設定するための姿勢共有モード設定部１８１１から構成される。
【０１０３】
共有モードをデータベースアイテムあるいはアイテムの属性ごとに設定する構成における処理は第３の実施形態における処理と同じである。ただし、本実施形態と第３の実施形態とでは、共有モードの設定値の管理の方法が異なる。すなわち、第３の実施形態では共有モードの設定値を端末単位で保持しているが、本実施形態のようにデータアイテムあるいはアイテムの属性ごとに共有モードを決定する場合は、アイテムごとあるいはアイテムの属性ごとに共有モードの設定値を保持する。
【０１０４】
よって本実施形態によれば、データアイテムあるいはアイテムの属性ごとに共有モードをシステムの使用者が任意のタイミングで対話的に設定することができる。
【０１０５】
なお、共有モードの設定方法は対話的操作に限るものではなく、プログラムが任意のアルゴリズムに基づいて決定し、決定した共有モードを設定しても構わない。
【０１０６】
［第６の実施形態］
第５の実施形態では、ＧＵＩを用いて対話的に共有モードを設定する構成を示した。これに対し、共有モードを予め指定されたモードに設定することも可能である。モードは、例えばデータベースファイルに記述しておく。データベースアイテムごとに共有モードを指定する場合は、アイテムの属性値の１つとして「共有モード識別子」および「共有モードの設定値」の組を記述する。また、アイテムの属性ごとに共有モードを指定する場合は、「属性識別子」および「属性値」の組に加えて、さらに共有モードの設定値を記述する。
【０１０７】
よって本実施形態によれば、データベースアイテムあるいはアイテムの属性ごとに予め設定された共有モードにしたがって、データの共有／非共有を決定することができる。
【０１０８】
［第７の実施形態］
本実施形態に係るシステムは、仮想空間を共有するすべてのコンピュータ端末がネットワーク接続を完了する前に、何れかのコンピュータ端末が共有データを変更した場合、まだネットワークに接続していないコンピュータ端末はその変更に関する情報を受信することが出来ず、夫々の端末において実行されるプログラム間でデータの矛盾が生じるという問題を解消することを目的とする。
【０１０９】
本実施形態に係るシステムは、あるクライアント端末装置において行ったシーングラフデータベース操作（本実施形態ではクライアント端末装置間で共有すべきデータの操作を意味する）の内容を、所定数のクライアント端末装置に確実に反映させる構成を備える。
【０１１０】
以下、本実施形態に係るシステムについて説明するが、以下説明する点以外については第１の実施形態と同様である。
【０１１１】
図２０は、クライアント端末装置が行うメインの処理のフローチャートである。なお同図のフローチャートに従ったプログラムは外部記憶装置３０６に保存されており、必要に応じてメモリ３０２にロードされ、ＣＰＵ３０１により実行される。その結果クライアント端末装置は、同図のフローチャートに従った処理を行うことになる。
【０１１２】
ステップＳ２００１〜Ｓ２００４，Ｓ２００７〜Ｓ２０１２は、夫々図５のステップＳ５０１〜Ｓ５０４、Ｓ５０７〜Ｓ５１２と同様であるので説明を省略する。よって本実施形態に係るクライアント端末装置が行う処理が第１の実施形態に係るクライアント端末装置が行う処理と異なるのはステップＳ２０１３における処理を行う点にある。また、ステップＳ２００５については、ステップＳ５０５における処理に替えて、以下に説明する処理を行う。また、ステップＳ２００６についてはステップＳ５０６における処理に替えて以下説明する処理を行う。よって以下このステップＳ２００５，ステップＳ２００６、ステップＳ２０１３における処理について説明する。
【０１１３】
ステップＳ２０１３では、仮想空間を共有すべきクライアント端末装置の数の最小値を設定する。なお、ここで設定する最小クライアント端末数は、すべてのクライアント端末装置で同一の値を用いることとする。この設定方法は予め外部記憶装置３０６に最小クライアント端末数を示すデータを保持させておいても良いし、サーバ装置に最小クライアント端末数を示すデータを予め保持させておき、クライアント端末装置がサーバ装置との通信路を確立したときに、このデータをクライアント端末装置がメモリ３０２内にダウンロードしても良いし、あるいはクライアント端末装置の動作開始時にユーザが指定しても良い。
【０１１４】
図２１は、本実施形態に係るステップＳ２００５における指令処理の第１の例としての処理のフローチャートである。第１の例の処理は、第１の実施形態に係る指令処理（図６に示すフローチャートに従った処理）に、シーングラフデータベースに対する操作の内容を所定数のクライアント端末装置に確実に通知するための処理を加えたものである。
【０１１５】
ステップＳ２１０１〜Ｓ２０１１は、夫々図６のステップＳ６０１〜Ｓ６１１と同様である。ステップＳ２１１２では、後述の処理により取得する「接続クライアント端末数」がメモリ３０２内に保持されている「最小クライアント端末数」以上であるか否か判定し、真なら指令処理を終了する。
【０１１６】
一方、偽ならステップＳ２２１２に戻る。
【０１１７】
この結果、サーバ端末に接続中のクライアント端末が所定数に達するまで、後続の指令が遅延される。なお、上記の指令処理の第１の例では、ステップＳ２１０４の共有モードの設定処理に続いてクライアント端末数の判定を行っている。これに替えて、ステップＳ２１０８の直前に前述したステップＳ２１１２と同様の処理を行い、判定結果が真である場合はステップＳ２１０８に進み、偽である場合は再度ステップＳ２１１２と同様の処理を行ってもよい。
【０１１８】
一方、図２２はステップＳ２００５における指令処理の第２の例としての処理のフローチャートである。第２の例の処理は、第３乃至６の実施形態に係る指令処理に、シーングラフデータベースに対する操作の内容を所定数のクライアント端末装置に確実に通知するための処理を加えたものである。
【０１１９】
ステップＳ２２０１〜Ｓ２２１０は、夫々図１９のステップＳ１９０１〜Ｓ１９１０と同様である。ステップＳ２２１１では、後述の処理により取得する「接続クライアント端末数」がメモリ３０２内に保持されている「最小クライアント端末数」以上であるか否か判定し、真なら指令処理を終了する。
【０１２０】
一方、偽ならステップＳ２２１１に戻る。この結果、サーバ端末に接続中のクライアント端末が所定数に達するまで、後続の指令が遅延される。なお、上記の指令処理の第２の例では、ステップＳ２２０３の通信路確立処理に続いてクライアント端末数の判定を行っている。これに替えて、ステップＳ２２０６の直前に前述したステップＳ２２１１と同様の処理を行い、判定結果が真である場合はステップＳ２２０６に進み、偽である場合は再度ステップＳ２２１１と同様の処理を行ってもよい。
【０１２１】
図２３は本実施形態に係るサーバ装置が行うメインの処理のフローチャートである。ステップＳ２３０１〜Ｓ２３０８は、夫々図１０のステップＳ１００１〜Ｓ１００８と同様である。よって本実施形態に係るサーバ装置が行う処理が第１の実施形態に係るサーバ装置が行う処理と異なる点はステップＳ２３０９〜ステップＳ２３１２における処理を行う点にある。よって以下このステップＳ２３０９〜ステップＳ２３１２における処理について説明する。なお、サーバ端末装置はメモリ３０２に、接続しているクライアント端末装置の数である「接続クライアント端末数」を保持する。クライアント端末装置が起動した状態では、接続クライアント端末数は０に初期化されているとする。
【０１２２】
ステップＳ２３０９では、接続クライアント端末数を１つだけインクリメントする。ステップＳ２３１０では、接続クライアント端末数を、接続クライアント端末数の更新を指示する情報（接続状態更新指令）とともに全てのクライアント端末に配信する。一方、ステップＳ２３１１では、接続クライアント端末数を１つだけデクリメンする。ステップＳ２３１２では、接続クライアント端末数を、接続クライアント端末数の更新を指示する情報（接続状態更新指令）と共に全てのクライアント端末に配信する。
【０１２３】
即ち本実施形態に係るサーバ装置は、新たにクライアント端末装置と通信路を確立すると、サーバ装置に接続しているクライアント端末装置の数を全てのクライアント端末に通知する。また、既にサーバ装置と通信路を確立しているクライアント端末装置との通信路を切断する場合も、サーバ装置に接続しているクライアント端末装置の数を全てのクライアント端末に通知する。
【０１２４】
そして、サーバ装置がステップＳ２３０９あるいはステップＳ２３１２において接続状態更新指令を全てのクライアント端末装置に送信すると、これを受け取った全てのクライアント端末装置はステップＳ２００６において、サーバ装置に接続中のクライアント端末装置の数を示す変数（メモリ３０２内に保持されている）を接続状態更新指令に付随して受信した接続クライアント端末数に設定する。
【０１２５】
このようにすることで、全てのクライアント端末装置は常にサーバ装置に接続されているクライアント端末装置の数を把握することができる。
【０１２６】
以上の説明により、本実施形態に係るシステムによれば、あるクライアント端末装置においてシーングラフデータベース操作を行い、共有すべきデータを操作した場合、その操作内容は最小クライアント端末数のクライアント端末装置には確実に通知することができる。
【０１２７】
これは即ち、サーバ装置と通信路を確立しているクライアント端末装置の数が最小クライアント端末数よりも少ない場合には、操作内容は通知しないので、一部のクライアント端末装置だけがこの操作内容に従ってシーングラフデータベースを操作するといった、システムの不整合性が発生することはない。
【０１２８】
なお本実施形態ではシーングラフデータベースの操作の内容（即ち指令）のデータであるイベントを他のクライアント端末装置に送信しているが、イベントに限定されるものではなく、各種のデータであっても良い。
【０１２９】
［第８の実施形態］
第７の実施形態では、所定の数のクライアント端末装置がサーバ装置との通信路を確立するまで、クライアント端末装置、サーバ装置はクライアント端末装置間でシーングラフデータベース操作の内容を示すデータであるイベントを通知する処理を待機している。本実施形態に係るシステムでは、クライアント端末装置を待機させずに、他の処理を行うことを許容する。
【０１３０】
図２４は、本実施形態に係るサーバ装置が行うメインの処理のフローチャートである。ステップＳ２４０１〜Ｓ２４０８は、それぞれ図１０のステップＳ１００１〜Ｓ１００８と同様である。また、ステップＳ２４１０およびステップＳ２４１１は、それぞれステップＳ２３０９およびステップＳ２３１１と同様である。
【０１３１】
ステップＳ２４０９では、仮想空間を共有すべきクライアント端末装置の数の最小値を設定する。この設定方法は予め外部記憶装置３０６に最小クライアント端末数を示すデータを保持させておいても良い。
【０１３２】
ステップＳ２４１０では、ステップＳ２４０２で新たなクライアント端末装置と接続を確立したことを受けて、クライアント端末装置の数を示す変数（メモリ３０２内に保持されている）を１つだけインクリメントする。
【０１３３】
ステップＳ２４１１では、ステップＳ２４０４でクライアント端末装置と接続を切断したことを受けて、クライアント端末装置の数を示す変数（メモリ３０２内に保持されている）を１つだけデクリメントする。
【０１３４】
このようにしてサーバ装置は通信路が確立されているクライアント端末装置の数を計数する。なお、サーバ装置起動時におけるこの変数の値は０に初期化されるとする。
【０１３５】
ステップＳ２４１２では、「サーバ装置に接続しているクライアント端末装置の数」がメモリ３０２内に保持されている「最小クライアント端末数」以上であるか否か判定し、真なら処理をステップＳ２４０７に進める。一方、偽なら処理をステップＳ２４１３に進め、受信イベントを破棄し、処理をステップＳ２４０８に進める。
【０１３６】
以上の説明により、本実施形態に係るシステムによれば、サーバ装置との通信路が確立されたクライアント端末装置の数が最小クライアント端末数よりも少ない状態であっても、クライアント端末装置は送信キューに入力されたイベントをサーバ装置に送信する処理以外の処理を行うことができる。第７の実施形態ではこの場合クライアント端末装置は処理を待機させていたので、これと比べてもより稼働率の良いシステムを構築することができる。
【０１３７】
なお、送信キューのイベントを送信する処理を行ったとしても、所定数のクライアント端末装置がサーバ端末との接続を確立するまで、サーバは受信したイベントを破棄する。したがって、サーバと未接続の一部のクライアント端末にイベントが配信されないことに起因するクライアント端末間のデータの不整合は起こらない。
【０１３８】
［第９の実施形態］
上記第１乃至８の実施形態に係るシステムの構成はサーバ・クライアント構成であったが、これに限定されるものではない。例えば、各クライアント端末装置がクライアントとしての役割を果たしつつ、サーバとしての機能（接続・切断要求の受付機能、クライアントへのデータ配送機能）を兼ねれば、各クライアント端末装置が他のすべてのクライアント端末装置と接続する構成で上記実施形態と同様の効果を得ることが可能である。
【０１３９】
［第１０の実施形態］
上記第１乃至９の実施形態では共有するデータは、仮想空間の構造と属性を表すシーンデータであるとしている。しかしながらこれに限定されるものではなく、各種のデータが共有するデータとして適用可能である。
【０１４０】
なお、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。
【０１４１】
この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。前述したサーバ端末の機能を有するプログラムであるサーバ・プログラム、およびクライアント端末の機能を有するプログラムであるクライアント・プログラムは、１つの端末上で１つまたは複数が動作可能である。また、１つの端末で複数のプログラムを実行する場合、サーバ・プログラムとクライアント・プログラムの組み合わせは任意である。
【０１４２】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ‐ＲＯＭ、ＣＤ‐Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１４３】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。なお、前述のプログラムコードは、ＯＳの管理するプロセスとして実行されてもよいし、あるプロセスのスレッドの中で実行されてもよい。
【０１４４】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１４５】
【発明の効果】
以上の説明により、本発明によって、データを共有するシステムを柔軟、且つ整合性の取れたシステムにする技術を提供することができる。
【０１４６】
特に、データ構造を変更せずに共有／非共有の切り換えが可能になった。
【０１４７】
また、データの各アイテムのみならず、プログラムごとやデータアイテムの属性ごとに共有／非共有の切り換えが可能になった。
【０１４８】
さらに、通信路を接続する際に、すべてのクライアント端末装置が共有データに対する変更情報を等しく受信することにより、クライアント端末装置間のデータの整合性（同一性）を確保することが可能になった。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る仮想空間共有システムの概略構成を示す図である。
【図２】本発明の第１の実施形態に係るシステムにおいて、データベースを更新するための基本的な情報の流れを示す図である。
【図３】サーバ装置、クライアント端末装置の基本構成を示すブロック図である。
【図４】クライアント端末装置内で行われる処理の模式図である。
【図５】本発明の第１の実施形態に係るクライアント端末装置が行うメインの処理のフローチャートである。
【図６】ステップＳ５０５における処理の詳細を示すフローチャートである。
【図７】ステップＳ５０６における処理の詳細を示すフローチャートである。
【図８】ステップＳ５０３における処理の詳細を示すフローチャートである。
【図９】ステップＳ５０４における処理の詳細を示すフローチャートである。
【図１０】本発明の第１の実施形態に係るサーバ装置が行うメインの処理のフローチャートである。
【図１１】本発明の第２の実施形態に係るクライアント端末装置内で行われる処理の模式図である。
【図１２】エントリ数がＮのデータのファイルフォーマットを模式的に示したものである。
【図１３】本発明の第３の実施形態に係るクライアント端末装置の表示部３０９に表示される画面例を示す図である。
【図１４】本発明の第５の実施形態に係るクライアント端末装置の表示部３０９に表示される画面例を示す図である。
【図１５】本発明の第５の実施形態に係る別の表示例を示したものである。
【図１６】スタイラス装置１６０１を示す図である。
【図１７】２次元表示の例を示す図である。
【図１８】アイテムの属性ごとに共有モードを設定するための画面表示例である。
【図１９】本発明の第３の実施形態に係る指令処理のフローチャートである。
【図２０】本発明の第７の実施形態に係るクライアント端末装置が行うメインの処理のフローチャートである。
【図２１】本発明の第７の実施形態に係るステップＳ２００５における指令処理の第１の例としての処理のフローチャートである。
【図２２】本発明の第７の実施形態に係るステップＳ２００５における指令処理の第２の例としての処理のフローチャートである。
【図２３】本発明の第７の実施形態に係るサーバ装置が行うメインの処理のフローチャートである。
【図２４】本発明の第８の実施形態に係るサーバ装置が行うメインの処理のフローチャートである。
【図１】
2004265193.tif 000003
【図２】
2004265193.tif 000004
【図３】
2004265193.tif 000005
【図４】
2004265193.tif 000006
【図５】
2004265193.tif 000007
【図６】
2004265193.tif 000008
【図７】
2004265193.tif 000009
【図８】
2004265193.tif 000010
【図９】
2004265193.tif 000011
【図１０】
2004265193.tif 000012
【図１１】
2004265193.tif 000013
【図１２】
2004265193.tif 000014
【図１３】
2004265193.tif 000015
【図１４】
2004265193.tif 000016
【図１５】
2004265193.tif 000017
【図１６】
2004265193.tif 000018
【図１７】
2004265193.tif 000019
【図１８】
2004265193.tif 000020
【図１９】
2004265193.tif 000021
【図２０】
2004265193.tif 000022
【図２１】
2004265193.tif 000023
【図２２】
2004265193.tif 000024
【図２３】
2004265193.tif 000025
【図２４】
2004265193.tif 000026