(57)【特許請求の範囲】
【請求項１】
仮想生命オブジェクトを識別する識別情報を提供すると、その識別情報に対応する仮想生命オブジェクトに対する所定のイベントに応じて変化する成長情報を提供するサーバと接続されている情報処理装置において、
前記仮想生命オブジェクトを提示する提示手段と、
前記提示手段により提示された前記仮想生命オブジェクトを選択する選択手段と、
前記識別情報を記憶する記憶手段と、
前記記憶手段に記憶された前記識別情報を前記サーバに送信する送信手段と、
前記サーバから送信されてくる前記識別情報に対応する前記成長情報を受信する受信手段とを備え、
前記選択された仮想生命オブジェクトを識別する識別情報が前記記憶手段に記憶されていないとき、その旨を前記サーバに送信し、前記記憶手段に前記識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、前記サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる前記選択された仮想生命オブジェクトを識別する識別情報を受信して、前記記憶手段に記憶させること
を特徴とする情報処理装置。
【請求項２】
仮想生命オブジェクトを識別する識別情報を提供すると、その識別情報に対応する仮想生命オブジェクトに対する所定のイベントに応じて変化する成長情報を提供するサーバと接続されている情報処理装置の情報処理方法において、
前記仮想生命オブジェクトを提示する提示ステップと、
前記提示ステップの処理で提示された前記仮想生命オブジェクトを選択する選択ステップと、
前記識別情報を記憶する記憶ステップと、
前記記憶ステップの処理で記憶された前記識別情報を前記サーバに送信する送信ステップと、
前記サーバから送信されてくる前記識別情報に対応する前記成長情報を受信する受信ステップとを含み、
前記選択された仮想生命オブジェクトを識別する識別情報が前記記憶ステップの処理で記憶されていないとき、その旨を前記サーバに送信し、前記記憶ステップの処理で前記識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、前記サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる前記選択された仮想生命オブジェクトを識別する識別情報を受信して、記憶すること
を特徴とする情報処理方法。
【請求項３】
仮想生命オブジェクトを識別する識別情報を提供すると、その識別情報に対応する仮想生命オブジェクトに対する所定のイベントに応じて変化する成長情報を提供するサーバと接続されている情報処理装置に用いられるコンピュータプログラムにおいて、
前記仮想生命オブジェクトを提示する提示ステップと、
前記提示ステップの処理で提示された前記仮想生命オブジェクトを選択する選択ステップと、
前記識別情報を記憶する記憶ステップと、
前記記憶ステップの処理で記憶された前記識別情報を前記サーバに送信する送信ステップと、
前記サーバから送信されてくる前記識別情報に対応する前記成長情報を受信する受信ステップとを含み、
前記選択された仮想生命オブジェクトを識別する識別情報が前記記憶ステップの処理で記憶されていないとき、その旨を前記サーバに送信し、前記記憶ステップの処理で前記識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、前記サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる前記選択された仮想生命オブジェクトを識別する識別情報を受信して、記憶させる
コンピュータプログラムが記録されていることを特徴とする記録媒体。
【請求項４】
仮想生命オブジェクトを識別する識別情報を受信すると、その識別情報に対応する仮想生命オブジェクトに対する所定のイベントに応じて変化する成長情報を、前記成長情報に応じて前記仮想生命オブジェクトを提示する端末に提供する情報処理装置において、
前記端末から前記識別情報が伴われずアクセスがあったとき、所定の仮想生命オブジェクトの識別情報を生成する生成手段と、
前記生成手段により生成された前記識別情報を、前記仮想生命オブジェクトの成長情報と対応付けて登録する登録手段と、
前記登録手段により登録された前記識別情報を前記端末に提供する提供手段と
を備えることを特徴とする情報処理装置。
【請求項５】
仮想生命オブジェクトを識別する識別情報を受信すると、その識別情報に対応する仮想生命オブジェクトに対する所定のイベントに応じて変化する成長情報を、前記成長情報に応じて前記仮想生命オブジェクトを提示する端末に提供する情報処理装置の情報処理方法において、
前記端末から前記識別情報が伴われずアクセスがあったとき、所定の仮想生命オブジェクトの識別情報を生成する生成ステップと、
前記生成ステップの処理で生成された前記識別情報を、前記仮想生命オブジェクトの成長情報と対応付けて登録する登録ステップと、
前記登録ステップの処理で登録された前記識別情報を前記端末に提供する提供ステップと
を含むことを特徴とする情報処理方法。
【請求項６】
仮想生命オブジェクトを識別する識別情報を受信すると、その識別情報に対応する仮想生命オブジェクトに対する所定のイベントに応じて変化する成長情報を、前記成長情報に応じて前記仮想生命オブジェクトを提示する端末に提供する情報処理装置に用いられるコンピュータプログラムにおいて、
前記端末から前記識別情報が伴われずアクセスがあったとき、所定の仮想生命オブジェクトの識別情報を生成する生成ステップと、
前記生成ステップの処理で生成された前記識別情報を、前記仮想生命オブジェクトの成長情報と対応付けて登録する登録ステップと、
前記登録ステップの処理で登録された前記識別情報を前記端末に提供する提供ステップと
を含むコンピュータプログラムが記録されていることを特徴とする記録媒体。
【請求項７】
仮想生命オブジェクトを識別する識別情報を提供する端末と、ネットワークを介して接続されている前記識別情報に対応する仮想生命オブジェクトの所定のイベントに応じて変化する成長情報を提供するサーバとからなる情報処理システムにおいて、
前記端末は、
前記仮想生命オブジェクトを提示する提示手段と、
前記提示手段により提示された前記仮想生命オブジェクトを選択する選択手段と、
前記識別情報を記憶する記憶手段と、
前記記憶手段に記憶された前記識別情報を前記サーバに送信する送信手段と、
前記サーバから送信されてくる前記識別情報に対応する前記成長情報を受信する受信手段とを備え、
前記選択された仮想生命オブジェクトを識別する識別情報が前記記憶手段に記憶されていないとき、その旨を前記サーバに送信し、前記記憶手段に前記識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、前記サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる前記選択された仮想生命オブジェクトを識別する識別情報を受信して前記記憶手段に記憶させ、
前記サーバは、
前記端末から前記識別情報が伴われずアクセスがあったとき、前記仮想生命オブジェクトの成長情報に対応する前記識別情報を生成する生成手段と、
前記生成手段により生成された前記識別情報を、前記仮想生命オブジェクトの成長情報と対応付けて登録する登録手段と、
前記登録手段により登録された前記識別情報を、前記端末に提供する提供手段と
を備える
ことを特徴とする情報処理システム。
【請求項８】
仮想生命オブジェクトを識別する識別情報を提供する端末と、ネットワークを介して接続されている前記識別情報に対応する仮想生命オブジェクトの所定のイベントに応じて変化する成長情報を提供するサーバとからなる情報処理システムの情報処理方法において、
前記端末において、
前記仮想生命オブジェクトを提示する提示ステップと、
前記提示ステップの処理で提示された前記仮想生命オブジェクトを選択する選択ステップと、
前記識別情報を記憶する記憶ステップと、
前記記憶ステップの処理で記憶された前記識別情報を前記サーバに送信する送信ステップと、
前記サーバから送信されてくる前記識別情報に対応する前記成長情報を受信する受信ステップとを含み、
前記選択された仮想生命オブジェクトを識別する識別情報が前記記憶ステップの処理で記憶されていないとき、その旨を前記サーバに送信し、前記記憶ステップの処理で前記識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、前記サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる前記選択された仮想生命オブジェクトを識別する識別情報を受信して前記記憶ステップの処理で記憶させ、
前記サーバにおいて、
前記端末から前記識別情報が伴われずアクセスがあったとき、前記仮想生命オブジェクトの成長情報に対応する前記識別情報を生成する生成ステップと、
前記生成ステップの処理で生成された前記識別情報を、前記仮想生命オブジェクトの成長情報と対応付けて登録する登録ステップと、
前記登録ステップの処理で登録された前記識別情報を、前記端末に提供する提供ステップと
を含むことを特徴とする情報処理方法。
【請求項９】
仮想生命オブジェクトを識別する識別情報を提供する端末と、ネットワークを介して接続されている前記識別情報に対応する仮想生命オブジェクトの所定のイベントに応じて変化する成長情報を提供するサーバとからなる情報処理システムで実行されるコンピュータプログラムにおいて、
前記端末において、
前記仮想生命オブジェクトを提示する提示ステップと、
前記提示ステップの処理で提示された前記仮想生命オブジェクトを選択する選択ステップと、
前記識別情報を記憶する記憶ステップと、
前記記憶ステップの処理で記憶された前記識別情報を前記サーバに送信する送信ステップと、
前記サーバから送信されてくる前記識別情報に対応する前記成長情報を受信する受信ステップとを含み、
前記選択された仮想生命オブジェクトを識別する識別情報が前記記憶ステップの処理で記憶されていないとき、その旨を前記サーバに送信し、前記記憶ステップの処理で前記識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、前記サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる前記選択された仮想生命オブジェクトを識別する識別情報を受信して前記記憶ステップの処理で記憶させ、
前記サーバにおいて、
前記端末から前記識別情報が伴われずアクセスがあったとき、前記仮想生命オブジェクトの成長情報に対応する前記識別情報を生成する生成ステップと、
前記生成ステップの処理で生成された前記識別情報を、前記仮想生命オブジェクトの成長情報と対応付けて登録する登録ステップと、
前記登録ステップの処理で登録された前記識別情報を、前記端末に提供する提供ステップと
を含むコンピュータプログラムが記録されていることを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置および方法、情報処理システム、並びに記録媒体に関し、特に、共有仮想空間において、クライアントＰＣのレジストリにユーザを特定するIDを保持することにより、ユーザが、例えば、電話番号などのユーザを特定するための情報を、クライアントＰＣに入力することなく、所定のサービスをうけることができるようにした情報処理装置および方法、情報処理システム、並びに記録媒体に関するものである。
【０００２】
【従来の技術】
従来、NIFTY-Serve(商標)や米国のCompuServe(商標)などのように、複数の利用者が自らのパーソナルコンピュータを、モデムおよび公衆電話回線網を介してセンターのホストコンピュータに接続し、所定の通信プロトコルに基づいてホストコンピュータにアクセスする、いわゆるパソコン通信サービスの分野においては、Habitat（商標）と呼ばれるサイバースペースのサービスが知られている。
【０００３】
Habitatは、米国LucasFilm社によって1985年から開発が始められ、米国商業ネットワークであるQuantumLink社で約３年間運用された後、1990年2月に富士通Habitat（商標）としてNIFTY-Serveでそのサービスが開始されたものである。このHabitatにおいては、2次元グラフィックスで描画された「ポピュロポリス（Populopolis）」と呼ばれる仮想の都市に、アバタ（avatar；インド神話に登場する神の化身）と呼ばれるユーザの分身を送り込み、ユーザ同士がチャット（Chat；文字の入力と表示によるテキストベースでのリアルタイムの対話）などを行うことができる。このHabitatの更に詳細な説明については、サイバースペース，マイケル・ベネディクト編，1994年3月20日初版発行，ＮＴＴ出版 ISBN4−87188−265−9C0010（原著；Cyberspace：First Steps ,Michael Benedikt,ed. 1991,MIT PressCambrige,MA ISBN0−262−02327−X）第282頁乃至第307頁を参照されたい。
【０００４】
この種のパソコン通信サービスで運用されている従来のサイバースペースシステムにおいては、仮想的な街並みや部屋の内部の様子が2次元グラフィックスで描画されており、アバタを奥行きまたは手前方向へ移動させる場合、単にアバタを2次元グラフィックスの背景上で上下に移動させるだけであり、仮想空間内での歩行や移動を疑似体験させるには表示の上での表現力が乏しかった。また、自分の分身であるアバタと他人のアバタが表示された仮想空間を、第３者の視点で見ることになるため、この点においても、疑似体験の感覚が損なわれるものであった。
【０００５】
そこで、特開平9-81781号公報に開示されているように、仮想空間を３次元グラフィックスで表示し、ユーザがアバタの視点で自由に歩き回れる機能が、VRML(Virtual Reality Modeling Language)と呼ばれる3次元グラフィクス・データの記述言語を利用することによって実現されている。また、ユーザの代理となるアバタを用いてチャットを行う種々のサイバースペースの考察に関しては、日経エレクトロニクス1996.9.9(no.670)の第151頁乃至159頁に記載されている。
【０００６】
一方、近年、パーソナルコンピュータ用のソフトウェア・プログラムとして、熱帯魚を育てる飼育シミュレーション・ゲームや、仮想世界に住んでいる人工知能をもった仮想生物を育てる飼育シミュレーション・ゲームなどが知られている。また、電子手帳に犬や猫等の疑似ペットを表示して、その成長過程を楽しめるようにした製品も知られている（日経エレクトロニクス1997.4.7(no.686)の第131頁乃至134頁参照）。さらには、この種の飼育シミュレーション・ゲーム・プログラムを組込んだ、たまご大の携帯電子ペットとして、バンダイ株式会社が開発・製品化した「たまごっち（商標）」が広く知られている。
【０００７】
この種の携帯電子ペットは、１チップのLSI（大規模集積回路）にCPU（中央処理装置）やROM、RAM等が内蔵されており、そのROM内に飼育シミュレーション・ゲーム・プログラムが格納され、さらにLCD（液晶表示装置）によって仮想的なペットの姿や状態が表示されるようになっている。ユーザは、操作ボタンを操作して、「食事を与える」、「掃除をする」など、ペットとしての仮想生物を飼育するのに必要な指示を与える。この結果として、LCDで表示される仮想生物が成長し、その成長の過程で、仮想生物の外観が、例えば、たまご、ひよこ、成鳥へと段階的に変化していく。
【０００８】
また、ユーザのボタン操作に応じて、その指示が適切ならば順調に仮想生物が成長し、不適切ならば、病気になったり死亡してしまうようにプログラムされている。さらに、内部に組込まれているカレンダ・タイマーによって得られる仮想生物の誕生時点からの経過時間に基づいて、仮想生物側より各種の要求が行われるようにプログラムされている。例えば夜間の時間帯では仮想生物より睡眠の要求がなされ、食事の時間帯には食事の要求があり、またランダムにおやつや遊びの要求がなされる。これらの要求にユーザが適切に対応しない場合、仮想生物の成長が遅れたり、性格が悪化したりする。一方、ユーザが適切に対応した場合には、仮想生物の寿命が伸びるようにプログラムされている。
【０００９】
ここで、例えば、特開平07-160853号公報には、電子手帳などに適用され、動物や植物等の生物の成長過程に応じた画像を表示する技術が開示されている。すなわち、植物キヤラクタの成長過程の各段階のビットマップ画像をROMに格納しておき、成長度に応じた植物キャラクタをLCDに表示させると共に、予めROMに記憶されている植物成長要素（水、光、肥料）の各キヤラクタを表示させ、それら各成長要素の投与量をキー入力することで、その投与量に応じた各成長要素の値がRAM内の水量レジスタ、光量レジスタ、肥料量レジスタに各々セツトされ、これらの各レジスタの値に基づいて、新たな成長度が算出され、その算出された成長度に対応した植物キヤラクタがROMから読み出されてLCDに表示される。これにより、ユーザの飼育状況に応じた植物の成長過程が表示される。
【００１０】
【発明が解決しようとする課題】
以上のように、疑似ペット（以下、仮想ペット、または仮想生命オブジェクトとも記述する）は、飼い主であるユーザの操作に応じて様々な状態に成長する。ところで、従来の共有仮想空間において、所定のサービスを受けるために、例えば、電話番号などのユーザを特定するための情報を、ユーザ自身がクライアントＰＣに入力しなければならなく、その操作が煩雑であり、手間がかかる課題があった。
【００１１】
そこで、本発明はこのような状況に鑑みてなされたものであり、クライアントＰＣのレジストリに、ユーザを特定するIDを保持することにより、ユーザは、ユーザを特定するための情報を入力することなく、サービスを受けることができるようにするものである。
【００１２】
【課題を解決するための手段】
請求項１に記載の情報処理装置は、仮想生命オブジェクトを提示する提示手段と、提示手段により提示された仮想生命オブジェクトを選択する選択手段と、識別情報を記憶する記憶手段と、記憶手段に記憶された識別情報をサーバに送信する送信手段と、サーバから送信されてくる識別情報に対応する成長情報を受信する受信手段とを備え、選択された仮想生命オブジェクトを識別する識別情報が記憶手段に記憶されていないとき、その旨をサーバに送信し、記憶手段に識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる選択された仮想生命オブジェクトを識別する識別情報を受信して、記憶手段に記憶させることを特徴とする。
【００１３】
請求項２に記載の情報処理方法は、仮想生命オブジェクトを提示する提示ステップと、提示ステップの処理で提示された仮想生命オブジェクトを選択する選択ステップと、識別情報を記憶する記憶ステップと、記憶ステップの処理で記憶された識別情報をサーバに送信する送信ステップと、サーバから送信されてくる識別情報に対応する成長情報を受信する受信ステップとを含み、選択された仮想生命オブジェクトを識別する識別情報が記憶ステップの処理で記憶されていないとき、その旨をサーバに送信し、記憶ステップの処理で識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる選択された仮想生命オブジェクトを識別する識別情報を受信して、記憶することを特徴とする。
【００１４】
請求項３に記載の記録媒体のコンピュータプログラムは、仮想生命オブジェクトを提示する提示ステップと、提示ステップの処理で提示された仮想生命オブジェクトを選択する選択ステップと、識別情報を記憶する記憶ステップと、記憶ステップの処理で記憶された識別情報をサーバに送信する送信ステップと、サーバから送信されてくる識別情報に対応する成長情報を受信する受信ステップとを含み、選択された仮想生命オブジェクトを識別する識別情報が記憶ステップの処理で記憶されていないとき、その旨をサーバに送信し、記憶ステップの処理で識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる選択された仮想生命オブジェクトを識別する識別情報を受信して、記憶させることを特徴とする。
【００１５】
請求項４に記載の情報処理装置は、端末から識別情報が伴われずアクセスがあったとき、所定の仮想生命オブジェクトの識別情報を生成する生成手段と、生成手段により生成された識別情報を、仮想生命オブジェクトの成長情報と対応付けて登録する登録手段と、登録手段により登録された識別情報を端末に提供する提供手段とを備えることを特徴とする。
【００１６】
請求項５に記載の情報処理方法は、端末から識別情報が伴われずアクセスがあったとき、所定の仮想生命オブジェクトの識別情報を生成する生成ステップと、生成ステップの処理で生成された識別情報を、仮想生命オブジェクトの成長情報と対応付けて登録する登録ステップと、登録ステップの処理で登録された識別情報を端末に提供する提供ステップとを含むことを特徴とする。
【００１７】
請求項６に記載の記録媒体のコンピュータプログラムは、端末から識別情報が伴われずアクセスがあったとき、所定の仮想生命オブジェクトの識別情報を生成する生成ステップと、生成ステップの処理で生成された識別情報を、仮想生命オブジェクトの成長情報と対応付けて登録する登録ステップと、登録ステップの処理で登録された識別情報を端末に提供する提供ステップとを含むことを特徴とする。
【００１８】
請求項７に記載の情報処理システムは、端末は、仮想生命オブジェクトを提示する提示手段と、提示手段により提示された仮想生命オブジェクトを選択する選択手段と、識別情報を記憶する記憶手段と、記憶手段に記憶された識別情報をサーバに送信する送信手段と、サーバから送信されてくる識別情報に対応する成長情報を受信する受信手段とを備え、選択された仮想生命オブジェクトを識別する識別情報が記憶手段に記憶されていないとき、その旨をサーバに送信し、記憶手段に識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる選択された仮想生命オブジェクトを識別する識別情報を受信して記憶手段に記憶させ、サーバは、端末から識別情報が伴われずアクセスがあったとき、仮想生命オブジェクトの成長情報に対応する識別情報を生成する生成手段と、生成手段により生成された識別情報を、仮想生命オブジェクトの成長情報と対応付けて登録する登録手段と、登録手段により登録された識別情報を、端末に提供する提供手段とを備えることを特徴とする。
【００１９】
請求項８に記載の情報処理方法は、端末において、仮想生命オブジェクトを提示する提示ステップと、提示ステップの処理で提示された仮想生命オブジェクトを選択する選択ステップと、識別情報を記憶する記憶ステップと、記憶ステップの処理で記憶された識別情報をサーバに送信する送信ステップと、サーバから送信されてくる識別情報に対応する成長情報を受信する受信ステップとを含み、選択された仮想生命オブジェクトを識別する識別情報が記憶ステップの処理で記憶されていないとき、その旨をサーバに送信し、記憶ステップの処理で識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる選択された仮想生命オブジェクトを識別する識別情報を受信して記憶ステップの処理で記憶させ、サーバにおいて、端末から識別情報が伴われずアクセスがあったとき、仮想生命オブジェクトの成長情報に対応する識別情報を生成する生成ステップと、生成ステップの処理で生成された識別情報を、仮想生命オブジェクトの成長情報と対応付けて登録する登録ステップと、登録ステップの処理で登録された識別情報を、端末に提供する提供ステップとを含むことを特徴とする。
【００２０】
請求項９に記載の記録媒体のコンピュータプログラムは、端末において、仮想生命オブジェクトを提示する提示ステップと、提示ステップの処理で提示された仮想生命オブジェクトを選択する選択ステップと、識別情報を記憶する記憶ステップと、記憶ステップの処理で記憶された識別情報をサーバに送信する送信ステップと、サーバから送信されてくる識別情報に対応する成長情報を受信する受信ステップとを含み、選択された仮想生命オブジェクトを識別する識別情報が記憶ステップの処理で記憶されていないとき、その旨をサーバに送信し、記憶ステップの処理で識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる選択された仮想生命オブジェクトを識別する識別情報を受信して記憶ステップの処理で記憶させ、サーバにおいて、端末から識別情報が伴われずアクセスがあったとき、仮想生命オブジェクトの成長情報に対応する識別情報を生成する生成ステップと、生成ステップの処理で生成された識別情報を、仮想生命オブジェクトの成長情報と対応付けて登録する登録ステップと、登録ステップの処理で登録された識別情報を、端末に提供する提供ステップとを含むことを特徴とする。
【００２１】
請求項１に記載の情報処理装置、請求項２に記載の情報処理方法、および請求項３に記載の記録媒体のコンピュータプログラムにおいては、仮想生命オブジェクトが提示され、提示された仮想生命オブジェクトが選択され、識別情報が記憶され、記憶された識別情報がサーバに送信され、サーバから送信されてくる識別情報に対応する成長情報が受信される。選択された仮想生命オブジェクトを識別する識別情報が記憶されていないとき、その旨がサーバに送信され、識別情報が記憶されていない仮想生命オブジェクトが選択された旨が送信されたことに対応して、サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる選択された仮想生命オブジェクトを識別する識別情報が受信されて、記憶される。
【００２２】
請求項４に記載の情報処理装置、請求項５に記載の情報処理方法、および請求項６に記載の記録媒体のコンピュータプログラムにおいては、端末から識別情報が伴われずアクセスがあったとき、所定の仮想生命オブジェクトの識別情報が生成され、生成された識別情報が、仮想生命オブジェクトの成長情報と対応付けて登録され、登録された識別情報が端末に提供される。
【００２３】
請求項７に記載の情報処理システム、請求項８に記載の情報処理方法、および請求項９に記載の記録媒体のコンピュータプログラムにおいては、端末で、仮想生命オブジェクトが提示され、提示された仮想生命オブジェクトが選択され、識別情報が記憶され、記憶された識別情報がサーバに送信され、サーバから送信されてくる識別情報に対応する成長情報が受信され、選択された仮想生命オブジェクトを識別する識別情報が記憶されていないとき、その旨がサーバに送信され、識別情報が記憶されていない仮想生命オブジェクトが選択された旨を送信したことに対応して、サーバにおいて生成され、成長情報と対応付けられて登録されて送信されてくる選択された仮想生命オブジェクトを識別する識別情報が受信されて記憶され、サーバで、端末から識別情報が伴われずアクセスがあったとき、仮想生命オブジェクトの成長情報に対応する識別情報が生成され、生成された識別情報が、仮想生命オブジェクトの成長情報と対応付けて登録され、登録された識別情報が、端末に提供される。
【００２４】
【発明の実施の形態】
【００２８】
説明に先立ち、世界的規模で構築されたコンピュータネットワークであるインターネット(The Internet)において、様々な情報を提供するWWW(world wide web)の枠組みを利用して３次元的な情報を統一的に扱うことができる記述言語であるVRML(virtual reality modeling language)について説明する。
【００２９】
ここで、インターネットで利用できる情報提供システムとして、スイスのCERN（European Center for Nuclear Research：欧州核物理学研究所）が開発したWWWが知られている。これは、テキスト、画像、音声などの情報をハイパーテキスト形式で閲覧できるようにしたもので、HTTP(Hyper Text Transfer Protocol)と呼ばれるプロトコルに基づいて、WWWサーバに格納された情報をパーソナルコンピュータなどの端末に非同期転送するものである。
【００３０】
WWWサーバは、HTTPデーモン（HTTP：HyperText Transfer Protocol、ハイパーテキスト転送プロトコル）と呼ばれるサーバ・ソフトウエアとハイパーテキスト情報が格納されるHTMLファイルによって構成される。なお、デーモンとは、UNIX上で作業を行う場合、バックグラウンドで管理や処理を実行するプログラムを意味する。ハイパーテキスト情報は、HTML（HyperText Markup Language、ハイパーテキスト記述言語）と呼ばれる記述言語によって表現される。HTMLによるハイパーテキストの記述は、「＜」と「＞」で囲まれたタグと呼ばれる書式指定によって文章の論理的な構造が表現される。他の情報とのリンクについての記述は、アンカーと呼ばれるリンク情報によって行われる。アンカーによって情報が存在する所を指定する際には、URL(Uniform Resource Locator)が用いられる。
【００３１】
HTMLで記述されたファイルを、TCP/IP(Transmission Control Protocol/Internet Protocol)ネットワーク上において転送するためのプロトコルがHTTPである。クライアントからの情報の要求をWWWサーバに伝え、HTMLファイルのハイパーテキスト情報をクライアントに転送する機能をもっている。
【００３２】
WWWを利用する環境として多く利用されているのが、WWWブラウザ（ブラウザとは閲覧するという意味）と呼ばれる、Netscape Navigator（米国Netscape Communications社の商標）をはじめとするクライアント・ソフトウエアである。
【００３３】
このWWWブラウザを用いて、URLに対応する世界規模で広がるインターネット上のWWWサーバ上のファイル、いわゆるホームページを閲覧することができ、いわゆるネットサーフィンと呼ばれるように、リンクが張られたホームページを次々と辿って、多種多様なWWWの情報ソースにアクセスすることができる。
【００３４】
近年、このWWWをさらに拡張し、3次元空間の記述や、３次元グラフィックスで描画されたオブジェクトに対してハイパーテキストのリンクの設定を可能とし、これらのリンクをたどりながらWWWサーバを次々とアクセスできるようにしたVRMLと呼ばれる３次元グラフィックス記述言語で記述された３次元空間を表示するVRMLブラウザが開発されている。
【００３５】
このVRMLの詳細は、例えば、「VRMLを知る：３次元電脳空間の構築とブラウジング〔マーク・ペッシ著，松田晃一・蒲地輝尚・竹内彰一・本田康晃・暦本純一・石川真之・宮下健・原和弘訳，１９９６年３月２５日初版発行，プレンティスホール出版ISBN4-931356-37-0〕（原著；VRML：Browsing & Building Cyberspace,Mark Pesce, 1995 New Readers Publishing ISBN 1-56205-498-8））」、および「VRMLの最新動向とＣｙｂｅｒＰａｓｓａｇｅ〔松田晃一・本田康晃著、ｂｉｔ（共立出版）／1996 Vol.28 No.7 pp29 乃至pp36, No.8 pp57 乃至pp65, No.9 pp29 乃至pp36, No.10 pp49乃至pp58〕」等の文献に記載されている。
【００３６】
また、 August 4, 1996における The Virtual Reality Modeling Language Version  2.0, ISO/IEC CD 14772の公式かつ完全な仕様書は、http://webspace.sgi.com/moving-worlds/spec/index.htmlで公開されており、その日本語版は、http://www.webcity.co.jp/info/andoh/VRML/vrml2.0/spec-jp/index.htmlで公開されている。
【００３７】
さらに、VRML２．０用ブラウザおよび共有サーバ用ソフトウェアとしては、例えば、本出願人であるソニー株式会社が「Community Place Browser / Bureau(商標)」として開発し、製品化しており、そのβ版（試供版）を、インターネット上のホームページhttp://vs.sony co.jpからダウンロード可能としている。
【００３８】
このようなVRML２．０を用いて３次元的な仮想空間を構築しようとする場合、まず、VRMLにより仮想空間内の物体（モデル）の形、動きおよび位置等を示す図形データの作成（モデル作成）、ユーザが画面表示された仮想空間内のモデルを、例えば、マウスでクリックしてポインティングした場合にイベントを発生させるスイッチ（センサ）のモデルへの付加（センサ付加）、センサへのポインティングに応じて発生するイベントを実現するスクリプトのプログラミング（スクリプト作成）、センサーに対する操作とスクリプトの起動等、図形データおよびスクリプト（以下、図形データ、スクリプトおよびVRMLに規定されているライト等のコモンノード等を総称してノードとも記す）の間の対応付け（ルーティング）などによって所望のコンテンツを表現するVRMLファイルを作成する。
【００３９】
例えば、http://www.ses.co.jp/SES/STAFF/kan/howto/howto1.htmlには、VRML2.0の書き方、サンプルデータなど、丁寧に解説されている。その一部を紹介すると、以下の通りである。
【００４０】
1.VRML2.0で書かれたワールドを見るにはHTML形式で書かれたデータを見るためにHTMLブラウザが必要なように、VRML2.0形式で書かれたデータを見るためにはVRML2.0に対応したVRMLブラウザが必要となる。尚、このページで作成したVRML2.0のデータは全てSONY社製のCommunity Place Browserで行なわれている。また、ファイルがVRMLで書かれたことを表すためにファイルの拡張子を*.wrl（ワールドの意）に、更にVRML2.0で書かれたことを表すためにファイルの１行目に
#VRML V2.0 utf8
と書くことが必要である。
【００４１】
2.VRML2.0データの基本構造
VRML2.0のデータはノード(Node)とフィールド(Field)で構成されていて、基本的に次のような形で書かれている。
Node { Field(s) }
この中でFieldsは省略することができるが、Nodeと中かっこ'{','}'は省略することができない。フィールドはノードに変数を渡し、ノードのパラメータを指定します。フィールドを省略した場合、デフォルト値が用いられる。また、フィールドには単一の値しか持たない「単一値フィールド(SF)」と複数の値を持つ「複値フィールド(MF)」があり、単一値フィールドの名前は"SF"で、複値フィールドは"MF"で始まるようになっている。
【００４２】
3.球の書き方
VRML2.0では球や直方体、円柱、円錐などの基本図形を描くためのノードが用意されている。前にも書いているが、それぞれのノードはパラメータを指定するためのフィールドを持っている。例えば、球を描くためのSphereノードは半径を指定するためのradiusというフィールドを持っており、次のように書くことで半径1の球を表示する。尚、radiusフィールドのデータタイプは、SFFloatですから、１つの浮動小数点数の値をとる。
【００４３】
Sample1
1: #VRML V2.0 utf8
2: Transform {
3:     children [
4:         Shape {
5:             geometry Sphere { radius 1 }
6:         }
7:     ]
8: }
【００４４】
実は2,3行目、7,8行目は書かなくてもかまいません。1行目と4行目乃至6行目だけで、きちんと半径1の球を表示できる。Transformノードは、Groupノードという種類のノードの１つで、文字通りノードのグループ化を行うためのノードである。Transformノードを含めて、後でてくる他のノードの詳しい機能やフィールドなどは「Appendix1：VRML2.0 Node List」を参照されたい。球を書くためのノードはSphereであるが、このノードはGeometryノードを呼ばれるノードの１つである。Geometryノードは、見え方と形状を定義するShapeノードのgeometryフィールドに書く必要がある。
【００４５】
4.球に色を付ける
先ほどの球に色を付けるには次のように書く。
Sample2
1: #VRML V2.0 utf8
2: Transform {
3:     children [
4:         Shape {
5:           appearance Appearance {
6:               material Material { diffuseColor 1 0 0 }
7:           }
8:           geometry Sphere { radius 1 }
9:         }
10:     ]
11: }
【００４６】
この球は赤色で表示される。追加されたのは5行目乃至7行目までである。diffuseColorフィールドのデータタイプは、SFColorであるから、RGBカラーを表す3つの単精度浮動小数点数の組を１つだけ持つ。見え方を定義するMaterialノードはAppearanceノードのmaterialフィールドに書くことになっています。また、AppearanceノードはShapeノードのappearanceフィールドに書くことになっている。このためこのような一見複雑な構造になっている。
【００４７】
5.テクスチャの張り付け
オブジェクトに色を付けるだけではなくて画像ファイルを張り付けることもできる。VRML2.0でテクスチャとして利用できるファイルフォーマットはJPEG,GIF,PNGである。ここでは予め用意したGIFイメージを使っている。
Sample3
1: #VRML V2.0 utf8
2: Transform {
3:     children [
4:         Shape {
5:           appearance Appearance {
6:             texture ImageTexture { url "image.gif" }
7:           }
8:           geometry Box {}
9:         }
10:     ]
11: }
【００４８】
テクスチャを張り付けているのは6行目である。ImageTexureノードはAppearanceノードのtextureフィールドに書くことになっているため、このような書き方になる。尚、8行目のBoxノードは直方体を描くためのノードである。
【００４９】
6.物体の位置を移動させる
次にこの赤色の球を右に移動させる。
Sample4
1: #VRML V2.0 utf8
2: Transform {
3:     translation 2 0 0
4:     children [
5:         Shape {
6:           appearance Appearance {
7:               material Material { diffuseColor 1 0 0 }
8:           }
9:           geometry Sphere { radius 1 }
10:         }
11:     ]
12: }
【００５０】
3行目に追加したtranslationフィールドで物体を平行移動させる。translationフィールドは、
translation x y z
で、それぞれx軸、y軸、ｚ軸の移動量を指定する。ブラウザ上ではx軸は左右（右方向に+）、y軸は上下（上方向に+）、ｚ軸は奥行き（手前に向かって+）を表す。従って、
translation 2 0 0
は右方向に2だけ平行移動することになる。
【００５１】
7.物体の追加
赤い球の左に緑の円錐を追加する。
Sample5
1: #VRML V2.0 utf8
2: Transform {
3:     translation 2 0 0
4:     children [
5:         Shape {
6:           appearance Appearance {
7:               material Material { diffuseColor 1 0 0 }
8:           }
9:           geometry Sphere { radius 1 }
10:         }
11:     ]
12: }
13: Transform {
14:     translation -2 0 0
15:     children [
16:         Shape {
17:           appearance Appearance {
18:               material Material { diffuseColor 0 1 0 }
19:           }
20:           geometry Cylinder {}
21:         }
22:     ]
23: }
【００５２】
13行目以降に追加したソースは12行目以前のものと構造は同じである。物体が球から円錐へ、色が赤から緑へ、そして位置が左に移動している点が12行目以前のものと異なる。
【００５３】
8.ポリゴンで書く
上述した「VRML2.0の書き方」ではプリミティブな図形を使ったが、複雑な図形を書くときにはポリゴンを使用する。ポリゴンで表示するためにIndexedLineSet，IndexedFaceSetの2つのノードが用意されている。IndexedLineSetは線を、IndexedFaceSetは面を表現する。
Sample6
1: #VRML V2.0 utf8
2:     Transform {
3:         children [
4:             Shape {
5:                 geometry IndexedFaceSet {
6:                     coord Coordinate {
7:                         point [
8:                              0 0 0,
9:                              1 0 0,
10:                             1 0 1,
11:                             0 0 1,
12:                             0 1 0,
13:                             1 1 0,
14:                             1 1 1,
15:                             0 1 1
16:                         ]
17:                     }
18:                     coordIndex [
19:                         0, 1, 2, 3,-1,
20:                         0, 1, 5, 4,-1,
21:                         1, 2, 6, 5,-1,
22:                         2, 3, 7, 6,-1,
23:                         3, 0, 4, 7,-1,
24:                         4, 5, 6, 7,-1
25:                     ]
26:                     solid FALSE
27:                 }
28:             }
29:         }
30:     ]
31: }
【００５４】
このサンプルは６つの面で立方体を表している。ポリゴンで表すためにはまず、頂点となる座標を決める（7行目乃至16行目）。この座標は上から0,1,2,と番号が振られる。即ち、10行目の「1 0 1」は「2」番の座標ということになる。次に何番の座標と何番の座標で面を構成するのかを決める（18行目乃至25行目）。19行目の「0, 1, 2, 3, -1」は「0番、1番、2番、３番の座標で面を作る」ことを表している。
【００５５】
9.ノードに名前を付ける
既に定義されているノードを再利用するためにDEFとUSEという機能がある。例えば、半径2の青の球を２つ描くとする。これまでの書き方で書くならば次のようになる。
Sample7
1: #VRML V2.0 utf8
2: Transform {
3:     children [
4:         Shape {
5:             appearance Appearance {
6:                 material Material { diffuseColor 0 0 1 }
7:             }
8:             geometry Sphere { radius 2 }
9:         }
10:     ]
11: }
12: Transform {
13:     translation 0 5 0
14:     children [
15:         Shape {
16:             appearance Appearance {
17:                 material Material { diffuseColor 0 0 1 }
18:             }
19:             geometry Sphere { radius 2 }
20:         }
21:     ]
22: }
【００５６】
12行目以降は13行目の座標移動の部分を除いて11行目以前と全く同じである。１度定義されている「半径2で青い球」を再び同じように記述するのははっきり言って無駄である。そこで次のようにする。
【００５７】
Sample7改
1: #VRML V2.0 utf8
2: Transform {
3:     children [
4:         DEF BlueSphere Shape {
5:             appearance Appearance {
6:                 material Material { diffuseColor 0 0 1 }
7:             }
8:             geometry Sphere { radius 2 }
9:         }
10:     ]
11: }
12: Transform {
13:     translation 0 5 0
14:     children [
15:         USE BlueSphere
16:         }
17:     ]
18: }
4行目を見ると
DEF BlueSphere Shape
となっている。これは「Shape{……}を「BlueSphere」という名前にします。」という意味で、これ以降
USE BlueSphere
と書くだけでShape{……}と同じ内容を表す。
【００５８】
10.WRLファイルの読み込み
大きなVRMLデータをつくるときに１つのファイルにすべての記述を行うのはあまりいい方法ではない。部品ごとに分けて必要に応じて呼び出せるようにしておく方が便利である。このような場合、Inlineノードを使う。例えば1.でつくったSample1.wrlを読み込んで表示する。
Sample8
1: #VRML V2.0 utf8
2: Inline {
3:     url [
4:         sample1.wrl
5:     ]
6: }
【００５９】
11.リンクを張る
オブジェクトにリンクを張り、オブジェクトをクリックしたときに別のページにジャンプさせることもできる。
Sample9
1: #VRML V2.0 utf8
2: Anchor {
3:     children [
4:         Shape {
5:             geometry Sphere { radius 2 }
6:         }
7:     ]
8:     url "test.html"
9:     description "LINK to test.html"
10: }
【００６０】
リンクを張るオブジェクトを子ノードにしてAnchorノードで括る。AnchorノードはGroupノードの１つである。リンク先のファイルをurlフィールドに書く。descriptionフィールドに書いた文字列はマウスポインタがオブジェクトに触れている間表示される。
【００６１】
12.ライトの設定
VRML2.0ではワールドに光を設定するためにDirectionalLight（平行光）、PointLigt（点光源）、SpotLight（スポットライト）３つのノードが用意されている。ここではPointLigtノードを例に挙げて説明する。光の当たり方がわかりやすいように3行目でオブジェクトを回転させている。
Sample10
1: #VRML V2.0 utf8
2: Transform {
3: rotation 1 0 0 0.75
4:     children [
5:         PointLight {
6:             location 0 0 2 #オブジェクトの前
7:         }
8:         Shape {
9:             geometry Cylinder {}
10:         }
11:     ]
12: }
【００６２】
6行目の光源の位置によってオブジェクトの見え方が異なる。このサンプルではオブジェクトの前に光源を置いている。
【００６３】
13.ワールド環境(1)
これまでは主にオブジェクトの作成に関しての解説であったが、今回はオブジェクト作成以外のノードの使い方について触れる。ワールド環境などと勝手に命名しているが、こういう言い方が一般的かどうかは分からない。まず、ブラウザでデフォルトで用意されている HeadLight を消してみる。HeadLight の ON・OFF はブラウザのOption で変更できるが、ファイル内に書くことによっても設定できる。
Sample11
1: #VRML V2.0 utf8
2: NavigationInfo {
3:     headlight FALSE
4: }
5: Transform{
6:     children [
7:         Shape {
8:             appearance Appearance {
9:                 material Material { diffuseColor 1 0 0 }
10:             }
11:             geometry Sphere {}
12:         }
13:     ]
14: }
【００６４】
このサンプルでブラウザの Option を見ると、Headlight のチェックがはずれている。このサンプルでは今までのサンプルに比べて極端に暗くなっているのが分かる。HeadLight は常にユーザの見ている方向に照らされるライトで、これがないとこのように見える。新たに加えたのは 2 行目から 4 行目の NavigationInfo ノードである。このノードの headlight フィールドをTRUE か FALSE にすることで HeadLight を ON・OFF する。HeadLight を消して任意のライトを設定することで効果的に明るさを設定できる。
【００６５】
14.ワールド環境(2)
NavigationInfo ノードには他にも幾つかのフィールドが用意されている。その中の type フィールドでナビゲーション方法を変更することができる。デフォルトでは WALK に設定されている ナビゲーション方法であるが、他にも重力を無視して移動できる FLY、自分が動くことなくオブジェクトを動かす EXAMINE、何もコントロールできない NONE、がある。ちなみに WALKは重力の影響を受けながら移動するナビゲーション方法である。
【００６６】
Sample12
1: #VRML V2.0 utf8
2: NavigationInfo {
3:     type EXAMINE
4: }
5: Transform{
6:     children [
7:         Shape {
8:             appearance Appearance {
9:                 material Material { diffuseColor 1 0 0 }
10:             }
11:             geometry Box {}
12:         }
13:     ]
14: }
このサンプルでは EXAMINE にしている。オブジェクトをマウスでドラッ
グするとオブジェクトが回転する。
【００６７】
15.シーンにタイトルを付ける
HTML では <title> タグで囲むことによってタイトルを付けることができる。もしこのタグを指定しないとタイトルが [http://ryo1.is.kochi-u…howto3.html] のようにパスが表示される。VRML でもこれと同じことが起こる。これまでのサンプルではタイトルを指定していないためパスが表示されている。VRML でタイトルを指定するには WorldInfo ノードを使用する。
【００６８】
Sample13
1: #VRML V2.0 utf8
2: WorldInfo {
3:     title "Spin Box"
4:     info["Autor H.Kan","http://ryo1.is.kochi-u.ac.jp/"]
5: }
2: NavigationInfo {
3:     type EXAMINE
4: }
5: Transform{
6:     children [
7:         Shape {
8:             appearance Appearance {
9:                 material Material { diffuseColor 1 0 0 }
10:             }
11:             geometry Box {}
12:         }
13:     ]
14: }
【００６９】
2 行目乃至 5 行目までに WorldInfo ノードを追加した。このサンプルでは前のサンプルに "Spin Box" というタイトルを付けた（Plugin 版では表示されなかった）。尚、info フィールドにはタイトル以外の情報を書くが、ブラウザ上には何の変化も与えない。
【００７０】
16.視点の位置を変える
デフォルトでは視点は最初 z 軸上のどこか（オブジェクトの配置によって異なる）にいる。ここでは最初の視点位置を任意の場所に変更できるようにする。
【００７１】
Sample14
1: #VRML V2.0 utf8
2: Viewpoint{ position x y z }
3: Transform {
4:     children [
5:         Shape {
6:             appearance Appearance {
7:                 material Material { diffuseColor 1 0 0 }
8:             }
9:             geometry Sphere {}
10:         }
11:     ]
12: }
13: Transform {
14:     translation -3 0 0
15:     children [
16:         Shape {
17:             appearance Appearance {
18:                 material Material { diffuseColor 0 1 0 }
19:             }
20:             geometry Sphere {}
21:         }
22:     ]
23: }
24: Transform {
25:     translation 3 0 0
26:     children [
27:         Shape {
28:             appearance Appearance {
29:                 material Material { diffuseColor 0 0 1 }
30:             }
31:             geometry Sphere {}
32:         }
33:     ]
34: }
【００７２】
（0,  0,  0）に赤、（-3,  0 ,  0）に緑、（3,  0,  0）に青の球がある。2行目の Viewpoint ノードの position フィールドに具体的な座標を指定すると、そこが最初の視点になる。ただし視線方向は常に z 軸の方向である。
【００７３】
17.視線の方向を変える
sample14 では視点の座標のみを変更したが、もちろん視線方向も指定できる。方向を指定するときも Viewpoint ノードを使うが、 フィールドは orientation フィールドを使う。orientation フィールドは SFRotation 型のフィールドで、加点軸と回転角を値として持つ。
【００７４】
18.センサをつける
VRML2.0 のノードの中には Sensor ノードと呼ばれるノードがある。シーン内での様々なことを感知、判定するためのノードで、全部で7種類用意されている。このWebページで動作確認を行っている Community Place Browser では、幾つかの Sensor ノードがまだサポートされていない。ここではオブジェクトにマウスがヒットしたかどうかを感知する TouchSensor をオブジェクトにつけてみる。
【００７５】
Sample15
1: #VRML V2.0 utf8
2: Transform{
3:     children [
4:         DEF TS TouchSensor {}
5:         Shape {
6:             geometry Box {}
7:         }
8:     ]
9: }
【００７６】
これまでのサンプルと異なるのは4行目だけである。ここでは TS という名前を付けた TouchSensor を Box につけている。Box にマウスカーソルが触れると（あなたが使っているブラウザが Community Place Browser ならば）手の形に変わるはずである（他のブラウザの中にはカーソルが変わらないものもある）。ちなみにクリックしても何も起きない。
【００７７】
19.動きをつける(1)
VRML2.0 が VRML1.0 と大きく異なる点はシーンに動きをつけられるという点である。 動きをつけるには Java や VRMLScript(JavaScript) などのスクリプトを用いる方法と、Interplator ノードを用いる方法がある。まずは Interplator ノードを用いる方法から見ていく。Interplate とは、「差し挟む」とか「内挿する」といった意味である。Interpolator ノードの数値、位置、3Ｄ座標、方向、法線、色の値を変えることによってシーンに動きをつけることができる。ここでは方向を内挿する OrientationInterpolator ノードを用いてオブジェクトを回転させてみる。
【００７８】
Sample16
1: #VRML V2.0 utf8
2: DEF OBJ Transform{
3:     children [
4:         Shape {
5:             geometry Box { size 2 3 1 }
6:         }
7:     ]
8: }
9: DEF TS TimeSensor{
10:     cycleInterval 1
11:     loop TRUE
12:     stopTime -1
13: }
14: DEF OI OrientationInterpolator{
15:     key [0, 0.125, 0.25,0.375, 0.5,
16:          0.625, 0.75, 0.875, 1,]
17:     keyValue [0 1 0 0, 0 1 0 0.785, 0 1 0 1.57,
18:          0 1 0 2.355, 0 1 0 3.14, 0 1 0 -2.355,
19:          0 1 0 -1.57, 0 1 0 -0.785, 0 1 0 0]
20: }
21: ROUTE TS.fraction_changed TO OI.set_fraction
22: ROUTE OI.value_changed TO OBJ.set_rotation
【００７９】
まず、幾つかのノードに名前を付けておく。2,9,14 行目にそれぞれ、OBJ,TS,OI と定義している。これは後述するがイベントの受け渡しをするときに必要になる。9 行目乃至 13 行目を見ます。TouchSensor は時間の経過を感知するノードで、時間の経過に伴って一定の間隔でイベントを生成することができる。loopフィールドは TRUE か FALSE をとる SFBool フィールドで、TRUE なら stopTime になるまで続く。ここでは stopTime -1 と startTime（デフォルトは0）と startTime より小さな値になっているので永久に継続されることになる。回転する動きをもっと遅くするときには cycleInterval の値をもっと大きくする。
【００８０】
14 行目乃至 20 行目までが OrientationInterpolator ノードである。Interpolator ノードはすべて key と keyValue の2つのフィールドを持っている。keyはアニメーション時間の間隔を 0 から 1 の間で設定する。keyValue は key で設定した間隔に具体的なフィールド値（ここでは MFRotation ）を設定する。ここではアニメーション時間の間隔を9等分して、ｙ軸を中心に回転角を設定している。
【００８１】
しかしこれだけではシーンに動きをつけることはできない。TimeSensor ノードの生成したイベントを OrientationInterpolator ノードに渡してやる必要がある。21,22行目を見ます。この ROUTE というキーワードで始まる行で イベントを受け渡しを行う。TimeSensor TS が起動すると fraction_changed がイベントアウトされる。fraction_changed がイベントアウトされると、OrientationInterplator OI の set_fraction にイベントインされる。ここまでが21 行目の ROUTE の動作である。22 行目はイベントインされた set_fraction 値から OrientationInterplator OI が値を内挿し、それを Transform OBJ の translation フィールドに value_changed としてイベントアウトする。もう1つサンプルをあげてみる。
【００８２】
20.動きをつける(2)
今度はマウスでオブジェクトをクリックすると移動するサンプルである。移動するには位置を内挿する PositionInterpolator ノードを使用する。
Sample17
1: #VRML V2.0 utf8
2: DEF OBJ Transform {
3:     children [
4:         DEF TS TouchSensor {}
5:         Shape {
6:             appearance Appearance {
7:                 material Material { diffuseColor 1 0 0 }
8:             }
9:             geometry Box {}
10:         }
11:     ]
12: }
13: DEF TIS TimeSensor { cycleInterval 5 }
14: DEF PI PositionInterpolator {
15:     key [0, 0.2, 0.4, 0.6, 0.8, 1.0]
16:     keyValue[0 0 0 , 0 0 -2 , 0 2 -4 , 0 4 -6 , 2 4 -6, 4 2 -6]
17: }
18: ROUTE TS.touchTime TO TIS.set_startTime
19: ROUTE TIS.fraction_changed TO PI.set_fraction
20: ROUTE PI.value_changed TO OBJ.set_translation
【００８３】
今度は、OBJ という名前の赤い立方体に TouchSenor TS をつけている。オブジェクトがクリックされると、TouchSenor TS の touchTime が TimeSensor TISの startTime にイベントアウトされる。サンプルのソースには TimeSensoe ノードの中に startTime フィールドは書いてないが、デフォルトで startTime 0 となっている。あとは前のサンプルと同じである。これらの ROUTE によってオブジェクトが移動する。
【００８４】
ここで、第１世代のVRML１．０に対し、第２世代のVRML２．０で新たに加わった機能であるVRML仮想空間内における自律的な動き(Behavior)を実現するためのメカニズムについて概説する。
【００８５】
VRML２．０においては、3次元仮想現実空間内に配置されたオブジェクトに対する操作に伴って生じるイベントや、予め設定された時間が経過した時点で生じるタイマーイベントに応じて、オブジェクトの自律的な動きを実現することができる。このBehaviorのメカニズムは、センサー、ルーティング、スクリプトの３つの要素の連携動作によって実現される。
【００８６】
すなわち、
▲１▼予め3次元仮想現実空間内に配置されたオブジェクトなどのノードに対して関係付けられて、VRMLファイルとして記述されたセンサーノードが、そのフィールドの値の変化に基づいて、外部イベントを感知し、VRMLシーン内にイベントを発生する。
▲２▼発生したイベントは、 VRMLファイルとして記述されたルーティングに基づいて、オブジェクトの挙動を規定するプログラムである外部のスクリプトに対して、伝達される。
▲３▼外部のスクリプトには予め特定のイベントが到来した時点で呼び出されるメソッドが記述されており、ルーティングによって伝達されたイベントを受け取った外部のスクリプトは、その記述に基づく処理を実行した後、その処理結果と、ルーティングの記述に基づいて、VRMLシーン内の該当するノードのフィールドの値を変更する。
【００８７】
VRML２．０においては、センサーノードとしては、例えば、指定されたオブジェクト上をポインティングデバイスが通過したり、ユーザによってクリックされた場合にイベントを発生するTouchSensorや、指定された領域内にViewPoint(ユーザの視点)が侵入した場合にイベントを発生するProximitySensorや、与えられた時刻となったり、予め指定された時間間隔が経過する毎に発生するTimeSensorなどが定義されている。
【００８８】
もう少し詳しく、Behaviorの仕組みを説明する。先にも述べたように、Behaviorの仕組みは、センサー、イベント、ルーティングおよびスクリプトから構成されている。
【００８９】
センサーは、２つの機能に分けられる。
・ユーザの操作を感知するタイプ
・システムの変化を感知するタイプ
【００９０】
ユーザの操作を感知するタイプのセンサーは、３次元仮想空間内に配置された物体などに関係付けられたソフトウエアによるスイッチとなる。システムの変化を感知するタイプのセンサーは、作動させる時間を事前に設定しておいたタイマーが作動することになる。センサーの働きは、これらの外部イベントを検出して、それをVRML内部のイベントに変換することである。
【００９１】
イベントは、VRMLの内部の関連するノード間で、情報を伝えるためのデータのことを指す。実際には、VRMLファイルの中に記述されたフィールド値の変化がイベントとして伝達される。
【００９２】
ルーティングは、センサー機能で検出されたイベントをどのノードに伝えるかを指定するための仕組みで、イベントによる情報の伝達経路を指定することになる。
【００９３】
スクリプトはイベントの入出力口で、入力されたイベントから何らかの計算を行い、その結果をイベントとして出力することができるものである。スクリプトは特定の言語のみに制限されるものではなく、現段階では、インターネット界で注目を浴びているJavaやJavaScript、通常のシステムでよく利用されているＣ言語、UNIXでよく利用されているTcl/TkやPERL、マイクロソフト社の提供しているVisual Basic言語などが対応している。このようにVRML２．０では特定のスクリプト言語に依存しない仕様になっている（VRML２．０仕様検討中、一時特定の言語仕様としてVRMLScriptが採用されようとしたこともあるが、この構想は取り止めなった）。
【００９４】
次に、Behaviorの処理手段に関して、図１を参照して説明する。Behaviorの処理を図式化すると、図１のようになる。以下、各部に分けて、処理信号の流れを説明する。
【００９５】
▲１▼センサーノード
前にも述べたように、センサーノードには、大きく分類して２系統がある。ユーザの操作を感知するタイプと、システムの変化を感知するタイプのセンサーである。
【００９６】
前者のセンサーには、３次元物体やその平面をマウスクリックしたり、通過したりしたときに感知するTouchSensorやPlaneSensorなどのセンサーノードがあり、後者のセンサーとしては、設定した時間が来るとイベントを発生させる仕組みになっているTimeSensorが用意されている。
【００９７】
この図１の例では、球にTouchSensorが付けられているものとする。このとき、ユーザが球をマウスクリックすると、このイベントをTouchSensorが検出する。このイベントは、TouchSensorのeventOutフィールドのフィールド値が変化することで検出される。通常１回のマウスクリックで２つのイベントを発生する。それは、マウスボタンが押されたタイミングと、離されたタイミングである。
【００９８】
次に、このイベントは、ルーティング記述部分によって、ルーティングされることになる。
【００９９】
▲２▼ルーティング
このイベントのルーティングを指定するのが、図２に示すような「Route」である。
【０１００】
センサー記述部分で発生したイベントがRouteのeventOutフィールドに伝達され、さらに、次に述べるスクリプトノードに伝えられることにより、外部ファイルにイベントが渡され、Behavior機能が実行される。
【０１０１】
▲３▼スクリプトノード
このノードは、VRMLファイルと外部のスクリプトとを連動させる仲介をするノードである。スクリプトノードの記述書式に従って、どのような言語で記述されているかとか、ファイル名を指定したり、外部スクリプトファイルとの間でイベントのやり取りをするために、eventInフィールドとeventOutフィールドを規定する。このとき、使用できるスクリプトファイルは、Java、JavaScript、Ｃ言語、Tcl/Tk、PERL、およびVisual Basic言語など多岐に渡る。
【０１０２】
実際の処理手段としては、ルーティングされたイベントがスクリプトノードに記述されているスクリプトファイルに処理が伝達され、外部のスクリプトファイルが実行される。外部のスクリプトファイルは、その中で定義されているeventIn（イベントの入口）で受け取り、そのファイル内に記述された処理を実行する。その処理が終了した後、eventOut（イベントの出口）から結果をVRMLファイルのルーティングへ返す。VRMLファイルは、その返された結果を実行して、一連のBehavior処理は終了する。
【０１０３】
このような、センサー、ルーティング、スクリプトの連携動作によって実現されるBehaviorのメカニズムを利用することによって、例えば、3次元仮想現実空間内に配置されたスイッチを模したオブジェクトをマウスでクリックすることによって、同じ空間内に配置された他のオブジェクトの外観（形状、姿勢、サイズ、色等）であるとか、挙動シーケンスなどを動的に変更する事ができる。
【０１０４】
このBehaviorのメカニズムの詳細な説明については、http://webspace.sgi.com/moving-worlds/spec/part1/concepts.htmlおよび、その日本語版であるhttp://www.webcity.co.jp/info/andoh/VRML/vrml2.0/spec-jp/part1/concepts.html で公開されている、August 4, 1996における The Virtual Reality Modeling Language Version  2.0, ISO/IEC CD 14772の仕様書、4．概念の節に開示されている。この節には、 VRML仕様書を利用するにあたりキーとなる概念が記述されている。ノードをシーングラフに結合する方法、ノードがイベントを生成したり受け取ったりする方法、プロトタイプによるノードタイプの作成方法、VRMLにノードタイプを追加して外部から使用できるようにエクスポートする方法、VRMLファイルにプログラムとして動作するスクリプトを組み込む方法など、様々なノードに関する一般的な項目が記載されている。
【０１０５】
次に、このようなVRML２．０の自律的な動き(Behavior)を実現するメカニズムを応用して、共有仮想空間内に、仮想生命オブジェクトを誕生させ、ユーザの操作や時間経過に伴う所定のイベントの発生に応じて変化する成長パラメータ（外観的成長又は内面的成長（個性））をサーバで管理し、このサーバから転送された成長パラメータに基づいて、仮想生命オブジェクトの外観（形状、姿勢、サイズ、色等）又は挙動シーケンスの内の何れか一方もしくは双方を動的に変更するためのスクリプトプログラムを解釈、実行することで、成長パラメータに応じた仮想生命オブジェクトを表示する技術について、以下に詳述する。
【０１０６】
図３は本発明の一実施の形態の全体のシステム構成図である。
【０１０７】
図３において、１，２，３は、VRMLブラウザ及びWWWブラウザがインストールされ、これらが動作しているクライアントＰＣ（パーソナルコンピュータ）であり、IP（インターネット接続サービスプロバイダ）４，５，６を介してインターネット７と接続されている。
【０１０８】
インターネット７とルータ８を介して接続されたLAN(Local Area Network)9には、WWWサーバ１０、WLS（World Location Server）１１、共有サーバ１２、ＡＯ(Application Object)サーバ１３，１４、メールサーバ１５、およびコミュニケーションサーバ１６が接続されている。これらの各サーバ１０乃至１６には、ハードディスク（HDD）１０a，１０b，１１a乃至１６aが、各々設けられている。
【０１０９】
コミュニケーションサーバ１６は、公衆電話回線網１７を介して電話機１８やファクシミリ１９と接続され、さらに、PHS(Personal Handyphone System)サービスプロバイダ２０を介してPHS端末２３に無線接続され、ポケットベルサービスプロバイダー２１を介してポケットベル端末２４に無線接続されている。
【０１１０】
図４はクライアントＰＣ１のハードウェア構成を示すブロック図である。
【０１１１】
図４において、３０は各部を制御するCPU、３１はVRML ２．０ fileや、Java(米国 Sun Microsystems社の商標)による共有仮想生命の成長スクリプトプログラム等からなるVRMLコンテンツ、および飼い主データが格納されたHDD、３２はCD−ROMディスク３３に格納されたVRMLコンテンツを読み取るCD−ROMドライブ、３４はBIOS(Basic Input Output Systems)等が格納されたROM、３５はマイクロフォン３６と左右のスピーカ３７，３８が接続されたサウンド処理回路、３９はインターネット７に接続するためのMODEM、４０はマウス４１とキーボード４２が接続されたI/O(入出力)インターフェイス、４３はVRAM４４が内蔵されたグラフィックス処理回路、４５はCRTモニタ、４６はRAMである。
【０１１２】
このRAM４６には、実行時に、Windows95(米国Micro Soft社の商標) の上で動作するWWWブラウザであるNetscape Navigatorと、Javaインタプリタと、ソニー株式会社によって開発されたVRML２.0ブラウザであるCommunity Place Browserが読み込まれて、CPU３０によって実行される状態となっている。
【０１１３】
VRML２．０ブラウザには、米国シリコングラフィクス社によって開発され、無償公開されているVRMLの構文解釈用ライブラリ(パーサ)であるQvLibと、英国Criterion Software Ltd.のソフトウエア・レンダラであるRenderWare等、もしくはこれらと同等の機能を有するパーサやレンダラが実装されている。
【０１１４】
そして、 Community Place Browserは、図３に示すように、WWWブラウザとしてのNetscape Navigatorとの間において、NCAPI（Netscape Client Application Programing Interface）（商標）に基づいて各種データの授受を行う。
【０１１５】
Netscape Navigatorは、インターネット７を介してWWWサーバ１０よりHTMLファイルとVRMLコンテンツ(VRMLファイルとJavaによるスクリプトプログラムとを含む）の供給を受けると、これらをローカルのHDD３１にそれぞれ記憶させる。Netscape Navigatorは、このうちのHTMLファイルを処理してテキストや画像をCRTモニタに表示する一方、 Community Place BrowserはVRMLファイルを処理して3次元仮想空間をCRTモニタに表示するとともに、Javaインタプリタによるスクリプトプログラムの処理結果に応じて、3次元仮想空間内のオブジェクトの挙動を変化させる。
【０１１６】
なお、図示は省略するが、他のクライアントＰＣ２やクライアントＰＣ３も、クライアントＰＣ１と同様に構成されている。
【０１１７】
次に上述した一実施の形態の動作について説明する。
【０１１８】
まず、実際にVRMLコンテンツをインターネット経由でダウンロードしてから、１つの仮想空間を複数のユーザで共有するマルチユーザ環境とするまでの手順を図５乃至図７を参照して説明する。
【０１１９】
図５において、番号１で示すように、最初に、WWWブラウザを用いて、VRMLコンテンツを提供しているWebサイトのホームページを閲覧する。この例では、 http://pc.sony.co.jp/sapari/  を閲覧している。次に、番号２で示すように、クライアントＰＣ１とクライアントＰＣ２のユーザは、VRML  2.0fileと、VRML空間内での自律的な動き（Behavior）を実現するためのスクリプトプログラム（Javaによる成長スクリプトプログラム）とからなるVRMLコンテンツを、それぞれダウンロードする。
【０１２０】
勿論、 CD−ROMディスク３３で提供されるVRMLコンテンツをCD−ROMドライブ３２で読み込んでも良い。
【０１２１】
次に、図６に示すように、クライアントＰＣ１及びクライアントＰＣ２は、それぞれにダウンロードされ、一旦ローカルのHDD３１に格納されたVRML  2.0fileを、VRML２．０ブラウザであるCommunity Place Browserが解釈・実行し、さらに番号３で示すように、VSCP(Virtual Society Server Client Protocol)に基づいて、WLS１１に対して共有サーバ１２のURLを問い合わせる。このとき番号４で示すように、WLS１１はHDD１１aに格納された共有サーバURL管理テーブルを参照して、クライアントＰＣ１及びクライアントＰＣ２に対して、共有サーバ１２のURLを通知する。
【０１２２】
このURLを用いて、図７に示すように、クライアントＰＣ１とクライアントＰＣ２が、共有サーバ１２に接続する。その結果、番号５で示すように、この共有サーバ１２を介して共有3Dオブジェクトの位置や動きなどに関する共有メッセージの送信が行われ、番号６で示すように、その転送が行われ、マルチユーザ環境が実現される。
【０１２３】
なお、以上の接続手順の詳しい説明については、特開平9-81781号公報を参照されたい。
【０１２４】
次に、共有仮想空間内に存在する仮想生命オブジェクトの挙動を管理するＡＯサーバ１３について説明する。ＡＯサーバ１３は、VSAPに基づいて共有サーバ１２とＡＯに関するデータのやり取りを行うが、機能ごとに複数のＡＯに分類されている。例えば、ユニバーサルＡＯは、仮想空間に１つだけ存在し、仮想空間全体を覆うＡＯであり、全てのユーザのログイン、ログアウトを監視することができる。また、ユニバーサルＡＯは、Community Place Browserのアトリビュート機構を利用し、クライアントＰＣのレジストリの内容を把握することができたり、所定の情報をレジストリに書き込むことができたりする。さらに、ユニバーサルＡＯは、ユーザを特定するID（ユーザ一人が一匹の仮想ペットを飼育できるときは、3DオブジェクトIDが相当する）は発行したり、また、そのIDを、例えば、成長パラメータ管理テーブルに登録したりすることができる。また、ユニバーサルＡＯは、共有仮想空間を利用しているユーザに同報通信（場内アナウンス）を行うことができる。
【０１２５】
オブジェクトＡＯは、仮想空間内に落ちている（置かれている）仮想生命オブジェクト以外の物体である仮想物体オブジェクトを管理し、仮想物体オブジェクトがユーザによって拾われた場合、仮想物体オブジェクトは拾ったユーザの所有物として管理される。
【０１２６】
エージェントＡＯは、ユーザが共有仮想空間で飼育することができる仮想ペットを管理するＡＯで、例えば、ユーザ一人に対して、１つの仮想ペットを割り当てている。
【０１２７】
エリアＡＯは、共有仮想空間の所定の領域に特殊な機能を設定するためのＡＯである。例えば、バトルエリアにおいては、仮想生命オブジェクト同士を戦わせることができる。また、チャットエリアにおいては、チャットログをすべて保存し、過去の発言のテキストを自由に取り出して、現在の会話に利用することができる。また、トラッシュ・リサイクルエリアにおいては、このエリアにオブジェクトが置かれると、オブジェクトが捨られたことになる。
【０１２８】
なお、オブジェクトＡＯ、エージェントＡＯ、およびエリアＡＯを含むすべてのＡＯは、ユニバーサルＡＯにより生成され、管理されている。
【０１２９】
図８に示すように、成長パラメータ管理テーブルの仮想生命オブジェクトに関するデータは、仮想生命データと、飼い主データに大別される。
【０１３０】
仮想生命データは、１つの共有仮想空間内において3Dオブジェクトを一意に特定するための3DオブジェクトID、共有仮想空間内での仮想生命オブジェクトの3次元座標値、飼い主によって選ばれた猿や猫などの生物の種類、その性別、飼い主によって付与されたニックネーム、飼い主によって初期設定された日時、すなわちその仮想生命オブジェクトの誕生日時、誕生した仮想空間に付与されているワールド名（本籍ワールド名）と、仮想生命オブジェクトの成長パラメータとからなる。
【０１３１】
成長パラメータは、仮想生命の外観的成長を規定するフィジカルパラメータと、性格等が反映された内面的成長を規定するためのメンタルパラメータに大別される。
【０１３２】
フィジカルパラメータは、身長(単位cm)、体重（単位Kg）、体格指数、食欲指数、健康度指数、および寿命残時間(単位時間)とからなる。
【０１３３】
メンタルパラメータは、知能指数、言語能力指数、社交性指数、自主性指数、活発性指数、および機嫌指数により構成されている。
【０１３４】
これらのパラメータは、飼い主によって最初に初期設定された誕生日時からの経過時間に伴って発生するタイマーイベントと、クライアントＰＣからのコールメッセージや操作メッセージに伴って発生するアクセスイベントや操作イベントに基づき、所定の成長パラメータ算出式によって算出された値に順次更新される。
【０１３５】
図９は、クライアントＰＣ１のCRTモニタ４５の画面上のVRMLブラウザのメインウインドウに隣接して表示されるアクションパネルの機能を示している。
【０１３６】
この図において、(Active)と表記されているAは「呼ぶボタン」であり、仮想ペットを呼んだり、寝ている仮想ペットを起こす際にクリックされる。
【０１３７】
(Sleep)と表記されているBは「寝かすボタン」であり、仮想ペットを寝かす際にクリックされる。
【０１３８】
Cは「食事ボタン」であり、仮想ペットに食事を与える際にクリックされるボタンである。
【０１３９】
Dは「ほめるボタン」であり、仮想ペットに笑いかけて褒めてあげる際にクリックされるボタンである。
【０１４０】
Eは「あそぶボタン」であり、飼い主が鬼になって逃げ回る仮想ペットを追いかけて、壁にぶつかって逃げれない仮想ペットにぶつかるまで追いつめて遊ぶ、いわゆる鬼ごっこで遊ぶ際にクリックされるボタンである。
【０１４１】
Fは「しかるボタン」であり、言う事を聞かない仮想ペットを叱り付けて、しつけを行なう際にクリックされるボタンである。
【０１４２】
Gは「きれいにするボタン」であり、仮想ペットをブラッシングしてきれいにする際にクリックされるボタンである。
【０１４３】
そして、例えば、図１０に示すように、自分のクライアントＰＣ１において、「呼ぶボタン」Aがクリックされ（アクションパネルが操作され）、そのコールメッセージが共有サーバ１２を介してＡＯサーバ１３へ送信されると（ステップＳ１）、そのアクセスイベントに基づいて成長パラメータ管理テーブルの成長パラメータ更新処理が実行される（ステップＳ３）。このアクセスイベントに基づいて、食欲指数、健康度指数、機嫌指数が、１／１０から１０／１０まで、0.1ポイントづつインクリメントされる。
【０１４４】
また、例えば、「食事ボタン」Cがクリックされ、その操作メッセージがＡＯサーバ１３へ送信され（ステップＳ２）、操作イベントが発生する毎に、成長パラメータの体重が増加し、それに伴って、体格指数が、１／１０から１０／１０まで、0.1ポイントづつインクリメントされる（ステップＳ３）。
【０１４５】
その後、時間経過に伴うタイマーイベントが発生すると、成長パラメータの体重が減少し、それに伴って、体格指数が0.1ポイントづつデクリメントされる（ステップＳ３）。
【０１４６】
例えば、この体格指数を含む成長パラメータは、更新される毎に、共有サーバ１２のマルチキャスト処理（ステップＳ５）により、元の飼い主のクライアントＰＣ１と、仮想空間を共有しているその他のクライアントＰＣ２へ転送される（ステップＳ４）。
【０１４７】
クライアントＰＣ１では、返送されてきた成長パラメータに基づいて、仮想ペットの成長に伴う自律的な挙動を制御するための処理手順が記述された成長スクリプトプログラムが実行され（ステップＳ６）、VRMLファイルの仮想ペットを表現するための3Dオブジェクトを構成する各ノードのフィールドの値が変更され（ステップＳ７）、この変更されたフィールドの値が反映された仮想ペットがレンダリングされ（ステップＳ８）、クライアントＰＣ１のCRTモニタ４５の画面上のVRMLブラウザのメインウインドウ上に表示される。
【０１４８】
このクライアントＰＣ１と同じ処理が、仮想空間を共有しているその他のクライアントＰＣ２においても実行され、これにより仮想ペットの成長に伴って変更されたフィールドの値が反映された仮想ペットがレンダリングされ、他のクライアントＰＣ２のCRTモニタ画面上のVRMLブラウザのメインウインドウ上にも表示されることになる。
【０１４９】
図１１及び図１２に、VRMLファイルの仮想ペットを表現するための3Dオブジェクトを構成する各ノードに対応したpart0乃至part5の関係（図１１）と、その表示例（図１２）を示す。part0が仮想ペットの頭部に相当し、part1が仮想ペットの胴体に相当し、part2とpart3が仮想ペットの右腕と左腕に相当し、part4とpart5が仮想ペットの右足と左足に相当する。
【０１５０】
これらの各part0乃至part5に対応する各ノードのフィールドの値を変更することで、仮想ペットの各部の外観(形状、姿勢（向き）、サイズ、色等）、及び各部の挙動シーケンスを動的に変更する事が出来る。こらは全て、成長パラメータに基づく成長スクリプトプログラムの処理で実現される。すなわち、VRML2.0で定義されたセンサー、ルーティング、スクリプトの連携動作によって実現されるBehaviorのメカニズムを利用することによって実現される。
【０１５１】
従って、従来の携帯電子ペットの仮想生物の画像表示方法のように、予め仮想生物のキヤラクタの成長過程の各段階のビットマップ画像をROMに格納しておく必要はなく、例えば、仮想ペットの成長経過に応じてその体格や挙動を連続的かつ動的に変化させる事が出来る。
【０１５２】
図１３は、仮想ペットの成長と体格指数の遷移に伴って仮想ペットの体格を動的に変更して表示する概念図を示している。加齢に伴って、顔が大人の顔となり、体格も大きくなるが、体格指数が小さいと、やせた身体となり、大きいと、大きな身体となる。
【０１５３】
図１４は、仮想ペットの機嫌指数の遷移に伴って仮想ペットの表情を動的に変更して表示する概念図を示している。機嫌指数が大きいと、笑い顔となり、小さいと、怒った顔になる。
【０１５４】
図１５は、仮想ペットの活発性指数の遷移に伴って仮想ペットの各部の挙動シーケンスを動的に変更して表示する概念図を示している。活発性指数が小さいと、足の屈伸程度の動きしかできないが、大きくなると、手を振ったり、頭を振ったりすることができる。
【０１５５】
図１６は、仮想ペットの知能指数の遷移に伴って仮想ペットへ頭髪を付加したり眼鏡を付加して表示する概念図を示している。
【０１５６】
成長パラメータの知能指数は、図９に示す「呼ぶボタン」Aの操作に伴うアクセスイベントに基づいて、0.1ポイントづつインクリメントされ、図１６に示すように仮想ペットの外観に影響を与える。
【０１５７】
言語指数は、図９に示す「呼ぶボタン」Aの操作に伴うアクセスイベントやタイマーイベントに基づく仮想ペットの年齢に応じて0.1ポイントづつインクリメントされ、仮想ペットの年齢増加に応じて、テキストベースでのチャットの文章自動生成処理を実行するに際し、そのテキストの文体に影響を与える。例えばポイントの小さい仮想ペットのチャットは、ひらがなまたはカタカナで行われ、ポイントの大きな仮想ペットのチャットは、漢字の入った文字で行われる。
【０１５８】
社交性指数は、飼い主とのチャットの頻度に応じて0.1ポイントづつインクリメント又はデクリメントされ、頻度が多ければ外向的な振る舞い、頻度が少なくなれば内向的な振る舞い、となるように仮想ペットの振る舞いに影響を与える。社交的で明るく、積極的な性格の仮想ペットは、姿勢も顔色も良くなり、逆に、内向的で暗く、消極的な性格の仮想ペットは、姿勢も顔色も悪くなる。
【０１５９】
自主性指数は、タイマーイベントに基づく仮想ペットの年齢増加に応じて、0.1ポイントづつインクリメントされ、次第に飼い主の言う事を聞かなくなるなどの仮想ペットの振る舞いに影響を与える。
【０１６０】
活発性指数は、年齢、食欲指数、健康度指数などに基づいて決定され、図１５に示すように、仮想ペットの振る舞いに影響を与える。また、図９に示す「あそぶボタン」Eの操作に伴う操作イベントの発生に基づいて、活発性指数が0.1ポイントづつインクリメントされ、次第に逃げ足が早くなるなどの仮想ペットの振る舞いに影響を与えたり、仮想ペットの体重を減らして体格指数をデクリメントして図１３に示すようにその外観に動的な変更を与える。
【０１６１】
機嫌指数は、図９に示す「呼ぶボタン」Aの操作に伴うアクセスイベントやタイマーイベントに基づくアクセス頻度などに基づいて決定され、図１４に示すように、仮想ペットの表情に影響を与える。
【０１６２】
一方、図８に示す成長パラメータ管理テーブルの飼い主データは、飼い主の氏名、飼い主への連絡手段（連絡方法）、および、その連絡先からなる。
【０１６３】
連絡手段が0の場合、飼い主への連絡は、インターネット７経由の電子メールによるメッセージ文によって行われる。連絡手段が1の場合は通常のアナログ音声の電話機１８に対して、コミュニケーションサーバ１６でメッセージ文のテキストデータを自動読み上げツールで音声に変換して通知する。連絡手段が2の場合は、PIAFS(PHSインターネットアクセスフォーラム標準)のデータ伝送方式に準拠した電子メールサービスを利用し、メッセージ文によってPHS端末２３へ通知する。連絡手段が3の場合は、ファクシミリ１９に対して文書で通知する。連絡手段が4の場合は、ポケットベル端末２４に対してメッセージ文で通知する。
【０１６４】
このような飼い主データを管理するのは、後述する既存の通信インフラストラクチャを利用した飼い主への通知機能や、既存の通信インフラストラクチャを利用した仮想ペットへの簡易的な操作機能を実現する為である。
【０１６５】
以上のシステムをまとめると、次のようになる。すなわち、共有仮想空間内に存在する仮想生命オブジェクトの、所定イベント（ユーザの操作又は時間経過に伴うイベント）の発生に応じて変化する成長パラメータ（外観的成長または内面的成長（個性））をＡＯサーバ１３で管理し、このＡＯサーバ１３から転送された成長パラメータに基づいて、クライアントＰＣ１，２で、仮想生命オブジェクトの外観（形状、姿勢、サイズまたは色）又は挙動シーケンスの内の何れか一方もしくは双方を動的に変更するスクリプト（プログラム）を解釈し、成長パラメータに応じた仮想生命オブジェクトを表示する。
【０１６６】
共有仮想空間内に存在する仮想生命オブジェクトの自律的な挙動を管理するＡＯサーバ１３に、仮想生命オブジェクトの、所定イベント（ユーザの操作又は時間経過に伴うイベント）の発生に応じて変化する成長パラメータを管理する管理テーブルを設け、クライアントからの要求または所定イベントの発生に応じて管理テーブルから読み出した成長パラメータを、要求元またはその他のクライアントの内の何れか一方もしくは双方のクライアントへ返送する。
【０１６７】
成長パラメータは、上述したように、仮想生命オブジェクトの誕生からの所定イベント（ユーザの操作又は時間経過に伴うイベント）の発生に基づいて算出される、外観的な成長度合いを示す値である。従って、例えば、よちよち歩きの赤ん坊から立派な大人を経て老人になるまでの年齢に応じた仮想生物や仮想ペット（ＡＯ）の外観上の変化が外観的成長パラメータで規定される。
【０１６８】
成長パラメータは、仮想生命オブジェクトに対する所定イベント（ユーザの操作又は時間経過に伴うイベント）の発生に起因して算出される、内面的成長度合い（性格）を示す値でもある。例えば、社交的で明るく積極的な性格の仮想生命オブジェクトは姿勢も顔色も良くなり、逆に内向的で暗く消極的な性格の仮想生命オブジェクトは姿勢も顔色も悪くなるなどの性格に応じた仮想生物や仮想ペット（ＡＯ）の変化が内面的成長パラメータで規定される。
【０１６９】
内面的成長パラメータは、仮想生命オブジェクトに対するイベントの種類に応じて異なる値が算出され、内面的成長度合いの値が更新される。ＡＯサーバ１３側で仮想ペットなどの性格を管理する場合、各クライアントから伝送されて来るメッセージの種類に応じて、例えば、チャットで話かけられる毎に成長パラメータの所定の指数が0.１ポイント加算され、「ほめるボタン」Dが押されてほめられる毎に0.２ポイント加算され、「しかるボタン」Fが押されて叱り付けられる毎に0．２ポイント減算される等の所定の加減剰余の成長計算式に基づいて算出される。
【０１７０】
共有仮想空間内における仮想生命オブジェクトの自律的な挙動を管理するＡＯサーバ１３に、各仮想生命オブジェクトの成長度合い示す成長パラメータ管理テーブルを設け、各仮想生命オブジェクトの誕生日時を保持し、この時点からの経過時間に基づいて、各仮想生命オブジェクトの年齢に応じた成長パラメータを算出し、管理テーブルを更新する。
【０１７１】
共有仮想空間内における複数の仮想生命オブジェクトの自律的な挙動を各々独立して管理するＡＯサーバ１３（単一のＡＯサーバ１３で複数の成長パラメータ管理テーブルを管理してもよく、複数のＡＯサーバ１３，１４で各々管理しても良い）を設け、それぞれの仮想生命オブジェクトの成長度合い示す成長パラメータ管理テーブルを各々別個に設けて、各仮想生命オブジェクトの成長パラメータを独立して管理することができる。
【０１７２】
その他、種々の応用例が考えられる。
【０１７３】
例えば、共有仮想空間における仮想生命オブジェクトの自律的な挙動を管理するＡＯサーバ１３に、各仮想生命オブジェクトにアクセスしたクライアントのＩＤ（ユーザが設定した仮想生命オブジェクトのニックネーム等）を管理する管理テーブル（成長管理テーブルに、そのような管理項目を追加してもよいし、独立した管理テーブルとしてもよい。以下同様）を設け、このＩＤのクライアントからのアクセスに応じて親密な感情表現を示すイベントを起動するようにしてもよい。このように、ＡＯサーバ１３側で親密度（アクセスの回数とその内容）を保持しておくことにより、飼い主がワールド（共有仮想空間）に入るとそばに近寄ってくるペット（仮想生命）オブジェクトを実現することができる。
【０１７４】
仮想生命オブジェクトをセットまたはリセットしたクライアントのＩＤを、その仮想生命オブジェクトの飼い主として、成長パラメータ管理テーブルに格納し、仮想生命オブジェクトの寿命が尽きるまで、ＩＤの更新を不可とすると共に、寿命が尽きた時点でＩＤを消去するようにしてもよい。これにより、仮想生命オブジェクトを誕生（セット）させた飼い主に忠誠を尽くす誠実型ペットを実現することができる。さらに、寿命が尽きた（リセットされた）時点で、自動的にその仮想生命オブジェクトの子供を誕生させ、その子供に同じ飼い主のＩＤを飼い主として初期設定させるようにしても良い。これにより、その仮想ペットの子孫も先祖の飼い主になつくことになる。
【０１７５】
仮想生命オブジェクトをセットまたはリセットしたクライアントの履歴を管理する履歴管理テーブルをＡＯサーバ１３に設け、クライアントからのアクセス頻度に応じて、アクセス頻度の高いクライアント程、より親密な感情表現を示す挙動シーケンスを起動させることができる。逆に、アクセス頻度が少ないと、親密度が薄れ、アクセス頻度で親密度が変化する浮気型ペットが実現される。
【０１７６】
共有仮想空間内でのクライアントの位置に対応して仮想生命オブジェクトの移動を制御すれば、共有仮想空間にクライアント（飼い主）が入ってきたとき、仮想生命オブジェクトがその目の前にすぐに現れ、飼い主についてまわる仮想生命オブジェクトを実現することができる。
【０１７７】
共有仮想空間内でのイベント（例えば、他のクライアントから食事を与えられたという体験）を、仮想生命オブジェクトからテキストベースでのチャットウィンドウを介してクライアントへ体験報告させるようにすることで、親密な感情表現を行うことができる。
【０１７８】
共有仮想空間内でのイベントを、仮想生命オブジェクトから音声チャットを介してクライアントへ体験報告することで、親密な感情表現を行うようにしてもよい。テキスト読み上げソフトによるテキスト/音声変換によりアナログ音声メッセージとして音声チャット機能を介して通知してもよく、また、予め何種類かの音声メッセージをサンプリングし、圧縮してディジタル音声圧縮データとしてHDD（ＡＯサーバ１３側またはクライアントＰＣ１側のいずれでもよい）に格納しておいて、複数の音声メッセージの中から適切な音声メッセージを選択的にHDDから読み出して、伸張した後、音声チャット機能を介してアナログ音声メッセージとして通知するようにしてもよい。このようなテキストと音声の変換については、例えば特開平７−１０５８４８号公報に開示されている技術を用いることができる。
【０１７９】
次に、既存の通信インフラストラクチャを利用した飼い主への通知機能や、既存の通信インフラストラクチャを利用した仮想ペットへの簡易的な操作機能について説明する。
【０１８０】
例えば、仮想生命オブジェクトの食欲指数が高まった場合や、寿命残時間が所定値以下になった時点で、仮想生命オブジェクト（ＡＯサーバ１３）は、成長パラメータ管理テーブルに予め設定されている連絡手段（図８）を用いて、飼い主の連絡先へ、その状態が変化した旨を、メールサーバ１５またはコミュニケーションサーバ１６を介して通知する。これにより、飼い主は、屋外へ外出中でるあるとか、パーソナルコンピュータがうまく動作しないなど、即座にパーソナルコンピュータにアクセスできない状況下であっても、自分が育てている仮想ペットの要求を確認し、コミュニケーションを図ることが可能となる。
【０１８１】
一方、この種の仮想ペットを飼育するサービスを提供することによって、利益を得るサービスプロバイダにとっては、ユーザに対して、そろそろアクセスしなければならないと言う一種の動機付けを喚起することができ、定常的なアクセスを確保することで、より健全な経営状態を維持することが可能となるといった副次的な効果も得られる。
【０１８２】
既存の通信インフラストラクチャを利用した飼い主への通知機能を実現するための具体例は以下の通りである。
【０１８３】
共有仮想空間における仮想生命オブジェクトの自律的な挙動を管理するサーバのうち、コミュニケーションサーバ１６に、各仮想生命オブジェクトの飼い主である各ユーザへのメッセージ通知手段（通知方法）の種類と、その通知先を管理するためのコミュニケーション管理テーブル（図８の成長パラメータ管理テーブルの飼い主データに対応するテーブル）を設け、仮想生命オブジェクトの状態遷移（ＡＯサーバ１３からコミュニケーションサーバ１６に通知される）に応じて、コミュニケーション管理テーブルに予め登録されている通知手段を用いて、その通知先へメッセージを送信する。これにより、共有仮想世界から、現実世界に実際に連絡が行われる。
【０１８４】
このコミュニケーション管理テーブルで、各仮想生命オブジェクトの飼い主である各ユーザを特定するためのＩＤと、そのＩＤのユーザからのアクセス履歴を管理し、各ユーザからのアクセス履歴に基づいて、一定期間以上アクセスのないユーザに対して、例えば、「近ごろ、会いに来てくれないので、さみしい....。」などのメッセージを送信することができる。
【０１８５】
さらに、各ユーザからのアクセス履歴に基づいて、複数のメッセージ文例の中から適切なメッセージ文を選択し、この選択したメッセージを送信するようにしてもよい。ユーザからのアクセスがあった翌日には、仮想生命オブジェクトからユーザに、「昨日は、遊んでくれてどうもありがとう。また遊ぼうね。」などのメッセージを送り、１週間アクセスがないと、「忙しいですか？たまには、遊びに来て下さい。」などのメッセージを送る。
【０１８６】
仮想生命オブジェクトの状態遷移を、成長パラメータ管理テーブルの更新内容に基づいて検出し、複数のメッセージ文例の中から適切なメッセージ文を選択し、この選択したメッセージを送信することができる。例えば、食事が沢山与えられた翌日には、「まだ、おなかがいっぱいだよ〜。」などのメッセージを送り、１週間アクセスがないと、「おなかが空いて死にそうだよ〜。」などのメッセージを送る。１週間で１歳年を取るシナリオとした場合は、毎週、誕生日が来て年を取る毎に、「私は今日で１０歳になりました。成長した姿をみに来て下さい。」などのメッセージを送り、寿命が残り少なくなると、「そろそろ遠い所へ旅立たなければなりません、最後を見とどけに来てください。」などのメッセージを送る。
【０１８７】
コミュニケーション管理テーブルのうち、電子メールに関する部分のテーブルをメールサーバ１５に設け、メールサーバ１５のコミュニケーション管理テーブルで、各仮想生命オブジェクトの飼い主である各ユーザの電子メールアドレス（ユーザを特定するＩＤも兼ねる）に対してテキストによるメッセージを送信することができる。
【０１８８】
インターネット７を経由する電子メール以外に、PIAFS(PHS Internet Access Forum Standard)方式や、αDATA32方式対応PHSで電子メールサービスを受けられるPHS端末２３や、ページャ（ポケットベル端末２４）などに対して、コミュニケーションサーバ１６から公衆電話回線網１７を介してメッセージを通知し、それらのLCD上にメッセージを表示させるようにしてもよい。
【０１８９】
あるいは、コミュニケーション管理テーブルで、各仮想生命オブジェクトの飼い主である各ユーザの通知先電話番号（ユーザを特定するＩＤも兼ねる）を管理し、コミュニケーションサーバ１６からこの電話番号に対して自動発信して、音声によるメッセージを送信することもできる。この場合、テキスト読み上げソフトによるテキスト/音声変換によりアナログ音声メッセージとして通常の電話機８や携帯電話機（PHS端末２３）を介して通知してもよく、また、予め何種類かの音声メッセージをサンプリングし、圧縮してディジタル音声圧縮データとしてHDDに格納しておいて、複数の音声メッセージの中から適切な音声メッセージを選択的にHDDから読み出して、伸張した後、アナログ音声メッセージとして通知するようにしてもよい。
【０１９０】
コミュニケーション管理テーブルで、各仮想生命オブジェクトの飼い主である各ユーザの通知先ファクシミリ電話番号（ユーザを特定するＩＤも兼ねる）を管理し、コミュニケーションサーバ１６からこの電話番号に対して自動発信して、ファクシミリ１９にメッセージを送信してもい。
【０１９１】
さらに、上述した仮想ペットからのメッセージの通知を受けた電話機１８等の端末を用いて、この端末から、自分の仮想ペットに対して、簡易的な操作を行なうことで、双方向のコミュニケーションを図ることが可能となる。
【０１９２】
既存の通信インフラストラクチャを利用して、仮想ペットへの簡易的な操作機能を実現するための具体例は以下の通りである。
【０１９３】
例えば、共有サーバ１２は、ユーザからPHS端末２３、電話機１８などを介してユーザを特定するＩＤを伴って（CallerＩＤ等）返送されてくる操作コマンドを解釈し、対応する仮想生命オブジェクトへのメッセージとして認識し、ＡＯサーバ１３に通知して、仮想生命オブジェクトの状態遷移（成長パラメータの更新）へ反映させることができる。
【０１９４】
この返信されてくる操作コマンドとしては、例えば、電話機１８のプッシュボタンが操作されることで発信されるDTMF(Dual-tone Multifrequency)信号を利用することができる。
【０１９５】
この他、例えばデネットフォニックコミュニケーションズ社の音声ブラウザWeb-On-Callを用いて、仮想ペットに対して各種の通知を行うようにすることもできる。この音声ブラウザによれば、通常の電話機１８から音声によってサーバにアクセスすることができる。また、この音声ブラウザは、テキスト読み上げ機能を有しているので、仮想ペットからのメールを音声で聴くことも可能である。さらに、テキストをファックスや電子メールで送ることもできる。
【０１９６】
なお、共有サーバ１２、ＡＯサーバ１３，１４、メールサーバ１５、およびコミュニケーションサーバ１６は、各種の機能を分担し、全体的なシステムとして、各クライアントＰＣに共有仮想空間を提供するサービスを実現している。
【０１９７】
次に、この共有仮想空間におけるチャットについて説明する。チャットには、パブリックチャットとパーソナルチャットがある。パブリックチャットにおいては、共有仮想空間内の所定の位置に位置する１人のクライアント（ユーザ）が発生したチャットの内容が、近傍の他のクライアント（他のユーザ）へ伝達される。
【０１９８】
これに対して、パーソナルチャットにおいては、対象とされる相手が指定される。この指定操作は、例えば、所定の仮想生命オブジェクトをキーボード４２のシフトキーを押しながらマウスのボタンをクリックすることで行われる。このように、相手が指定された場合には、そのクリック操作を行ったクライアントが発生するチャットが、その指定した仮想生命オブジェクトのユーザに対してのみ伝送される。
【０１９９】
チャットの内容は、ボイスチャットの場合、音声信号により伝送され、テキストチャットの場合、テキストにより伝送される。ボイスチャットの場合は、マイクロホン３６を介して取り込んだ音声データが、近傍または指定した仮想生命オブジェクトのクライアント（ユーザ）に伝送され、そのクライアントＰＣの有するスピーカ３７，３８から出力される。
【０２００】
これに対して、テキストチャットの場合は、キーボード４２を操作することで入力されたテキストが、やはり近傍または指定した仮想生命オブジェクトのクライアントのクライアントＰＣに伝送される。そして、そのテキストは、そのクライアントＰＣのCRTモニタ４５上に表示される。
【０２０１】
ボイスチャットとテキストチャットのいずれを行うかは、ユーザが選択することができる。
【０２０２】
次に、クライアントＰＣのCRTモニタに表示される具体的な表示例について説明する。図１７は、例えばクライアントＰＣ１から共有サーバ１２にアクセスした場合、CRTモニタ４５上に表示される３次元共有仮想空間の鳥カン的な表示例を表してる。
【０２０３】
ユーザは、自分が共有仮想空間内において飼育しようとするペットを選択するとき、表示画面中の「MultiUser」の項目をクリックする。このとき、図１８に示すように、メニューバーが表示される。ユーザは、この中から「Select Pet」を選択する。すると、図１９に示すように、「View Pet」のウインドウが表示され、このウインドウに各種のペットの画像が表示される。ユーザは、このペットの中から所望のペットを選択する。なお、このとき表示されるペットの画像は、初期状態の画像、すなわち、誕生するときの画像とされる。上述したように、このペットの画像は、成長に伴って徐々に変化していく。そして、選択が完了したとき、ユーザは、「SELECT」のボタンをマウス４１を操作してオンする。
【０２０４】
このようにして、ペットの選択が完了すると、図２０に示すように、ペットに関する情報を登録する「Registration」のウインドウが表示される。ユーザは、ここで、ペットの名称「Pet nickname」、自分自身（飼い主）の名称「Owner name」、およびアドレスと電話番号「Address/TelephoneNo.」をキーボード４２を操作して入力する。
【０２０５】
さらに、上述した連絡手段または通知手段としてのコミュニケーションツール「Communication tool」を、E-mail，Telephone，PHS-mail，Facsimile，Pocket
bellの中から、選択、指定する。
【０２０６】
図２０は、このようにして、仮想ペットとして、例えば猿が選択された場合の表示例を表している。この仮想ペット（猿）は、上述したように、各種のイベントに対応して更新される成長パラメータに基づいて成長する。図２１は、図２０に示した場合より成長した状態を表している。図２０に示す場合より図２１に示す場合の方が、身体が全体的に大きくなっており、顔もより大人の顔に変化している。
【０２０７】
このようにして、より現実に近い変化を共有仮想空間において楽しむことができる。
【０２０８】
図２３は、ユーザIDに対応するクライアントＰＣ１、クライアントＰＣ２、ＡＯサーバ１３、および共有サーバ１２の処理手順を表している。次に、図２３を参照してユーザIDに対応する処理について説明する。いまの場合、ユーザ一人は、一匹の仮想ペットを飼育するので、仮想ペットを表現する3Dオブジェクトを特定する3DオブジェクトIDは、ユーザを特定するユーザIDとなる。
【０２０９】
クライアントＡ1がクライアントＰＣ１から共有サーバ１２にアクセスすると、ステップＳ２１において、クライアントＰＣ１は、Windows95のシステム情報を管理しているレジストリの所定の領域（以下ID領域と称する）に保持している情報を、例えば、Community Place Browser/Bureauのアトリビュート機構を利用し、共有サーバ１２を介して、ＡＯサーバ１３のユニバーサルＡＯに通知する。
【０２１０】
レジストリのID領域には、HDD１３ａに格納されている成長パラメータ管理テーブルに登録されている3DオブジェクトIDに対応する情報、例えば、番号が保持されている。ただし、いまの場合、クライアントＰＣ１から共有サーバ１２に、はじめてアクセスしたものとすると、その時点では、3DオブジェクトIDは決定されておらず、このよき、クライアントＰＣ１のレジストリのID領域には、何の情報も保持されいない。つまり、いまの場合、クライアントＰＣ１のレジストリのID領域からは、”NUL”に対応する情報がユニバーサルＡＯに通知される。
【０２１１】
次に、ステップＳ２２において、ユニバーサルＡＯは、クライアントＰＣ１から、レジストリのID領域に保持されている情報を受信し、その内容を確認するが、いまの場合のように、ID領域が”NUL”であると判定すると、ステップＳ２３において、ＡＯサーバ１３は、クライアントＰＣ１に対して、他の3DオブジェクトIDと重複しない新たな3DオブジェクトIDを発行し、成長パラメータ管理テーブルに登録する。
【０２１２】
次に、ステップＳ２４において、ＡＯサーバ１３は、クライアントＰＣ１に対して発行した3DオブジェクトIDを、クライアントＰＣ１に提供する。次に、ステップＳ２５において、クライアントＰＣ１は、発行された3DオブジェクトIDを受信し、その3DオブジェクトIDを、レジストリのID領域に書き込む。このことで、次に、ステップＳ２６において、所定のメッセージに対応するイベントが、共有サーバ１２を介して、クライアントＰＣ１から、3DオブジェクトIDと共にユニバーサルＡＯに送信される。
【０２１３】
次に、ステップＳ２７において、ユニバーサルＡＯは、イベントと3DオブジェクトIDを受信し、ステップＳ２８においては、ユニバーサルＡＯは、成長パラメータ管理テーブルを参照し、3DオブジェクトIDを認証する。次に、ステップＳ２９において、ＡＯサーバ１３は、そのイベントに対応する処理を、クライアントＰＣ１に提供する。
【０２１４】
一方、クライアントＰＣ２は、すでに、3DオブジェクトIDをレジストリのID領域に保持しているので、ステップＳ４１において、所定のメッセージに対応するイベントが、共有サーバ１２を介して、クライアントＰＣ２から、3DオブジェクトIDと共にユニバーサルＡＯに送信され、次に、ステップＳ４２において、ユニバーサルＡＯは、イベントと3DオブジェクトIDを受信し、ステップＳ４３においては、ユニバーサルＡＯは、成長パラメータ管理テーブルを参照し、3DオブジェクトIDを認証する。次に、ステップＳ４４において、ＡＯサーバ１３は、そのイベントに対応する処理を、クライアントＰＣ２に提供する。
【０２１５】
図２４は、ＡＯサーバ１３が、クライアントＰＣ１とクライアントＰＣ２からのアクセスイベントに対応して提供した画像である。この例の場合、クライアントＰＣ１のクライアントＡ1に対応するアバタＡ2とクライアントＰＣ２のクライアントＢ1に対応するアバタＢ2が、それぞれ飼育する仮想ペット（犬）Ａ3，仮想ペット（犬）Ｂ3を伴っている画像が、クライアントＰＣ１（または、クライアントＰＣ２）のCRTモニタ４５に表示される。
【０２１６】
図２５は、クライアントＰＣ１とクライアントＰＣ２からの名刺交換イベントに対応すて提供された画像である。この例の場合、仮想ペットＢ3を伴っているアバタＢ2（図２５に表示されていない）の視点から、アバタＢ2が、仮想ペットＡ3を伴っているアバタＡ2と対面している。また、この例の場合、図２５のメインウインドウＭＷの右側に隣接して表示されるチャットログ欄ＣＬに示すように、クライアントＢ1が、アバタＢ2を介して、アバタＡ2からクライアントＡ1の名刺情報を入手している。なお、アバタＡ2の名前はnaito、アバタＢ2の名前はuenoである。
【０２１７】
いまの場合、ユーザ一人が一匹の仮想ペット飼育するようにしたので、3DオブジェクトIDは、ユーザを特定するIDも兼ねているが、ユーザが複数の仮想ペットを飼育することができる場合、ユーザIDを別途設定し、そのユーザIDをクライアントＰＣのレジストリのID領域に保持し、例えば、ＡＯサーバ１３に、ユーザIDと複数の3DオブジェクトIDの対応を管理するテーブルを設ける。
【０２１８】
なお、以上の各種の処理を実行するプログラムは、磁気デイスク、CD-ROMデイスク、その他の提供媒体に記録して提供したり、インターネット、その他のネットワークを介して提供することで提供することができる。
【０２１９】
【発明の効果】
本発明によれば、例えば、ユーザは、ユーザを特定する情報を端末に入力することなく、サーバから所定のサービスを受けることができるようになる。
【図面の簡単な説明】
【図１】センサー、イベント、ルーティング、およびスクリプトの関係を説明する図である。
【図２】ルーティングを説明する図である。
【図３】本発明を適用した共有仮想空間提供システムの構成例を示すブロック図である。
【図４】図１のクライアントＰＣ１の構成例を示すブロック図である。
【図５】図３のシステムの動作を説明するディスプレイの写真である。
【図６】図３のシステムの動作を説明するディスプレイの写真である。
【図７】図３のシステムの動作を説明するディスプレイの写真である。
【図８】成長パラメータ管理テーブルの例を示す図である。
【図９】アクションパネルを説明するディスプレイの写真である。
【図１０】成長パラメータの授受を説明する図である。
【図１１】３Ｄオブジェクトを構成する仮想生命オブジェクトのノードを説明する図である。
【図１２】図１１に示したノードに対応する表示例を示すディスプレイの写真である。
【図１３】仮想生命オブジェクトの体格指数を説明する図である。
【図１４】仮想生命オブジェクトの機嫌指数を説明する図である。
【図１５】仮想生命オブジェクトの活発性指数を説明する図である。
【図１６】仮想生命オブジェクトの知能指数を説明する図である。
【図１７】共有仮想空間のディスプレイの表示例を示す写真である。
【図１８】共有仮想空間のディスプレイの表示例を示す写真である。
【図１９】共有仮想空間のディスプレイの表示例を示す写真である。
【図２０】共有仮想空間のディスプレイの表示例を示す写真である。
【図２１】共有仮想空間のディスプレイの表示例を示す写真である。
【図２２】共有仮想空間のディスプレイの表示例を示す写真である。
【図２３】  3DオブジェクトIDが決定され、クライアントＰＣがその3DオブジェクトIDを取得する場合の処置手順を説明する図である。
【図２４】共有仮想空間のディスプレイの表示例を示す写真である。
【図２５】共有仮想空間のディスプレイの表示例を示す写真である。
【符号の説明】
１乃至３  クライアントＰＣ，  ７  インターネット，  １０  WWWサーバ，１２  共有サーバ，  １３，１４  ＡＯサーバ，  １５  メールサーバ，  １６  コミュニケーションサーバ，  １８  電話機，  １９  ファクシミリ，  ２３  PHS端末，  ２４  ポケットベル端末，  ３０  CPU，  ３１  ハードディスク，  ３９  モデム，  ４５  CRTモニタ，  ４６  RAM
【図１】
0003855430.tif 000002
【図２】
0003855430.tif 000003
【図３】
0003855430.tif 000004
【図４】
0003855430.tif 000005
【図５】
0003855430.tif 000006
【図６】
0003855430.tif 000007
【図７】
0003855430.tif 000008
【図８】
0003855430.tif 000009
【図９】
0003855430.tif 000010
【図１０】
0003855430.tif 000011
【図１１】
0003855430.tif 000012
【図１２】
0003855430.tif 000013
【図１３】
0003855430.tif 000014
【図１４】
0003855430.tif 000015
【図１５】
0003855430.tif 000016
【図１６】
0003855430.tif 000017
【図１７】
0003855430.tif 000018
【図１８】
0003855430.tif 000019
【図１９】
0003855430.tif 000020
【図２０】
0003855430.tif 000021
【図２１】
0003855430.tif 000022
【図２２】
0003855430.tif 000023
【図２３】
0003855430.tif 000024
【図２４】
0003855430.tif 000025
【図２５】
0003855430.tif 000026