首页 / 专利库 / 电脑图像 / 化身 / Client device, image display control method, device and method for common virtual space provision, and transmission medium

Client device, image display control method, device and method for common virtual space provision, and transmission medium

阅读:534发布:2022-01-02

专利汇可以提供Client device, image display control method, device and method for common virtual space provision, and transmission medium专利检索,专利查询,专利分析的服务。并且PROBLEM TO BE SOLVED: To enable each user to easily and securely recognize the experience of a virtual living object as the avatar of a client present in a common virtual space in the common virtual space by modifying the virtual living object corresponding experience parameters changing according to the generation of a specific event. SOLUTION: When the points of fishing reach a specific value, the avatar is changed into a modified avatar modified wearing a bow. When the points further increase, the avatar is modified with a medal instead of the bow. If the points furthermore increase, the avatar is modified with a crown instead of the medal. For those avatars before and after the modifications, the identify is secured and each user can recognize that the unmodified avatar and the modified avatar are identical.,下面是Client device, image display control method, device and method for common virtual space provision, and transmission medium专利的具体信息内容。

【特許請求の範囲】
  • 【請求項1】 他のクライアント装置とともにサーバから共有仮想空間の情報の提供を受けるクライアント装置において、 前記共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトの、所定のイベントの発生に応じて変化する経験パラメータを管理する経験パラメータテーブルを記憶する記憶手段と、 自己の分身としての前記仮想生命オブジェクトの前記経験パラメータを前記サーバを介して他のクライアント装置に転送する転送手段と、 他のクライアント装置からサーバを介して転送されてきた前記経験パラメータに基づいて、前記仮想生命オブジェクトを修飾するスクリプトを解釈する解釈手段と、 前記解釈手段の解釈に基づいて、前記経験パラメータに応じた仮想生命オブジェクトを表示させるように制御する制御手段とを備えることを特徴とするクライアント装置。
  • 【請求項2】 前記経験パラメータは、前記仮想生命オブジェクトが前記共有仮想空間において取得した得点に基づいて算出される取得パラメータを含むことを特徴とする請求項1に記載のクライアント装置。
  • 【請求項3】 前記仮想生命オブジェクトは、前記取得パラメータに対応して、新たな修飾品を付加して表示されることを特徴とする請求項2に記載のクライアント装置。
  • 【請求項4】 前記転送手段は、前記経験パラメータテーブルの取得パラメータが更新されたとき、そのとき更新された取得パラメータを転送することを特徴とする請求項2に記載のクライアント装置。
  • 【請求項5】 前記経験パラメータは、前記仮想生命オブジェクトの前記共有仮想空間における滞在時間の累積値に基づいて算出される成長パラメータをさらに含み、
    前記仮想生命オブジェクトは、前記成長パラメータに応じて修正されることを特徴とする請求項2に記載のクライアント装置。
  • 【請求項6】 前記転送手段は、前記仮想生命オブジェクトが前記共有仮想空間に滞在を開始するとき、その滞在開始の直前までの滞在時間の累積値に基づいて算出された成長パラメータを転送することを特徴とする請求項5に記載のクライアント装置。
  • 【請求項7】 前記経験パラメータに応じて、前記仮想生命オブジェクトのボイスチャットの音声、またはテキストチャットの字体が変更されることを特徴とする請求項1に記載のクライアント装置。
  • 【請求項8】 他のクライアント装置とともにサーバから共有仮想空間の情報の提供を受けるクライアント装置の画像表示制御方法において、 前記共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトの、所定のイベントの発生に応じて変化する経験パラメータを管理する経験パラメータテーブルを記憶する記憶ステップと、 自己の分身としての前記仮想生命オブジェクトの前記経験パラメータを前記サーバを介して他のクライアント装置に転送する転送ステップと、 他のクライアント装置からサーバを介して転送されてきた前記経験パラメータに基づいて、前記仮想生命オブジェクトを修飾するスクリプトを解釈する解釈ステップと、 前記解釈ステップでの解釈に基づいて、前記経験パラメータに応じた仮想生命オブジェクトを表示させるように制御する制御ステップとを備えることを特徴とする画像表示制御方法。
  • 【請求項9】 他のクライアント装置とともにサーバから共有仮想空間の情報の提供を受けるクライアント装置に用いるコンピュータプログラムであって、 前記共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトの、所定のイベントの発生に応じて変化する経験パラメータを管理する経験パラメータテーブルを記憶する記憶ステップと、 自己の分身としての前記仮想生命オブジェクトの前記経験パラメータを前記サーバを介して他のクライアント装置に転送する転送ステップと、 他のクライアント装置からサーバを介して転送されてきた前記経験パラメータに基づいて、前記仮想生命オブジェクトを修飾するスクリプトを解釈する解釈ステップと、 前記解釈ステップでの解釈に基づいて、前記経験パラメータに応じた仮想生命オブジェクトを表示させるように制御する制御ステップとを備えるコンピュータプログラムを伝送することを特徴とする伝送媒体。
  • 【請求項10】 複数のクライアント装置に共有仮想空間の情報を提供する共有仮想空間提供装置において、 第1のクライアント装置が、前記共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトが前記共有仮想空間において得点を取得したとき送信した、その得点の累積値に対応する経験パラメータを受信する受信手段と、 前記受信手段が受信した前記経験パラメータを、第2のクライアント装置に転送する転送手段とを備えることを特徴とする共有仮想空間提供装置。
  • 【請求項11】 複数のクライアント装置に共有仮想空間の情報を提供する共有仮想空間提供装置の共有仮想空間提供方法において、 第1のクライアント装置が、前記共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトが前記共有仮想空間において得点を取得したとき送信した、その得点の累積値に対応する経験パラメータを受信する受信ステップと、前記受信ステップで受信した前記経験パラメータを、第2のクライアント装置に転送する転送ステップとを備えることを特徴とする共有仮想空間提供方法。
  • 【請求項12】 複数のクライアント装置に共有仮想空間の情報を提供する共有仮想空間提供装置に用いるコンピュータプログラムであって、 第1のクライアント装置が、前記共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトが前記共有仮想空間において得点を取得したとき送信した、その得点の累積値に対応する経験パラメータを受信する受信ステップと、 前記受信ステップで受信した前記経験パラメータを、第2のクライアント装置に転送する転送ステップとを備えるコンピュータプログラムを伝送することを特徴とする伝送媒体。
  • 说明书全文

    【発明の詳細な説明】

    【0001】

    【発明の属する技術分野】本発明は、クライアント装置、画像表示制御方法、共有仮想空間提供装置および方法、並びに伝送媒体に関し、特に、各ユーザが、共有仮想空間における分身としてのアバタの共有仮想空間における経験を認識できるようにした、クライアント装置、
    画像表示制御方法、共有仮想空間提供装置および方法、
    並びに伝送媒体に関するものである。

    【0002】

    【従来の技術】従来、NIFTY-Serve(商標)や米国のCom
    puServe(商標)などのように、複数の利用者が自らのパーソナルコンピュータを、モデムおよび公衆電話回線網を介してセンターのホストコンピュータに接続し、所定の通信プロトコルに基づいてホストコンピュータにアクセスする、いわゆるパソコン通信サービスの分野においては、Habitat(商標)と呼ばれるサイバースペースのサービスが知られている。

    【0003】Habitatは、米国LucasFilm社によって1985
    年から開発が始められ、米国商業ネットワークであるQu
    antumLink社で約3年間運用された後、1990年2月に富士通Habitat(商標)としてNIFTY-Serveでそのサービスが開始されたものである。 このHabitatにおいては、2次元グラフィックスで描画された「ポピュロポリス(Populo
    polis)」と呼ばれる仮想の都市に、アバタ(avatar;
    インド神話に登場する神の化身)と呼ばれるユーザの分身を送り込み、ユーザ同士がチャット(Chat;文字の入と表示によるテキストベースでのリアルタイムの対話)などを行うことができる。 このHabitatの更に詳細な説明については、サイバースペース,マイケル・ベネディクト編,1994年3月20日初版発行,NTT出版 ISBN
    4−87188−265−9C0010(原著;Cyberspace:First Ste
    ps ,Michael Benedikt,ed. 1991,MIT PressCambrige,MA
    ISBN0−262−02327−X)第282頁乃至第307頁を参照されたい。

    【0004】この種のパソコン通信サービスで運用されている従来のサイバースペースシステムにおいては、仮想的な街並みや部屋の内部の様子が2次元グラフィックスで描画されており、アバタを奥行きまたは手前方向へ移動させる場合、単にアバタを2次元グラフィックスの背景上で上下に移動させるだけであり、仮想空間内での歩行や移動を疑似体験させるには表示の上での表現力が乏しかった。 また、自分の分身であるアバタと他人のアバタが表示された仮想空間を、第3者の視点で見ることになるため、この点においても、疑似体験の感覚が損なわれるものであった。

    【0005】そこで、特開平9-81781号公報に開示されているように、仮想空間を3次元グラフィックスで表示し、ユーザがアバタの視点で自由に歩き回れる機能が、
    VRML(Virtual Reality Modeling Language)と呼ばれる3
    次元グラフィクス・データの記述言語を利用することによって実現されている。 また、ユーザの代理となるアバタを用いてチャットを行う種々のサイバースペースの考察に関しては、日経エレクトロニクス1996.9.9(no.670)
    の第151頁乃至159頁に記載されている。

    【0006】ところで、本出願人は、特願平9-171196号として、サイバースペース内におけるアバタの滞在時間に対応して、アバタの外形を変化させることを提案した。 これにより、各ユーザは、そのアバタのサイバースペース内における滞在時間を、その外形から類推することができる。

    【0007】

    【発明が解決しようとする課題】しかしながら、アバタの外形の変化はわずかであり、各ユーザが、他のユーザのアバタの外見を見て、そのアバタのサイバースペースにおける経験を類推することは困難である。 従って、各ユーザは、他のユーザのアバタを見て、そのアバタに対応するユーザが、どのような趣味をもっているのか判断することができなかった。

    【0008】その結果、各ユーザは、サイバースペース内において、自分と同一の体験をした他のユーザとチャットを行いたいと考えたとしても、どのアバタのユーザが同一の体験をしているのかが不明であり、同一の趣味を有する仲間を探すことが困難である課題があった。

    【0009】本発明はこのような状況に鑑みてなされたものであり、簡単かつ確実に、他のユーザのアバタのサイバースペース内における経験を類推することができるようにするものである。

    【0010】

    【課題を解決するための手段】請求項1に記載のクライアント装置は、共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトの、所定のイベントの発生に応じて変化する経験パラメータを管理する経験パラメータテーブルを記憶する記憶手段と、自己の分身としての仮想生命オブジェクトの経験パラメータをサーバを介して他のクライアント装置に転送する転送手段と、他のクライアント装置からサーバを介して転送されてきた経験パラメータに基づいて、仮想生命オブジェクトを修飾するスクリプトを解釈する解釈手段と、解釈手段の解釈に基づいて、経験パラメータに応じた仮想生命オブジェクトを表示させるように制御する制御手段とを備えることを特徴とする。

    【0011】請求項8に記載の画像表示制御方法は、共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトの、所定のイベントの発生に応じて変化する経験パラメータを管理する経験パラメータテーブルを記憶する記憶ステップと、自己の分身としての仮想生命オブジェクトの経験パラメータをサーバを介して他のクライアント装置に転送する転送ステップと、他のクライアント装置からサーバを介して転送されてきた経験パラメータに基づいて、仮想生命オブジェクトを修飾するスクリプトを解釈する解釈ステップと、解釈ステップでの解釈に基づいて、経験パラメータに応じた仮想生命オブジェクトを表示させるように制御する制御ステップとを備えることを特徴とする。

    【0012】請求項9に記載の伝送媒体は、共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトの、所定のイベントの発生に応じて変化する経験パラメータを管理する経験パラメータテーブルを記憶する記憶ステップと、自己の分身としての仮想生命オブジェクトの経験パラメータをサーバを介して他のクライアント装置に転送する転送ステップと、他のクライアント装置からサーバを介して転送されてきた経験パラメータに基づいて、仮想生命オブジェクトを修飾するスクリプトを解釈する解釈ステップと、解釈ステップでの解釈に基づいて、経験パラメータに応じた仮想生命オブジェクトを表示させるように制御する制御ステップとを備えるコンピュータプログラムを伝送することを特徴とする。

    【0013】請求項10に記載の共有仮想空間提供装置は、第1のクライアント装置が、共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトが共有仮想空間において得点を取得したとき送信した、その得点の累積値に対応する経験パラメータを受信する受信手段と、受信手段が受信した経験パラメータを、第2のクライアント装置に転送する転送手段とを備えることを特徴とする。

    【0014】請求項11に記載の共有仮想空間提供方法は、第1のクライアント装置が、共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトが共有仮想空間において得点を取得したとき送信した、その得点の累積値に対応する経験パラメータを受信する受信ステップと、受信ステップで受信した経験パラメータを、
    第2のクライアント装置に転送する転送ステップとを備えることを特徴とする。

    【0015】請求項12に記載の伝送媒体は、第1のクライアント装置が、共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトが共有仮想空間において得点を取得したとき送信した、その得点の累積値に対応する経験パラメータを受信する受信ステップと、受信ステップで受信した経験パラメータを、第2のクライアント装置に転送する転送ステップとを備えるコンピュータプログラムを伝送することを特徴とする。

    【0016】請求項1に記載のクライアント装置、請求項8に記載の画像表示制御方法、および請求項9に記載の伝送媒体においては、他のクライアント装置からサーバを介して転送されてきた経験パラメータに基づいて、
    仮想生命オブジェクトを修飾するスクリプトが解釈される。 そして、解釈結果に基づいて、経験パラメータに応じて仮想生命オブジェクトが修飾されるように表示される。

    【0017】請求項10に記載の共有仮想空間提供装置、請求項11に記載の共有仮想空間提供方法、および請求項12に記載の伝送媒体においては、共有仮想空間において取得した得点の累積値に対応する経験パラメータが第1のクライアント装置から送信されてきたとき、
    これが受信され、第2のクライアント装置に転送される。

    【0018】

    【発明の実施の形態】以下に本発明の実施の形態を説明するが、特許請求の範囲に記載の発明の各手段と以下の実施の形態との対応関係を明らかにするために、各手段の後の括弧内に、対応する実施の形態(但し一例)を付加して本発明の特徴を記述すると、次のようになる。 但し勿論この記載は、各手段を記載したものに限定することを意味するものではない。

    【0019】請求項1に記載のクライアント装置は、共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトの、所定のイベントの発生に応じて変化する経験パラメータを管理する経験パラメータテーブルを記憶する記憶手段(例えば、図4のHDD31)と、自己の分身としての仮想生命オブジェクトの経験パラメータをサーバを介して他のクライアント装置に転送する転送手段(例えば、図4のモデム39)と、他のクライアント装置からサーバを介して転送されてきた経験パラメータに基づいて、仮想生命オブジェクトを修飾するスクリプトを解釈する解釈手段(例えば、図4のJavaによる経験スクリプトプログラム)と、解釈手段の解釈に基づいて、経験パラメータに応じた仮想生命オブジェクトを表示させるように制御する制御手段(例えば、図4のグラフィックス処理回路43)とを備えることを特徴とする。

    【0020】請求項10に記載の共有仮想空間提供装置は、第1のクライアント装置が、共有仮想空間内に存在するユーザの分身としての仮想生命オブジェクトが共有仮想空間において得点を取得したとき送信した、その得点の累積値に対応する経験パラメータを受信する受信手段(例えば、図10のステップS11)と、受信手段が受信した経験パラメータを、第2のクライアント装置に転送する転送手段(例えば、図10のステップS12)
    とを備えることを特徴とする。

    【0021】以下、図面を参照し、本発明の実施の形態について説明する。

    【0022】説明に先立ち、世界的規模で構築されたコンピュータネットワークであるインターネット(The Int
    ernet)において、様々な情報を提供するWWW(world wide
    web)の枠組みを利用して3次元的な情報を統一的に扱うことができる記述言語であるVRML(virtual reality m
    odeling language)について説明する。

    【0023】ここで、インターネットで利用できる情報提供システムとして、スイスのCERN(European Center
    for Nuclear Research:欧州核物理学研究所)が開発したWWWが知られている。 これは、テキスト、画像、音声などの情報をハイパーテキスト形式で閲覧できるようにしたもので、HTTP(Hyper Text Transfer Protocol)と呼ばれるプロトコルに基づいて、WWWサーバに格納された情報をパーソナルコンピュータなどの端末に非同期転送するものである。

    【0024】WWWサーバは、HTTPデーモン(HTTP:Hyper
    Text Transfer Protocol、ハイパーテキスト転送プロトコル)と呼ばれるサーバ・ソフトウエアとハイパーテキスト情報が格納されるHTMLファイルによって構成される。 なお、デーモンとは、UNIX上で作業を行う場合、バックグラウンドで管理や処理を実行するプログラムを意味する。 ハイパーテキスト情報は、HTML(HyperText Ma
    rkup Language、ハイパーテキスト記述言語)と呼ばれる記述言語によって表現される。 HTMLによるハイパーテキストの記述は、「<」と「>」で囲まれたタグと呼ばれる書式指定によって文章の論理的な構造が表現される。 他の情報とのリンクについての記述は、アンカーと呼ばれるリンク情報によって行われる。 アンカーによって情報が存在する所を指定する際には、URL(Uniform Re
    source Locator)が用いられる。

    【0025】HTMLで記述されたファイルを、TCP/IP(Tra
    nsmission Control Protocol/Internet Protocol)ネットワーク上において転送するためのプロトコルがHTTPである。 クライアントからの情報の要求をWWWサーバに伝え、HTMLファイルのハイパーテキスト情報をクライアントに転送する機能をもっている。

    【0026】WWWを利用する環境として多く利用されているのが、WWWブラウザ(ブラウザとは閲覧するという意味)と呼ばれる、Netscape Navigator(米国Netscape
    Communications社の商標)をはじめとするクライアント・ソフトウエアである。

    【0027】このWWWブラウザを用いて、URLに対応する世界規模で広がるインターネット上のWWWサーバ上のファイル、いわゆるホームページを閲覧することができ、
    いわゆるネットサーフィンと呼ばれるように、リンクが張られたホームページを次々と辿って、多種多様なWWW
    の情報ソースにアクセスすることができる。

    【0028】近年、このWWWをさらに拡張し、3次元空間の記述や、3次元グラフィックスで描画されたオブジェクトに対してハイパーテキストのリンクの設定を可能とし、これらのリンクをたどりながらWWWサーバを次々とアクセスできるようにしたVRMLと呼ばれる3次元グラフィックス記述言語で記述された3次元空間を表示するVR
    MLブラウザが開発されている。

    【0029】このVRMLの詳細は、例えば、「VRMLを知る:3次元電脳空間の構築とブラウジング〔マーク・ペッシ著,松田晃一・蒲地輝尚・竹内彰一・本田康晃・暦本純一・石川真之・宮下健・原和弘訳,1996年3月25日初版発行,プレンティスホール出版ISBN4-931356
    -37-0〕(原著;VRML:Browsing & Building Cyberspac
    e,Mark Pesce, 1995 New Readers Publishing ISBN 1-5
    6205-498-8))」、および「VRMLの最新動向とCybe
    rPassage〔松田晃一・本田康晃著、bit(共立出版)/1996 Vol.28 No.7 pp29 乃至pp36, No.8 pp5
    7 乃至pp65, No.9pp29 乃至pp36, No.10 pp49乃至pp5
    8〕」等の文献に記載されている。

    【0030】また、 August 4, 1996における The Virt
    ual Reality Modeling Language Version 2.0, ISO/IE
    C CD 14772の公式かつ完全な仕様書は、http://webspac
    e.sgi.com/moving-worlds/spec/index.htmlで公開されており、その日本語版は、http://www.webcity.co.jp/i
    nfo/andoh/VRML/vrml2.0/spec-jp/index.htmlで公開されている。

    【0031】さらに、VRML2.0用ブラウザおよび共有サーバ用ソフトウェアとしては、例えば、本出願人であるソニー株式会社が「Community Place Browser / Bure
    au(商標)」として開発し、製品化しており、そのβ版(試供版)を、インターネット上のホームページhttp:/
    /vs.sony co.jpからダウンロード可能としている。

    【0032】このようなVRML2.0を用いて3次元的な仮想空間を構築しようとする場合、まず、VRMLにより仮想空間内の物体(モデル)の形、動きおよび位置等を示す図形データの作成(モデル作成)、ユーザが画面表示された仮想空間内のモデルを、例えば、マウスでクリックしてポインティングした場合にイベントを発生させるスイッチ(センサ)のモデルへの付加(センサ付加)、
    センサへのポインティングに応じて発生するイベントを実現するスクリプトのプログラミング(スクリプト作成)、センサーに対する操作とスクリプトの起動等、図形データおよびスクリプト(以下、図形データ、スクリプトおよびVRMLに規定されているライト等のコモンノード等を総称してノードとも記す)の間の対応付け(ルーティング)などによって所望のコンテンツを表現するVR
    MLファイルを作成する。

    【0033】例えば、http://www.ses.co.jp/SES/STAFF
    /kan/howto/howto1.htmlには、VRML2.0の書き方、サンプルデータなど、丁寧に解説されている。 その一部を紹介すると、以下の通りである。

    【0034】1.VRML2.0で書かれたワールドを見るには HTML形式で書かれたデータを見るためにHTMLブラウザが必要なように、VRML2.0形式で書かれたデータを見るためにはVRML2.0に対応したVRMLブラウザが必要となる。
    尚、このページで作成したVRML2.0のデータは全てSONY
    社製のCommunity Place Browserで行なわれている。 また、ファイルがVRMLで書かれたことを表すためにファイルの拡張子を*.wrl(ワールドの意)に、更にVRML2.0で書かれたことを表すためにファイルの1行目に #VRML V2.0 utf8 と書くことが必要である。

    【0035】2.VRML2.0データの基本構造 VRML2.0のデータはノード(Node)とフィールド(Field)で構成されていて、基本的に次のような形で書かれている。 Node { Field(s) } この中でFieldsは省略することができるが、Nodeと中かっこ'{','}'は省略することができない。 フィールドはノードに変数を渡し、ノードのパラメータを指定します。 フィールドを省略した場合、デフォルト値が用いられる。 また、フィールドには単一の値しか持たない「単一値フィールド(SF)」と複数の値を持つ「複値フィールド(MF)」があり、単一値フィールドの名前は"SF"で、複値フィールドは"MF"で始まるようになっている。

    【0036】3.球の書き方 VRML2.0では球や直方体、円柱、円錐などの基本図形を描くためのノードが用意されている。 前にも書いているが、それぞれのノードはパラメータを指定するためのフィールドを持っている。 例えば、球を描くためのSphere
    ノードは半径を指定するためのradiusというフィールドを持っており、次のように書くことで半径1の球を表示する。 尚、radiusフィールドのデータタイプは、SFFloa
    tですから、1つの浮動小数点数の値をとる。

    【0037】Sample1 1: #VRML V2.0 utf8 2: Transform { 3: children [ 4: Shape { 5: geometry Sphere { radius 1 } 6: } 7: ] 8: }

    【0038】実は2,3行目、7,8行目は書かなくてもかまいません。 1行目と4行目乃至6行目だけで、きちんと半径1の球を表示できる。 Transformノードは、Groupノードという種類のノードの1つで、文字通りノードのグループ化を行うためのノードである。 Transformノードを含めて、以後でてくる他のノードの詳しい機能やフィールドなどは「Appendix1:VRML2.0Node List」を参照されたい。 球を書くためのノードはSphereであるが、このノードはGeometryノードを呼ばれるノードの1つである。 Geometryノードは、見え方と形状を定義するShape
    ノードのgeometryフィールドに書く必要がある。

    【0039】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: }

    【0040】この球は赤色で表示される。 追加されたのは5行目乃至7行目までである。 diffuseColorフィールドのデータタイプは、SFColorであるから、RGBカラーを表す3つの単精度浮動小数点数の組を1つだけ持つ。 見え方を定義するMaterialノードはAppearanceノードのmate
    rialフィールドに書くことになっています。 また、Appe
    aranceノードはShapeノードのappearanceフィールドに書くことになっている。 このためこのような一見複雑な構造になっている。

    【0041】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: }

    【0042】テクスチャを張り付けているのは6行目である。 ImageTexureノードはAppearanceノードのtexture
    フィールドに書くことになっているため、このような書き方になる。 尚、8行目のBoxノードは直方体を描くためのノードである。

    【0043】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: }

    【0044】3行目に追加したtranslationフィールドで物体を平行移動させる。 translationフィールドは、 translation xyz で、それぞれx軸、y軸、z軸の移動量を指定する。 ブラウザ上ではx軸は左右(右方向に+)、y軸は上下(上方向に+)、z軸は奥行き(手前に向かって+)を表す。 従って、 translation 2 0 0 は右方向に2だけ平行移動することになる。

    【0045】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: }

    【0046】13行目以降に追加したソースは12行目以前のものと構造は同じである。 物体が球から円錐へ、色が赤から緑へ、そして位置が左に移動している点が12行目以前のものと異なる。

    【0047】8.ポリゴンで書く 上述した「VRML2.0の書き方」ではプリミティブな図形を使ったが、複雑な図形を書くときにはポリゴンを使用する。 ポリゴンで表示するためにIndexedLineSet,Inde
    xedFaceSetの2つのノードが用意されている。 IndexedLi
    neSetは線を、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: }

    【0048】このサンプルは6つの面で立方体を表している。 ポリゴンで表すためにはまず、頂点となる座標を決める(7行目乃至16行目)。 この座標は上から0,1,2,
    と番号が振られる。 即ち、10行目の「1 0 1」は「2」番の座標ということになる。 次に何番の座標と何番の座標で面を構成するのかを決める(18行目乃至25行目)。 19
    行目の「0, 1, 2, 3, -1」は「0番、1番、2番、3番の座標で面を作る」ことを表している。

    【0049】9.ノードに名前を付ける 既に定義されているノードを再利用するためにDEFとUSE
    という機能がある。 例えば、半径2の青の球を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: }

    【0050】12行目以降は13行目の座標移動の部分を除いて11行目以前と全く同じである。 1度定義されている「半径2で青い球」を再び同じように記述するのははっきり言って無駄である。 そこで次のようにする。

    【0051】 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{……}と同じ内容を表す。

    【0052】10.WRLファイルの読み込み 大きなVRMLデータをつくるときに1つのファイルにすべての記述を行うのはあまりいい方法ではない。 部品ごとに分けて必要に応じて呼び出せるようにしておく方が便利である。 このような場合、Inlineノードを使う。 例えば1.でつくったSample1.wrlを読み込んで表示する。 Sample8 1: #VRML V2.0 utf8 2: Inline { 3: url [ 4: sample1.wrl 5: ] 6: }

    【0053】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: }

    【0054】リンクを張るオブジェクトを子ノードにしてAnchorノードで括る。 AnchorノードはGroupノードの1つである。 リンク先のファイルをurlフィールドに書く。 descriptionフィールドに書いた文字列はマウスポインタがオブジェクトに触れている間表示される。

    【0055】12.ライトの設定 VRML2.0ではワールドに光を設定するためにDirectional
    Light(平行光)、PointLigt(点光源)、SpotLight
    (スポットライト)3つのノードが用意されている。 ここでは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: }

    【0056】6行目の光源の位置によってオブジェクトの見え方が異なる。 このサンプルではオブジェクトの前に光源を置いている。

    【0057】13.ワールド環境(1) これまでは主にオブジェクトの作成に関しての解説であったが、今回はオブジェクト作成以外のノードの使い方について触れる。 ワールド環境などと勝手に命名しているが、こういう言い方が一般的かどうかは分からない。
    まず、ブラウザでデフォルトで用意されている HeadLig
    ht を消してみる。 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: }

    【0058】このサンプルでブラウザの Option を見ると、Headlight のチェックがはずれている。 このサンプルでは今までのサンプルに比べて極端に暗くなっているのが分かる。 HeadLight は常にユーザの見ている方向に照らされるライトで、これがないとこのように見える。
    新たに加えたのは 2 行目から 4 行目の NavigationInf
    o ノードである。 このノードの headlight フィールドをTRUE か FALSE にすることで HeadLight を ON・OFF
    する。 HeadLight を消して任意のライトを設定することで効果的に明るさを設定できる。

    【0059】14.ワールド環境(2) NavigationInfo ノードには他にも幾つかのフィールドが用意されている。 その中の type フィールドでナビゲーション方法を変更することができる。 デフォルトでは
    WALK に設定されている ナビゲーション方法であるが、他にも重力を無視して移動できる FLY、自分が動くことなくオブジェクトを動かす EXAMINE、何もコントロールできない NONE、がある。 ちなみに WALKは重力の影響を受けながら移動するナビゲーション方法である。

    【0060】 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 にしている。 オブジェクトをマウスでドラッグするとオブジェクトが回転する。

    【0061】15.シーンにタイトルを付ける HTML では <title> タグで囲むことによってタイトルを付けることができる。 もしこのタグを指定しないとタイトルが [http://ryo1.is.kochi-u…howto3.html] のようにパスが表示される。 VRML でもこれと同じことが起こる。 これまでのサンプルではタイトルを指定していないためパスが表示されている。 VRMLでタイトルを指定するには WorldInfo ノードを使用する。

    【0062】 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: }

    【0063】2 行目乃至 5 行目までに WorldInfo ノードを追加した。 このサンプルでは前のサンプルに "Spin
    Box" というタイトルを付けた(Plugin 版では表示されなかった)。尚、info フィールドにはタイトル以外の情報を書くが、ブラウザ上には何の変化も与えない。

    【0064】16.視点の位置を変える デフォルトでは視点は最初 z 軸上のどこか(オブジェクトの配置によって異なる)にいる。 ここでは最初の視点位置を任意の場所に変更できるようにする。

    【0065】 Sample14 1: #VRML V2.0 utf8 2: Viewpoint{ position xyz } 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: }

    【0066】(0, 0, 0)に赤、(-3, 0 , 0)に緑、(3, 0, 0)に青の球がある。 2 行目の Viewpoin
    t ノードの position フィールドに具体的な座標を指定すると、そこが最初の視点になる。 ただし視線方向は常に z 軸の方向である。

    【0067】17.視線の方向を変える sample14 では視点の座標のみを変更したが、もちろん視線方向も指定できる。 方向を指定するときも Viewpoi
    nt ノードを使うが、 フィールドは orientation フィールドを使う。 orientation フィールドは SFRotation
    型のフィールドで、加点軸と回転を値として持つ。

    【0068】18.センサをつける VRML2.0 のノードの中には Sensor ノードと呼ばれるノードがある。 シーン内での様々なことを感知、判定するためのノードで、全部で7種類用意されている。 このWeb
    ページで動作確認を行っている Community Place Brows
    er では、幾つかの Sensor ノードがまだサポートされていない。 ここではオブジェクトにマウスがヒットしたかどうかを感知する TouchSensor をオブジェクトにつけてみる。

    【0069】Sample15 1: #VRML V2.0 utf8 2: Transform{ 3: children [ 4: DEF TS TouchSensor {} 5: Shape { 6: geometry Box {} 7: } 8: ] 9: }

    【0070】これまでのサンプルと異なるのは4行目だけである。 ここでは TS という名前を付けた TouchSens
    or を Box につけている。 Box にマウスカーソルが触れると(あなたが使っているブラウザが Community Place
    Browser ならば)手の形に変わるはずである(他のブラウザの中にはカーソルが変わらないものもある)。 ちなみにクリックしても何も起きない。

    【0071】19.動きをつける(1) VRML2.0 が VRML1.0 と大きく異なる点はシーンに動きをつけられるという点である。 動きをつけるには Java
    や VRMLScript(JavaScript) などのスクリプトを用いる方法と、Interplator ノードを用いる方法がある。 まずは Interplator ノードを用いる方法から見ていく。 I
    nterplate とは、「差し挟む」とか「内挿する」といった意味である。 Interpolator ノードで数値、位置、3D
    座標、方向、法線、色の値を変えることによってシーンに動きをつけることができる。 ここでは方向を内挿する
    OrientationInterpolatorノードを用いてオブジェクトを回転させてみる。

    【0072】 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

    【0073】まず、幾つかのノードに名前を付けておく。 2,9,14 行目にそれぞれ、OBJ,TS,OI と定義している。 これは後述するがイベントの受け渡しをするときに必要になる。 9 行目乃至 13 行目を見ます。 TouchSenso
    r は時間の経過を感知するノードで、時間の経過に伴って一定の間隔でイベントを生成することができる。 loop
    フィールドは TRUE か FALSE をとる SFBool フィールドで、TRUE なら stopTime になるまで続く。 ここでは
    stopTime -1 と startTime(デフォルトは0)と startT
    ime より小さな値になっているので永久に継続されることになる。 回転する動きをもっと遅くするときには cyc
    leInterval の値をもっと大きくする。

    【0074】14 行目乃至 20 行目までが OrientationI
    nterpolator ノードである。 Interpolator ノードはすべて key と keyValue の2つのフィールドを持っている。 key はアニメーション時間の間隔を 0 から 1 の間で設定する。 keyValue は key で設定した間隔に具体的なフィールド値(ここでは MFRotation )を設定する。
    ここではアニメーション時間の間隔を9等分して、y軸を中心に回転角を設定している。

    【0075】しかしこれだけではシーンに動きをつけることはできない。 TimeSensorノードの生成したイベントを OrientationInterpolator ノードに渡してやる必要がある。 21,22行目を見ます。 この ROUTE というキーワードで始まる行で イベントを受け渡しを行う。 TimeSen
    sor TS が起動すると fraction_changed がイベントアウトされる。 fraction_changed がイベントアウトされると、OrientationInterplator OIの set_fraction にイベントインされる。 ここまでが21 行目の ROUTE の動作である。 22 行目はイベントインされた set_fraction
    値から OrientationInterplator OI が値を内挿し、それを Transform OBJ の translation フィールドにvalu
    e_changed としてイベントアウトする。 もう1つサンプルをあげてみる。

    【0076】20.動きをつける(2) 今度はマウスでオブジェクトをクリックすると移動するサンプルである。 移動するには位置を内挿する Positio
    nInterpolator ノードを使用する。 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

    【0077】今度は、OBJ という名前の赤い立方体に T
    ouchSenor TS をつけている。 オブジェクトがクリックされると、TouchSenor TS の touchTime が TimeSensor
    TIS の startTime にイベントアウトされる。 サンプルのソースには TimeSensoe ノードの中に startTime フィールドは書いてないが、デフォルトで startTime 0
    となっている。 あとは前のサンプルと同じである。 これらの ROUTE によってオブジェクトが移動する。

    【0078】ここで、第1世代のVRML1.0に対し、第2世代のVRML2.0で新たに加わった機能であるVRML仮想空間内における自律的な動き(Behavior)を実現するためのメカニズムについて概説する。

    【0079】VRML2.0においては、3次元仮想現実空間内に配置されたオブジェクトに対する操作に伴って生じるイベントや、予め設定された時間が経過した時点で生じるタイマーイベントに応じて、オブジェクトの自律的な動きを実現することができる。 このBehaviorのメカニズムは、センサー、ルーティング、スクリプトの3つの要素の連携動作によって実現される。

    【0080】すなわち、 予め3次元仮想現実空間内に配置されたオブジェクトなどのノードに対して関係付けられて、VRMLファイルとして記述されたセンサーノードが、そのフィールドの値の変化に基づいて、外部イベントを感知し、VRMLシーン内にイベントを発生する。 発生したイベントは、 VRMLファイルとして記述されたルーティングに基づいて、オブジェクトの挙動を規定するプログラムである外部のスクリプトに対して、伝達される。 外部のスクリプトには予め特定のイベントが到来した時点で呼び出されるメソッドが記述されており、ルーティングによって伝達されたイベントを受け取った外部のスクリプトは、その記述に基づく処理を実行した後、その処理結果と、ルーティングの記述に基づいて、VRMLシーン内の該当するノードのフィールドの値を変更する。

    【0081】VRML2.0においては、センサーノードとしては、例えば、指定されたオブジェクト上をポインティングデバイスが通過したり、ユーザによってクリックされた場合にイベントを発生するTouchSensorや、指定された領域内にViewPoint(ユーザの視点)が侵入した場合にイベントを発生するProximitySensorや、与えられた時刻となったり、予め指定された時間間隔が経過する毎に発生するTimeSensorなどが定義されている。

    【0082】もう少し詳しく、Behaviorの仕組みを説明する。 先にも述べたように、Behaviorの仕組みは、センサー、イベント、ルーティングおよびスクリプトから構成されている。

    【0083】センサーは、2つの機能に分けられる。 ・ユーザの操作を感知するタイプ ・システムの変化を感知するタイプ

    【0084】ユーザの操作を感知するタイプのセンサーは、3次元仮想空間内に配置された物体などに関係付けられたソフトウエアによるスイッチとなる。 システムの変化を感知するタイプのセンサーは、作動させる時間を事前に設定しておいたタイマーが作動することになる。
    センサーの働きは、これらの外部イベントを検出して、
    それをVRML内部のイベントに変換することである。

    【0085】イベントは、VRMLの内部の関連するノード間で、情報を伝えるためのデータのことを指す。 実際には、VRMLファイルの中に記述されたフィールド値の変化がイベントとして伝達される。

    【0086】ルーティングは、センサー機能で検出されたイベントをどのノードに伝えるかを指定するための仕組みで、イベントによる情報の伝達経路を指定することになる。

    【0087】スクリプトはイベントの入出力口で、入力されたイベントから何らかの計算を行い、その結果をイベントとして出力することができるものである。 スクリプトは特定の言語のみに制限されるものではなく、現段階では、インターネット界で注目を浴びているJava(米国Sun Microsystems社の商標)やJavaScript、通常のシステムでよく利用されているC言語、UNIXでよく利用されているTcl/TkやPERL、米国マイクロソフト社の提供しているVisual Basic言語などが対応している。 このようにVRML2.0では特定のスクリプト言語に依存しない仕様になっている(VRML2.0仕様検討中、一時特定の言語仕様としてVRMLScriptが採用されようとしたこともあるが、この構想は取り止めなった)。

    【0088】次に、Behaviorの処理手段に関して、図1
    を参照して説明する。 Behaviorの処理を図式化すると、
    図1のようになる。 以下、各部に分けて、処理信号の流れを説明する。

    【0089】センサーノード 前にも述べたように、センサーノードには、大きく分類して2系統がある。 ユーザの操作を感知するタイプと、
    システムの変化を感知するタイプのセンサーである。

    【0090】前者のセンサーには、3次元物体やその平面をマウスクリックしたり、通過したりしたときに感知するTouchSensorやPlaneSensorなどのセンサーノードがあり、後者のセンサーとしては、設定した時間が来るとイベントを発生させる仕組みになっているTimeSensorが用意されている。

    【0091】この図1の例では、球にTouchSensorが付けられているものとする。 このとき、ユーザが球をマウスクリックすると、このイベントをTouchSensorが検出する。 このイベントは、TouchSensorのeventOutフィールドのフィールド値が変化することで検出される。 通常1回のマウスクリックで2つのイベントを発生する。 それは、マウスボタンが押されたタイミングと、離されたタイミングである。

    【0092】次に、このイベントは、ルーティング記述部分によって、ルーティングされることになる。

    【0093】ルーティング このイベントのルーティングを指定するのが、図2に示すような「Route」である。

    【0094】センサー記述部分で発生したイベントがRo
    uteのeventOutフィールドに伝達され、さらに、次に述べるスクリプトノードに伝えられることにより、外部ファイルにイベントが渡され、Behavior機能が実行される。

    【0095】スクリプトノード このノードは、VRMLファイルと外部のスクリプトとを連動させる仲介をするノードである。 スクリプトノードの記述書式に従って、どのような言語で記述されているかとか、ファイル名を指定したり、外部スクリプトファイルとの間でイベントのやり取りをするために、eventIn
    フィールドとeventOutフィールドを規定する。 このとき、使用できるスクリプトファイルは、Java、JavaScri
    pt、C言語、Tcl/Tk、PERL、およびVisual Basic言語など多岐に渡る。

    【0096】実際の処理手段としては、ルーティングされたイベントがスクリプトノードに記述されているスクリプトファイルに処理が伝達され、外部のスクリプトファイルが実行される。 外部のスクリプトファイルは、その中で定義されているeventIn(イベントの入口)で受け取り、そのファイル内に記述された処理を実行する。
    その処理が終了した後、eventOut(イベントの出口)から結果をVRMLファイルのルーティングへ返す。 VRMLファイルは、その返された結果を実行して、一連のBehavior
    処理は終了する。

    【0097】このような、センサー、ルーティング、スクリプトの連携動作によって実現されるBehaviorのメカニズムを利用することによって、例えば、3次元仮想現実空間内に配置されたスイッチを模したオブジェクトをマウスでクリックすることによって、同じ空間内に配置された他のオブジェクトの外観(形状、姿勢、サイズ、
    色等)であるとか、挙動シーケンスなどを動的に変更する事ができる。

    【0098】このBehaviorのメカニズムの詳細な説明については、http://webspace.sgi.com/moving-worlds/sp
    ec/part1/concepts.htmlおよび、その日本語版であるht
    tp://www.webcity.co.jp/info/andoh/VRML/vrml2.0/spe
    c-jp/part1/concepts.htmlで公開されている、August
    4, 1996における The Virtual Reality Modeling Langu
    age Version 2.0, ISO/IEC CD 14772の仕様書、4. 概念の節に開示されている。 この節には、 VRML仕様書を利用するにあたりキーとなる概念が記述されている。 ノードをシーングラフに結合する方法、ノードがイベントを生成したり受け取ったりする方法、プロトタイプによるノードタイプの作成方法、VRMLにノードタイプを追加して外部から使用できるようにエクスポートする方法、
    VRMLファイルにプログラムとして動作するスクリプトを組み込む方法など、様々なノードに関する一般的な項目が記載されている。

    【0099】次に、このようなVRML2.0の自律的な動き(Behavior)を実現するメカニズムを応用して、共有仮想空間内に、仮想生命オブジェクトを誕生させ、ユーザの操作や時間経過に伴う所定のイベントの発生に応じて変化する成長パラメータ(外観的成長又は内面的成長(個性))をサーバで管理し、このサーバから転送された成長パラメータに基づいて、仮想生命オブジェクトの外観(形状、姿勢、サイズ、色等)又は挙動シーケンスの内の何れか一方もしくは双方を動的に変更するためのスクリプトプログラムを解釈、実行することで、成長パラメータに応じた仮想生命オブジェクトを表示する技術について、以下に詳述する。

    【0100】図3は本発明の一実施の形態の全体のシステム構成図である。

    【0101】図3において、1,2,3は、VRMLブラウザおよびWWWブラウザがインストールされ、これらが動作しているクライアントPC(パーソナルコンピュータ)であり、IP(インターネット接続サービスプロバイダ)4,5,6を介してインターネット7と接続されている。

    【0102】インターネット7とルータ8を介して接続されたLAN(Local Area Network)9には、WWWサーバ1
    0、WLS(World Location Server)11、および共有サーバ12が接続されている。 これらの各サーバ10乃至1
    2には、ハードディスク(HDD)10a,10b,11a,1
    2aが、各々設けられている。

    【0103】図4はクライアントPC1のハードウェア構成を示すブロック図である。

    【0104】図4において、30は各部を制御するCP
    U、31はVRML 2.0 fileや、Java(米国 Sun Micros
    ystems社の商標)による共有仮想生命の経験スクリプトプログラム等からなるVRMLコンテンツと、各クライアントPCのユーザ(クライアント)の分身であるアバタ(仮想生命オブジェクト)の経験パラメータ管理テーブル(図8を用いて後述する)が格納されたHDD、32はC
    D−ROMディスク33に格納されたVRMLコンテンツを読み取るCD−ROMドライブ、34はBIOS(Basic InputOutput
    Systems)等が格納されたROM、35はマイクロフォン3
    6と左右のスピーカ37,38が接続されたサウンド処理回路、39はインターネット7に接続するためのMODE
    M、40はマウス41とキーボード42が接続されたI/O
    (入出力)インターフェイス、43はVRAM44が内蔵されたグラフィックス処理回路、45はCRTモニタ、46
    はRAMである。

    【0105】このRAM46には、実行時に、Windows95
    (米国Micro Soft社の商標) の上で動作するWWWブラウザであるNetscape Navigator、Javaインタプリタ、および、ソニー株式会社によって開発されたVRML2.0ブラウザであるCommunity Place Browserが読み込まれて、CPU
    30によって実行される状態となっている。

    【0106】VRML2.0ブラウザには、米国シリコングラフィクス社によって開発され、無償公開されているVR
    MLの構文解釈用ライブラリ(パーサ)であるQvLibと、
    英国Criterion Software Ltd.のソフトウエア・レンダラであるRenderWare等、もしくはこれらと同等の機能を有するパーサやレンダラが実装されている。

    【0107】そして、 Community Place Browserは、図3に示すように、WWWブラウザとしてのNetscape Naviga
    torとの間において、NCAPI(Netscape Client Applicati
    onPrograming Interface)(商標)に基づいて各種データの授受を行う。

    【0108】Netscape Navigatorは、インターネット7
    を介してWWWサーバ10よりHTMLファイルとVRMLコンテンツ(VRMLファイルとJavaによるスクリプトプログラムとを含む)の供給を受けると、これらをローカルのHDD
    31にそれぞれ記憶させる。 Netscape Navigatorは、このうちのHTMLファイルを処理してテキストや画像をCRT
    モニタ45に表示する一方、 Community Place Browser
    はVRMLファイルを処理して3次元仮想空間をCRTモニタ4
    5に表示するとともに、Javaインタプリタによるスクリプトプログラムの処理結果に応じて、3次元仮想空間内のオブジェクトの挙動を変化させる。

    【0109】なお、図示は省略するが、他のクライアントPC2やクライアントPC3も、クライアントPC1
    と同様に構成されている。

    【0110】次に上述した一実施の形態の動作について説明する。

    【0111】まず、実際にVRMLコンテンツをインターネット経由でダウンロードしてから、1つの仮想空間を複数のユーザで共有するマルチユーザ環境とするまでの手順を図5乃至図7を参照して説明する。

    【0112】図5において、番号1で示すように、最初に、WWWブラウザを用いて、VRMLコンテンツを提供しているWebサイトのホームページを閲覧する。 この例では、 http://pc.sony.co.jp/sapari/ を閲覧している。 次に、番号2で示すように、クライアントPC1とクライアントPC2のユーザは、VRML 2.0fileと、VRM
    L空間内での自律的な動き(Behavior)を実現するためのスクリプトプログラム(Javaによる成長スクリプトプログラム)とからなるVRMLコンテンツを、それぞれダウンロードする。

    【0113】勿論、 CD−ROMディスク33で提供される
    VRMLコンテンツをCD−ROMドライブ32で読み込んでも良い。

    【0114】次に、図6に示すように、クライアントP
    C1およびクライアントPC2は、それぞれにダウンロードされ、一旦ローカルのHDD31に格納されたVRML
    2.0fileを、VRML2.0ブラウザであるCommunity Place
    Browserが解釈・実行し、さらに番号3で示すように、
    VSCP(Virtual Society Server Client Protocol)に基づいて、WLS11に対して共有サーバ12のURLを問い合わせる。 このとき番号4で示すように、WLS11はHDD11
    aに格納された共有サーバURL管理テーブルを参照して、
    クライアントPC1およびクライアントPC2に対して、共有サーバ12のURLを通知する。

    【0115】このURLを用いて、図7に示すように、クライアントPC1とクライアントPC2が、共有サーバ12に接続する。 その結果、番号5で示すように、この共有サーバ12を介して共有3Dオブジェクトの位置や動きなどに関する共有メッセージの送信が行われ、番号6
    で示すように、その転送が行われ、マルチユーザ環境が実現される。

    【0116】なお、以上の接続手順の詳しい説明については、特開平9-81781号公報を参照されたい。

    【0117】各クライアントPCのHDD31には、図8
    に示すような各クライアントPCのユーザの分身であるアバタの経験パラメータを管理する経験パラメータ管理テーブルが格納されている。

    【0118】すなわち、図8に示すように、アバタの経験パラメータに関するデータは、1つの仮想空間内において3Dオブジェクトを一意に特定するための3DオブジェクトID、仮想空間内でのアバタの3次元座標値、ユーザによって選ばれた猿や猫などのアバタの外見の種類、その性別、ユーザによって付与されたニックネーム、ユーザによって初期設定された日時、すなわちそのアバタの誕生日時、誕生した仮想空間に付与されているワールド名、並びにアバタの経験パラメータからなる。

    【0119】経験パラメータは、成長パラメータと取得パラメータから構成されている。 成長パラメータは、アバタの外観的成長を規定するフィジカルパラメータと、
    性格等が反映された内面的成長を規定するためのメンタルパラメータに大別される。

    【0120】フィジカルパラメータは、身長(単位c
    m)、体重(単位Kg)、体格指数、食欲指数、健康度指数、および滞在時間(単位時間)からなる。

    【0121】メンタルパラメータは、知能指数、言語能力指数、社交性指数、自主性指数、活発性指数、および機嫌指数により構成されている。

    【0122】これらのパラメータは、アバタによって最初に初期設定された誕生日時からの経過時間に伴って発生するタイマーイベント、自らのユーザの操作に伴って発生する操作イベント、および、相手のクライアントP
    Cにおける自分のアバタに対する操作に伴って発生する操作イベントに基づき、所定の成長パラメータ算出式によって算出された値に順次更新される。

    【0123】取得パラメータは、ユーザのアバタが仮想空間内において行った、例えば、フィッシング、マラソンなどのイベントにおいて取得した得点(ポイント)で構成される。

    【0124】図9は、クライアントPC1のCRTモニタ画面上のVRMLブラウザのメインウインドウに隣接して表示されるアクションパネルの機能を示している。

    【0125】この図において、Aは(Active)と表記されている「呼ぶボタン」であり、相手のアバタを呼んだり、寝ている自分のアバタ(この場合のアバタは、いずれも、例えば犬などの動物である)を起こす際にクリックされる。

    【0126】Bは(Sleep)と表記されている「おやすみボタン」であり、自分のアバタを寝かす際にクリックされる。

    【0127】Cは「ごはんボタン」であり、相手のアバタに食事を与える際にクリックされるボタンである。

    【0128】Dは「ほめるボタン」であり、相手のアバタに笑いかけて褒めてあげる際にクリックされるボタンである。

    【0129】Eは「あそぶボタン」であり、自分のアバタが鬼になって逃げ回る相手のアバタを追いかけて、壁にぶつかって逃げれない相手のアバタにぶつかるまで追いつめて遊ぶ、いわゆる鬼ごっこで遊ぶ際にクリックされるボタンである。

    【0130】Fは「しかるボタン」であり、言う事を聞かない相手のアバタを叱り付けて、しつけを行なう際にクリックされるボタンである。

    【0131】Gは「きれいにするボタン」であり、相手のアバタをブラッシングしてきれいにする際にクリックされるボタンである。

    【0132】そして、例えば、図10に示すように、自分のクライアントPC1において、ステップS1で、
    「呼ぶボタン」Aがクリックされると(アクションパネルが操作されると)、ステップS2で、その操作イベントに基づいて経験パラメータ(いまの場合、成長パラメータ)更新処理が実行される。 それによりに、食欲指数、健康度指数、機嫌指数が、1/10から10/10
    まで、0.1ポイントづつインクリメントされる。 その操作メッセージが更新済みのアバタの成長パラメータと共に送信されると、共有サーバ12はステップS11でこれを受信し、さらにこれをステップS12で相手のクライアントPC2へ送信する。

    【0133】また、例えば、「ごはんボタン」Cがクリックされ、その操作イベントが発生する毎に、成長パラメータの体重が増加し、それに伴って、体格指数が、1
    /10から10/10まで、0.1ポイントづつインクリメントされる。

    【0134】その後、時間経過に伴うタイマーイベントが発生すると、ステップS2で、成長パラメータの体重が減少し、それに伴って、体格指数が0.1ポイントづつデクリメントされる。

    【0135】例えば、この体格指数を含む成長パラメータは、更新される毎に、共有サーバ12のマルチキャスト処理により、ステップS12で、仮想空間を共有しているその他のクライアントPCへ転送される。

    【0136】クライアントPC1では、他のクライアントPC2から送信されてきた(共有サーバ12のステップS21の受信処理と、ステップS22の転送処理により送信されてきた)成長パラメータに基づいて、ステップS3で、アバタの成長に伴う自律的な挙動を制御するための処理手順が記述された経験(成長)スクリプトプログラムが実行され、ステップS4で、VRMLファイルのアバタを表現するための3Dオブジェクトを構成する各ノードのフィールドの値が変更され、ステップS5で、この変更されたフィールドの値が反映されたアバタがレンダリングされ、クライアントPC1のCRTモニタ画面上のVRMLブラウザのメインウインドウ上に表示される。

    【0137】このクライアントPC1と同じ処理が、仮想空間を共有しているその他のクライアントPCにおいても実行され、これによりアバタの成長に伴って変更されたフィールドの値が反映されたアバタの姿がレンダリングされ、他のクライアントPCのCRTモニタ画面上のV
    RMLブラウザのメインウインドウ上にも表示されることになる。

    【0138】図11および図12に、VRMLファイルのアバタを表現するための3Dオブジェクトを構成する各ノードに対応したpart0乃至part5の関係(図11)と、その表示例(図12)を示す。 part0がアバタの頭部に相当し、part1がアバタの胴体に相当し、part2とpart3がアバタの右腕と左腕に相当し、part4とpart5がアバタの右足と左足に相当する。

    【0139】これらの各part0乃至part5に対応する各ノードのフィールドの値を変更することで、アバタの各部の外観(形状、姿勢(向き)、サイズ、色等)、および各部の挙動シーケンスを動的に変更する事が出来る。 こらは全て、成長パラメータに基づく成長スクリプトプログラムの処理で実現される。 すなわち、VRML2.0で定義されたセンサー、ルーティング、スクリプトの連携動作によって実現されるBehaviorのメカニズムを利用することによって実現される。

    【0140】従って、従来の携帯電子ペットの仮想生物の画像表示方法のように、予め仮想生物のキヤラクタの成長過程の各段階のビットマップ画像をROMに格納しておく必要はなく、例えば、アバタの成長経過に応じてその体格や挙動を連続的かつ動的に変化させる事が出来る。

    【0141】図13は、アバタの成長と体格指数の遷移に伴ってアバタの体格を動的に変更して表示する概念図を示している。 加齢に伴って、顔が大人の顔となり、体格も大きくなるが、体格指数が小さいと、やせた身体となり、大きいと、大きな身体となる。

    【0142】図14は、アバタの機嫌指数の遷移に伴ってアバタの表情を動的に変更して表示する概念図を示している。 機嫌指数が大きいと、笑い顔となり、小さいと、怒った顔になる。

    【0143】図15は、アバタの活発性指数の遷移に伴ってアバタの各部の挙動シーケンスを動的に変更して表示する概念図を示している。 活発性指数が小さいと、足の屈伸程度の動きしかできないが、大きくなると、手を振ったり、頭を振ったりすることができる。

    【0144】図16は、アバタの知能指数の遷移に伴ってアバタへ頭髪を付加したり眼鏡を付加して表示する概念図を示している。

    【0145】ここで、成長パラメータの知能指数は、図9に示す「呼ぶボタン」Aの操作に伴うアクセスイベントに基づいて、0.1ポイントづつインクリメントされ、
    図16に示すようにアバタの外観に影響を与える。

    【0146】言語指数は、図9に示す「呼ぶボタン」A
    の操作に伴うアクセスイベントやタイマーイベントに基づくアバタの年齢に応じて0.1ポイントづつインクリメントされ、アバタの年齢増加に応じて、テキストベースでのチャットの文章編集処理を実行するに際し、そのテキストの文体に影響を与える。

    【0147】社交性指数は、相手のアバタとのチャットの頻度に応じて0.1ポイントづつインクリメント又はデクリメントされ、頻度が多ければ外向的な振る舞い、頻度が少なくなれば内向的な振る舞い、となるようにアバタの振る舞いに影響を与える。 社交的で明るく、積極的な性格のアバタは、姿勢も顔色も良くなり、逆に、内向的で暗く、消極的な性格のアバタは、姿勢も顔色も悪くなる。

    【0148】自主性指数は、タイマーイベントに基づくアバタの年齢増加に応じて、0.1ポイントづつインクリメントされ、次第にユーザの言う事を聞かなくなるなどのアバタの振る舞いに影響を与える。

    【0149】活発性指数は、年齢、食欲指数、健康度指数などに基づいて決定され、図15に示すように、アバタの振る舞いに影響を与える。 また、図9に示す「あそぶボタン」Eの操作に伴う操作イベントの発生に基づいて、活発性指数が0.1ポイントづつインクリメントされ、次第に逃げ足が早くなるなどのアバタの振る舞いに影響を与えたり、アバタの体重を減らして体格指数をデクリメントして図13に示すようにその外観に動的な変更を与える。

    【0150】機嫌指数は、図9に示す「呼ぶボタン」A
    の操作に伴うアクセスイベントやタイマーイベントに基づくアクセス頻度などに基づいて決定され、図14に示すように、アバタの表情に影響を与える。

    【0151】その結果、例えばチャットで話しかけるなど、自発的な行為の場合は、内面的成長の度合いを1だけインクリメントし、話しかけられるなど、受け身的な行為が行われた場合は、1だけデクリメントし、「ほめるボタン」Dがクリックされた場合には、5だけインクリメントし、「しかるボタン」Fがクリックされた場合には、5だけデクリメントするなどして、よちよち歩きの赤ん坊から、立派な大人を経て、老人になるまで、年齢に応じてアバタの外見を変化させることができる。

    【0152】図17は、アバタの成長パラメータに対応する変化の他の例を示している。 この例においては、アバタは人間とされ、赤ちゃん、子供、青年、大人、老人と変化し、転生により、老人から再び赤ちゃんに戻るようになされている。

    【0153】図13乃至図16に示すような、年齢(仮想空間内における滞在時間の累積値)に対応して発生する変化は、比較的、徐々に行われる。 換言すれば、変化した後の外形から、変化する前の外形をある程度想像することができ、各ユーザは、その関連性をある程度認識することができる。 しかしながら、アバタが図17に示すように変化するものとすると、変化前と変化後のアバタの同一性を各ユーザが想像することが困難になる。

    【0154】例えば、図17に子供で示すアバタが、仮想空間内において歩いていき、ビルの影にいったん隠れた後、2、3秒たって、再びビルの影から現れたときに、そのアバタが子供から青年に変化していたとすると、その青年は、2、3秒前に子供であったアバタと同一であると認識することが困難であり、別のアバタが現れたものと認識されることになる。

    【0155】そこで、このような場合においては、成長パラメータの更新を、そのアバタがいったん仮想空間から離脱した後、行うようにすることができる。 図18
    は、この場合の処理例を表している。

    【0156】すなわち、最初にステップS41において、アバタが仮想空間に再び滞在を開始するとき、前回までの滞在時間の累積値(寿命残時間)が、経験パラメータ管理テーブルの成長パラメータから読み出される。
    そして、その年齢(寿命残時間)に対応するアバタが読み出され、ステップS42において、そのアバタの種類と、ステップS41で読み出された滞在時間が、共有サーバ12を介して他のクライアントPCに通知される。
    従って、他のクライアントPCのCRTモニタには、その滞在時間(年齢)に対応するアバタの画像が表示される。

    【0157】次に、ステップS43に進み、そのアバタが、仮想空間からログアウトしたか否か(離脱したか否か)が判定される。 アバタが、仮想空間から離脱していない場合には、ステップS44に進み、滞在時間の現在値に、それまでの滞在時間を加算する処理が行われる。
    ステップS45においては、ステップS44で行われた演算結果を、経験パラメータ管理テーブルの成長パラメータの滞在時間として保存する処理が実行される。 すなわち、そのアバタの滞在時間が、ステップS45において更新される。 その後、ステップS43に戻り、それ以降の処理が繰り返し実行される。 このステップS43乃至S45における滞在時間の累積処理は、一定周期(例えば1分)毎に行われる。 そして、ステップS43において、アバタが仮想空間から離脱したと判定された場合、処理が終了される。

    【0158】すなわち、この場合においては、一度、アバタが仮想空間に滞在すると、連続して滞在している期間においては、そのアバタの滞在時間(年齢)に起因して、その外形が変化されることはなく、一度、仮想空間を退出するまで、同一の外形(年齢)とされる。 従って、同一の滞在サイクル期間内に、アバタの外形が変化して、同一性が損なわれるようなことが防止される。

    【0159】そして、そのアバタが、仮想空間から離脱し、再び仮想空間内に滞在を開始するとき、前回の滞在サイクルまでの滞在時間の累積値に対応する外形のアバタとして登場することになる。

    【0160】なお、アバタの仮想空間内における滞在時間は、例えば、Windows95のシステム設定の情報を管理しているレジストリ中の所定の領域に保持しておくようにしてもよい。 このレジストリの内容は、テキストファイル形式で情報の読み書きが可能である。

    【0161】なお、以上の原理は、アバタの外形が大きく変化する場合だけでなく、身長、体重、顔立ち、ファッションなどを、滞在時間(年齢)に応じて変化させたり、髭、髪の毛などを、滞在時間に対応して変化させる場合にも適用することができる。

    【0162】また、アバタが、ボイスチャット機能を利用して、音声で他のアバタのユーザと会話を行うような場合、音声に付加するエフェクトを、その滞在時間に対応して、若い声からしわがれた声に変化させるようにしてもよい。

    【0163】さらに、テキストチャット機能により、文字を使って会話が行われる場合、その文字(フォント)
    を、滞在時間が少ない場合には丸文字とし、滞在時間が長くなるにつれて明朝体の文字とし、老年期に相当する滞在時間には、行書あるいは草書の文字を用いるようにすることができる。

    【0164】次に、取得パラメータの例について説明する。 いま、アバタが、仮想空間の海にきて、釣りをするものとする。 アバタが、仮想空間の海に近い場所に移動すると、そのアバタのユーザのCRTモニタには、例えば図19に示すような海の画像が表示される。 この海には、同図に示すように、魚が泳いでいる。 例えば、図1
    9に示す子供のアバタのユーザのCRTモニタには、例えば図20に示すような海の画像が表示されることになる。

    【0165】所定のユーザのアバタが、この海で釣りをする場合の処理が、図21のフローチャートに示されている。 なお、アバタが行う釣りは、アバタのユーザが、
    マウスで移動する所定の魚をクリックすることで行われる。

    【0166】最初にステップS61において、魚が釣られたか否かが判定される。 釣られていない場合には、ステップS66に進み、釣りが終了されたか否かが判定され、終了されていなければ、ステップS61に戻り、それ以降の処理が繰り返し実行される。

    【0167】ユーザが、海を泳ぐ魚をうまくクリックすることで、魚を釣ったとステップS61で判定された場合、ステップS62に進み、その釣られた魚の大きさ、
    種類に対応するポイントが計算される。 魚は大きいほどポイントが大きく、また、高価な魚ほどポイントが大きくなる。 ステップS62で計算されたポイントは、ステップS63において、現在、そのアバタが有する得点に加算され、取得パラメータのフィッシングの得点として記憶される。

    【0168】次に、ステップS64において、ステップS63で計算された現在の得点に対応する修飾品が検索され、その修飾品を修飾する処理が実行される。 すなわち、クライアントPCのHDD31のVRML2.0ファイルには、この修飾品を修飾した画像が予め用意されており、
    ユーザのアバタは、それまでのアバタから、そのアバタに対して修飾品を修飾(付加)した状態のアバタに変更される。

    【0169】例えば、それまでのアバタの外形が、図2
    2に示すような外形であったとすると、フィッシングの得点が所定の値に達したとき、アバタは、図23に示すように、それまでのアバタに蝶ネクタイを修飾したアバタに変更される。 得点が、さらに増加した場合には、例えば図24に示すように、蝶ネクタイに代えて勲章を修飾したアバタに変更される。 得点がさらに大きくなった場合には、勲章に代えて、図25に示すように、王冠を修飾したアバタに変更される。 図22に示すアバタと、
    図23乃至図25に示すアバタを比較して明らかなように、修飾品を修飾する前のアバタと、修飾品を修飾した後のアバタとは、同一性が確保されており、各ユーザは、修飾品を修飾していない状態のアバタと、修飾品を修飾している状態のアバタを見比べて、両者が同一のアバタであることを認識することができるようになされている。 この点、図17の成長パラメータに起因してアバタそのものを修正(変更)する例と異なっている。

    【0170】さらに、ステップS65においては、ステップS63で計算され、更新された取得パラメータが、
    共有サーバ12を介して他のクライアント通知される。
    その結果、他のクライアントPCにおけるCRTモニタ上の画像が、その得点に対応する修飾品を修飾したアバタに変更される。

    【0171】次に、ステップS66において、フィッシングが終了されたか否かが判定され、終了されていなければステップS61に戻り、同様の処理が繰り返し実行される。 フィッシングが終了したと、ステップS66において判定された場合には、処理が終了される。

    【0172】修飾品の修飾は、イベント(経験)毎に異なっている。 従って、各ユーザは、蝶ネクタイ、勲章、
    または王冠の修飾品を修飾しているアバタは、フィッシングを経験しているアバタであると認識することができる。 そして、フィッシングが好きなアバタは、仮想空間において、同一の趣味を有する他のアバタを、この修飾品を基準にして、迅速かつ容易に見いだすことができ、
    必要に応じて、そのアバタに話しかけ、チャットを楽しむことができる。

    【0173】図19と図20の表示例においては、このチャットの例が示されている。 すなわち、この表示例においては、「おさかなつれますか」、「なかなかつかまらないなぁ」、「がんばってね」のチャットが行われている。

    【0174】このように、取得パラメータは、アバタが所定の得点を取得したとき、直ちに、他のアバタに通知される。 すなわち、この場合の処理は、図10に示したように行われる。 取得パラメータが変化しても、修飾品が修飾された状態にアバタの外形が変更されるだけなので(変更される前と変更された後のアバタの同一性を確認することができるので)、各ユーザが違和感を覚えるようなことはない。

    【0175】なお、修飾品としては、この他、帽子、ジャケット、釣竿、ルアーなどとすることができる。

    【0176】また、フィッシング以外に、例えば、マラソン、ゴルフなどのコンテストで優賞したアバタに、各種の修飾品を修飾させるようにすることができる。

    【0177】このようにして、より現実に近い変化を共有仮想空間において楽しむことができる。

    【0178】なお、以上の各種の処理を実行するコンピュータプログラムは、フロッピーディスク、CD-ROMディスク、その他の記録媒体に記録して提供したり、インターネットを介して伝送することで提供することができる。

    【0179】

    【発明の効果】以上の如く、請求項1に記載のクライアント装置、請求項8に記載の画像表示制御方法、および、請求項9に記載の伝送媒体によれば、共有仮想空間内に存在するクライアントの分身としての仮想生命オブジェクトを、所定のイベントの発生に応じて変化する経験パラメータに対応して修飾するようにしたので、簡単かつ確実に、仮想生命オブジェクトの共有仮想空間内における経験を各ユーザに認識させることが可能となる。

    【0180】請求項10に記載の共有仮想空間提供装置、請求項11に記載の共有仮想空間提供方法、および、請求項12に記載の伝送媒体によれば、第1のクライアント装置から更新された経験パラメータが送信されてきたとき、第2のクライアント装置に転送するようにしたので、共有仮想空間における仮想生命オブジェクトの経験を各ユーザに、容易に認識させることが可能な共有仮想空間を提供することができる。

    【図面の簡単な説明】

    【図1】センサー、イベント、ルーティング、およびスクリプトの関係を説明する図である。

    【図2】ルーティングを説明する図である。

    【図3】本発明を適用した共有仮想空間提供システムの構成例を示すブロック図である。

    【図4】図1のクライアントPC1の構成例を示すブロック図である。

    【図5】図3のシステムの動作を説明するディスプレイの写真である。

    【図6】図3のシステムの動作を説明するディスプレイの写真である。

    【図7】図3のシステムの動作を説明するディスプレイの写真である。

    【図8】経験パラメータ管理テーブルの例を示す図である。

    【図9】アクションパネルを説明するディスプレイの写真である。

    【図10】成長パラメータの授受を説明する図である。

    【図11】3Dオブジェクトを構成するアバタのノードを説明する図である。

    【図12】図11に示したノードに対応する表示例を示すディスプレイの写真である。

    【図13】アバタの体格指数を説明する図である。

    【図14】アバタの機嫌指数を説明する図である。

    【図15】アバタの活発性指数を説明する図である。

    【図16】アバタの知能指数を説明する図である。

    【図17】アバタの形状の変化を説明する図である。

    【図18】アバタの形状を図17に示すように変化させる場合の処理を説明するフローチャートである。

    【図19】共有仮想空間のディスプレイの表示例を示す写真である。

    【図20】共有仮想空間のディスプレイの表示例を示す写真である。

    【図21】フィッシングのゲームの処理を説明するフローチャートである。

    【図22】共有仮想空間のディスプレイの表示例を示す写真である。

    【図23】共有仮想空間のディスプレイの表示例を示す写真である。

    【図24】共有仮想空間のディスプレイの表示例を示す写真である。

    【図25】共有仮想空間のディスプレイの表示例を示す写真である。

    【符号の説明】

    1乃至3 クライアントPC, 7 インターネット,
    10 WWWサーバ,12 共有サーバ, 30 CPU,
    31 ハードディスク, 39 モデム, 45 CR
    Tモニタ, 46 RAM

    高效检索全球专利

    专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

    我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

    申请试用

    分析报告

    专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

    申请试用

    QQ群二维码
    意见反馈