JP4053627B2 - 通信型コンピュータグラフィックスアニメーション方法 - Google Patents
通信型コンピュータグラフィックスアニメーション方法 Download PDFInfo
- Publication number
- JP4053627B2 JP4053627B2 JP10605197A JP10605197A JP4053627B2 JP 4053627 B2 JP4053627 B2 JP 4053627B2 JP 10605197 A JP10605197 A JP 10605197A JP 10605197 A JP10605197 A JP 10605197A JP 4053627 B2 JP4053627 B2 JP 4053627B2
- Authority
- JP
- Japan
- Prior art keywords
- time
- data
- series
- basic
- motion data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Description
【発明の属する技術分野】
本発明は、コンピュータグラフィックス・アニメーションの分野に属するもので、特に人間や動物等の多関節物体や弾性物体などの動きが時系列データして記述された場合を含むコンピュータグラフィックス・アニメーションデータをコンピュータ間で通信し、受信側コンピュータでコンピュータグラフィックス・アニメーション画像として生成するための技術に関するものである。
【0002】
【従来の技術】
近年、インターネットを介したマルチメディア通信が盛んに行なわれるようになった。その中でも、ワールド・ワイド・ウェブ(World-Wide-Web:WWW)は中心的な枠組をなしている。これについては、文献「益岡竜介, 木庭袋圭祐,"World-Wide-Web",情報処理学会誌,pp1155-1165,Vol.36, No.12.1995.」に解説されている。
【0003】
先の文献に基づいて説明すると、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 サーバとのコマンドのやり取りの仕方の取り決めである。
【0004】
これらの概念による仕組みについて説明する。WWW クライアントは、URL によって指定された情報をWWW サーバからインターネットを介し、HTTPを用いてHTML文書として取得し、それをブラウザと呼ばれる表示プログラムを用いて画面に表示する。その画面上で、ユーザがリンクを選択すると、そのリンクに対応するURL が指定され、そこに指定された情報がリンク先のWWW サーバからインターネットを介してHTTPを用いてHTML文書として取得され、画面に表示される。
【0005】
以上が基本的な動作である。更に、CGI によって、例えばWWW サーバにHTTPで、"GET/cgi-bin/command/path HTTP/1.0" とリクエストすると、WWW サーバでは、環境変数"PATH _INFO" に"/path" が設定されて、"command" が実行される。その"command" を実行して標準出力に出た結果を、アクセスしたWWW クライアントにデータとして返すというようなこともできる。このような仕組みにより、WWW はマルチメディア通信の中心的な役割を担いつつある。
【0006】
しかしながら、前述のHTMLでは2次元画像に関する記述仕様しかないため、3次元コンピュータグラフィックスを扱うことができなかった。そのような状況の中、HTMLの拡張として、3次元コンピュータグラフィックスを記述するための記述言語であるVRML(Virtual Reality Modeling Language) の仕様が1995年5月に決められた。
これについては、文献「Mark Peace,"VRML-Browsing and Building Cyberspace",New RidersPublishing, 1995.」に詳述されている。動作は、基本的にはHTML文書の場合と同様で、HTML文書の変わりに、VRMLで記述されたデータがURL で指定した情報として取得される。
【0007】
また、VRMLで記述されたデータを表示するためには、専用プログラムが必要である。表示される3次元コンピュータグラフィックス画像では、視点の変更は行なえるが、VRML記述仕様(Version 1.0) には物体を動かす仕様がないため、表示される物体はあくまでも静的である。
【0008】
このような状況の中、3次元コンピュータグラフィックス・アニメーションデータをコンピュータ間で通信してやり取りを行ない、それをクライアント側で表示する方法が考えられてきた。そのようなものとして、例えば米国マイクロソフト社の提案するActiveVRMLによる方法などがある。
このActiveVRMLについては「Microsoft Corporation,"ActiveVRML Reference Manual", Preliminary Version, 1995. 」や「Microsoft Corporation,"A Brief Introduction to ActiveVRML", 1995. 」に記述されている。
【0009】
【発明が解決しようとする課題】
しかしながら、これらの方法では、簡単な関数で示せるような動きについては、データをコンピュータ間で通信してやり取りを行ない、それをクライアント側で3次元コンピュータグラフィックス・アニメーション画像として表示することは行なえるが、人間をはじめとする動物の複雑な動きや、顔の表情の動き、複雑な物理計算の結果として得られる物体の動き、カメラや光源についての複雑な動きが扱え、リアルに再現できる3次元コンピュータグラフィックス・アニメーションを実現することは非常に困難であるという問題がある。これらの動きは、関数系でリアルに表現することは非常に困難であり、また表現できたとしても、多大な時間を要する計算が必要である。
また、ActiveVRMLにしろ、VRMLにしろ、単眼視の画像しかサポートされていないため、両眼視のステレオ画像を生成することもできないという問題がある。
【0010】
本発明は、上記のような問題点に鑑みなされたもので、送信側コンピュータと、受信側コンピュータと、前記送信側コンピュータと前記受信側コンピュータ間の通信媒介手段からなるシステムにおけるコンピュータグラフィックス・アニメーションデータの送受信、及び前記受信側コンピュータでの人間をはじめとする動物の複雑な動きや、顔の表情の動き、複雑な物理計算の結果として得られる物体の動き、カメラや光源についての複雑な動きのコンピュータグラフィックス・アニメーション画像の生成の方法を提供するものである。
【0011】
【課題を解決するための手段】
本願請求項1に係る発明は、送信装置と、複数または単数の受信装置と、前記送信装置と前記受信装置間の通信媒体手段からなるシステムにおける前記受信装置でのコンピュータグラフィックス・アニメーションのデータの受信と画像生成に関する方法であって、物体の形状データと、物体の存在する環境の形状データと、カメラパラメータと、環境設定と、環境管理制御方法と、各物体の基本行動と、各物体の行動ルールと、前記基本行動に対応した物体の動きを時系列に生成するための時系列基本動きデータとからなるアニメーションデータを受信して前記受信装置の記憶装置に保存する受信・保存ステップと、画像生成の視点の移動と、視線方向、画角の変更を時系列動きデータとして記述でき、前記受信装置の前記記憶装置に保存した前記アニメーションデータに基づいて、前記時系列動きデータに従って画像生成の視点と視線方向、画角の変更を行ないながらレンダリングを行ない、表示装置にコンピュータグラフィックス・アニメーション画像を表示するレンダリング・表示ステップとを有し、前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記行動ルールに従って複数の前記時系列基本動きデータを動作接続しながら物体の動作を生成し、前記レンダリング・表示ステップにおいて、2つの時系列基本動きデータ、前基本動きデータと後基本動きデータを接続する場合に、接続時間(フレーム数)を指定し、前記前基本動きデータに対しては前記接続時間における後向き予測曲線を生成し、前記後基本動きデータに対しては接続時間における前向き予測曲線を生成し、接続開始時刻において1、接続終了時刻において0となり、単調減少かつ時間に関し微分可能な接続重み付け関数を用いて、前記後向き予測曲線と前記接続重み付け関数の積と、前記前向き予測曲線と1から前記接続重み付け関数を引いた差との積との和によって、前記前基本動きデータと前記後基本動きデータの接続の動きを生成することで時系列基本動きデータの接続を行う、ことを特徴とするものである。
【0012】
本願請求項2に係る発明は、請求項1に記載の通信型コンピュータグラフィックスアニメーション方法において、前記物体は骨格構造を有する多関節物体であり、前記時系列基本動きデータの接続によって生成されたデータは、前記骨格構造の動きを時系列に生成するための時系列動きデータであり、前記アニメーションデータは、前記骨格構造にバインドする形状データを更に含み、前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記時系列動きデータから当該時刻における前記骨格構造の位置と形態を算出し、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記形状データを前記レンダリング・表示ステップにおける骨格構造の位置と形態に合わせてバインドを行う、ことを特徴とするものである。
【0013】
本願請求項3に係る発明は、請求項1に記載の通信型コンピュータグラフィックスアニメーション方法において、前記物体は骨格構造を有する多関節物体であり、前記時系列基本動きデータの接続によって生成されたデータは、前記骨格構造の動きを時系列に生成するための時系列動きデータであり、前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記時系列動きデータから当該時刻における前記骨格構造の位置と形態を算出し、前記骨格構造の位置と形態に合わせて物体の表面形状の生成を行う、ことを特徴とするものである。
【0014】
本願請求項4に係る発明は、請求項1に記載の通信型コンピュータグラフィックスアニメーション方法において、前記受信・保存ステップにおいて、さらに、光源データを追加したアニメーションデータを前記受信装置の記憶装置に保存し、前記レンダリング・表示ステップにおいて光源の移動と、光源強度、光線の方向、光の及ぶ範囲の変更を時系列動きデータとして記述でき、前記時系列動きデータに従って光源の位置の変更や、光源強度、光線の方向、光の及ぶ範囲の変更を行う、ことを特徴とするものである。
【0037】
【発明の実施の形態】
図1は本発明の方法を実施するためのシステムの構成を示すものである。図1において、1は送信側コンピュータ、2は送信側コンピュータ1を構成する記憶装置、3は通信媒介手段、4は受信側コンピュータ、5は受信側コンピュータを構成する記憶装置、6は受信側コンピュータと使用者との間のインターフェイスとなる表示装置である。
【0038】
実施の形態1.
以上のように構成されたシステムに基づいて、以下、本発明の実施の形態1によるコンピュータグラフィックス・アニメーションデータ送受信生成方法について、図2を参照しながら詳細に説明する。
図2に示したように、全体の処理は、第1段階から第7段階で実行される。すなわち、第1段階は処理1,処理2,処理3で実行され、第2段階は処理4と処理5で実行され、第3段階は処理6で実行され、第4段階は処理7で実行され、第5段階は処理8で実行され、第6段階は処理9で実行され、第7段階は処理10と処理11で実行される。
【0039】
上記処理1はアニメーションデータの作成を行なう処理で、処理2はアニメーションデータの編集を行なう処理、処理3はアニメーションデータの記憶装置2への保存を行なう処理、処理4はアニメーションデータの送信を行なう処理、処理5はアニメーションデータの受信を行なう処理、処理6は記憶装置5への保存を行なう処理、処理7は後述する環境形状データの初期配置を行なう処理、処理8は当該時刻における骨格構造の位置と形態を算出する処理、処理9は骨格構造に物体(人間)の形状データをバインドする処理、もしくは物体の表面形状データを生成する処理、処理10は指定されたシェーディング方法でレンダリングを行なう処理、処理11はレンダリングされたコンピュータグラフィックス画像を表示装置6に表示する処理、処理12は終了命令が発効されたか否か判定する処理である。処理1から処理4については、送信側コンピュータ1によって記憶装置2を用いながら実行され、通信媒介手段3によってアニメーションデータを転送後、処理5から処理12までが受信側コンピュータ4によって、記憶装置5と表示装置6を用いながら実行される。
【0040】
上記処理1で作成されるアニメーションデータの構成は、物体に形状をバインドする場合には、図6の(a) に示したように、骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、時系列動きデータである。また、骨格構造に合わせて物体の表面形状を生成する場合には図6の(b) に示したように、骨格構造、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、時系列動きデータとなる。以下、各項目について説明を行なう。
【0041】
まず、骨格構造について用語の説明から行なう。複数のサイト(骨格端部)をリンク(3次元ベクトル)によって接続したものをセグメントと呼び、特に、2つのサイトをリンクで接続したものをスケルトン(骨)と呼ぶ。定義から判るように、セグメントはスケルトンに分解できる。セグメント(スケルトン) とセグメント(スケルトン)をサイト間で接続した部分をジョイント(関節)という。
【0042】
これらセグメントやスケルトン、ジョイントによって記述された構造物を骨格構造物という。骨格構造物を動かすためには、骨格構造物全体の位置と向きを決めるための局所座標系(1点と互いに直交する3つのベクトル)が必要で、これをルートという。
つまり、ルートの位置(局所座標系の原点)によって骨格構造物の全体座標系における位置を規定し、局所座標系の座標軸を定義する単位ベクトルによって、骨格構造物の正面方向、上方向、横方向を規定する。ルートが骨格構造物を規定するセグメントの1つに属しているものとすると、後述するように、サイト位置(ジョイント位置)は各セグメント毎に定義した局所座標系で規定し、この局所座標系間の変換列によって全体座標系における位置を規定する。従って、ルートがセグメントの1つに属していれば、そのセグメントのサイトやジョイントはルートの局所座標系で記述できるので、属さない場合に比べ変換列が1つ少なくて済む。従って、ルートはサイトの特別なものと考えても良い。
【0043】
以上の関係を図7(a) ,(b) に示す。また、具体例として、人間を骨格構造物で示したものを図7の(c) に示す。
図7(c) では階層化して骨格構造物を示している。上位階層の骨格構造物(粗モデル骨格構造物)では、下位階層の骨格構造物(詳細モデル骨格構造物)に比べてセグメント数、ジョイント数が少ないので、下位階層の骨格構造物(詳細モデル骨格構造物)に比べ動きの自由度、滑らかさに欠けるが、コンピュータグラフィックス・アニメーションをする場合の計算量や時系列動きデータ量は少なくなる。従って、データ量や受信側コンピュータの性能、アニメーションの状況(視点が遠い場合)等を考慮して使い分けることによって有効活用が図れる。図7(c) において、括弧なしの名前はジョイント名で、括弧つきの名前はセグメント(スケルトン)名である。
【0044】
また、端部を特にエンドサイトと呼んでいる。但し、これらの名前は識別子であるので、識別さえできれば記号化しても構わない。サイト名の記述の仕方については、定義からジョイントは2つのサイトによって定義されるので、これら2つのサイトを比べた時に、ルートに近い方にジョイント名に「サイト0」を、遠い方に「サイト1」を付加することで、サイトに名前をつけられる。図7(c) では右肘についてのみ記述しており、それ以外については省略している。
【0045】
このような骨格構造物は木構造による記述が可能である。図8は図7(c) に示したものを木構造で図示したものである。但し、図8中のセグメントでは、ジョイントやエンドサイトに相当するサイトは、除外している(もしくは二重に使用していると考えて記述していない)。但し、ここで採用した木構造の図示の仕方は、以下の通りである。
【0046】
(1)ルートとルートの属するセグメントを定める。
(2)ルートを基準にジョイントを近い方から辿っていき、辿ったジョイントとジョイント間をセグメントで繋ぐ。
(3)エンドサイトに迄いったら、辿っていない別の経路に対して同様の操作を繰り返す。
【0047】
骨格構造が木構造で示せるので、リスト構造の形式で記述ができる。この記述形式は1階層の場合には、以下の処理で実現できる。
(1)セグメントの定義:セグメント名を記述し、セグメントを規定するサイト名とその初期状態における位置ベクトルを記述する。リンクはこの位置ベクトルで表される。この位置ベクトルの表現の仕方はセグメント毎に定義される局所座標系による成分表示や、局所座標系のある軸上の単位ベクトルをサイトの位置ベクトルに変換する4×4行列(同次座標形式)によって行なうことができる。
但し、局所座標系の原点は、このセグメントに属するサイトの中、ルートに経路的に近いジョイントを規定するサイトに定める(ルートが属しているセグメントの場合はルートを原点とする)。動力学などを扱う場合を考慮して、その他、質量や慣性テンソル、重心位置を付加記述してもよい。但し、この場合には後述のジョイント角の定義には注意する必要がある。記述順序としては、木構造のルートから末端へとする方が望ましい(見易い)。
【0048】
(2)ジョイントの定義:ジョイント名とジョイントを規定する2つのサイト名、ジョイントの種類と自由度数によって定義する。ジョイントの種類は、回転系のものとスライド系のものに分けられ、自由度数とは回転やスライドを行なうためのパラメータの数である。3次元空間での運動を扱うので、回転もスライドも最大自由度数は各々3である。また、この自由度数は、後述のジョイントの回転角の定義の仕方にも依存する。
【0049】
(3)ルートの定義:サイトによって定義する時には、セグメント名とサイト名によって記述する。そうでない場合には、ルートから経路を辿る時の最も近いセグメント名とサイト名、ルートの規定する局所座標系におけるこのサイトの位置ベクトルを記述する。注意することは、サイトの位置ベクトルを記述した時点でルートの局所座標系が規定されたということである。
この他、データのロードチェックを行なうために、総セグメント数やサイト数、ジョイント数を付加記述しておく。
【0050】
多階層の場合の記述形式は、上記の単階層の場合を使って、以下の処理で実現できる。
(1)親階層の骨格構造の記述
(2)子階層の記述の始まりの識別子(詳細骨格構造の記述の識別子)と使用する条件の記述。
(3)子セグメントの定義:上記単階層の場合の記述の他に、親セグメント名を加筆する。
(4)子ジョイントの定義:上記記述形式と同様。
(5)ルートの定義:子階層表現に変わった時に、ルートの変更がある場合には上記要領で記述する。そうでない場合は変更なしの識別子を記述。
(6)更に階層が続く場合には、(2)〜(5)の処理を繰り返す。但し、親子関係は、直前階層との間で結ぶ(2階層以上飛んだ記述は禁止)。
【0051】
以上の記述形式を使って骨格構造の記述を行なう。具体的な記述は以下の通り。
(1)骨格構造名の記述
(2)具体的な骨格構造の記述(上記記述形式)。但し、別ファイルに記述している場合にはファイル名を記述する。
上記に加え、処理9で骨格構造物の物体の表面形状を生成する場合には、以下の(3)を追記する。
【0052】
(3)セグメント毎に発生する物体表面形状を定義するための曲面のコントロールポイントの座標を当該セグメントの局所座標系で記述する。その際、隣接するセグメント間の境界におけるコントロールポイントを共有化しておくとジョイントが稼働した時の断裂が防げる。または、ジョイント部には断裂を防ぐためにセグメント部とは別に曲面形状を定めておく(図12参照)。具体的には、前述の場合には、
(セグメント名)(コントロールポイント座標値列),...
となり、後述の場合には、
(セグメント名)(コントロールポイント座標値列)(ジョイント名)(コントロールポイント座標値列または球ならば半径),...
となる。
【0053】
次に、処理9で物体形状を骨格構造にバインドする場合の形状データと環境の形状データについて説明する。
骨格構造に対して表面形状をバインドする場合には、バインドする物体の形状を記述する(図6(a) の場合)。バインドする物体の形状にしろ、環境の形状にしろ、一般に3次元コンピュータグラフィックスでは、物体の形状は、ポリゴン(多角形平面)、メッシュ(三角形メッシュ、四角形メッシュ)、プリミティブ形状で定義される。プリミティブ形状とは、立方体や球などの形状で、一般に空間的に対称性のある基本形状のことをいう。
【0054】
どの物体の形状をプリミティブとするかは、仕様に依存する。この他、B-スプライン,ベジェなどで定義される曲面や、メタボールと呼ばれるエネルギー(ポテンシャル)境界面によって、物体形状を定義することもある。単純な形状の場合には、単階層で形状が定義される。その際には、物体座標系と呼ばれる局所座標系を用いる。複雑な図形の場合には、部品形状を各部品毎に決まる局所座標系で構成し、それらの部品を物体全体を表す局所座標系に変換する写像によって全体を構成する。部品自体が多階層の場合には、前述のことを繰り返すことになる。
【0055】
環境形状の場合は、部品の局所座標系は適当で良いが、バインドする形状の場合には骨格構造物のセグメントに対応する局所座標系で部品を定義する必要がある。物体の形状を自分で定義する場合には、アニメーションデータの作成の際に部品をセグメントの局所座標系で構成していく。市販の物体の形状(事前からある物体の形状)を用いる場合には、アニメーションデータの編集の際に、元来使われていた局所座標系をセグメントの局所座標系へ変換する写像(アフィン変換)を求める。この変換の算出方法としては、部品の形状を構成するポリゴンやメッシュの代表点(9点以上)をセグメントのどこに配置するかを指定し、元の位置との対応関係を表す連立方程式を解くことで求めることができる。
【0056】
物体の形状の記述の仕方の具体例を以下に示す。
(1)全体物体形状の名前の記述。
(2)部品形状の名前の記述。
(3)部品形状を構成するポリゴンやメッシュなど上記に示したものによって記述する。具体的には、ポリゴンやメッシュの場合は頂点や節点の3次元座標値の列となる。但し、別ファイルに記述している場合にはファイル名を記述する。プリミティブの場合には、プリミティブの名前と中心位置(代表位置)の座標、スケール変換量を記述する。
【0057】
各々の構成形状には対応する属性データとマッピング座標を記述する。但し、プリミティブ形状の場合は、マッピング座標は固定化できるので、固定化している場合には不要である。
最後に部品全体を表す局所座標系への変換行列を記述する。但し、バインドする形状の場合には、この変換行列の代わりにバインドするセグメント名を記述する。
【0058】
(4)上記(2)と(3)の処理を必要分だけ繰り返す。
骨格構造物がジョイント稼働したときに、バインド形状がジョイント部で断裂を起こす。これを防ぐための方法としては、ジョイント部に球などのプリミティブ形状を配置しておくと良い(図11参照)。これは、受動側コンピュータで、描画する時に自動付加してもよいが、明示的に先に与えておくこともできる。その場合には、上記に、
(5)ジョイント名とそこに配置するプリミティブ形状名、スケール量を付加記述する。但し、このジョイントに対するバインドは、ジョイント位置に対応するプリミティブ内部の点(例えば重心)が規定されているものとする。
また、断裂を防ぐその他の方法としては、2つのセグメントにバインドする部品形状の境界部を可変として、ジョイントの変化に対応して境界を変化させ必ず接続させるという方法もある。
【0059】
この他、概形記述と詳細記述とを併用したい場合には、以下のように記述する。
(1)全体物体形状の名前の記述。
(2)概形部品形状の名前の記述。
(3)概形部品形状を構成するポリゴンやメッシュなど上記に示したものによって記述する。具体的には、ポリゴンやメッシュの場合は頂点や節点の3次元座標値の列となる。プリミティブ形状の場合には、プリミティブ形状の名前と中心位置(代表位置)の座標、スケール変換量を記述する。
各々の構成形状には対応する属性データとマッピング座標を記述する。但し、プリミティブ形状の場合は、マッピング座標は固定化できるので、固定化している場合には不要である。
【0060】
最後に部品全体を表す局所座標系への変換行列を記述する。但し、バインドする形状の場合には、この変換行列の代わりにバインドするセグメント名を記述する。
(4)詳細記述の識別子と使用条件の記述。
(5)詳細部品形状の名前の記述。
(6)詳細部品形状の構成の記述(上記(3)と同様)。
(7)(2)〜(6)を必要分だけ繰り返す。
属性データとして記述するのは、物体の反射率(鏡面成分、拡散成分)や透明度、テクスチャデータ(色データの分布)、バンプデータ(法線ベクトルの成分分布または変位成分量の分布)や照度分布である。反射率や透明度については、定数の場合と分布で与える場合とがあり、光源の色毎(RGBやYCbCr 等) に与えることもできる。分布形のデータに対するマスクデータもこれに含まれる。
【0061】
具体的な記述は以下の通りである。
(1)データ名または識別子の記述。
(2)データの種類の記述。
(3)分布の種類と分布サイズの記述。定数の場合は、矩形分布で、サイズは1とする。分布の種類は矩形分布や三角形分布などの基本形状に合わせたもの。
(4)データ(列)の記述。例えば、矩形分布の場合には、行列形式で記述する。但し、別ファイルに記述している場合にはファイル名を記述する。
【0062】
光源データとしては、点光源の場合には初期位置と光源強度、減衰率、線光源の場合は端点の初期位置、方向ベクトル、光源強度、減衰率、長さ、面光源の場合は代表点の初期位置、法線ベクトル、光源強度、減衰率、形状定義、面積を与える。各光源において配光分布付きの場合には、上記以外に配光分布を与える。
【0063】
具体的な記述は以下の通り。
(1)光源名又は識別子の記述。
(2)光源の種類の記述。
(3)初期位置の記述。
(4)光源強度の記述。
(5)減衰率の記述。
(6)線光源の場合には方向ベクトル、長さ、面光源の場合には法線ベクトル、形状定義(形状名または頂点座標)と面積を記述する。
(7)配光分布つきの場合は配光分布の記述。但し、別ファイルに記述している場合にはファイル名を記述する。
【0064】
カメラパラメータとしては、初期位置、初期の視線ベクトル、アッパーベクトル(カメラの上方向を示すベクトル)焦点距離、画角を記述する。
具体的な記述は以下の通り。
(1)カメラ名又は識別子の記述。
(2)初期位置、初期の視線ベクトル、アッパーベクトル(カメラの上方向を示すベクトル)焦点距離、画角を記述する。
【0065】
シェーディング方法としては、レンダリングを行なう際の具体的なシェーディングのアルゴリズム名(または識別子)を記述する。つまり、ワイヤーフレーム、フラットシェーディング、グローシェーディング、フォンシェーディング、レイトレーシング、照度マッピングなどの名前、もしくはそれに対応した識別子を記述する。但し、照度マッピングの場合は属性データとして照度分布が与えられている場合のみ使用可能である。優先順位を付けて複数記述することもできる。
【0066】
優先順位は、受信側コンピュータの性能に応じて使い分けられるように、処理時間に関して付ける。
【0067】
環境設定は、環境形状の初期配置を行なうためのデータで、アフィン行列によって記述する。具体的な記述は以下の通り。
(1)環境の形状物体の名前または識別子を記述する。
(2)アフィン変換行列を記述する。
(3)環境の形状物体数だけ(1)と(2)の処理を繰り返す。
【0068】
環境管理制御方法は、物体(骨格構造物)の運動管理を行なう。但し、光源やカメラも運動する場合にはその管理も行なう。具体的な記述は以下の通り。
(1)骨格構造物(光源、カメラ)の名前または識別子の記述。
(2)対応する時系列動きデータの名前の記述。但し、別ファイルに保存されている場合には、そのファイル名も付記する。
(3)骨格構造物(光源、カメラ)の数だけ(1)と(2)の処理を繰り返す。
【0069】
次に、時系列動きデータについて説明する。時系列動きデータは、基本的には骨格構造物の運動を記述したものであるが、その他、カメラや光源の運動に対する運きも記述する。
【0070】
骨格構造物の場合については、リンク長が固定の場合はルートのアフィン変換の時系列データとジョイント角(回転量)の時系列データから構成される。固定でない場合は、後述のようなリンクに関する時系列データを付加する必要がある。ルートのアフィン変換の時系列データは、ルート位置、つまり骨格構造物全体が存在する位置と、回転量、つまり、骨格構造物全体の姿勢制御量からなる。ルート位置については、ワールド(全体)座標系の3次元座標値(3次元位置ベクトル)で与える。回転量については、ジョイント角と同様に様々な与え方がある。図9を使って、まずジョイント角(回転量)の代表的なものについて説明し、その後ルートの回転量について説明する。
【0071】
図9(a) ,(b) は、各セグメントで定義されている局所座標系が、ルートの局所座標系と平行な(すなわち、x,y,z各軸の単位ベクトルがリンクと一致する)場合に使用するジョイント角(回転量)である。図9(a) については、骨格構造物の初期状態に対して、リンクをx軸、y軸、z軸周りに回転した時に現在時刻のリンク状態になるように回転量を与えるものである。または、骨格構造物のその直前の時刻の状態に対して、リンクをx軸、y軸、z軸周りに回転した時に現在時刻のリンク状態になるように回転量を与えるものである。回転の順番によって、回転量は変わるので、回転の順序も規定しておく必要がある。図9(b) は極座標表示によるもので、リンクのz軸周りの回転量とリンクとz軸とのなす角によって与えられる。どちらの方法も、リンク長が固定でない場合は、各時刻におけるリンク長の時系列データまたは、リンク長のその直前の時刻に対する変化量の時系列データを与える必要がある。
【0072】
図9(c),(d) でジョイント角(回転量)を与える場合は、セグメントは全てスケルトンで構成されていなければならない。この時、図9(c) はオイラー角で与えるもので、図9(d) はヨー、ロー、ピッチで与えるものである。いずれも、リンクの初期状態に対して、現在のリンク状態にするためのオイラー角、ヨー、ロー、ピッチの角度量で時系列データが与えられる。但し、この場合は、初期状態においてセグメントの局所座標系のいずれかの軸はリンクと一致しており(図9(c),(d) ではz軸が一致)、各時刻毎にリンクと同様に局所座標系も移動することになる。従って、この局所座標系で表示したサイトの位置はリンク長が固定ならば不変である。リンク長が固定でない場合は、ジョイントの回転の他に、ジョイントのスライドが起こっていると考える(いわゆるロボット工学におけるスライド関節)。この他に、ジョイント角(回転量)の与え方としては、ロボット工学の分野で有名なDH(Denavit-Hartenberg)表記法がある。但し、いずれの方法も各ジョイントの自由度に応じて角度が決まる(全ての回転が可能だと3自由度)。また、回転の順番によって各回転量が変わるので、順番を規定しておく必要がある。
【0073】
ルートの回転量としては、図9(a) もしくは図9(b) の方法で与える。つまり、全体座標系をルートの定める局所座標系に原点が重なる様に平行移動した時に、図9(a) であれば、全体座標系がルートの局所座標系と一致するようなx軸、y軸、z軸周りの回転変換における回転量として与える。図9(b) の場合は、全体座標系に対するルートの局所座標系の各軸のz軸周りの回転量、及び、z軸とのなす角でルートの回転量を与えることになる。
【0074】
以上のように、骨格構造物に対する時系列動きデータは、ルートに対する上記のベクトル量と、セグメントに対するベクトル量によって構成されるがそのデータの記述方法には以下の2つの方法がある。
(1)各時刻毎に上記ベクトル量を全て記述。
(2)各ベクトル量を全ての時刻に渡って記述。
各時刻毎に描画が行なわれるので、データをロードすることに鑑みていうと、(1)の場合は局在した領域に対するアクセスで済むが、(2)の場合は、ある程度分散した領域に対するアクセスになる。その点から考えると、(1)の記述方法の方が優れていると考えられる。
【0075】
カメラの運動に対する時系列動きデータとして与えるものは、各時刻におけるカメラ位置、視線ベクトル、アッパーベクトルを記述した(3+3+3)次元ベクトル、または、アフィン変換行列、焦点距離、画角である。これにより、いわゆるモーションコントロールカメラよりも優れたカメラワークを模擬することが可能になる。
光源の運動に対する時系列動きデータとして与えるものは、基本的には、上記に示した光源に関するデータ全てについて与えることができる。目的によって異なるが、例えば、点光源の場合であれば、各時刻における位置や光源強度を与えることで、蛍や夜光虫などの移動光源物体を表現できる。
【0076】
以上のことから判るように、時系列動きデータの具体的な記述は以下の通りに行なう。
(1)時系列動きデータ名の記述
(2)動きの種類(骨格構造物、カメラ、光源)の記述
(3)各時刻毎のベクトル量の記述。但し、何に(セグメント名やカメラ位置、画角など)対するベクトル量なのかを示す名前や識別子も付加記述する。また、データ形式が混在する場合には、データ形式(ベクトルサイズや行列サイズ)に対する識別子も付加する。
【0077】
なお、これら実際の時系列動きデータの作成は、順、逆キネマティクスや順、逆ダイナミクス、動作の最適化計算、モションキャプチャなどによって行なう。また、以上の時系列動きデータは、時間的に長い動きの場合には、様々な動きを複数組み合わせて作る(図10(a) 参照)。
なお、アニメーションデータは、各項目毎に、該項目を識別できる領域(開始識別子と終了識別子で囲まれた領域)に記述するか、該項目を示すファイル名のついたファイルに記述する。
【0078】
処理2では前記のアニメーションデータの編集を行なう。ここでいう編集とは、目的とするコンピュータグラフィックス・アニメーションを行なうための確認と、データの調整を意味する。骨格構造物へバインディングする物体形状に関する編集については前述の通りである。環境の形状については、目的の環境の形状が作られているかを確認したり、環境設定通り配置されているかを確認し、適時修正を加える。時系列動きデータに関しては、特に時間的に長い動きの場合には、前述のように時系列動きデータは様々な動きを複数組み合わせて作るので、その接続の調整や目的通りの動きを行なっているかどうかの確認を行ない、適時修正する。これらの確認時に、属性データ光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法の確認も同時に行なう。
【0079】
処理3では、前述の確認修正の済んだアニメーションデータを記憶装置2に保存する。
処理4,処理5では、記憶装置2に保存されたアニメーションデータの送受信を行なう。送受信はhttpやftp によって行なうことができるので、それらのプロトコルの形式に則した形で、送信側コンピュータ1から受信側コンピュータ4へ、通信媒介手段3を介して行なう。
処理6では受信したアニメーションデータを受信側コンピュータ4の記憶装置5に保存する。
【0080】
処理7から処理12にかけての処理は、受信側コンピュータ4でのコンピュータグラフィックス・アニメーション画像の生成を行なうものである。以下その説明を行なう。
処理7では、アニメーションデータの環境設定に記述されている環境の形状物体の名前または識別子によって、処理する環境の形状物体の判別を行ない、続いて記述されているアフィン行列によって、物体座標系で表されている環境形状データを変換することにより、ワールド(全体)空間における所定の位置へ配置する。
つまり、空間的には配置していることになるが、実際の処理は座標変換である。以上の処理を全ての環境の形状物体に対して行ない、変換したデータを記憶装置5に一旦保持しておく。
【0081】
処理8では、アニメーションデータの環境管理制御方法に記述されている骨格構造物(光源、カメラ)の名前または識別子から、処理する骨格構造物(光源、カメラ)の判別を行ない、続いて記述された時系列動きデータの名前、もしくはファイル名で示された時系列動きデータから、当該時刻における骨格構造物(光源、カメラ)のベクトル量(状態データ)を読みとる。読みとったベクトル量により、骨格構造物の場合ならば、当該時刻における位置への移動(変換)を行ない、当該時刻における骨格状態(姿勢)に変形する。これは、前述のセグメント毎に定義されている局所座標系とワールド(全体)座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源(カメラ)の場合ならば、時系列動きデータに記述された当該時刻における位置に光源(カメラ)を移動し、当該時刻の光源(カメラ)パラメータに変更する。以上の求めたデータは一旦記憶装置5に保持しておく。
【0082】
処理9では、記憶装置5に保持しておいた当該時刻の骨格構造物の位置と骨格状態(姿勢) に合わせて、対応する物体形状をバインドするか、もしくは物体の表面形状を生成する。物体形状をバインドする時には、図11に示したようにセグメント毎にグルーピングされた部品形状を先の骨格構造物の位置と骨格状態(姿勢)を算出する際に用いた、全体(ワールド)座標系と局所座標系の変換、局所座標系間の変換系列によって変換する。
【0083】
また、図11に示したようにジョイント部に球などの形状をバインドすることにより、部品形状の断裂を塞ぐ。球の場合ならば、ジョイント位置を中心とした、部品形状とジョイントの可動範囲によって決まる半径で球を発生させる(もしくは物体座標系で定義された球を当該位置にアフィン変換する)。バインドした物体形状のデータ(変換したデータ)は一旦記憶装置5に保持しておく。
【0084】
物体の表面形状を発生する場合については、前記のように、アニメーションデータの骨格構造に追記された、セグメント毎に定義された部品の曲面を発生するためのコントロールポイントを、局所座標系の全体(ワールド)座標系への変換と、局所座標系間の変換系列によって変換し、変換したコントロールポイントに基づいて曲面を発生する。
【0085】
発生した曲面は、そのままで使用されるか、曲面を近似したメッシュとして使用される場合とに分けられる。曲面のままの場合は計算量が増大するため余り一般的でなく、レンダリング方法も限られてしまう(レイ・トレーシングに準ずる方法)ので、ここではメッシュ化する場合ついて述べる。コントロールポイントからメッシュを発生する方法は、曲面方程式を定義する2つの媒介変数を発生したい節点数に離散化し、その離散値を曲面方程式に代入するとそれに対応した曲面上の点が求まる。この点をメッシュの節点とすればよい。コントロールポイントがセグメント間で共有化されている場合には全てのセグメントについて、メッシュ(曲面)を生成し、これを記憶装置5に保持しておく。ジョイント部に断裂を防ぐための形状を発生する場合にはそれも記憶装置5に保持しておく。但し、発生の仕方はセグメントの場合と同様である。図12は以上の処理結果を摸式的に示した図である。
【0086】
処理10ではアニメーションデータに記述されたシェーディング方法によって、一旦記憶装置5に保持された環境形状の配置データ、光源データ、カメラデータ、バインドした物体の形状データまたは発生した物体の表面形状データを用いて、レンダリングを行ない当該時刻における画像を生成する。レンダリングは通常コンピュータグラフィックスで行なうのと同様で、生成された画像データはピクセル(画素)毎の色データ(RGB値)である。生成した画像データは記憶装置5に一旦保持しておく。
処理11では前述の記憶装置5に保持しておいた画像データを通常コンピュータグラフィックスで行なっているのと同様の方法で表示装置に表示する。
【0087】
処理12では終了命令が発効されているかどうかの判定を行なう。終了命令は、処理8から処理11の間に発効し、発効された場合には割り込み処理され、記憶装置5に設けた領域に発効を示す識別記号を代入しておく。この識別記号を見ることで、終了命令が発効されたか否かの判別が行なえる。
処理12で終了命令が発効されていたと判別された場合には、これで処理が終り、されていない場合には処理8から処理12迄を繰り返す。
なお、違和感なくコンピュータグラフィックス・アニメーションを際限なく行なうためには、時系列動きデータを周期化(始めと終りを同じにする。サイクルは時系列動きデータの長さ)しておけばよい。
【0088】
実施の形態2.
次に、本発明の実施の形態2によるコンピュータグラフィックス・アニメーションデータ送受信生成方法について、図3を参照しながら詳細に説明する。
図3に示すように、全体の処理は、第1段階から第9段階で実行される。すなわち、第1段階は処理21と処理22、処理23で実行され、第2段階は処理24と処理25で実行され、第3段階は処理26で実行され、第4段階は処理27で実行され、第5段階は処理28で実行され、第6段階は処理29で実行され、第7段階は処理30と処理31で実行され、第8段階は処理32で実行され、第9段階は処理33と処理34で実行される。
【0089】
上記処理21はアニメーションデータの作成を行なう処理で、処理22はアニメーションデータの編集を行なう処理、処理23はアニメーションデータの記憶装置2への保存を行なう処理、処理24はアニメーションデータの送信を行なう処理、処理25はアニメーションデータの受信を行なう処理、処理26は記憶装置5への保存を行なう処理、処理27は環境形状データの初期配置を行なう処理、処理28は当該時刻が基本行動期間内か、接続期間内かの判定を行なう処理、処理29は基本行動期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理30は接続期間内と判定された場合に接続動作を生成する処理、処理31は接続期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理32は骨格構造に物体(人間)の形状データをバインドする処理、もしくは物体の表面形状データを生成する処理、処理33は指定されたシェーディング方法でレンダリングを行なう処理、処理34はレンダリングされたコンピュータグラフィックス画像を表示装置に表示する処理、処理35は終了命令が発効されたか否か判定する処理である。
【0090】
さらに上記処理21から処理24については、送信側コンピュータ1によって記憶装置2を用いながら実行され、通信媒介手段3によってアニメーションデータを転送後、処理25から処理35までが受信側コンピュータ4によって、記憶装置5と表示装置6を用いながら実行される。
【0091】
上記処理21で作成されるアニメーションデータの構成は、物体に形状をバインドする場合には、図6(c) に示したように、骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。また、骨格構造に合わせて物体の表面形状を生成する場合には図6(d) に示したように、骨格構造、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。
【0092】
骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定に関しては、上述した実施の形態1の場合と同じなので、ここではその詳細な説明を省略し、基本行動、行動ルール、時系列基本動きデータ、環境管理制御方法について述べる。
【0093】
基本行動とは、骨格構造物の一連の動きを分割した時の単位となる動きである。例えば、座る,立つ,歩行,蹴るなどを基本行動といい、名称または識別子によって判別可能にしておく。これらの基本行動への分割は経験的な分割であるため、ある程度、使用者によって分割単位が異なるが、以下の処理では分割単位(分割方法)に対する依存性はないので、どのような分割単位でも構わない。基本行動は、時系列基本動きデータと1対1に対応しており、この対応関係を記述したものが基本行動の記述である。また、基本行動(時系列基本動きデータ)の行動時間も追記する。具体的な記述は以下のようになる。
(1)基本行動の名前または識別子の記述。
(2)対応する時系列基本動きデータの名前または識別子の記述。
(3)上記時系列基本動きデータの時間(基本行動時間)の記述。
(4)(1)から(3)の処理を基本行動の数だけ繰り返す。
【0094】
なお、文頭に全基本行動数を明記しておくと管理上、都合が良い。
【0095】
行動ルールは、実際に骨格構造物が行動する場合の、これらの基本行動を組み合わせたシーケンスと、基本行動間の接続時間を記述したものである。具体的な記述は以下の通り。
(1)識別番号と第1の基本行動の名前または識別子の記述。
(2)識別番号と第1の基本行動と第2の基本行動の接続時間(接続フレーム数)の記述。
(3)識別番号と第2の基本行動の名前または識別子の記述。
時系列基本動きデータは、上記の説明からも解るように、基本行動に対応した、前述の時系列動きデータの時間的に短いもの(単位化を図ったもの)で、記述形式は時系列動きデータの場合と全く同様である。
【0096】
以上の基本行動,行動ルール,時系列基本動きデータは、光源,カメラにも適用することができる。
環境管理制御方法は、物体(骨格構造物)の運動管理を行なう。但し、光源やカメラも運動する場合にはその管理も行なう。具体的な記述は以下の通り。
(1)骨格構造物(光源、カメラ)の名前または識別子の記述。
(2)対応する行動ルールの名前の記述。但し、別ファイルに保存されている場合には、そのファイル名も付記する。
(3)骨格構造物(光源,カメラ)の数だけ(1)と(2)の処理を繰り返す。
【0097】
処理22では前記のアニメーションデータの編集を行なう。ここでいう編集とは、目的とするコンピュータグラフィックス・アニメーションを行なうための確認と、データの調整を意味する。骨格構造物へバインディングする物体形状に関する編集については前述の通りである。環境の形状については、目的の環境の形状が作られているかを確認したり、環境設定通り配置されているかを確認し、適時修正を加える。基本行動や行動ルール、時系列基本動きデータに関しては、基本行動の組合せの調整や、接続時間の調整や目的通りの動きを行なっているかどうかの確認を行ない、適時修正する。これらの確認時に、属性データ,光源データ,カメラパラメータ,シェーディング方法,環境設定,環境管理制御方法の確認も同時に行なう。
【0098】
処理23では本発明の第1の実施例の処理3と同様に行なう。
処理24と処理25は、本発明の第1の実施例の処理4、処理5と同様に行なう。
処理26は本発明の第1の実施例の処理6と同様に行なう。
【0099】
処理27から処理35にかけての処理は、受信側コンピュータ4でのコンピュータグラフィックス・アニメーション画像の生成を行なうものである。以下その説明を行なう。
処理27は、本発明の第1の実施例の処理7と同様に行なう。
【0100】
処理28では、アニメーションデータの環境管理制御方法に記述されている骨格構造物(光源,カメラ)の名前または識別子から処理する骨格構造物(光源,カメラ)の判別を行ない、その骨格構造物が当該時刻において基本行動期間内か接続期間内かの判定を行なう。判定は、環境管理制御方法における骨格構造物名に続いて記述されている行動ルール名の行動ルールに示された接続時間と、その行動ルールに記述された基本行動名の基本行動に示された基本行動時間とから行なう。具体的には、その骨格構造物の第iの基本行動時間をBti(i=1,2,...)とし、第iの基本行動と第i+1の基本行動の接続時間をCti(i=1,2,...)、当該時刻をTとしたときに次の手順で行なう。
【0101】
(1)Bt1+Ct1+...+Btn+Ctn ≦Tとなる最大のn(n=1,2,...)を求める。
(2)(1)でnが存在するならば、dT=T-(Bt1+Ct1+...+Btn+Ctn)を求める。
(3)(2)においてdT≦Btn+1ならば、当該時刻は第n+1 の基本行動期間内の時刻dTの状態。但し、各基本行動は時刻0から始まっているものとする。
(4)(2)においてBtn+1<dTならば、当該時刻Tは第n+1 の基本行動と第n+2 の基本行動の接続期間の時刻dT-Btn+1の状態。但し、各接続動作は時刻0から始まっているものとする。
(5)(1)でnが存在しない時は、
(5−1)dT≦Bt1ならば、当該時刻は第1の基本行動期間内の時刻dTの状態。
(5−2)Bt1<dTならば、当該時刻は第1の基本行動と第2の基本行動の接続期間の時刻dT-Bt1の状態。
【0102】
なお、上記(1)は骨格構造物毎に、終了した接続期間の識別番号を保持しておけば、それが求める最大のnである。但し、識別番号は1から始まり、保持領域の初期状態は0とし、保持している識別番号が0の場合は求める最大のnは存在しないと判断する。基本行動または接続期間における時刻を一旦記憶装置5に保存する。
【0103】
処理29では、処理28で基本行動期間内と判別された場合に、対応する時系列基本動きデータから、当該時刻における骨格構造物(光源,カメラ)のベクトル量(状態データ)を読み取る。読み取りの際には、記憶装置5に保存された上記基本行動における時刻を利用する。読みとったベクトル量により、骨格構造物の場合ならば、当該時刻における位置への移動(変換)し、当該時刻における骨格状態(姿勢)に変形を行う。これは、前述のセグメント毎に定義されている局所座標系とワールド(全体)座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源(カメラ)の場合ならば、時系列動きデータに記述された当該時刻における位置に光源(カメラ)を移動し、当該時刻の光源(カメラ)パラメータに変更する。以上の求めたデータは一旦、記憶装置5に保持しておく。
【0104】
処理30では、処理28で接続期間内と判別された場合に、接続動作を生成する。接続動作の生成方法について、図10(b) を参照しながら説明する。求めたい接続動作の前後の基本行動に対応する時系列基本動きデータを前基本動きデータ、後基本動きデータとする。全基本動きデータは、時間tsであるとし、接続時間はte-ts であるとする。従って、後基本動きデータは時刻teから始まることになる。各時系列基本動きデータが時刻0から始まっているものとし、後基本動きデータは時間に関し、teだけ平行移動しておく。この前提のもとで、接続動作を次の手順で生成する。
【0105】
(1)前基本動きデータの後半のデータを用いて時刻teまでの後向き予測を行なう。この予測はベクトル量の各成分毎に行ない、後半部のデータを補間することで求める。補間はスプライン補間などの多項式補間や三角関数を規定とするチュビチェフ多項式などを用いる。成分iの予測曲線をAi(t) とする。
(2)後基本動きデータの前半部のデータを用いて時刻tsまでの前向き予測を行なう。この予測もベクトル量の各成分毎に行ない、前半部のデータを補間することで求める。成分iの予測曲線をBi(t) とする。
【0106】
(3)時刻tsで1、時刻teで0、単調減少、かつ微分可能な関数をφ(t) とするとき、時刻tsから時刻teにおける接続動作の時系列接続動きデータを、
Ai(t) φ(t)+Bi(t)(1-φ(t))
によって各成分毎に求める。具体的なφ(t) としては、例えば、
φ(t)=(1+cos( π(t-ts)/(te-ts)))/2
がある。
なお、(3)は時刻tsで0、時刻teで1、単調増加、かつ微分可能な関数をφ(t) とするとき、時刻tsから時刻teにおける接続動作の時系列接続動きデータを、
Ai(t)(1-φ(t))+Bi(t)φ(t)
によって各成分毎に求めてもよい。具体的なφ(t) としては、例えば、
φ(t)=(1-cos( π(t-ts)/(te-ts)))/2
がある。また、処理28で一旦接続期間内と判定された場合は、時間te-ts の間は、接続動作が続くので、接続動作の生成は初めて続期間内に入った時にのみ行ない、接続動作が終了するまでの時系列接続動作データを生成し、それを記憶装置5に保持しておき、2回目以降は接続動作は生成せずに、記憶装置5から読み出すだけにしてもよい。更に、前向き予測曲線,後向き予測曲線は、各々の時系列基本動きデータで固定的なものなので、前もって接続時間の最大値分だけ計算して保持しておけば、接続の度に予測曲線を計算せずに済む。
【0107】
処理31では、処理30で生成した接続動作から、骨格構造物の場合ならば、当該時刻における位置への移動(変換)し、当該時刻における骨格状態(姿勢)に変形を行う。これは、前述のセグメント毎に定義されている局所座標系とワールド(全体)座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源(カメラ)の場合ならば、時系列動きデータに記述された当該時刻における位置に光源(カメラ)を移動し、当該時刻の光源(カメラ)パラメータに変更する。以上の求めたデータは一旦記憶装置5に保持しておく。
【0108】
処理32では、記憶装置5に保持しておいた当該時刻の骨格構造物の位置と骨格状態(姿勢) に合わせて、対応する物体形状をバインドするか、もしくは物体の表面形状を生成する。この処理は本発明の第1の実施例の処理9と同様に行なう。
処理33ではアニメーションデータに記述されたシェーディング方法によって、一旦記憶装置5に保持された環境形状の配置データ,光源データ,カメラデータ,バインドした物体の形状データまたは発生した物体の表面形状データを用いて、レンダリングを行ない、当該時刻における画像を生成する。この処理は本発明の実施の形態1で示した処理10と同様に行なう。
【0109】
処理34では前述の記憶装置5に保持しておいた画像データを通常コンピュータグラフィックスで行なっているのと同様の方法で表示装置に表示する。
処理35では終了命令が発効されているかどうかの終了命令発効判定を行なう。この処理は本発明の実施の形態1で示した処理12と同様に行なう。終了命令が発効されていない場合は、処理28から処理35迄を繰り返す。
なお、違和感なくコンピュータグラフィックス・アニメーションを際限なく行なうためには、行動ルールに記述する基本行動を周期化(始めと終りを同じにする。サイクルは時系列基本動きデータと接続動作のトータルの時間)しておけばよい。
【0110】
実施の形態3.
次に、本発明の実施の形態3によるコンピュータグラフィックス・アニメーションデータ送受信生成方法について、図4を参照しながら詳細に説明する。
図4に示すように、全体の処理は、第1段階から第10段階で実行される。すなわち、第1段階は処理41と処理42、処理43で実行され、第2段階は処理44と処理45で実行され、第3段階は処理46で実行され、第4段階は処理47で実行され、第5段階は処理48で実行され、第6段階は処理49で実行され、第7段階は処理50で実行され、第8段階は処理51と処理52で実行され、第9段階は処理53で実行され、第10段階は処理54と処理55で実行される。
【0111】
上記処理41はアニメーションデータの作成を行なう処理で、処理42はアニメーションデータの編集を行なう処理、処理43はアニメーションデータの記憶装置2への保存を行なう処理、処理44はアニメーションデータの送信を行なう処理、処理45はアニメーションデータの受信を行なう処理、処理46は記憶装置5への保存を行なう処理、処理47は環境形状データの初期配置を行なう処理、処理48はイベントの発生の検出と基本行動の状態遷移に関する処理を行ない、処理49は当該時刻が基本行動期間内か、接続期間内かの判定を行なう処理、処理50は基本行動期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理51は接続期間内と判定された場合に接続動作を生成する処理、処理52は接続期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理53は骨格構造に物体(人間)の形状データをバインドする処理、もしくは物体の表面形状データを生成する処理、処理54は指定されたシェーディング方法でレンダリングを行なう処理、処理55はレンダリングされたコンピュータグラフィックス画像を表示装置に表示する処理、処理56は終了命令が発効されたか否か判定する処理である。
【0112】
さらに上記処理41から処理44については、送信側コンピュータ1によって記憶装置2を用いながら実行され、通信媒介手段3によってアニメーションデータを転送後、処理45から処理56までが受信側コンピュータ4によって、記憶装置5と表示装置6を用いながら実行される。
【0113】
処理41で作成されるアニメーションデータの構成は、物体に形状をバインドする場合には、図6(c) に示したように、骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。また、骨格構造に合わせて物体の表面形状を生成する場合には図6(d) に示したように、骨格構造、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。
【0114】
バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、基本行動、時系列基本動きデータに関しては、上述した実施の形態2で説明したのと同じなので、ここではの説明を省略し、骨格構造、行動ルール、環境管理制御方法について述べる。
【0115】
骨格構造に関しては、上述した実施の形態1,2における骨格構造に加え、外界に対するセンシングに関する項目を追記する。センサは視覚に対するものと触覚に対するものとを設ける。視覚に対しては、目に当たる部分(サイト)に相当する部分を中心にした、球または球の大円における扇型を組み合わせた3次元領域などをセンシング領域として定義する。触覚に関しては、手先などのサイトを中心とした球領域などをセンシング領域として定義する。従って、具体的には以下の記述を実施の形態1,2における骨格構造の記述に追記する。
(A)センサの種類(視覚または触覚)の識別子の記述。
(B)中心サイト名の記述。
(C)領域の定義の記述。
行動ルールは、実際に骨格構造物が基本行動を組み合わせて行動する場合に、これらの基本行動間の状態遷移とその状態遷移を起こすイベント、状態遷移時の接続動作の接続時間を記述する。ここでいうイベントとは、前述の骨格構造に対するセンシングに関するものと、マウスやキーボードなどの外部入力によるものとがある。
【0116】
図13に基本行動の状態遷移図の例を示した。行動ルールの記述はこの状態遷移図を記述したものである。具体的な記述は、以下の通りとなる。
(1)第1の基本行動の名前または識別子の記述。イベントが発生しない場合に、その基本行動を繰り返した状態で待機しているタイプの基本行動か、無条件に別の基本行動へ遷移するタイプの基本行動かのタイプ識別子も付記する。
(2)状態遷移の記述。
(2−1)イベントの識別子の記述。
(2−2)イベント発生後の遷移先の基本行動の名前または識別子の記述。行き先が無条件で別の基本行動へ遷移するタイプの基本行動の場合は、その戻り先の基本行動の名前または識別子も記述する。
(2−3)接続時間(接続フレーム数)の記述。行き先が無条件で別の基本行動へ遷移するタイプの基本行動の場合は、その戻り先の基本行動に対する接続時間も記述する。
(3)第2の基本行動の名前または識別子とタイプ識別子の記述。
【0117】
環境管理制御方法は、物体(骨格構造物)の運動管理とイベント管理を行なう。但し、光源やカメラも運動する場合にはその管理も行なう。具体的な記述は以下の通り。
(1)骨格構造物(光源、カメラ)の名前または識別子の記述。
(2)対応する行動ルールの名前の記述。但し、別ファイルに保存されている場合には、そのファイル名も付記する。
(3)使用するイベント識別子の記述。無条件で別の基本行動へ遷移するタイプの基本行動を含む場合は、それを示す識別子を記述する。
(4)骨格構造物(光源、カメラ)の数だけ(1)から(3)の処理を繰り返す。
(5)イベント識別子とそのイベント発生の判定条件の記述。全イベントについて記述する。
【0118】
処理42では前記のアニメーションデータの編集を行なう。ここでいう編集とは、目的とするコンピュータグラフィックス・アニメーションを行なうための確認と、データの調整を意味する。骨格構造物へバインディングする物体形状に関する編集については前述の通りである。環境の形状については、目的の環境の形状が作られているかを確認したり、環境設定通り配置されているかを確認し、適時修正を加える。基本行動や行動ルール,時系列基本動きデータに関しては、基本行動の組合せや遷移の調整、接続時間の調整、目的通りの動きを行なっているかどうかの確認を行ない適時修正する。これらの確認時に、属性データ,光源データ,カメラパラメータ,シェーディング方法,環境設定,環境管理制御方法の確認も同時に行なう。
【0119】
処理43は上述した実施の形態1の処理3と同様に行なう。
処理44と処理45は、上述した実施の形態1で示した処理4、処理5と同様に行なう。
処理46は上述した実施の形態1で示した処理6と同様に行なう。
処理47から処理56にかけての処理は、受信側コンピュータ4でのコンピュータグラフィックス・アニメーション画像の生成を行なうものである。以下その説明を行なう。
【0120】
処理47は実施の形態1に示した処理7と同様に行なう。
処理48では、イベントの発生の検出と基本行動の状態遷移に関する処理を行なう。
処理の前提として、各骨格構造物に対して、現在の状態を書き込む領域が記憶装置5に確保されているものとする。この領域には、現在の状態が、ループで基本行動をしている場合には、動作している基本行動の名前または識別子と時系列基本動きデータにおける現在の状態の時刻を保持し、遷移中の場合には、遷移中を示す識別子と遷移前後の基本行動の名前または識別子と遷移開始時刻、接続時間を保持する。遷移中であることの書き込みはイベントの発生直後である当該時刻から行なう。
【0121】
但し、無条件で別の基本行動に移るタイプの基本行動へ遷移する場合は、遷移中を示す識別子(前述のものとは異なる識別子)と、元の基本行動、経由する基本行動と経由後の基本行動の名前または識別子と、経由する基本行動前後の接続時間を保持し、イベントの発生直後(当該時刻)から経由後の基本行動に移るまでを遷移中とする。
【0122】
イベントの検出については、まずアニメーションデータの環境管理制御方法に記述されたイベント発生の判定条件を全てチェックし、該当するイベントを見つけ、そのイベント識別子を保持する。保持したイベント識別子に対応する骨格構造物(光源、カメラ)と行動ルールを環境管理制御方法の記述から見つけ、その行動ルールの名前または識別子を保持する。次に、基本行動の遷移については、保持した行動ルールの名前または識別子に対応する行動ルールを見て行なう。なお、この処理は記憶装置5で行ない、結果は前述の骨格構造物毎に設けられた現在の状態を示す領域に書き込み保持する。また、現在の状態が遷移中の骨格構造物については、イベントの発生は無視する。
【0123】
処理49では、処理する骨格構造物(光源,カメラ)が当該時刻Tにおいて基本行動期間内か接続時間内かの判定を行なう。この判定は、前述の各骨格構造物毎に設けられた現在の状態を見て行なう。状態遷移中でないものについては、保持されている基本行動の期間内と判定する。状態遷移中の骨格構造物については、無条件で別の基本行動に移るタイプの基本行動へ遷移中であるか否かを判定し、そうでない場合は接続期間中であると判定し、接続時間をCt0 、遷移開始時刻をTs、当該時刻をTとしたとき、接続期間中のT-Tsの状態と判定する。特に、T=Ts+Ct0のときには現在の状態を示す領域の遷移中基本行動の識別子を行き先の基本行動の名前または識別子に変更し、時系列基本動きデータにおける現在の時刻を−1にし、判定結果を基本行動期間内に変更する。
【0124】
無条件で別の基本行動へ移るタイプの基本行動へ遷移中の場合は、経由する基本行動の動作時間をBtとし、その前後の接続時間をCt0,Ct1 、遷移開始時刻をTsとし当該時刻をT(Ts<T≦Ct0+Bt+Ct1) としたときに次の手順で行なう。
(1)T<Ts+Ct0ならば、行きの接続動作の接続期間中の時刻T-Tsの状態。但し、各接続動作は時刻0から始まっているものとする。
(2)Ts+Ct0≦T<Ts+Ct0+Bt ならば、経由する基本行動期間中の時刻T-(Ts+Ct0)の状態。但し、基本行動は時刻0から始まっているものとする。
(3)Ts+Ct0+Bt ≦T ≦Ts+Ct0+Bt+Ct1 ならば、返りの接続動作の接続期間中の時刻T-(Ts+Ct0+Bt) の状態。特に、T=Ts+Ct0+Bt+Ct1 のときには、現在の状態を示す領域の遷移中の識別子を経由後の基本行動の名前または識別子に変更し、時系列基本動きデータにおける現在の状態を示す時刻を−1にし、判定結果を基本行動期間内に変更する。
【0125】
処理50では、処理49で基本行動期間内と判別された場合に、対応する時系列基本動きデータから、当該時刻における骨格構造物(光源,カメラ)のベクトル量(状態データ)を読み取る。読み取り方法は、記憶装置5に保存された、基本行動毎に確保された現在の時刻に1を加えた時刻のベクトル量を対応する時系列基本動きデータから読みとる。読みとった後は、現在の時刻を更新しておく。もし、現在の時刻が時系列基本動きデータが最大値となる時刻を越えた場合にはベクトル量を0とする(最大値となる時刻+1の剰余)。こうすることによりトグル動作が可能となる。読みとったベクトル量により、骨格構造物の場合ならば、当該時刻における位置へ移動(変換)し、当該時刻における骨格状態(姿勢)に変形を行う。
【0126】
これは、前述のセグメント毎に定義されている局所座標系とワールド(全体)座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源(カメラ)の場合ならば、時系列動きデータに記述された当該時刻における位置に光源(カメラ)を移動し、当該時刻の光源(カメラ)パラメータに変更する。以上の求めたデータは一旦記憶装置5に保持しておく。
【0127】
処理51では、処理49で接続期間内と判別された場合に、必要に応じて接続動作を生成する。つまり、前述の説明のように、無条件で別の基本行動へ移るタイプの基本行動で遷移中と判定されている場合で、経由する基本行動期間中は接続動作を生成する必要はなく、経由する基本行動に対応する時系列基本動きデータを用いる。接続動作の生成のアルゴリズムは、基本的には実施の形態2で示した処理30と同様であるが、ことなる点は前基本動きデータの途中で、後基本動きデータと接続する必要があると言うことである。従って、後向き予測曲線の生成方法が異なる。
【0128】
今、前基本動きデータが最大となる時刻をts、接続時間をtc、時刻T≦tsで接続動作を生成する必要が起きたものとする。この時、
(1)T=tsならば、実施の形態2の処理30と同様。
(2)tc≦ts-Tならば、時刻Tからtc分の前基本動きデータ(まだ実行されていない残りのデータ)を後向き予測曲線として利用する。
(3)ts-T<tc ならば、時刻Tからtsまでの前基本動きデータと、実施の形態2の処理30の方法で後向き予測曲線を時間tc-(ts-T) 分だけ生成したものを組み合わせて用いる。
【0129】
なお、前向き予測曲線については、実施の形態2の処理30の箇所で説明したように、前もって計算したものを用いることができる。また、前基本動きデータの途中では、イベントの処理は行なわないのであれば(つまり、前基本動きデータが完了後接続処理に移る)、実施の形態2で示した処理30と全く同様の方法で接続曲線を生成する。
【0130】
処理52では、処理51で生成した接続動作(経由中の場合は、経由する基本行動に対応する時系列基本動きデータ)から、骨格構造物の場合ならば、当該時刻における位置へ移動(変換)し、当該時刻における骨格状態(姿勢)に変形を行う。これは、前述のセグメント毎に定義されている局所座標系とワールド(全体)座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源(カメラ)の場合ならば、時系列動きデータに記述された当該時刻における位置に光源(カメラ)を移動し、当該時刻の光源(カメラ)パラメータに変更する。以上の求めたデータは一旦記憶装置5に保持しておく。
【0131】
処理53では、記憶装置5に保持しておいた当該時刻の骨格構造物の位置と骨格状態(姿勢) に合わせて、対応する物体形状をバインドするか、もしくは物体の表面形状を生成する。この処理は実施の形態1で示した処理9と同様に行なう。
処理54ではアニメーションデータに記述されたシェーディング方法によって、一旦記憶装置5に保持された環境形状の配置データ,光源データ,カメラデータと、バインドした物体の形状データ、または発生した物体の表面形状データとを用いてレンダリングを行ない、当該時刻における画像を生成する。この処理は実施の形態1に示した処理10と同様に行なう。
処理55では前述の記憶装置5に保持しておいた画像データを通常コンピュータグラフィックスで行なっているのと同様の方法で表示装置に表示する。
処理56では終了命令が発効されているかどうかの終了命令発効判定を行なう。この処理は実施の形態1で示した処理12と同様に行なう。終了命令が発効されていない場合は、処理48から処理56迄を繰り返す。
実施の形態4.
次に、本発明の実施の形態4によるコンピュータグラフィックス・アニメーションデータ送受信生成方法について、図5を参照しながら詳細に説明する。
図5に示すように、全体の処理は、第1段階から第10段階で実行される。すなわち、第1段階は処理61と処理62、処理63で実行され、第2段階は処理64と処理65で実行され、第3段階は処理66で実行され、第4段階は処理67で実行され、第5段階は処理68で実行され、第6段階は処理69で実行され、第7段階は処理70と処理71で実行され、第8段階は処理72、処理73、処理74で実行され、第9段階は処理75で実行され、第10段階は処理76と処理77で実行される。
【0132】
上記処理61はアニメーションデータの作成を行なう処理で、処理62はアニメーションデータの編集を行なう処理、処理63はアニメーションデータの記憶装置2への保存を行なう処理、処理64はアニメーションデータの送信を行なう処理、処理65はアニメーションデータの受信を行なう処理、処理66は記憶装置5への保存を行なう処理、処理67は環境形状データの初期配置を行なう処理、処理68はイベントの発生の検出と基本行動の状態遷移に関する処理を行ない、処理69は当該時刻が基本行動期間内か、接続期間内かの判定を行なう処理、処理70は環境状態を判別して時系列基本動きデータを変更する処理、処理71は基本行動期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理72は環境状態の判別を行なう処理、処理73は接続期間内と判定された場合に環境状態を考慮しながら接続動作を生成する処理、処理74は接続期間内と判定された場合に当該時刻における骨格構造の位置と形態を算出する処理、処理75は骨格構造に物体(人間)の形状データをバインドする処理、もしくは物体の表面形状データを生成する処理、処理76は指定されたシェーディング方法でレンダリングを行なう処理、処理77はレンダリングされたコンピュータグラフィックス画像を表示装置に表示する処理、処理78は終了命令が発効されたか否か判定する処理である。
【0133】
さらに上記処理61から処理64については、送信側コンピュータ1によって記憶装置2を用いながら実行され、通信媒介手段3によってアニメーションデータを転送後、処理65から処理78までが受信側コンピュータ4によって、記憶装置5と表示装置6を用いながら実行される。
処理61で作成されるアニメーションデータの構成は、物体に形状をバインドする場合には、図6(c) に示したように、骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。また、骨格構造に合わせて物体の表面形状を生成する場合には図6(d) に示したように、骨格構造、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法、基本行動、行動ルール、時系列基本動きデータである。
【0134】
骨格構造、バインドする形状データ、環境の形状データ、属性データ、光源データ、カメラパラメータ、シェーディング方法、環境設定、基本行動、時系列基本動きデータに関しては、上述した実施の形態3で説明したのと同じなので、ここではその説明を省略し、行動ルール、環境管理制御方法について述べる。
本実施の形態4における行動ルールでは、上記実施の形態3で説明した行動ルールに、環境の状態条件に対する基本行動の変更と接続動作の変更のためのパラメータを更に付記する。具体的な基本行動の変更方法や、基本行動変更パラメータについては後述する。
【0135】
図14に基本行動の状態遷移図の例を示した。行動ルールの記述はこの状態遷移図を記述したものである。本発明の第3の実施例と異なる点は、イベントの発生時に、更に環境の状態を観察し、その環境の状態に応じて遷移する先の基本行動に変更を加えることである。行動ルールの具体的な記述は、以下の通りとなる。
(1)第1の基本行動の名前または識別子の記述。イベントが発生しない場合に、その基本行動を繰り返した状態で待機しているタイプの基本行動か、無条件に別の基本行動へ遷移するタイプの基本行動かのタイプ識別子も付記する。
(2)状態遷移の記述。
(2−1)イベントの識別子の記述。
(2−2)イベント発生後の遷移先の基本行動の名前または識別子の記述。行き先が無条件で別の基本行動へ遷移するタイプの基本行動の場合は、その戻り先の基本行動の名前または識別子も記述する。
(2−3)接続時間(接続フレーム数)の記述。行き先が無条件で別の基本行動へ遷移するタイプの基本行動の場合は、その戻り先の基本行動に対する接続時間も記述する。
(3)環境の状態条件の記述。
(3−1)環境の状態条件の識別子の記述。
(3−2)基本行動変更識別子と変更パラメータの記述。
(3−3)接続動作変更識別子と変更パラメータの記述。
(4)第2の基本行動の名前または識別子とタイプ識別子の記述。
【0136】
環境管理制御方法は、物体(骨格構造物)の運動管理とイベント管理、及び環境の状態条件に応じた基本行動の変更を行なう。但し、光源やカメラも運動する場合にはその管理も行なう。具体的な記述は以下の通り。
(1)骨格構造物(光源、カメラ)の名前または識別子の記述。
(2)対応する行動ルールの名前の記述。但し、別ファイルに保存されている場合には、そのファイル名も付記する。
(3)使用するイベント識別子の記述。無条件で別の基本行動へ遷移するタイプの基本行動を含む場合は、それを示す識別子を記述する。
(4)骨格構造物(光源、カメラ)の数だけ(1)から(3)の処理を繰り返す。
(5)イベント識別子とそのイベント発生の判定条件の記述。全イベントについて記述する。
(6)環境の状態条件の識別子とその判定条件の記述。全ての環境の状態条件について記述する。
【0137】
処理62では前記のアニメーションデータの編集を行なう。ここでいう編集とは、目的とするコンピュータグラフィックス・アニメーションを行なうための確認と、データの調整を意味する。骨格構造物へバインディングする物体形状に関する編集については前述の通りである。環境の形状については、目的の環境の形状が作られているかを確認したり、環境設定通り配置されているかを確認し、適時修正を加える。基本行動や行動ルール、時系列基本動きデータに関しては、基本行動の組合せや遷移の調整、接続時間の調整、環境の状態条件に応じて動きが適切に変更されているか、目的通りの動きを行なっているかどうかの確認を行ない、適時修正する。これらの確認時に、属性データ光源データ、カメラパラメータ、シェーディング方法、環境設定、環境管理制御方法の確認も同時に行なう。
【0138】
処理63は上述した実施の形態1の処理3と同様に行なう。
処理64と処理65は、上述した実施の形態1で示した処理4,処理5と同様に行なう。
処理66は上述した実施の形態1で示した処理6と同様に行なう。
処理67から処理78にかけての処理は、受信側コンピュータ4でのコンピュータグラフィックス・アニメーション画像の生成を行なうものである。以下その説明を行なう。
処理67は上述した実施の形態1の処理7と同様に行なう。
【0139】
処理68では、イベントの発生の検出と基本行動の状態遷移に関する処理を行なう。これは上述した実施の形態3と同様に行なう。
但し、実施の形態3で示した、記憶装置5に確保された、各骨格構造物に対する現在の状態を書き込む領域には、基本行動が変更された場合、変更された基本行動の時系列基本動きデータの記憶装置5における所在地を示す名前または識別子(アドレス)、現在の状態の時刻を保持する。遷移中の場合には、遷移中を示す識別子と、接続動作に対応した時系列データの記憶装置5における所在地を示す名前または識別子(アドレス)を保持する。遷移中の識別子は、イベントの発生直後(当該時刻)に書き込む。
【0140】
但し、無条件で別の基本行動に移るタイプの基本行動へ遷移する場合は、遷移中を示す識別子(上述のものとは異なる識別子を与える)、経由前の接続動作に対応した時系列データの記憶装置5における所在地を示す名前または識別子(アドレス)、経由する基本行動(変更があった場合には変更された基本行動に対応する時系列基本動きデータの記憶装置5における所在地を示す名前または識別子)と経由後の基本行動の名前または識別子を保持し、イベントの発生直後(当該時刻)から経由後の基本行動に移るまでを遷移中とする。
【0141】
処理69では、処理する骨格構造物(光源,カメラ)が当該時刻において基本行動期間内にあるか、接続時間内にあるかの判定を行なう。この判定は、前述の各骨格構造物毎に設けられた現在の状態を見て行なう。状態遷移中でないものについては、保持されている基本行動の期間内と判定する。
処理70では、処理69で基本行動期間内と判別された場合に、各骨格構造物において、もし現在の状態が基本行動(時系列基本動きデータ)の最終時刻ならば、環境管理方法、及びその骨格構造物の行動ルールの記述から、環境がいずれかの環境の状態条件に適合しているか否かの確認処理を行なう。この確認処理で、何らかの条件に適合している場合には、基本行動(対応する時系列基本動きデータ)の変更を行なう。以下では、基本行動の具体的な変更方法について説明する。
【0142】
基本行動の変更には、時間に関する動作の伸長と圧縮、元の動きの経由点の変更、2つの動きの合成、骨格構造の部分構造の動きの交換による変更がある。時間に関する伸長と圧縮に関しては、図15(a),(b) に基づいて説明する。
図15(a) は時間に関する伸長を示したものである。元の基本行動に対応する時系列基本動きデータに関して、時刻数(フレーム数)をF、動作時間をTとするときに、この時刻数をF'>Fに変更することで時間的に伸長される。まず、元の時系列基本動きデータから補間曲線を生成し(多項式補間などで生成する)、時刻T/F'毎の補間曲線の値を求めて、新たな時系列データを生成することで、時間伸長した時系列基本動きデータを作る。図15(b) は時間に関する圧縮を示したものである。この場合は、F'<Fとなる条件で伸長と同じことを行なえば良い。変更パラメータとしては、F’またはFに対するスケール量を与える。これらのパラメータが定数の場合は、固定的な変更となるが、これら変更パラメータが変数の場合は、状況状況に応じた値を与えれば良い。
【0143】
図15(c) は元の動きの経由点を変更する場合を示したものである。変更する経由点のキーとなる時刻(図15(c) ではtp,tq )と変更値、及びその時刻を含む変更時間を与え、その時間の前後のデータとキー時刻のデータを用いて補間曲線を生成し、変更時間におけるキー以外の時刻の値を補間曲線から求めて、変更した時系列基本動きデータを生成する。この場合の変更パラメータは、キー時刻列とそれに対応した変更値列、及び変更時間である。前述の時間に関する伸長,圧縮の場合と同様に、これらのパラメータを定数で与えた場合は固定的な変更になるが、変数として定義しておき、変更の都度その値を与えるようにすれば、その場その場に応じた動作の変更ができる。
【0144】
図15(d) は2つの動きを実施の形態2で示した処理30における接続重み付け関数による2つの動きの合成を示したものである。まず、両方の動きの動作時刻数(フレーム数)を前述の時間に関する伸長、圧縮を用いて合わせる。次に、実施の形態2で示した処理30で示した動作接続で用いた接続重み付け関数によって合成する。つまり、時刻数を調整した2つの動きをA(t),B(t) とし、接続重み付け関数をφ(t) とした時に、
A(t)φ(t)+B(t)(1- φ(t))
によって、合成動作を生成する。これは、A(t)から徐々にB(t)に変化していくような動きになる。また、上式で、φ(t)=(0と1の間の定数)とすれば、定常合成になる。変更パラメータは、時刻数F、合成する基本行動の名前または識別子、合成方法(接続重み付け、定常合成)を示す識別子(前もって合成方法を記号化しておく)である。時刻数F、合成する基本行動の識別子(この場合名前では処理は困難)、合成方法の識別子を変数として与えれば、その場その場に応じた合成動作の生成が可能になる。
【0145】
骨格構造の部分構造に対する動きの交換については、交換後の動作の時刻数を前述の時間に関する伸長と圧縮を用いて、交換前の動作の時刻数と合わせ、部分構造の動作を交換すればよい。この場合は、部分構造の名前または識別子と交換する基本動作の名前または識別子である。これらのパラメータを変数で与えれば(但し、識別子)その場その場に応じた動作の変更が可能になる。
【0146】
処理71は変更された時系列基本動きデータ、もしくは元々の時系列基本動きデータから、当該時刻における骨格構造物(光源,カメラ)のベクトル量(状態データ)を読み取る。読み取り方法は、記憶装置5に保存された、基本行動毎に確保された現在の時刻に1を加えた時刻のベクトル量を対応する時系列基本動きデータから読みとる。読みとった後は、現在の時刻を更新しておく。もし、現在の時刻が時系列基本動きデータの最大値の時刻を越えた場合には0とする(時刻の最大値+1の剰余)。こうすることによりトグル動作が可能となる。読みとったベクトル量により、骨格構造物の場合ならば、当該時刻における位置への移動(変換)し、当該時刻における骨格状態(姿勢)に変形を行う。
【0147】
これは、前述のセグメント毎に定義されている局所座標系とワールド(全体)座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源(カメラ)の場合ならば、時系列動きデータに記述された当該時刻における位置に光源(カメラ)を移動し、当該時刻の光源(カメラ)パラメータに変更する。以上の求めたデータは一旦記憶装置5に保持しておく。
【0148】
処理72では、処理69で接続期間内と判別された場合(つまり、遷移中)で、イベントの発生直後(当該時刻)ならば、その時遷移先の基本行動に対する環境の状態条件を判別する。また、無条件で別の基本行動へ移るタイプの基本行動で、イベントの発生直後に遷移中となったものについては、経由する基本行動に対する環境の状態条件と経由後の基本動作に対する環境の状態条件の判別を行なう。
処理73では、遷移中でかつイベントの発生直後ならば、処理72の判別結果に基づいて接続動作を生成し、その名前または識別子(アドレス)と接続時間、生成した時系列の接続動作データを記憶装置5に保存する。それ以外の場合は接続動作を生成する必要はない。
【0149】
接続動作の生成方法は、処理72での環境の状態条件の判別結果が、後基本行動を変更する必要がない(環境の状態条件のいずれにも当てはまらない)場合には, 実施の形態3で示した処理51と同様である。処理72で環境の状態条件の判別の結果、後基本行動を変更する必要があると判別された時には、後基本動きデータを変更した後に、その変更した後基本動きデータに対して、実施の形態3で示した処理51と同様の方法で、接続動作を生成し、更に、行動ルールに示された変更方法と接続動作変更パラメータに基づき生成した接続動作を、前述の動作変更方法により変更する。
【0150】
特に、無条件で別の基本行動へ移るタイプの場合は、経由する基本行動、経由後の基本行動の両方に対して前述と同様の処理を行ない、2つの接続動作を生成する。生成した接続動作は、その名前または識別子と接続時間、生成した時系列の接続動作データを記憶装置5に保存する。
なお、経由後の基本行動が変更されている場合には、変更された時系列基本動きデータを初回は使う。
【0151】
処理74では、処理73で生成した接続動作(経由動作中の場合は経由する基本行動に対応する変更された時系列基本動きデータまたは元々の時系列基本動きデータ)から、骨格構造物の場合ならば、当該時刻における位置へ移動(変換)し、当該時刻における骨格状態(姿勢)に変形を行う。これは、前W述のセグメント毎に定義されている局所座標系とワールド(全体)座標系との変換関係、及び局所座標系間の変換関係によって行なう。光源(カメラ)の場合ならば、時系列動きデータに記述された当該時刻における位置に光源(カメラ)を移動し、当該時刻の光源(カメラ)パラメータに変更する。以上の求めたデータは一旦記憶装置5に保持しておく。
【0152】
処理75では、記憶装置5に保持しておいた当該時刻の骨格構造物の位置と骨格状態(姿勢) に合わせて、対応する物体形状をバインドするか、もしくは物体の表面形状を生成する。この処理は実施の形態1で示した処理9と同様に行なう。
処理76ではアニメーションデータに記述されたシェーディング方法によって、一旦記憶装置5に保持された環境形状の配置データ、光源データ、カメラデータ、バインドした物体の形状データまたは発生した物体の表面形状データを用いて、レンダリングを行ない当該時刻における画像を生成する。この処理は実施の形態1で示した処理10と同様に行なう。
処理77では前述の記憶装置5に保持しておいた画像データを通常コンピュータグラフィックスで行なっているのと同様の方法で表示装置に表示する。
処理78では終了命令が発効されているかどうかの終了命令発効判定を行なう。この処理は本発明の実施の形態1で示した処理12と同様に行なう。終了命令が発効されていない場合は、処理68から処理78迄を繰り返す。
【0153】
なお、上述した本発明の実施の形態1ないし4において、受信側コンピュータは複数台でもよい。但し、現状のftp やhttpを用いる場合には送信要求のあった受信側コンピュータから順にアニメーションデータを送ることになる。一度期に複数の受信側コンピュータにアニメーションを送るためにはftp やhttpを拡張して、ブロードキャスト機能を付加する必要がある。
【0154】
また、上記実施の形態1なしい4では、骨格構造に対する動きを例にしたが、同様の方法で、図16(a) に示したような、メッシュに対しても動きをつけることができる。この場合は、黒丸で示した節点を時系列(基本)動きデータで動かすことになる(図16(b) 参照)。これにより、旗など布地の動きや、顔の表情などの変化するコンピュータグラフィックス・アニメーションについても適用することができる。
【0155】
【発明の効果】
以上のように、本発明は上記した構成によって、送信側コンピュータと、受信側コンピュータと、前記送信側コンピュータと前記受信側コンピュータ間の通信媒介手段からなるシステムにおけるコンピュータグラフィックス・アニメーションデータの送受信、及び前記受信側コンピュータでの人間を始めとする動物の複雑な動きや、顔の表情の動き、複雑な物理計算の結果として得られる物体の動き、カメラや光源についての複雑な動きを扱ったコンピュータグラフィックス・アニメーション画像の生成の方法を提供することができる。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるシステムの構成図である。
【図2】本発明の実施の形態1におけるコンピュータグラフィックス・アニメーションデータ送受信・生成方法の処理のフローチャートを示す図である。
【図3】本発明の実施の形態2におけるコンピュータグラフィックス・アニメーションデータ送受信・生成方法の処理のフローチャートを示す図である。
【図4】本発明の実施の形態3におけるコンピュータグラフィックス・アニメーションデータ送受信・生成方法の処理のフローチャートを示す図である。
【図5】本発明の実施の形態4におけるコンピュータグラフィックス・アニメーションデータ送受信・生成方法の処理のフローチャートを示す図である。
【図6】本発明の実施の形態におけるアニメーションデータの構成図である。
【図7】骨格構造の説明図である。
【図8】骨格構造の説明図である。
【図9】ジョイント角データの説明図である。
【図10】時系列データの説明図である。
【図11】形状データのバインディングの説明図である。
【図12】物体の表面形状データの生成の説明図である。
【図13】イベントの発生による基本行動の状態遷移の説明図である。
【図14】イベントの発生による基本行動の状態遷移の説明図である。
【図15】時系列基本動きデータの変更の説明図である。
【図16】メッシュ形状の変形の説明図である。
【符号の説明】
1 送信側コンピュータ
2 記憶装置
3 通信媒介手段
4 受信側コンピュータ
5 記憶装置
6 表示装置
Claims (4)
- 送信装置と、複数または単数の受信装置と、前記送信装置と前記受信装置間の通信媒体手段からなるシステムにおける前記受信装置でのコンピュータグラフィックス・アニメーションのデータの受信と画像生成に関する方法であって、
物体の形状データと、物体の存在する環境の形状データと、カメラパラメータと、環境設定と、環境管理制御方法と、各物体の基本行動と、各物体の行動ルールと、前記基本行動に対応した物体の動きを時系列に生成するための時系列基本動きデータとからなるアニメーションデータを受信して前記受信装置の記憶装置に保存する受信・保存ステップと、
画像生成の視点の移動と、視線方向、画角の変更を時系列動きデータとして記述でき、前記受信装置の前記記憶装置に保存した前記アニメーションデータに基づいて、前記時系列動きデータに従って画像生成の視点と視線方向、画角の変更を行ないながらレンダリングを行ない、表示装置にコンピュータグラフィックス・アニメーション画像を表示するレンダリング・表示ステップとを有し、
前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記行動ルールに従って複数の前記時系列基本動きデータを動作接続しながら物体の動作を生成し、
前記レンダリング・表示ステップにおいて、2つの時系列基本動きデータ、前基本動きデータと後基本動きデータを接続する場合に、接続時間(フレーム数)を指定し、前記前基本動きデータに対しては前記接続時間における後向き予測曲線を生成し、前記後基本動きデータに対しては接続時間における前向き予測曲線を生成し、接続開始時刻において1、接続終了時刻において0となり、単調減少かつ時間に関し微分可能な接続重み付け関数を用いて、前記後向き予測曲線と前記接続重み付け関数の積と、前記前向き予測曲線と1から前記接続重み付け関数を引いた差との積との和によって、前記前基本動きデータと前記後基本動きデータの接続の動きを生成することで時系列基本動きデータの接続を行う、
ことを特徴とする通信型コンピュータグラフィックスアニメーション方法。 - 請求項1に記載の通信型コンピュータグラフィックスアニメーション方法において、
前記物体は骨格構造を有する多関節物体であり、
前記時系列基本動きデータの接続によって生成されたデータは、前記骨格構造の動きを時系列に生成するための時系列動きデータであり、
前記アニメーションデータは、前記骨格構造にバインドする形状データを更に含み、
前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記時系列動きデータから当該時刻における前記骨格構造の位置と形態を算出し、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記形状データを前記レンダリング・表示ステップにおける骨格構造の位置と形態に合わせてバインドを行う、
ことを特徴とする通信型コンピュータグラフィックスアニメーション方法。 - 請求項1に記載の通信型コンピュータグラフィックスアニメーション方法において、
前記物体は骨格構造を有する多関節物体であり、
前記時系列基本動きデータの接続によって生成されたデータは、前記骨格構造の動きを時系列に生成するための時系列動きデータであり、
前記レンダリング・表示ステップにおいて、前記受信装置の前記記憶装置に保存した前記アニメーションデータの前記時系列動きデータから当該時刻における前記骨格構造の位置と形態を算出し、前記骨格構造の位置と形態に合わせて物体の表面形状の生成を行う、
ことを特徴とする通信型コンピュータグラフィックスアニメーション方法。 - 請求項1に記載の通信型コンピュータグラフィックスアニメーション方法において、
前記受信・保存ステップにおいて、さらに、光源データを追加したアニメーションデータを前記受信装置の記憶装置に保存し、
前記レンダリング・表示ステップにおいて光源の移動と、光源強度、光線の方向、光の及ぶ範囲の変更を時系列動きデータとして記述でき、前記時系列動きデータに従って光源の位置の変更や、光源強度、光線の方向、光の及ぶ範囲の変更を行う、
ことを特徴とする通信型コンピュータグラフィックスアニメーション方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10605197A JP4053627B2 (ja) | 1996-04-25 | 1997-04-23 | 通信型コンピュータグラフィックスアニメーション方法 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP10507696 | 1996-04-25 | ||
JP8-105076 | 1996-04-25 | ||
JP10605197A JP4053627B2 (ja) | 1996-04-25 | 1997-04-23 | 通信型コンピュータグラフィックスアニメーション方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1040419A JPH1040419A (ja) | 1998-02-13 |
JP4053627B2 true JP4053627B2 (ja) | 2008-02-27 |
Family
ID=26445422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP10605197A Expired - Lifetime JP4053627B2 (ja) | 1996-04-25 | 1997-04-23 | 通信型コンピュータグラフィックスアニメーション方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4053627B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3764599B2 (ja) * | 1999-03-24 | 2006-04-12 | 京セラ株式会社 | 光半導体素子収納用パッケージの製造方法 |
EP1391848A4 (en) | 2001-05-14 | 2009-11-04 | Netdimension Corp | INFORMATION DISTRIBUTION SYSTEM AND INFORMATION DISTRIBUTION METHOD |
JP4775989B2 (ja) * | 2001-08-23 | 2011-09-21 | 株式会社バンダイナムコゲームス | 画像生成システム、プログラム及び情報記憶媒体 |
JP4508517B2 (ja) * | 2002-03-29 | 2010-07-21 | 株式会社コナミデジタルエンタテインメント | 3次元画像合成装置並びに方法及び情報記憶媒体 |
JP3760347B2 (ja) | 2002-07-30 | 2006-03-29 | 株式会社光栄 | プログラム、記録媒体、ゲームキャラクタ描画方法及びゲーム装置 |
JP4614268B2 (ja) * | 2004-10-15 | 2011-01-19 | サミー株式会社 | 遊技機 |
US11660526B2 (en) | 2018-03-01 | 2023-05-30 | Sony Interactive Entertainment Inc. | Estimation apparatus, estimation method, and program |
JP7421452B2 (ja) * | 2020-09-02 | 2024-01-24 | 株式会社日立国際電気 | 骨格検出システム |
CN112150590B (zh) * | 2020-09-04 | 2021-07-09 | 完美世界(重庆)互动科技有限公司 | 一种动画文件的输出方法和装置 |
-
1997
- 1997-04-23 JP JP10605197A patent/JP4053627B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH1040419A (ja) | 1998-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0805418B1 (en) | Computer graphics animation | |
US6822653B2 (en) | Methods and system for general skinning via hardware accelerators | |
Lin et al. | Visualization of indoor thermal environment on mobile devices based on augmented reality and computational fluid dynamics | |
CA2397313C (en) | Method of generating poses and motions of a tree structure link system | |
US5909218A (en) | Transmitter-receiver of three-dimensional skeleton structure motions and method thereof | |
Banerjee et al. | Virtual manufacturing | |
US20110304622A1 (en) | Development Tools for Animated Character Rigging | |
CN111390908B (zh) | 一种基于网页的机械臂虚拟拖动方法 | |
JPH11265462A (ja) | 空間視点制御装置 | |
JP6430079B1 (ja) | 監視システムおよび監視方法 | |
JP4053627B2 (ja) | 通信型コンピュータグラフィックスアニメーション方法 | |
Duffy et al. | Development of an Internet virtual layout system for improving workplace safety | |
RU2656584C1 (ru) | Система проектирования объектов в среде виртуальной реальности в реальном времени | |
Liang et al. | Real-time state synchronization between physical construction robots and process-level digital twins | |
Alvarez et al. | VRMDS: an intuitive virtual environment for supporting the conceptual design of mechanisms | |
Wang et al. | Integrating Java 3D model and sensor data for remote monitoring and control | |
CN110570357A (zh) | 基于ue4引擎的镜像实现方法、装置、设备及存储介质 | |
US10319133B1 (en) | Posing animation hierarchies with dynamic posing roots | |
JPH10302085A (ja) | Cgモデルの動作記録システム | |
US8289331B1 (en) | Asymmetric animation links | |
US8890889B1 (en) | System and method for generating a pose of an object | |
Vanegas et al. | Using simulation and visualization technologies to strengthen the design/construction interface | |
JP3516377B2 (ja) | 多関節構造体の運動像生成方法及びそれを記録した記録媒体及びそれを使った運動像生成装置 | |
US8395627B2 (en) | Spline technique for 2D electronic game | |
Mukundan et al. | Skeletal animation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040421 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040421 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061212 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070209 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070327 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070525 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070703 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070831 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20071113 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20071206 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101214 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101214 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111214 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111214 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121214 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121214 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131214 Year of fee payment: 6 |
|
EXPY | Cancellation because of completion of term |