(57)【特許請求の範囲】
【請求項１】
送信装置と、複数または単数の受信装置と、前記送信装置と前記受信装置間の通信媒体手段からなるシステムにおける前記受信装置でのコンピュータグラフィックス・アニメーションのデータの受信と画像生成に関する方法であって、
物体の形状データと、物体の存在する環境の形状データと、カメラパラメータと、環境設定と、環境管理制御方法と、各物体の基本行動と、各物体の行動ルールと、前記基本行動に対応した物体の動きを時系列に生成するための時系列基本動きデータとからなるアニメーションデータを受信して前記受信装置の記憶装置に保存する受信・保存ステップと、
画像生成の視点の移動と、視線方向、画角の変更を時系列動きデータとして記述でき、前記受信装置の前記記憶装置に保存した前記アニメーションデータに基づいて、前記時系列動きデータに従って画像生成の視点と視線方向、画角の変更を行ないながらレンダリングを行ない、表示装置にコンピュータグラフィックス・アニメーション画像を表示するレンダリング・表示ステップとを有し、
前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記行動ルールに従って複数の前記時系列基本動きデータを動作接続しながら物体の動作を生成し、
前記レンダリング・表示ステップにおいて、２つの時系列基本動きデータ、前基本動きデータと後基本動きデータを接続する場合に、接続時間（フレーム数）を指定し、前記前基本動きデータに対しては前記接続時間における後向き予測曲線を生成し、前記後基本動きデータに対しては接続時間における前向き予測曲線を生成し、接続開始時刻において１、接続終了時刻において０となり、単調減少かつ時間に関し微分可能な接続重み付け関数を用いて、前記後向き予測曲線と前記接続重み付け関数の積と、前記前向き予測曲線と１から前記接続重み付け関数を引いた差との積との和によって、前記前基本動きデータと前記後基本動きデータの接続の動きを生成することで時系列基本動きデータの接続を行う、
ことを特徴とする通信型コンピュータグラフィックスアニメーション方法。
【請求項２】
請求項１に記載の通信型コンピュータグラフィックスアニメーション方法において、
前記物体は骨格構造を有する多関節物体であり、
前記時系列基本動きデータの接続によって生成されたデータは、前記骨格構造の動きを時系列に生成するための時系列動きデータであり、
前記アニメーションデータは、前記骨格構造にバインドする形状データを更に含み、
前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記時系列動きデータから当該時刻における前記骨格構造の位置と形態を算出し、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記形状データを前記レンダリング・表示ステップにおける骨格構造の位置と形態に合わせてバインドを行う、
ことを特徴とする通信型コンピュータグラフィックスアニメーション方法。
【請求項３】
請求項１に記載の通信型コンピュータグラフィックスアニメーション方法において、
前記物体は骨格構造を有する多関節物体であり、
前記時系列基本動きデータの接続によって生成されたデータは、前記骨格構造の動きを時系列に生成するための時系列動きデータであり、
前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記時系列動きデータから当該時刻における前記骨格構造の位置と形態を算出し、前記骨格構造の位置と形態に合わせて物体の表面形状の生成を行う、
ことを特徴とする通信型コンピュータグラフィックスアニメーション方法。
【請求項４】
請求項１に記載の通信型コンピュータグラフィックスアニメーション方法において、
前記受信・保存ステップにおいて、さらに、光源データを追加したアニメーションデータを前記受信装置の記憶装置に保存し、
前記レンダリング・表示ステップにおいて光源の移動と、光源強度、光線の方向、光の及ぶ範囲の変更を時系列動きデータとして記述でき、前記時系列動きデータに従って光源の位置の変更や、光源強度、光線の方向、光の及ぶ範囲の変更を行う、
ことを特徴とする通信型コンピュータグラフィックスアニメーション方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータグラフィックス・アニメーションの分野に属するもので、特に人間や動物等の多関節物体や弾性物体などの動きが時系列データして記述された場合を含むコンピュータグラフィックス・アニメーションデータをコンピュータ間で通信し、受信側コンピュータでコンピュータグラフィックス・アニメーション画像として生成するための技術に関するものである。
【０００２】
【従来の技術】
近年、インターネットを介したマルチメディア通信が盛んに行なわれるようになった。その中でも、ワールド・ワイド・ウェブ(World-Wide-Web:WWW)は中心的な枠組をなしている。これについては、文献「益岡竜介, 木庭袋圭祐,"World-Wide-Web",情報処理学会誌,pp1155-1165,Vol.36, No.12.1995.」に解説されている。
【０００３】
先の文献に基づいて説明すると、WWW の中心的な概念はURL(Uniform Resource Locators), HTTP(HyperText Transfer Protocol),HTML(HyperText Markup Language),CGI(Common Gateway Interface) である。
URL はインターネット上にある様々な資源を統一的に表記するための記法である。HTTPはWWW クライアントとWWW サーバとの通信を行なうためのプロトコルである。HTMLはハイパーテキストを記述するための記述言語である。CGI はWWW クライアントとWWW サーバとのコマンドのやり取りの仕方の取り決めである。
【０００４】
これらの概念による仕組みについて説明する。WWW クライアントは、URL によって指定された情報をWWW サーバからインターネットを介し、HTTPを用いてHTML文書として取得し、それをブラウザと呼ばれる表示プログラムを用いて画面に表示する。その画面上で、ユーザがリンクを選択すると、そのリンクに対応するURL が指定され、そこに指定された情報がリンク先のWWW サーバからインターネットを介してHTTPを用いてHTML文書として取得され、画面に表示される。
【０００５】
以上が基本的な動作である。更に、CGI によって、例えばWWW サーバにHTTPで、"GET/cgi-bin/command/path HTTP/1.0" とリクエストすると、WWW サーバでは、環境変数"PATH ＿INFO" に"/path" が設定されて、"command" が実行される。その"command" を実行して標準出力に出た結果を、アクセスしたWWW クライアントにデータとして返すというようなこともできる。このような仕組みにより、WWW はマルチメディア通信の中心的な役割を担いつつある。
【０００６】
しかしながら、前述のHTMLでは２次元画像に関する記述仕様しかないため、３次元コンピュータグラフィックスを扱うことができなかった。そのような状況の中、HTMLの拡張として、３次元コンピュータグラフィックスを記述するための記述言語であるVRML(Virtual Reality Modeling Language) の仕様が1995年５月に決められた。
これについては、文献「Mark Peace,"VRML-Browsing and Building Cyberspace",New RidersPublishing, 1995.」に詳述されている。動作は、基本的にはHTML文書の場合と同様で、HTML文書の変わりに、VRMLで記述されたデータがURL で指定した情報として取得される。
【０００７】
また、VRMLで記述されたデータを表示するためには、専用プログラムが必要である。表示される３次元コンピュータグラフィックス画像では、視点の変更は行なえるが、VRML記述仕様(Version 1.0) には物体を動かす仕様がないため、表示される物体はあくまでも静的である。
【０００８】
このような状況の中、３次元コンピュータグラフィックス・アニメーションデータをコンピュータ間で通信してやり取りを行ない、それをクライアント側で表示する方法が考えられてきた。そのようなものとして、例えば米国マイクロソフト社の提案するActiveVRMLによる方法などがある。
このActiveVRMLについては「Microsoft Corporation,"ActiveVRML Reference Manual", Preliminary Version, 1995. 」や「Microsoft Corporation,"A Brief Introduction to ActiveVRML", 1995. 」に記述されている。
【０００９】
【発明が解決しようとする課題】
しかしながら、これらの方法では、簡単な関数で示せるような動きについては、データをコンピュータ間で通信してやり取りを行ない、それをクライアント側で３次元コンピュータグラフィックス・アニメーション画像として表示することは行なえるが、人間をはじめとする動物の複雑な動きや、顔の表情の動き、複雑な物理計算の結果として得られる物体の動き、カメラや光源についての複雑な動きが扱え、リアルに再現できる３次元コンピュータグラフィックス・アニメーションを実現することは非常に困難であるという問題がある。これらの動きは、関数系でリアルに表現することは非常に困難であり、また表現できたとしても、多大な時間を要する計算が必要である。
また、ActiveVRMLにしろ、VRMLにしろ、単眼視の画像しかサポートされていないため、両眼視のステレオ画像を生成することもできないという問題がある。
【００１０】
本発明は、上記のような問題点に鑑みなされたもので、送信側コンピュータと、受信側コンピュータと、前記送信側コンピュータと前記受信側コンピュータ間の通信媒介手段からなるシステムにおけるコンピュータグラフィックス・アニメーションデータの送受信、及び前記受信側コンピュータでの人間をはじめとする動物の複雑な動きや、顔の表情の動き、複雑な物理計算の結果として得られる物体の動き、カメラや光源についての複雑な動きのコンピュータグラフィックス・アニメーション画像の生成の方法を提供するものである。
【００１１】
【課題を解決するための手段】
本願請求項１に係る発明は、送信装置と、複数または単数の受信装置と、前記送信装置と前記受信装置間の通信媒体手段からなるシステムにおける前記受信装置でのコンピュータグラフィックス・アニメーションのデータの受信と画像生成に関する方法であって、物体の形状データと、物体の存在する環境の形状データと、カメラパラメータと、環境設定と、環境管理制御方法と、各物体の基本行動と、各物体の行動ルールと、前記基本行動に対応した物体の動きを時系列に生成するための時系列基本動きデータとからなるアニメーションデータを受信して前記受信装置の記憶装置に保存する受信・保存ステップと、画像生成の視点の移動と、視線方向、画角の変更を時系列動きデータとして記述でき、前記受信装置の前記記憶装置に保存した前記アニメーションデータに基づいて、前記時系列動きデータに従って画像生成の視点と視線方向、画角の変更を行ないながらレンダリングを行ない、表示装置にコンピュータグラフィックス・アニメーション画像を表示するレンダリング・表示ステップとを有し、前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記行動ルールに従って複数の前記時系列基本動きデータを動作接続しながら物体の動作を生成し、前記レンダリング・表示ステップにおいて、２つの時系列基本動きデータ、前基本動きデータと後基本動きデータを接続する場合に、接続時間（フレーム数）を指定し、前記前基本動きデータに対しては前記接続時間における後向き予測曲線を生成し、前記後基本動きデータに対しては接続時間における前向き予測曲線を生成し、接続開始時刻において１、接続終了時刻において０となり、単調減少かつ時間に関し微分可能な接続重み付け関数を用いて、前記後向き予測曲線と前記接続重み付け関数の積と、前記前向き予測曲線と１から前記接続重み付け関数を引いた差との積との和によって、前記前基本動きデータと前記後基本動きデータの接続の動きを生成することで時系列基本動きデータの接続を行う、ことを特徴とするものである。
【００１２】
本願請求項２に係る発明は、請求項１に記載の通信型コンピュータグラフィックスアニメーション方法において、前記物体は骨格構造を有する多関節物体であり、前記時系列基本動きデータの接続によって生成されたデータは、前記骨格構造の動きを時系列に生成するための時系列動きデータであり、前記アニメーションデータは、前記骨格構造にバインドする形状データを更に含み、前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記時系列動きデータから当該時刻における前記骨格構造の位置と形態を算出し、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記形状データを前記レンダリング・表示ステップにおける骨格構造の位置と形態に合わせてバインドを行う、ことを特徴とするものである。
【００１３】
本願請求項３に係る発明は、請求項１に記載の通信型コンピュータグラフィックスアニメーション方法において、前記物体は骨格構造を有する多関節物体であり、前記時系列基本動きデータの接続によって生成されたデータは、前記骨格構造の動きを時系列に生成するための時系列動きデータであり、前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記時系列動きデータから当該時刻における前記骨格構造の位置と形態を算出し、前記骨格構造の位置と形態に合わせて物体の表面形状の生成を行う、ことを特徴とするものである。
【００１４】
本願請求項４に係る発明は、請求項１に記載の通信型コンピュータグラフィックスアニメーション方法において、前記受信・保存ステップにおいて、さらに、光源データを追加したアニメーションデータを前記受信装置の記憶装置に保存し、前記レンダリング・表示ステップにおいて光源の移動と、光源強度、光線の方向、光の及ぶ範囲の変更を時系列動きデータとして記述でき、前記時系列動きデータに従って光源の位置の変更や、光源強度、光線の方向、光の及ぶ範囲の変更を行う、ことを特徴とするものである。
【００３７】
【発明の実施の形態】
図１は本発明の方法を実施するためのシステムの構成を示すものである。図１において、１は送信側コンピュータ、２は送信側コンピュータ１を構成する記憶装置、３は通信媒介手段、４は受信側コンピュータ、５は受信側コンピュータを構成する記憶装置、６は受信側コンピュータと使用者との間のインターフェイスとなる表示装置である。
【００３８】
実施の形態１．
以上のように構成されたシステムに基づいて、以下、本発明の実施の形態１によるコンピュータグラフィックス・アニメーションデータ送受信生成方法について、図２を参照しながら詳細に説明する。
図２に示したように、全体の処理は、第１段階から第７段階で実行される。すなわち、第１段階は処理１，処理２，処理３で実行され、第２段階は処理４と処理５で実行され、第３段階は処理６で実行され、第４段階は処理７で実行され、第５段階は処理８で実行され、第６段階は処理９で実行され、第７段階は処理１０と処理１１で実行される。
【００３９】
上記処理１はアニメーションデータの作成を行なう処理で、処理２はアニメーションデータの編集を行なう処理、処理３はアニメーションデータの記憶装置２への保存を行なう処理、処理４はアニメーションデータの送信を行なう処理、処理５はアニメーションデータの受信を行なう処理、処理６は記憶装置５への保存を行なう処理、処理７は後述する環境形状データの初期配置を行なう処理、処理８は当該時刻における骨格構造の位置と形態を算出する処理、処理９は骨格構造に物体（人間）の形状データをバインドする処理、もしくは物体の表面形状データを生成する処理、処理１０は指定されたシェーディング方法でレンダリングを行なう処理、処理１１はレンダリングされたコンピュータグラフィックス画像を表示装置６に表示する処理、処理１２は終了命令が発効されたか否か判定する処理である。処理１から処理４については、送信側コンピュータ１によって記憶装置２を用いながら実行され、通信媒介手段３によってアニメーションデータを転送後、処理５から処理１２までが受信側コンピュータ４によって、記憶装置５と表示装置６を用いながら実行される。
【００４０】
上記処理１で作成されるアニメーションデータの構成は、物体に形状をバインドする場合には、図６の(a) に示したように、骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、時系列動きデータである。また、骨格構造に合わせて物体の表面形状を生成する場合には図６の(b) に示したように、骨格構造、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、時系列動きデータとなる。以下、各項目について説明を行なう。
【００４１】
まず、骨格構造について用語の説明から行なう。複数のサイト（骨格端部）をリンク（３次元ベクトル）によって接続したものをセグメントと呼び、特に、２つのサイトをリンクで接続したものをスケルトン（骨）と呼ぶ。定義から判るように、セグメントはスケルトンに分解できる。セグメント（スケルトン) とセグメント（スケルトン）をサイト間で接続した部分をジョイント（関節）という。
【００４２】
これらセグメントやスケルトン、ジョイントによって記述された構造物を骨格構造物という。骨格構造物を動かすためには、骨格構造物全体の位置と向きを決めるための局所座標系（１点と互いに直交する３つのベクトル）が必要で、これをルートという。
つまり、ルートの位置（局所座標系の原点）によって骨格構造物の全体座標系における位置を規定し、局所座標系の座標軸を定義する単位ベクトルによって、骨格構造物の正面方向、上方向、横方向を規定する。ルートが骨格構造物を規定するセグメントの１つに属しているものとすると、後述するように、サイト位置（ジョイント位置）は各セグメント毎に定義した局所座標系で規定し、この局所座標系間の変換列によって全体座標系における位置を規定する。従って、ルートがセグメントの１つに属していれば、そのセグメントのサイトやジョイントはルートの局所座標系で記述できるので、属さない場合に比べ変換列が１つ少なくて済む。従って、ルートはサイトの特別なものと考えても良い。
【００４３】
以上の関係を図７(a) ，(b) に示す。また、具体例として、人間を骨格構造物で示したものを図７の(c) に示す。
図７(c) では階層化して骨格構造物を示している。上位階層の骨格構造物（粗モデル骨格構造物）では、下位階層の骨格構造物（詳細モデル骨格構造物）に比べてセグメント数、ジョイント数が少ないので、下位階層の骨格構造物（詳細モデル骨格構造物）に比べ動きの自由度、滑らかさに欠けるが、コンピュータグラフィックス・アニメーションをする場合の計算量や時系列動きデータ量は少なくなる。従って、データ量や受信側コンピュータの性能、アニメーションの状況（視点が遠い場合）等を考慮して使い分けることによって有効活用が図れる。図７(c) において、括弧なしの名前はジョイント名で、括弧つきの名前はセグメント（スケルトン）名である。
【００４４】
また、端部を特にエンドサイトと呼んでいる。但し、これらの名前は識別子であるので、識別さえできれば記号化しても構わない。サイト名の記述の仕方については、定義からジョイントは２つのサイトによって定義されるので、これら２つのサイトを比べた時に、ルートに近い方にジョイント名に「サイト０」を、遠い方に「サイト１」を付加することで、サイトに名前をつけられる。図７(c) では右肘についてのみ記述しており、それ以外については省略している。
【００４５】
このような骨格構造物は木構造による記述が可能である。図８は図７(c) に示したものを木構造で図示したものである。但し、図８中のセグメントでは、ジョイントやエンドサイトに相当するサイトは、除外している（もしくは二重に使用していると考えて記述していない）。但し、ここで採用した木構造の図示の仕方は、以下の通りである。
【００４６】
（１）ルートとルートの属するセグメントを定める。
（２）ルートを基準にジョイントを近い方から辿っていき、辿ったジョイントとジョイント間をセグメントで繋ぐ。
（３）エンドサイトに迄いったら、辿っていない別の経路に対して同様の操作を繰り返す。
【００４７】
骨格構造が木構造で示せるので、リスト構造の形式で記述ができる。この記述形式は１階層の場合には、以下の処理で実現できる。
（１）セグメントの定義：セグメント名を記述し、セグメントを規定するサイト名とその初期状態における位置ベクトルを記述する。リンクはこの位置ベクトルで表される。この位置ベクトルの表現の仕方はセグメント毎に定義される局所座標系による成分表示や、局所座標系のある軸上の単位ベクトルをサイトの位置ベクトルに変換する４×４行列（同次座標形式）によって行なうことができる。
但し、局所座標系の原点は、このセグメントに属するサイトの中、ルートに経路的に近いジョイントを規定するサイトに定める（ルートが属しているセグメントの場合はルートを原点とする）。動力学などを扱う場合を考慮して、その他、質量や慣性テンソル、重心位置を付加記述してもよい。但し、この場合には後述のジョイント角の定義には注意する必要がある。記述順序としては、木構造のルートから末端へとする方が望ましい（見易い）。
【００４８】
（２）ジョイントの定義：ジョイント名とジョイントを規定する２つのサイト名、ジョイントの種類と自由度数によって定義する。ジョイントの種類は、回転系のものとスライド系のものに分けられ、自由度数とは回転やスライドを行なうためのパラメータの数である。３次元空間での運動を扱うので、回転もスライドも最大自由度数は各々３である。また、この自由度数は、後述のジョイントの回転角の定義の仕方にも依存する。
【００４９】
（３）ルートの定義：サイトによって定義する時には、セグメント名とサイト名によって記述する。そうでない場合には、ルートから経路を辿る時の最も近いセグメント名とサイト名、ルートの規定する局所座標系におけるこのサイトの位置ベクトルを記述する。注意することは、サイトの位置ベクトルを記述した時点でルートの局所座標系が規定されたということである。
この他、データのロードチェックを行なうために、総セグメント数やサイト数、ジョイント数を付加記述しておく。
【００５０】
多階層の場合の記述形式は、上記の単階層の場合を使って、以下の処理で実現できる。
（１）親階層の骨格構造の記述
（２）子階層の記述の始まりの識別子（詳細骨格構造の記述の識別子）と使用する条件の記述。
（３）子セグメントの定義：上記単階層の場合の記述の他に、親セグメント名を加筆する。
（４）子ジョイントの定義：上記記述形式と同様。
（５）ルートの定義：子階層表現に変わった時に、ルートの変更がある場合には上記要領で記述する。そうでない場合は変更なしの識別子を記述。
（６）更に階層が続く場合には、（２）〜（５）の処理を繰り返す。但し、親子関係は、直前階層との間で結ぶ（２階層以上飛んだ記述は禁止）。
【００５１】
以上の記述形式を使って骨格構造の記述を行なう。具体的な記述は以下の通り。
（１）骨格構造名の記述
（２）具体的な骨格構造の記述（上記記述形式）。但し、別ファイルに記述している場合にはファイル名を記述する。
上記に加え、処理９で骨格構造物の物体の表面形状を生成する場合には、以下の（３）を追記する。
【００５２】
（３）セグメント毎に発生する物体表面形状を定義するための曲面のコントロールポイントの座標を当該セグメントの局所座標系で記述する。その際、隣接するセグメント間の境界におけるコントロールポイントを共有化しておくとジョイントが稼働した時の断裂が防げる。または、ジョイント部には断裂を防ぐためにセグメント部とは別に曲面形状を定めておく（図１２参照）。具体的には、前述の場合には、
（セグメント名）（コントロールポイント座標値列）,...
となり、後述の場合には、
（セグメント名）（コントロールポイント座標値列）（ジョイント名）（コントロールポイント座標値列または球ならば半径）,...
となる。
【００５３】
次に、処理９で物体形状を骨格構造にバインドする場合の形状データと環境の形状データについて説明する。
骨格構造に対して表面形状をバインドする場合には、バインドする物体の形状を記述する（図６(a) の場合）。バインドする物体の形状にしろ、環境の形状にしろ、一般に３次元コンピュータグラフィックスでは、物体の形状は、ポリゴン（多角形平面）、メッシュ（三角形メッシュ、四角形メッシュ）、プリミティブ形状で定義される。プリミティブ形状とは、立方体や球などの形状で、一般に空間的に対称性のある基本形状のことをいう。
【００５４】
どの物体の形状をプリミティブとするかは、仕様に依存する。この他、B-スプライン，ベジェなどで定義される曲面や、メタボールと呼ばれるエネルギー（ポテンシャル）境界面によって、物体形状を定義することもある。単純な形状の場合には、単階層で形状が定義される。その際には、物体座標系と呼ばれる局所座標系を用いる。複雑な図形の場合には、部品形状を各部品毎に決まる局所座標系で構成し、それらの部品を物体全体を表す局所座標系に変換する写像によって全体を構成する。部品自体が多階層の場合には、前述のことを繰り返すことになる。
【００５５】
環境形状の場合は、部品の局所座標系は適当で良いが、バインドする形状の場合には骨格構造物のセグメントに対応する局所座標系で部品を定義する必要がある。物体の形状を自分で定義する場合には、アニメーションデータの作成の際に部品をセグメントの局所座標系で構成していく。市販の物体の形状（事前からある物体の形状）を用いる場合には、アニメーションデータの編集の際に、元来使われていた局所座標系をセグメントの局所座標系へ変換する写像（アフィン変換）を求める。この変換の算出方法としては、部品の形状を構成するポリゴンやメッシュの代表点（９点以上）をセグメントのどこに配置するかを指定し、元の位置との対応関係を表す連立方程式を解くことで求めることができる。
【００５６】
物体の形状の記述の仕方の具体例を以下に示す。
（１）全体物体形状の名前の記述。
（２）部品形状の名前の記述。
（３）部品形状を構成するポリゴンやメッシュなど上記に示したものによって記述する。具体的には、ポリゴンやメッシュの場合は頂点や節点の３次元座標値の列となる。但し、別ファイルに記述している場合にはファイル名を記述する。プリミティブの場合には、プリミティブの名前と中心位置（代表位置）の座標、スケール変換量を記述する。
【００５７】
各々の構成形状には対応する属性データとマッピング座標を記述する。但し、プリミティブ形状の場合は、マッピング座標は固定化できるので、固定化している場合には不要である。
最後に部品全体を表す局所座標系への変換行列を記述する。但し、バインドする形状の場合には、この変換行列の代わりにバインドするセグメント名を記述する。
【００５８】
（４）上記（２）と（３）の処理を必要分だけ繰り返す。
骨格構造物がジョイント稼働したときに、バインド形状がジョイント部で断裂を起こす。これを防ぐための方法としては、ジョイント部に球などのプリミティブ形状を配置しておくと良い（図１１参照）。これは、受動側コンピュータで、描画する時に自動付加してもよいが、明示的に先に与えておくこともできる。その場合には、上記に、
（５）ジョイント名とそこに配置するプリミティブ形状名、スケール量を付加記述する。但し、このジョイントに対するバインドは、ジョイント位置に対応するプリミティブ内部の点（例えば重心）が規定されているものとする。
また、断裂を防ぐその他の方法としては、２つのセグメントにバインドする部品形状の境界部を可変として、ジョイントの変化に対応して境界を変化させ必ず接続させるという方法もある。
【００５９】
この他、概形記述と詳細記述とを併用したい場合には、以下のように記述する。
（１）全体物体形状の名前の記述。
（２）概形部品形状の名前の記述。
（３）概形部品形状を構成するポリゴンやメッシュなど上記に示したものによって記述する。具体的には、ポリゴンやメッシュの場合は頂点や節点の３次元座標値の列となる。プリミティブ形状の場合には、プリミティブ形状の名前と中心位置（代表位置）の座標、スケール変換量を記述する。
各々の構成形状には対応する属性データとマッピング座標を記述する。但し、プリミティブ形状の場合は、マッピング座標は固定化できるので、固定化している場合には不要である。
【００６０】
最後に部品全体を表す局所座標系への変換行列を記述する。但し、バインドする形状の場合には、この変換行列の代わりにバインドするセグメント名を記述する。
（４）詳細記述の識別子と使用条件の記述。
（５）詳細部品形状の名前の記述。
（６）詳細部品形状の構成の記述（上記（３）と同様）。
（７）（２）〜（６）を必要分だけ繰り返す。
属性データとして記述するのは、物体の反射率（鏡面成分、拡散成分）や透明度、テクスチャデータ（色データの分布）、バンプデータ（法線ベクトルの成分分布または変位成分量の分布）や照度分布である。反射率や透明度については、定数の場合と分布で与える場合とがあり、光源の色毎(RGBやYCbCr 等) に与えることもできる。分布形のデータに対するマスクデータもこれに含まれる。
【００６１】
具体的な記述は以下の通りである。
（１）データ名または識別子の記述。
（２）データの種類の記述。
（３）分布の種類と分布サイズの記述。定数の場合は、矩形分布で、サイズは１とする。分布の種類は矩形分布や三角形分布などの基本形状に合わせたもの。
（４）データ（列）の記述。例えば、矩形分布の場合には、行列形式で記述する。但し、別ファイルに記述している場合にはファイル名を記述する。
【００６２】
光源データとしては、点光源の場合には初期位置と光源強度、減衰率、線光源の場合は端点の初期位置、方向ベクトル、光源強度、減衰率、長さ、面光源の場合は代表点の初期位置、法線ベクトル、光源強度、減衰率、形状定義、面積を与える。各光源において配光分布付きの場合には、上記以外に配光分布を与える。
【００６３】
具体的な記述は以下の通り。
（１）光源名又は識別子の記述。
（２）光源の種類の記述。
（３）初期位置の記述。
（４）光源強度の記述。
（５）減衰率の記述。
（６）線光源の場合には方向ベクトル、長さ、面光源の場合には法線ベクトル、形状定義（形状名または頂点座標）と面積を記述する。
（７）配光分布つきの場合は配光分布の記述。但し、別ファイルに記述している場合にはファイル名を記述する。
【００６４】
カメラパラメータとしては、初期位置、初期の視線ベクトル、アッパーベクトル（カメラの上方向を示すベクトル）焦点距離、画角を記述する。
具体的な記述は以下の通り。
（１）カメラ名又は識別子の記述。
（２）初期位置、初期の視線ベクトル、アッパーベクトル（カメラの上方向を示すベクトル）焦点距離、画角を記述する。
【００６５】
シェーディング方法としては、レンダリングを行なう際の具体的なシェーディングのアルゴリズム名（または識別子）を記述する。つまり、ワイヤーフレーム、フラットシェーディング、グローシェーディング、フォンシェーディング、レイトレーシング、照度マッピングなどの名前、もしくはそれに対応した識別子を記述する。但し、照度マッピングの場合は属性データとして照度分布が与えられている場合のみ使用可能である。優先順位を付けて複数記述することもできる。
【００６６】
優先順位は、受信側コンピュータの性能に応じて使い分けられるように、処理時間に関して付ける。
【００６７】
環境設定は、環境形状の初期配置を行なうためのデータで、アフィン行列によって記述する。具体的な記述は以下の通り。
（１）環境の形状物体の名前または識別子を記述する。
（２）アフィン変換行列を記述する。
（３）環境の形状物体数だけ（１）と（２）の処理を繰り返す。
【００６８】
環境管理制御方法は、物体（骨格構造物）の運動管理を行なう。但し、光源やカメラも運動する場合にはその管理も行なう。具体的な記述は以下の通り。
（１）骨格構造物（光源、カメラ）の名前または識別子の記述。
（２）対応する時系列動きデータの名前の記述。但し、別ファイルに保存されている場合には、そのファイル名も付記する。
（３）骨格構造物（光源、カメラ）の数だけ（１）と（２）の処理を繰り返す。
【００６９】
次に、時系列動きデータについて説明する。時系列動きデータは、基本的には骨格構造物の運動を記述したものであるが、その他、カメラや光源の運動に対する運きも記述する。
【００７０】
骨格構造物の場合については、リンク長が固定の場合はルートのアフィン変換の時系列データとジョイント角（回転量）の時系列データから構成される。固定でない場合は、後述のようなリンクに関する時系列データを付加する必要がある。ルートのアフィン変換の時系列データは、ルート位置、つまり骨格構造物全体が存在する位置と、回転量、つまり、骨格構造物全体の姿勢制御量からなる。ルート位置については、ワールド（全体）座標系の３次元座標値（３次元位置ベクトル）で与える。回転量については、ジョイント角と同様に様々な与え方がある。図９を使って、まずジョイント角（回転量）の代表的なものについて説明し、その後ルートの回転量について説明する。
【００７１】
図９(a) ，(b) は、各セグメントで定義されている局所座標系が、ルートの局所座標系と平行な（すなわち、ｘ，ｙ，ｚ各軸の単位ベクトルがリンクと一致する）場合に使用するジョイント角（回転量）である。図９(a) については、骨格構造物の初期状態に対して、リンクをｘ軸、ｙ軸、ｚ軸周りに回転した時に現在時刻のリンク状態になるように回転量を与えるものである。または、骨格構造物のその直前の時刻の状態に対して、リンクをｘ軸、ｙ軸、ｚ軸周りに回転した時に現在時刻のリンク状態になるように回転量を与えるものである。回転の順番によって、回転量は変わるので、回転の順序も規定しておく必要がある。図９(b) は極座標表示によるもので、リンクのｚ軸周りの回転量とリンクとｚ軸とのなす角によって与えられる。どちらの方法も、リンク長が固定でない場合は、各時刻におけるリンク長の時系列データまたは、リンク長のその直前の時刻に対する変化量の時系列データを与える必要がある。
【００７２】
図９(c),(d) でジョイント角（回転量）を与える場合は、セグメントは全てスケルトンで構成されていなければならない。この時、図９(c) はオイラー角で与えるもので、図９(d) はヨー、ロー、ピッチで与えるものである。いずれも、リンクの初期状態に対して、現在のリンク状態にするためのオイラー角、ヨー、ロー、ピッチの角度量で時系列データが与えられる。但し、この場合は、初期状態においてセグメントの局所座標系のいずれかの軸はリンクと一致しており（図９(c),(d) ではｚ軸が一致）、各時刻毎にリンクと同様に局所座標系も移動することになる。従って、この局所座標系で表示したサイトの位置はリンク長が固定ならば不変である。リンク長が固定でない場合は、ジョイントの回転の他に、ジョイントのスライドが起こっていると考える（いわゆるロボット工学におけるスライド関節）。この他に、ジョイント角（回転量）の与え方としては、ロボット工学の分野で有名なDH(Denavit-Hartenberg)表記法がある。但し、いずれの方法も各ジョイントの自由度に応じて角度が決まる（全ての回転が可能だと３自由度）。また、回転の順番によって各回転量が変わるので、順番を規定しておく必要がある。
【００７３】
ルートの回転量としては、図９(a) もしくは図９(b) の方法で与える。つまり、全体座標系をルートの定める局所座標系に原点が重なる様に平行移動した時に、図９(a) であれば、全体座標系がルートの局所座標系と一致するようなｘ軸、ｙ軸、ｚ軸周りの回転変換における回転量として与える。図９(b) の場合は、全体座標系に対するルートの局所座標系の各軸のｚ軸周りの回転量、及び、ｚ軸とのなす角でルートの回転量を与えることになる。
【００７４】
以上のように、骨格構造物に対する時系列動きデータは、ルートに対する上記のベクトル量と、セグメントに対するベクトル量によって構成されるがそのデータの記述方法には以下の２つの方法がある。
（１）各時刻毎に上記ベクトル量を全て記述。
（２）各ベクトル量を全ての時刻に渡って記述。
各時刻毎に描画が行なわれるので、データをロードすることに鑑みていうと、（１）の場合は局在した領域に対するアクセスで済むが、（２）の場合は、ある程度分散した領域に対するアクセスになる。その点から考えると、（１）の記述方法の方が優れていると考えられる。
【００７５】
カメラの運動に対する時系列動きデータとして与えるものは、各時刻におけるカメラ位置、視線ベクトル、アッパーベクトルを記述した（３＋３＋３）次元ベクトル、または、アフィン変換行列、焦点距離、画角である。これにより、いわゆるモーションコントロールカメラよりも優れたカメラワークを模擬することが可能になる。
光源の運動に対する時系列動きデータとして与えるものは、基本的には、上記に示した光源に関するデータ全てについて与えることができる。目的によって異なるが、例えば、点光源の場合であれば、各時刻における位置や光源強度を与えることで、蛍や夜光虫などの移動光源物体を表現できる。
【００７６】
以上のことから判るように、時系列動きデータの具体的な記述は以下の通りに行なう。
（１）時系列動きデータ名の記述
（２）動きの種類（骨格構造物、カメラ、光源）の記述
（３）各時刻毎のベクトル量の記述。但し、何に（セグメント名やカメラ位置、画角など）対するベクトル量なのかを示す名前や識別子も付加記述する。また、データ形式が混在する場合には、データ形式（ベクトルサイズや行列サイズ）に対する識別子も付加する。
【００７７】
なお、これら実際の時系列動きデータの作成は、順、逆キネマティクスや順、逆ダイナミクス、動作の最適化計算、モションキャプチャなどによって行なう。また、以上の時系列動きデータは、時間的に長い動きの場合には、様々な動きを複数組み合わせて作る（図１０(a) 参照）。
なお、アニメーションデータは、各項目毎に、該項目を識別できる領域（開始識別子と終了識別子で囲まれた領域）に記述するか、該項目を示すファイル名のついたファイルに記述する。
【００７８】
処理２では前記のアニメーションデータの編集を行なう。ここでいう編集とは、目的とするコンピュータグラフィックス・アニメーションを行なうための確認と、データの調整を意味する。骨格構造物へバインディングする物体形状に関する編集については前述の通りである。環境の形状については、目的の環境の形状が作られているかを確認したり、環境設定通り配置されているかを確認し、適時修正を加える。時系列動きデータに関しては、特に時間的に長い動きの場合には、前述のように時系列動きデータは様々な動きを複数組み合わせて作るので、その接続の調整や目的通りの動きを行なっているかどうかの確認を行ない、適時修正する。これらの確認時に、属性データ光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法の確認も同時に行なう。
【００７９】
処理３では、前述の確認修正の済んだアニメーションデータを記憶装置２に保存する。
処理４，処理５では、記憶装置２に保存されたアニメーションデータの送受信を行なう。送受信はhttpやftp によって行なうことができるので、それらのプロトコルの形式に則した形で、送信側コンピュータ１から受信側コンピュータ４へ、通信媒介手段３を介して行なう。
処理６では受信したアニメーションデータを受信側コンピュータ４の記憶装置５に保存する。
【００８０】
処理７から処理１２にかけての処理は、受信側コンピュータ４でのコンピュータグラフィックス・アニメーション画像の生成を行なうものである。以下その説明を行なう。
処理７では、アニメーションデータの環境設定に記述されている環境の形状物体の名前または識別子によって、処理する環境の形状物体の判別を行ない、続いて記述されているアフィン行列によって、物体座標系で表されている環境形状データを変換することにより、ワールド（全体）空間における所定の位置へ配置する。
つまり、空間的には配置していることになるが、実際の処理は座標変換である。以上の処理を全ての環境の形状物体に対して行ない、変換したデータを記憶装置５に一旦保持しておく。
【００８１】
処理８では、アニメーションデータの環境管理制御方法に記述されている骨格構造物（光源、カメラ）の名前または識別子から、処理する骨格構造物（光源、カメラ）の判別を行ない、続いて記述された時系列動きデータの名前、もしくはファイル名で示された時系列動きデータから、当該時刻における骨格構造物（光源、カメラ）のベクトル量（状態データ）を読みとる。読みとったベクトル量により、骨格構造物の場合ならば、当該時刻における位置への移動（変換）を行ない、当該時刻における骨格状態（姿勢）に変形する。これは、前述のセグメント毎に定義されている局所座標系とワールド（全体）座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源（カメラ）の場合ならば、時系列動きデータに記述された当該時刻における位置に光源（カメラ）を移動し、当該時刻の光源（カメラ）パラメータに変更する。以上の求めたデータは一旦記憶装置５に保持しておく。
【００８２】
処理９では、記憶装置５に保持しておいた当該時刻の骨格構造物の位置と骨格状態（姿勢) に合わせて、対応する物体形状をバインドするか、もしくは物体の表面形状を生成する。物体形状をバインドする時には、図１１に示したようにセグメント毎にグルーピングされた部品形状を先の骨格構造物の位置と骨格状態（姿勢）を算出する際に用いた、全体（ワールド）座標系と局所座標系の変換、局所座標系間の変換系列によって変換する。
【００８３】
また、図１１に示したようにジョイント部に球などの形状をバインドすることにより、部品形状の断裂を塞ぐ。球の場合ならば、ジョイント位置を中心とした、部品形状とジョイントの可動範囲によって決まる半径で球を発生させる（もしくは物体座標系で定義された球を当該位置にアフィン変換する）。バインドした物体形状のデータ（変換したデータ）は一旦記憶装置５に保持しておく。
【００８４】
物体の表面形状を発生する場合については、前記のように、アニメーションデータの骨格構造に追記された、セグメント毎に定義された部品の曲面を発生するためのコントロールポイントを、局所座標系の全体（ワールド）座標系への変換と、局所座標系間の変換系列によって変換し、変換したコントロールポイントに基づいて曲面を発生する。
【００８５】
発生した曲面は、そのままで使用されるか、曲面を近似したメッシュとして使用される場合とに分けられる。曲面のままの場合は計算量が増大するため余り一般的でなく、レンダリング方法も限られてしまう（レイ・トレーシングに準ずる方法）ので、ここではメッシュ化する場合ついて述べる。コントロールポイントからメッシュを発生する方法は、曲面方程式を定義する２つの媒介変数を発生したい節点数に離散化し、その離散値を曲面方程式に代入するとそれに対応した曲面上の点が求まる。この点をメッシュの節点とすればよい。コントロールポイントがセグメント間で共有化されている場合には全てのセグメントについて、メッシュ（曲面）を生成し、これを記憶装置５に保持しておく。ジョイント部に断裂を防ぐための形状を発生する場合にはそれも記憶装置５に保持しておく。但し、発生の仕方はセグメントの場合と同様である。図１２は以上の処理結果を摸式的に示した図である。
【００８６】
処理１０ではアニメーションデータに記述されたシェーディング方法によって、一旦記憶装置５に保持された環境形状の配置データ、光源データ、カメラデータ、バインドした物体の形状データまたは発生した物体の表面形状データを用いて、レンダリングを行ない当該時刻における画像を生成する。レンダリングは通常コンピュータグラフィックスで行なうのと同様で、生成された画像データはピクセル（画素）毎の色データ(RGB値）である。生成した画像データは記憶装置５に一旦保持しておく。
処理１１では前述の記憶装置５に保持しておいた画像データを通常コンピュータグラフィックスで行なっているのと同様の方法で表示装置に表示する。
【００８７】
処理１２では終了命令が発効されているかどうかの判定を行なう。終了命令は、処理８から処理１１の間に発効し、発効された場合には割り込み処理され、記憶装置５に設けた領域に発効を示す識別記号を代入しておく。この識別記号を見ることで、終了命令が発効されたか否かの判別が行なえる。
処理１２で終了命令が発効されていたと判別された場合には、これで処理が終り、されていない場合には処理８から処理１２迄を繰り返す。
なお、違和感なくコンピュータグラフィックス・アニメーションを際限なく行なうためには、時系列動きデータを周期化（始めと終りを同じにする。サイクルは時系列動きデータの長さ）しておけばよい。
【００８８】
実施の形態２．
次に、本発明の実施の形態２によるコンピュータグラフィックス・アニメーションデータ送受信生成方法について、図３を参照しながら詳細に説明する。
図３に示すように、全体の処理は、第１段階から第９段階で実行される。すなわち、第１段階は処理２１と処理２２、処理２３で実行され、第２段階は処理２４と処理２５で実行され、第３段階は処理２６で実行され、第４段階は処理２７で実行され、第５段階は処理２８で実行され、第６段階は処理２９で実行され、第７段階は処理３０と処理３１で実行され、第８段階は処理３２で実行され、第９段階は処理３３と処理３４で実行される。
【００８９】
上記処理２１はアニメーションデータの作成を行なう処理で、処理２２はアニメーションデータの編集を行なう処理、処理２３はアニメーションデータの記憶装置２への保存を行なう処理、処理２４はアニメーションデータの送信を行なう処理、処理２５はアニメーションデータの受信を行なう処理、処理２６は記憶装置５への保存を行なう処理、処理２７は環境形状データの初期配置を行なう処理、処理２８は当該時刻が基本行動期間内か、接続期間内かの判定を行なう処理、処理２９は基本行動期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理３０は接続期間内と判定された場合に接続動作を生成する処理、処理３１は接続期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理３２は骨格構造に物体（人間）の形状データをバインドする処理、もしくは物体の表面形状データを生成する処理、処理３３は指定されたシェーディング方法でレンダリングを行なう処理、処理３４はレンダリングされたコンピュータグラフィックス画像を表示装置に表示する処理、処理３５は終了命令が発効されたか否か判定する処理である。
【００９０】
さらに上記処理２１から処理２４については、送信側コンピュータ１によって記憶装置２を用いながら実行され、通信媒介手段３によってアニメーションデータを転送後、処理２５から処理３５までが受信側コンピュータ４によって、記憶装置５と表示装置６を用いながら実行される。
【００９１】
上記処理２１で作成されるアニメーションデータの構成は、物体に形状をバインドする場合には、図６(c) に示したように、骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。また、骨格構造に合わせて物体の表面形状を生成する場合には図６(d) に示したように、骨格構造、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。
【００９２】
骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定に関しては、上述した実施の形態１の場合と同じなので、ここではその詳細な説明を省略し、基本行動、行動ルール、時系列基本動きデータ、環境管理制御方法について述べる。
【００９３】
基本行動とは、骨格構造物の一連の動きを分割した時の単位となる動きである。例えば、座る，立つ，歩行，蹴るなどを基本行動といい、名称または識別子によって判別可能にしておく。これらの基本行動への分割は経験的な分割であるため、ある程度、使用者によって分割単位が異なるが、以下の処理では分割単位（分割方法）に対する依存性はないので、どのような分割単位でも構わない。基本行動は、時系列基本動きデータと１対１に対応しており、この対応関係を記述したものが基本行動の記述である。また、基本行動（時系列基本動きデータ）の行動時間も追記する。具体的な記述は以下のようになる。
（１）基本行動の名前または識別子の記述。
（２）対応する時系列基本動きデータの名前または識別子の記述。
（３）上記時系列基本動きデータの時間（基本行動時間）の記述。
（４）（１）から（３）の処理を基本行動の数だけ繰り返す。
【００９４】
なお、文頭に全基本行動数を明記しておくと管理上、都合が良い。
【００９５】
行動ルールは、実際に骨格構造物が行動する場合の、これらの基本行動を組み合わせたシーケンスと、基本行動間の接続時間を記述したものである。具体的な記述は以下の通り。
（１）識別番号と第１の基本行動の名前または識別子の記述。
（２）識別番号と第１の基本行動と第２の基本行動の接続時間（接続フレーム数）の記述。
（３）識別番号と第２の基本行動の名前または識別子の記述。
時系列基本動きデータは、上記の説明からも解るように、基本行動に対応した、前述の時系列動きデータの時間的に短いもの（単位化を図ったもの）で、記述形式は時系列動きデータの場合と全く同様である。
【００９６】
以上の基本行動，行動ルール，時系列基本動きデータは、光源，カメラにも適用することができる。
環境管理制御方法は、物体（骨格構造物）の運動管理を行なう。但し、光源やカメラも運動する場合にはその管理も行なう。具体的な記述は以下の通り。
（１）骨格構造物（光源、カメラ）の名前または識別子の記述。
（２）対応する行動ルールの名前の記述。但し、別ファイルに保存されている場合には、そのファイル名も付記する。
（３）骨格構造物（光源，カメラ）の数だけ（１）と（２）の処理を繰り返す。
【００９７】
処理２２では前記のアニメーションデータの編集を行なう。ここでいう編集とは、目的とするコンピュータグラフィックス・アニメーションを行なうための確認と、データの調整を意味する。骨格構造物へバインディングする物体形状に関する編集については前述の通りである。環境の形状については、目的の環境の形状が作られているかを確認したり、環境設定通り配置されているかを確認し、適時修正を加える。基本行動や行動ルール、時系列基本動きデータに関しては、基本行動の組合せの調整や、接続時間の調整や目的通りの動きを行なっているかどうかの確認を行ない、適時修正する。これらの確認時に、属性データ，光源データ，カメラパラメータ，シェーディング方法，環境設定，環境管理制御方法の確認も同時に行なう。
【００９８】
処理２３では本発明の第１の実施例の処理３と同様に行なう。
処理２４と処理２５は、本発明の第１の実施例の処理４、処理５と同様に行なう。
処理２６は本発明の第１の実施例の処理６と同様に行なう。
【００９９】
処理２７から処理３５にかけての処理は、受信側コンピュータ４でのコンピュータグラフィックス・アニメーション画像の生成を行なうものである。以下その説明を行なう。
処理２７は、本発明の第１の実施例の処理７と同様に行なう。
【０１００】
処理２８では、アニメーションデータの環境管理制御方法に記述されている骨格構造物（光源，カメラ）の名前または識別子から処理する骨格構造物（光源，カメラ）の判別を行ない、その骨格構造物が当該時刻において基本行動期間内か接続期間内かの判定を行なう。判定は、環境管理制御方法における骨格構造物名に続いて記述されている行動ルール名の行動ルールに示された接続時間と、その行動ルールに記述された基本行動名の基本行動に示された基本行動時間とから行なう。具体的には、その骨格構造物の第ｉの基本行動時間をBti(ｉ＝1,2,...)とし、第ｉの基本行動と第ｉ＋１の基本行動の接続時間をCti(ｉ＝1,2,...)、当該時刻をＴとしたときに次の手順で行なう。
【０１０１】
（１）Bt1+Ct1+...+Btn+Ctn ≦Ｔとなる最大のn(n=1,2,...)を求める。
（２）（１）でｎが存在するならば、dT=T-(Bt1+Ct1+...+Btn+Ctn)を求める。
（３）（２）においてdT≦Btn+１ならば、当該時刻は第n+1 の基本行動期間内の時刻dTの状態。但し、各基本行動は時刻０から始まっているものとする。
（４）（２）においてBtn+1<dTならば、当該時刻Ｔは第n+1 の基本行動と第n+2 の基本行動の接続期間の時刻dT-Btn+1の状態。但し、各接続動作は時刻０から始まっているものとする。
（５）（１）でｎが存在しない時は、
（５−１）dT≦Bt１ならば、当該時刻は第１の基本行動期間内の時刻dTの状態。
（５−２）Bt1<dTならば、当該時刻は第１の基本行動と第２の基本行動の接続期間の時刻dT-Bt1の状態。
【０１０２】
なお、上記（１）は骨格構造物毎に、終了した接続期間の識別番号を保持しておけば、それが求める最大のｎである。但し、識別番号は１から始まり、保持領域の初期状態は０とし、保持している識別番号が０の場合は求める最大のｎは存在しないと判断する。基本行動または接続期間における時刻を一旦記憶装置５に保存する。
【０１０３】
処理２９では、処理２８で基本行動期間内と判別された場合に、対応する時系列基本動きデータから、当該時刻における骨格構造物（光源，カメラ）のベクトル量（状態データ）を読み取る。読み取りの際には、記憶装置５に保存された上記基本行動における時刻を利用する。読みとったベクトル量により、骨格構造物の場合ならば、当該時刻における位置への移動（変換）し、当該時刻における骨格状態（姿勢）に変形を行う。これは、前述のセグメント毎に定義されている局所座標系とワールド（全体）座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源（カメラ）の場合ならば、時系列動きデータに記述された当該時刻における位置に光源（カメラ）を移動し、当該時刻の光源（カメラ）パラメータに変更する。以上の求めたデータは一旦、記憶装置５に保持しておく。
【０１０４】
処理３０では、処理２８で接続期間内と判別された場合に、接続動作を生成する。接続動作の生成方法について、図１０(b) を参照しながら説明する。求めたい接続動作の前後の基本行動に対応する時系列基本動きデータを前基本動きデータ、後基本動きデータとする。全基本動きデータは、時間tsであるとし、接続時間はte-ts であるとする。従って、後基本動きデータは時刻teから始まることになる。各時系列基本動きデータが時刻０から始まっているものとし、後基本動きデータは時間に関し、teだけ平行移動しておく。この前提のもとで、接続動作を次の手順で生成する。
【０１０５】
（１）前基本動きデータの後半のデータを用いて時刻teまでの後向き予測を行なう。この予測はベクトル量の各成分毎に行ない、後半部のデータを補間することで求める。補間はスプライン補間などの多項式補間や三角関数を規定とするチュビチェフ多項式などを用いる。成分ｉの予測曲線をAi(t) とする。
（２）後基本動きデータの前半部のデータを用いて時刻tsまでの前向き予測を行なう。この予測もベクトル量の各成分毎に行ない、前半部のデータを補間することで求める。成分ｉの予測曲線をBi(t) とする。
【０１０６】
（３）時刻tsで１、時刻teで０、単調減少、かつ微分可能な関数をφ(t) とするとき、時刻tsから時刻teにおける接続動作の時系列接続動きデータを、
Ai(t) φ(t)+Bi(t)(1-φ(t))
によって各成分毎に求める。具体的なφ(t) としては、例えば、
φ(t)=(1+cos( π(t-ts)/(te-ts)))/2
がある。
なお、（３）は時刻tsで０、時刻teで１、単調増加、かつ微分可能な関数をφ(t) とするとき、時刻tsから時刻teにおける接続動作の時系列接続動きデータを、
Ai(t)(1-φ(t))+Bi(t)φ(t)
によって各成分毎に求めてもよい。具体的なφ(t) としては、例えば、
φ(t)=(1-cos( π(t-ts)/(te-ts)))/2
がある。また、処理２８で一旦接続期間内と判定された場合は、時間te-ts の間は、接続動作が続くので、接続動作の生成は初めて続期間内に入った時にのみ行ない、接続動作が終了するまでの時系列接続動作データを生成し、それを記憶装置５に保持しておき、２回目以降は接続動作は生成せずに、記憶装置５から読み出すだけにしてもよい。更に、前向き予測曲線，後向き予測曲線は、各々の時系列基本動きデータで固定的なものなので、前もって接続時間の最大値分だけ計算して保持しておけば、接続の度に予測曲線を計算せずに済む。
【０１０７】
処理３１では、処理３０で生成した接続動作から、骨格構造物の場合ならば、当該時刻における位置への移動（変換）し、当該時刻における骨格状態（姿勢）に変形を行う。これは、前述のセグメント毎に定義されている局所座標系とワールド（全体）座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源（カメラ）の場合ならば、時系列動きデータに記述された当該時刻における位置に光源（カメラ）を移動し、当該時刻の光源（カメラ）パラメータに変更する。以上の求めたデータは一旦記憶装置５に保持しておく。
【０１０８】
処理３２では、記憶装置５に保持しておいた当該時刻の骨格構造物の位置と骨格状態（姿勢) に合わせて、対応する物体形状をバインドするか、もしくは物体の表面形状を生成する。この処理は本発明の第１の実施例の処理９と同様に行なう。
処理３３ではアニメーションデータに記述されたシェーディング方法によって、一旦記憶装置５に保持された環境形状の配置データ，光源データ，カメラデータ，バインドした物体の形状データまたは発生した物体の表面形状データを用いて、レンダリングを行ない、当該時刻における画像を生成する。この処理は本発明の実施の形態１で示した処理１０と同様に行なう。
【０１０９】
処理３４では前述の記憶装置５に保持しておいた画像データを通常コンピュータグラフィックスで行なっているのと同様の方法で表示装置に表示する。
処理３５では終了命令が発効されているかどうかの終了命令発効判定を行なう。この処理は本発明の実施の形態１で示した処理１２と同様に行なう。終了命令が発効されていない場合は、処理２８から処理３５迄を繰り返す。
なお、違和感なくコンピュータグラフィックス・アニメーションを際限なく行なうためには、行動ルールに記述する基本行動を周期化（始めと終りを同じにする。サイクルは時系列基本動きデータと接続動作のトータルの時間）しておけばよい。
【０１１０】
実施の形態３．
次に、本発明の実施の形態３によるコンピュータグラフィックス・アニメーションデータ送受信生成方法について、図４を参照しながら詳細に説明する。
図４に示すように、全体の処理は、第１段階から第１０段階で実行される。すなわち、第１段階は処理４１と処理４２、処理４３で実行され、第２段階は処理４４と処理４５で実行され、第３段階は処理４６で実行され、第４段階は処理４７で実行され、第５段階は処理４８で実行され、第６段階は処理４９で実行され、第７段階は処理５０で実行され、第８段階は処理５１と処理５２で実行され、第９段階は処理５３で実行され、第１０段階は処理５４と処理５５で実行される。
【０１１１】
上記処理４１はアニメーションデータの作成を行なう処理で、処理４２はアニメーションデータの編集を行なう処理、処理４３はアニメーションデータの記憶装置２への保存を行なう処理、処理４４はアニメーションデータの送信を行なう処理、処理４５はアニメーションデータの受信を行なう処理、処理４６は記憶装置５への保存を行なう処理、処理４７は環境形状データの初期配置を行なう処理、処理４８はイベントの発生の検出と基本行動の状態遷移に関する処理を行ない、処理４９は当該時刻が基本行動期間内か、接続期間内かの判定を行なう処理、処理５０は基本行動期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理５１は接続期間内と判定された場合に接続動作を生成する処理、処理５２は接続期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理５３は骨格構造に物体（人間）の形状データをバインドする処理、もしくは物体の表面形状データを生成する処理、処理５４は指定されたシェーディング方法でレンダリングを行なう処理、処理５５はレンダリングされたコンピュータグラフィックス画像を表示装置に表示する処理、処理５６は終了命令が発効されたか否か判定する処理である。
【０１１２】
さらに上記処理４１から処理４４については、送信側コンピュータ１によって記憶装置２を用いながら実行され、通信媒介手段３によってアニメーションデータを転送後、処理４５から処理５６までが受信側コンピュータ４によって、記憶装置５と表示装置６を用いながら実行される。
【０１１３】
処理４１で作成されるアニメーションデータの構成は、物体に形状をバインドする場合には、図６(c) に示したように、骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。また、骨格構造に合わせて物体の表面形状を生成する場合には図６(d) に示したように、骨格構造、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。
【０１１４】
バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、基本行動、時系列基本動きデータに関しては、上述した実施の形態２で説明したのと同じなので、ここではの説明を省略し、骨格構造、行動ルール、環境管理制御方法について述べる。
【０１１５】
骨格構造に関しては、上述した実施の形態１，２における骨格構造に加え、外界に対するセンシングに関する項目を追記する。センサは視覚に対するものと触覚に対するものとを設ける。視覚に対しては、目に当たる部分（サイト）に相当する部分を中心にした、球または球の大円における扇型を組み合わせた３次元領域などをセンシング領域として定義する。触覚に関しては、手先などのサイトを中心とした球領域などをセンシング領域として定義する。従って、具体的には以下の記述を実施の形態１，２における骨格構造の記述に追記する。
（Ａ）センサの種類（視覚または触覚）の識別子の記述。
（Ｂ）中心サイト名の記述。
（Ｃ）領域の定義の記述。
行動ルールは、実際に骨格構造物が基本行動を組み合わせて行動する場合に、これらの基本行動間の状態遷移とその状態遷移を起こすイベント、状態遷移時の接続動作の接続時間を記述する。ここでいうイベントとは、前述の骨格構造に対するセンシングに関するものと、マウスやキーボードなどの外部入力によるものとがある。
【０１１６】
図１３に基本行動の状態遷移図の例を示した。行動ルールの記述はこの状態遷移図を記述したものである。具体的な記述は、以下の通りとなる。
（１）第１の基本行動の名前または識別子の記述。イベントが発生しない場合に、その基本行動を繰り返した状態で待機しているタイプの基本行動か、無条件に別の基本行動へ遷移するタイプの基本行動かのタイプ識別子も付記する。
（２）状態遷移の記述。
（２−１）イベントの識別子の記述。
（２−２）イベント発生後の遷移先の基本行動の名前または識別子の記述。行き先が無条件で別の基本行動へ遷移するタイプの基本行動の場合は、その戻り先の基本行動の名前または識別子も記述する。
（２−３）接続時間（接続フレーム数）の記述。行き先が無条件で別の基本行動へ遷移するタイプの基本行動の場合は、その戻り先の基本行動に対する接続時間も記述する。
（３）第２の基本行動の名前または識別子とタイプ識別子の記述。
【０１１７】
環境管理制御方法は、物体（骨格構造物）の運動管理とイベント管理を行なう。但し、光源やカメラも運動する場合にはその管理も行なう。具体的な記述は以下の通り。
（１）骨格構造物（光源、カメラ）の名前または識別子の記述。
（２）対応する行動ルールの名前の記述。但し、別ファイルに保存されている場合には、そのファイル名も付記する。
（３）使用するイベント識別子の記述。無条件で別の基本行動へ遷移するタイプの基本行動を含む場合は、それを示す識別子を記述する。
（４）骨格構造物（光源、カメラ）の数だけ（１）から（３）の処理を繰り返す。
（５）イベント識別子とそのイベント発生の判定条件の記述。全イベントについて記述する。
【０１１８】
処理４２では前記のアニメーションデータの編集を行なう。ここでいう編集とは、目的とするコンピュータグラフィックス・アニメーションを行なうための確認と、データの調整を意味する。骨格構造物へバインディングする物体形状に関する編集については前述の通りである。環境の形状については、目的の環境の形状が作られているかを確認したり、環境設定通り配置されているかを確認し、適時修正を加える。基本行動や行動ルール，時系列基本動きデータに関しては、基本行動の組合せや遷移の調整、接続時間の調整、目的通りの動きを行なっているかどうかの確認を行ない適時修正する。これらの確認時に、属性データ，光源データ，カメラパラメータ，シェーディング方法，環境設定，環境管理制御方法の確認も同時に行なう。
【０１１９】
処理４３は上述した実施の形態１の処理３と同様に行なう。
処理４４と処理４５は、上述した実施の形態１で示した処理４、処理５と同様に行なう。
処理４６は上述した実施の形態１で示した処理６と同様に行なう。
処理４７から処理５６にかけての処理は、受信側コンピュータ４でのコンピュータグラフィックス・アニメーション画像の生成を行なうものである。以下その説明を行なう。
【０１２０】
処理４７は実施の形態１に示した処理７と同様に行なう。
処理４８では、イベントの発生の検出と基本行動の状態遷移に関する処理を行なう。
処理の前提として、各骨格構造物に対して、現在の状態を書き込む領域が記憶装置５に確保されているものとする。この領域には、現在の状態が、ループで基本行動をしている場合には、動作している基本行動の名前または識別子と時系列基本動きデータにおける現在の状態の時刻を保持し、遷移中の場合には、遷移中を示す識別子と遷移前後の基本行動の名前または識別子と遷移開始時刻、接続時間を保持する。遷移中であることの書き込みはイベントの発生直後である当該時刻から行なう。
【０１２１】
但し、無条件で別の基本行動に移るタイプの基本行動へ遷移する場合は、遷移中を示す識別子（前述のものとは異なる識別子）と、元の基本行動、経由する基本行動と経由後の基本行動の名前または識別子と、経由する基本行動前後の接続時間を保持し、イベントの発生直後（当該時刻）から経由後の基本行動に移るまでを遷移中とする。
【０１２２】
イベントの検出については、まずアニメーションデータの環境管理制御方法に記述されたイベント発生の判定条件を全てチェックし、該当するイベントを見つけ、そのイベント識別子を保持する。保持したイベント識別子に対応する骨格構造物（光源、カメラ）と行動ルールを環境管理制御方法の記述から見つけ、その行動ルールの名前または識別子を保持する。次に、基本行動の遷移については、保持した行動ルールの名前または識別子に対応する行動ルールを見て行なう。なお、この処理は記憶装置５で行ない、結果は前述の骨格構造物毎に設けられた現在の状態を示す領域に書き込み保持する。また、現在の状態が遷移中の骨格構造物については、イベントの発生は無視する。
【０１２３】
処理４９では、処理する骨格構造物（光源，カメラ）が当該時刻Ｔにおいて基本行動期間内か接続時間内かの判定を行なう。この判定は、前述の各骨格構造物毎に設けられた現在の状態を見て行なう。状態遷移中でないものについては、保持されている基本行動の期間内と判定する。状態遷移中の骨格構造物については、無条件で別の基本行動に移るタイプの基本行動へ遷移中であるか否かを判定し、そうでない場合は接続期間中であると判定し、接続時間をCt0 、遷移開始時刻をTs、当該時刻をＴとしたとき、接続期間中のT-Tsの状態と判定する。特に、T=Ts+Ct0のときには現在の状態を示す領域の遷移中基本行動の識別子を行き先の基本行動の名前または識別子に変更し、時系列基本動きデータにおける現在の時刻を−１にし、判定結果を基本行動期間内に変更する。
【０１２４】
無条件で別の基本行動へ移るタイプの基本行動へ遷移中の場合は、経由する基本行動の動作時間をBtとし、その前後の接続時間をCt0,Ct1 、遷移開始時刻をTsとし当該時刻をT(Ts<T≦Ct0+Bt+Ct1) としたときに次の手順で行なう。
（１）T<Ts+Ct0ならば、行きの接続動作の接続期間中の時刻T-Tsの状態。但し、各接続動作は時刻０から始まっているものとする。
（２）Ts+Ct0≦T<Ts+Ct0+Bt ならば、経由する基本行動期間中の時刻T-(Ts+Ct0)の状態。但し、基本行動は時刻０から始まっているものとする。
（３）Ts+Ct0+Bt ≦T ≦Ts+Ct0+Bt+Ct1 ならば、返りの接続動作の接続期間中の時刻T-(Ts+Ct0+Bt) の状態。特に、T=Ts+Ct0+Bt+Ct1 のときには、現在の状態を示す領域の遷移中の識別子を経由後の基本行動の名前または識別子に変更し、時系列基本動きデータにおける現在の状態を示す時刻を−１にし、判定結果を基本行動期間内に変更する。
【０１２５】
処理５０では、処理４９で基本行動期間内と判別された場合に、対応する時系列基本動きデータから、当該時刻における骨格構造物（光源，カメラ）のベクトル量（状態データ）を読み取る。読み取り方法は、記憶装置５に保存された、基本行動毎に確保された現在の時刻に１を加えた時刻のベクトル量を対応する時系列基本動きデータから読みとる。読みとった後は、現在の時刻を更新しておく。もし、現在の時刻が時系列基本動きデータが最大値となる時刻を越えた場合にはベクトル量を０とする（最大値となる時刻＋１の剰余）。こうすることによりトグル動作が可能となる。読みとったベクトル量により、骨格構造物の場合ならば、当該時刻における位置へ移動（変換）し、当該時刻における骨格状態（姿勢）に変形を行う。
【０１２６】
これは、前述のセグメント毎に定義されている局所座標系とワールド（全体）座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源（カメラ）の場合ならば、時系列動きデータに記述された当該時刻における位置に光源（カメラ）を移動し、当該時刻の光源（カメラ）パラメータに変更する。以上の求めたデータは一旦記憶装置５に保持しておく。
【０１２７】
処理５１では、処理４９で接続期間内と判別された場合に、必要に応じて接続動作を生成する。つまり、前述の説明のように、無条件で別の基本行動へ移るタイプの基本行動で遷移中と判定されている場合で、経由する基本行動期間中は接続動作を生成する必要はなく、経由する基本行動に対応する時系列基本動きデータを用いる。接続動作の生成のアルゴリズムは、基本的には実施の形態２で示した処理３０と同様であるが、ことなる点は前基本動きデータの途中で、後基本動きデータと接続する必要があると言うことである。従って、後向き予測曲線の生成方法が異なる。
【０１２８】
今、前基本動きデータが最大となる時刻をts、接続時間をtc、時刻Ｔ≦tsで接続動作を生成する必要が起きたものとする。この時、
（１）T=tsならば、実施の形態２の処理３０と同様。
（２）tc≦ts-Tならば、時刻Ｔからtc分の前基本動きデータ（まだ実行されていない残りのデータ）を後向き予測曲線として利用する。
（３）ts-T<tc ならば、時刻Ｔからtsまでの前基本動きデータと、実施の形態２の処理３０の方法で後向き予測曲線を時間tc-(ts-T) 分だけ生成したものを組み合わせて用いる。
【０１２９】
なお、前向き予測曲線については、実施の形態２の処理３０の箇所で説明したように、前もって計算したものを用いることができる。また、前基本動きデータの途中では、イベントの処理は行なわないのであれば（つまり、前基本動きデータが完了後接続処理に移る）、実施の形態２で示した処理３０と全く同様の方法で接続曲線を生成する。
【０１３０】
処理５２では、処理５１で生成した接続動作（経由中の場合は、経由する基本行動に対応する時系列基本動きデータ）から、骨格構造物の場合ならば、当該時刻における位置へ移動（変換）し、当該時刻における骨格状態（姿勢）に変形を行う。これは、前述のセグメント毎に定義されている局所座標系とワールド（全体）座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源（カメラ）の場合ならば、時系列動きデータに記述された当該時刻における位置に光源（カメラ）を移動し、当該時刻の光源（カメラ）パラメータに変更する。以上の求めたデータは一旦記憶装置５に保持しておく。
【０１３１】
処理５３では、記憶装置５に保持しておいた当該時刻の骨格構造物の位置と骨格状態（姿勢) に合わせて、対応する物体形状をバインドするか、もしくは物体の表面形状を生成する。この処理は実施の形態１で示した処理９と同様に行なう。
処理５４ではアニメーションデータに記述されたシェーディング方法によって、一旦記憶装置５に保持された環境形状の配置データ，光源データ，カメラデータと、バインドした物体の形状データ、または発生した物体の表面形状データとを用いてレンダリングを行ない、当該時刻における画像を生成する。この処理は実施の形態１に示した処理１０と同様に行なう。
処理５５では前述の記憶装置５に保持しておいた画像データを通常コンピュータグラフィックスで行なっているのと同様の方法で表示装置に表示する。
処理５６では終了命令が発効されているかどうかの終了命令発効判定を行なう。この処理は実施の形態１で示した処理１２と同様に行なう。終了命令が発効されていない場合は、処理４８から処理５６迄を繰り返す。
実施の形態４．
次に、本発明の実施の形態４によるコンピュータグラフィックス・アニメーションデータ送受信生成方法について、図５を参照しながら詳細に説明する。
図５に示すように、全体の処理は、第１段階から第１０段階で実行される。すなわち、第１段階は処理６１と処理６２、処理６３で実行され、第２段階は処理６４と処理６５で実行され、第３段階は処理６６で実行され、第４段階は処理６７で実行され、第５段階は処理６８で実行され、第６段階は処理６９で実行され、第７段階は処理７０と処理７１で実行され、第８段階は処理７２、処理７３、処理７４で実行され、第９段階は処理７５で実行され、第１０段階は処理７６と処理７７で実行される。
【０１３２】
上記処理６１はアニメーションデータの作成を行なう処理で、処理６２はアニメーションデータの編集を行なう処理、処理６３はアニメーションデータの記憶装置２への保存を行なう処理、処理６４はアニメーションデータの送信を行なう処理、処理６５はアニメーションデータの受信を行なう処理、処理６６は記憶装置５への保存を行なう処理、処理６７は環境形状データの初期配置を行なう処理、処理６８はイベントの発生の検出と基本行動の状態遷移に関する処理を行ない、処理６９は当該時刻が基本行動期間内か、接続期間内かの判定を行なう処理、処理７０は環境状態を判別して時系列基本動きデータを変更する処理、処理７１は基本行動期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理７２は環境状態の判別を行なう処理、処理７３は接続期間内と判定された場合に環境状態を考慮しながら接続動作を生成する処理、処理７４は接続期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理７５は骨格構造に物体（人間）の形状データをバインドする処理、もしくは物体の表面形状データを生成する処理、処理７６は指定されたシェーディング方法でレンダリングを行なう処理、処理７７はレンダリングされたコンピュータグラフィックス画像を表示装置に表示する処理、処理７８は終了命令が発効されたか否か判定する処理である。
【０１３３】
さらに上記処理６１から処理６４については、送信側コンピュータ１によって記憶装置２を用いながら実行され、通信媒介手段３によってアニメーションデータを転送後、処理６５から処理７８までが受信側コンピュータ４によって、記憶装置５と表示装置６を用いながら実行される。
処理６１で作成されるアニメーションデータの構成は、物体に形状をバインドする場合には、図６(c) に示したように、骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。また、骨格構造に合わせて物体の表面形状を生成する場合には図６(d) に示したように、骨格構造、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。
【０１３４】
骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、基本行動、時系列基本動きデータに関しては、上述した実施の形態３で説明したのと同じなので、ここではその説明を省略し、行動ルール、環境管理制御方法について述べる。
本実施の形態４における行動ルールでは、上記実施の形態３で説明した行動ルールに、環境の状態条件に対する基本行動の変更と接続動作の変更のためのパラメータを更に付記する。具体的な基本行動の変更方法や、基本行動変更パラメータについては後述する。
【０１３５】
図１４に基本行動の状態遷移図の例を示した。行動ルールの記述はこの状態遷移図を記述したものである。本発明の第３の実施例と異なる点は、イベントの発生時に、更に環境の状態を観察し、その環境の状態に応じて遷移する先の基本行動に変更を加えることである。行動ルールの具体的な記述は、以下の通りとなる。
（１）第１の基本行動の名前または識別子の記述。イベントが発生しない場合に、その基本行動を繰り返した状態で待機しているタイプの基本行動か、無条件に別の基本行動へ遷移するタイプの基本行動かのタイプ識別子も付記する。
（２）状態遷移の記述。
（２−１）イベントの識別子の記述。
（２−２）イベント発生後の遷移先の基本行動の名前または識別子の記述。行き先が無条件で別の基本行動へ遷移するタイプの基本行動の場合は、その戻り先の基本行動の名前または識別子も記述する。
（２−３）接続時間（接続フレーム数）の記述。行き先が無条件で別の基本行動へ遷移するタイプの基本行動の場合は、その戻り先の基本行動に対する接続時間も記述する。
（３）環境の状態条件の記述。
（３−１）環境の状態条件の識別子の記述。
（３−２）基本行動変更識別子と変更パラメータの記述。
（３−３）接続動作変更識別子と変更パラメータの記述。
（４）第２の基本行動の名前または識別子とタイプ識別子の記述。
【０１３６】
環境管理制御方法は、物体（骨格構造物）の運動管理とイベント管理、及び環境の状態条件に応じた基本行動の変更を行なう。但し、光源やカメラも運動する場合にはその管理も行なう。具体的な記述は以下の通り。
（１）骨格構造物（光源、カメラ）の名前または識別子の記述。
（２）対応する行動ルールの名前の記述。但し、別ファイルに保存されている場合には、そのファイル名も付記する。
（３）使用するイベント識別子の記述。無条件で別の基本行動へ遷移するタイプの基本行動を含む場合は、それを示す識別子を記述する。
（４）骨格構造物（光源、カメラ）の数だけ（１）から（３）の処理を繰り返す。
（５）イベント識別子とそのイベント発生の判定条件の記述。全イベントについて記述する。
（６）環境の状態条件の識別子とその判定条件の記述。全ての環境の状態条件について記述する。
【０１３７】
処理６２では前記のアニメーションデータの編集を行なう。ここでいう編集とは、目的とするコンピュータグラフィックス・アニメーションを行なうための確認と、データの調整を意味する。骨格構造物へバインディングする物体形状に関する編集については前述の通りである。環境の形状については、目的の環境の形状が作られているかを確認したり、環境設定通り配置されているかを確認し、適時修正を加える。基本行動や行動ルール、時系列基本動きデータに関しては、基本行動の組合せや遷移の調整、接続時間の調整、環境の状態条件に応じて動きが適切に変更されているか、目的通りの動きを行なっているかどうかの確認を行ない、適時修正する。これらの確認時に、属性データ光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法の確認も同時に行なう。
【０１３８】
処理６３は上述した実施の形態１の処理３と同様に行なう。
処理６４と処理６５は、上述した実施の形態１で示した処理４，処理５と同様に行なう。
処理６６は上述した実施の形態１で示した処理６と同様に行なう。
処理６７から処理７８にかけての処理は、受信側コンピュータ４でのコンピュータグラフィックス・アニメーション画像の生成を行なうものである。以下その説明を行なう。
処理６７は上述した実施の形態１の処理７と同様に行なう。
【０１３９】
処理６８では、イベントの発生の検出と基本行動の状態遷移に関する処理を行なう。これは上述した実施の形態３と同様に行なう。
但し、実施の形態３で示した、記憶装置５に確保された、各骨格構造物に対する現在の状態を書き込む領域には、基本行動が変更された場合、変更された基本行動の時系列基本動きデータの記憶装置５における所在地を示す名前または識別子（アドレス）、現在の状態の時刻を保持する。遷移中の場合には、遷移中を示す識別子と、接続動作に対応した時系列データの記憶装置５における所在地を示す名前または識別子（アドレス）を保持する。遷移中の識別子は、イベントの発生直後（当該時刻）に書き込む。
【０１４０】
但し、無条件で別の基本行動に移るタイプの基本行動へ遷移する場合は、遷移中を示す識別子（上述のものとは異なる識別子を与える）、経由前の接続動作に対応した時系列データの記憶装置５における所在地を示す名前または識別子（アドレス）、経由する基本行動（変更があった場合には変更された基本行動に対応する時系列基本動きデータの記憶装置５における所在地を示す名前または識別子）と経由後の基本行動の名前または識別子を保持し、イベントの発生直後（当該時刻）から経由後の基本行動に移るまでを遷移中とする。
【０１４１】
処理６９では、処理する骨格構造物（光源，カメラ）が当該時刻において基本行動期間内にあるか、接続時間内にあるかの判定を行なう。この判定は、前述の各骨格構造物毎に設けられた現在の状態を見て行なう。状態遷移中でないものについては、保持されている基本行動の期間内と判定する。
処理７０では、処理６９で基本行動期間内と判別された場合に、各骨格構造物において、もし現在の状態が基本行動（時系列基本動きデータ）の最終時刻ならば、環境管理方法、及びその骨格構造物の行動ルールの記述から、環境がいずれかの環境の状態条件に適合しているか否かの確認処理を行なう。この確認処理で、何らかの条件に適合している場合には、基本行動（対応する時系列基本動きデータ）の変更を行なう。以下では、基本行動の具体的な変更方法について説明する。
【０１４２】
基本行動の変更には、時間に関する動作の伸長と圧縮、元の動きの経由点の変更、２つの動きの合成、骨格構造の部分構造の動きの交換による変更がある。時間に関する伸長と圧縮に関しては、図１５(a),(b) に基づいて説明する。
図１５(a) は時間に関する伸長を示したものである。元の基本行動に対応する時系列基本動きデータに関して、時刻数（フレーム数）をＦ、動作時間をＴとするときに、この時刻数をF'>Fに変更することで時間的に伸長される。まず、元の時系列基本動きデータから補間曲線を生成し（多項式補間などで生成する）、時刻T/F'毎の補間曲線の値を求めて、新たな時系列データを生成することで、時間伸長した時系列基本動きデータを作る。図１５(b) は時間に関する圧縮を示したものである。この場合は、F'<Fとなる条件で伸長と同じことを行なえば良い。変更パラメータとしては、Ｆ’またはＦに対するスケール量を与える。これらのパラメータが定数の場合は、固定的な変更となるが、これら変更パラメータが変数の場合は、状況状況に応じた値を与えれば良い。
【０１４３】
図１５(c) は元の動きの経由点を変更する場合を示したものである。変更する経由点のキーとなる時刻（図１５(c) ではtp,tq ）と変更値、及びその時刻を含む変更時間を与え、その時間の前後のデータとキー時刻のデータを用いて補間曲線を生成し、変更時間におけるキー以外の時刻の値を補間曲線から求めて、変更した時系列基本動きデータを生成する。この場合の変更パラメータは、キー時刻列とそれに対応した変更値列、及び変更時間である。前述の時間に関する伸長，圧縮の場合と同様に、これらのパラメータを定数で与えた場合は固定的な変更になるが、変数として定義しておき、変更の都度その値を与えるようにすれば、その場その場に応じた動作の変更ができる。
【０１４４】
図１５(d) は２つの動きを実施の形態２で示した処理３０における接続重み付け関数による２つの動きの合成を示したものである。まず、両方の動きの動作時刻数（フレーム数）を前述の時間に関する伸長、圧縮を用いて合わせる。次に、実施の形態２で示した処理３０で示した動作接続で用いた接続重み付け関数によって合成する。つまり、時刻数を調整した２つの動きをA(t),B(t) とし、接続重み付け関数をφ(t) とした時に、
A(t)φ(t)+B(t)(1- φ(t))
によって、合成動作を生成する。これは、A(t)から徐々にB(t)に変化していくような動きになる。また、上式で、φ(t)=（０と１の間の定数）とすれば、定常合成になる。変更パラメータは、時刻数Ｆ、合成する基本行動の名前または識別子、合成方法（接続重み付け、定常合成）を示す識別子（前もって合成方法を記号化しておく）である。時刻数Ｆ、合成する基本行動の識別子（この場合名前では処理は困難）、合成方法の識別子を変数として与えれば、その場その場に応じた合成動作の生成が可能になる。
【０１４５】
骨格構造の部分構造に対する動きの交換については、交換後の動作の時刻数を前述の時間に関する伸長と圧縮を用いて、交換前の動作の時刻数と合わせ、部分構造の動作を交換すればよい。この場合は、部分構造の名前または識別子と交換する基本動作の名前または識別子である。これらのパラメータを変数で与えれば（但し、識別子）その場その場に応じた動作の変更が可能になる。
【０１４６】
処理７１は変更された時系列基本動きデータ、もしくは元々の時系列基本動きデータから、当該時刻における骨格構造物（光源，カメラ）のベクトル量（状態データ）を読み取る。読み取り方法は、記憶装置５に保存された、基本行動毎に確保された現在の時刻に１を加えた時刻のベクトル量を対応する時系列基本動きデータから読みとる。読みとった後は、現在の時刻を更新しておく。もし、現在の時刻が時系列基本動きデータの最大値の時刻を越えた場合には０とする（時刻の最大値＋１の剰余）。こうすることによりトグル動作が可能となる。読みとったベクトル量により、骨格構造物の場合ならば、当該時刻における位置への移動（変換）し、当該時刻における骨格状態（姿勢）に変形を行う。
【０１４７】
これは、前述のセグメント毎に定義されている局所座標系とワールド（全体）座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源（カメラ）の場合ならば、時系列動きデータに記述された当該時刻における位置に光源（カメラ）を移動し、当該時刻の光源（カメラ）パラメータに変更する。以上の求めたデータは一旦記憶装置５に保持しておく。
【０１４８】
処理７２では、処理６９で接続期間内と判別された場合（つまり、遷移中）で、イベントの発生直後（当該時刻）ならば、その時遷移先の基本行動に対する環境の状態条件を判別する。また、無条件で別の基本行動へ移るタイプの基本行動で、イベントの発生直後に遷移中となったものについては、経由する基本行動に対する環境の状態条件と経由後の基本動作に対する環境の状態条件の判別を行なう。
処理７３では、遷移中でかつイベントの発生直後ならば、処理７２の判別結果に基づいて接続動作を生成し、その名前または識別子（アドレス）と接続時間、生成した時系列の接続動作データを記憶装置５に保存する。それ以外の場合は接続動作を生成する必要はない。
【０１４９】
接続動作の生成方法は、処理７２での環境の状態条件の判別結果が、後基本行動を変更する必要がない（環境の状態条件のいずれにも当てはまらない）場合には, 実施の形態３で示した処理５１と同様である。処理７２で環境の状態条件の判別の結果、後基本行動を変更する必要があると判別された時には、後基本動きデータを変更した後に、その変更した後基本動きデータに対して、実施の形態３で示した処理５１と同様の方法で、接続動作を生成し、更に、行動ルールに示された変更方法と接続動作変更パラメータに基づき生成した接続動作を、前述の動作変更方法により変更する。
【０１５０】
特に、無条件で別の基本行動へ移るタイプの場合は、経由する基本行動、経由後の基本行動の両方に対して前述と同様の処理を行ない、２つの接続動作を生成する。生成した接続動作は、その名前または識別子と接続時間、生成した時系列の接続動作データを記憶装置５に保存する。
なお、経由後の基本行動が変更されている場合には、変更された時系列基本動きデータを初回は使う。
【０１５１】
処理７４では、処理７３で生成した接続動作（経由動作中の場合は経由する基本行動に対応する変更された時系列基本動きデータまたは元々の時系列基本動きデータ）から、骨格構造物の場合ならば、当該時刻における位置へ移動（変換）し、当該時刻における骨格状態（姿勢）に変形を行う。これは、前Ｗ述のセグメント毎に定義されている局所座標系とワールド（全体）座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源（カメラ）の場合ならば、時系列動きデータに記述された当該時刻における位置に光源（カメラ）を移動し、当該時刻の光源（カメラ）パラメータに変更する。以上の求めたデータは一旦記憶装置５に保持しておく。
【０１５２】
処理７５では、記憶装置５に保持しておいた当該時刻の骨格構造物の位置と骨格状態（姿勢) に合わせて、対応する物体形状をバインドするか、もしくは物体の表面形状を生成する。この処理は実施の形態１で示した処理９と同様に行なう。
処理７６ではアニメーションデータに記述されたシェーディング方法によって、一旦記憶装置５に保持された環境形状の配置データ、光源データ、カメラデータ、バインドした物体の形状データまたは発生した物体の表面形状データを用いて、レンダリングを行ない当該時刻における画像を生成する。この処理は実施の形態１で示した処理１０と同様に行なう。
処理７７では前述の記憶装置５に保持しておいた画像データを通常コンピュータグラフィックスで行なっているのと同様の方法で表示装置に表示する。
処理７８では終了命令が発効されているかどうかの終了命令発効判定を行なう。この処理は本発明の実施の形態１で示した処理１２と同様に行なう。終了命令が発効されていない場合は、処理６８から処理７８迄を繰り返す。
【０１５３】
なお、上述した本発明の実施の形態１ないし４において、受信側コンピュータは複数台でもよい。但し、現状のftp やhttpを用いる場合には送信要求のあった受信側コンピュータから順にアニメーションデータを送ることになる。一度期に複数の受信側コンピュータにアニメーションを送るためにはftp やhttpを拡張して、ブロードキャスト機能を付加する必要がある。
【０１５４】
また、上記実施の形態１なしい４では、骨格構造に対する動きを例にしたが、同様の方法で、図１６(a) に示したような、メッシュに対しても動きをつけることができる。この場合は、黒丸で示した節点を時系列（基本）動きデータで動かすことになる（図１６(b) 参照）。これにより、旗など布地の動きや、顔の表情などの変化するコンピュータグラフィックス・アニメーションについても適用することができる。
【０１５５】
【発明の効果】
以上のように、本発明は上記した構成によって、送信側コンピュータと、受信側コンピュータと、前記送信側コンピュータと前記受信側コンピュータ間の通信媒介手段からなるシステムにおけるコンピュータグラフィックス・アニメーションデータの送受信、及び前記受信側コンピュータでの人間を始めとする動物の複雑な動きや、顔の表情の動き、複雑な物理計算の結果として得られる物体の動き、カメラや光源についての複雑な動きを扱ったコンピュータグラフィックス・アニメーション画像の生成の方法を提供することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるシステムの構成図である。
【図２】本発明の実施の形態１におけるコンピュータグラフィックス・アニメーションデータ送受信・生成方法の処理のフローチャートを示す図である。
【図３】本発明の実施の形態２におけるコンピュータグラフィックス・アニメーションデータ送受信・生成方法の処理のフローチャートを示す図である。
【図４】本発明の実施の形態３におけるコンピュータグラフィックス・アニメーションデータ送受信・生成方法の処理のフローチャートを示す図である。
【図５】本発明の実施の形態４におけるコンピュータグラフィックス・アニメーションデータ送受信・生成方法の処理のフローチャートを示す図である。
【図６】本発明の実施の形態におけるアニメーションデータの構成図である。
【図７】骨格構造の説明図である。
【図８】骨格構造の説明図である。
【図９】ジョイント角データの説明図である。
【図１０】時系列データの説明図である。
【図１１】形状データのバインディングの説明図である。
【図１２】物体の表面形状データの生成の説明図である。
【図１３】イベントの発生による基本行動の状態遷移の説明図である。
【図１４】イベントの発生による基本行動の状態遷移の説明図である。
【図１５】時系列基本動きデータの変更の説明図である。
【図１６】メッシュ形状の変形の説明図である。
【符号の説明】
１  送信側コンピュータ
２  記憶装置
３  通信媒介手段
４  受信側コンピュータ
５  記憶装置
６  表示装置
【図１】
0004053627.tif 000002
【図２】
0004053627.tif 000003
【図３】
0004053627.tif 000004
【図４】
0004053627.tif 000005
【図５】
0004053627.tif 000006
【図６】
0004053627.tif 000007
【図７】
0004053627.tif 000008
【図８】
0004053627.tif 000009
【図９】
0004053627.tif 000010
【図１０】
0004053627.tif 000011
【図１１】
0004053627.tif 000012
【図１２】
0004053627.tif 000013
【図１３】
0004053627.tif 000014
【図１４】
0004053627.tif 000015
【図１５】
0004053627.tif 000016
【図１６】
0004053627.tif 000017