(57)【特許請求の範囲】
【請求項１】
当該キーフレームデータの種類を示す識別情報と，当該キーフレームデータに付されたラベル（キーフレームのラベル）と，領域との対応関係を示す情報と，時間との対応関係を示す情報と，変移値を参照するための情報との対応関係で定義されたキーフレームデータと、
前記キーフレームデータ中の識別情報及び領域との対応関係を示す情報及び時間との対応関係を示す情報及び変移値を参照するための情報を順次参照してチャンネルを後から生成し、
当該チャンネルデータに基づいて、ＣＧアニメーションを作成することを特徴とするＣＧアニメーション用データ構造。
【請求項２】
前記キーフレーム群データは、当該キーフレーム群データに付されたラベル（キーフレーム群のラベル）を有し，複数の他のキーフレーム群のラベルとの対応関係を有することもできることを特徴とする請求項１記載のＣＧアニメーション用データ構造。
【請求項３】
当該領域名データの種類を示す識別情報と，当該領域名データに付されたラベル（領域名のラベル）と，領域との対応関係を示す情報との対応関係で定義された領域名データを有し、
前記キーフレームデータ中の領域との対応関係を示す情報が前記領域名のラベルであることを特徴とする請求項１記載のＣＧアニメーション用データ構造。
【請求項４】
前記領域名データは、少なくとも１つの他の領域名のラベルとの対応関係を有することを特徴とする請求項３記載のＣＧアニメーション用データ構造。
【請求項５】
前記キーフレーム群データは、少なくとも１つの前記領域名のラベルとの対応関係を有することを特徴とする請求項３又は請求項４記載のＣＧアニメーション用データ構造。
【請求項６】
当該タイミングデータの種類を示す識別情報と，当該タイミングデータに付されたラベル（タイミングのラベル）と，時間若しくは時間との対応関係で定義されたタイミングデータを有し、
前記キーフレームデータ中の時間との対応関係を示す情報が前記タイミングのラベルであることを特徴とする請求項１記載のＣＧアニメーション用データ構造。
【請求項７】
前記タイミングデータは、少なくとも１つの他のタイミングのラベルとの対応関係を有することを特徴とする請求項６記載のＣＧアニメーション用データ構造。
【請求項８】
前記キーフレーム群データは、
前記タイミングのラベルとの対応関係を有することを特徴とする請求項６又は請求項７記載のＣＧアニメーション用データ構造。
【請求項９】
前記前記キーフレームデータ中の識別情報及び領域との対応関係を示す情報及び時間との対応関係を示す情報及び変移値を参照するための情報を順次参照してチャンネルを後から生成し、
当該チャンネルデータに基づいて、ＣＧアニメーションを作成することを特徴とする請求項１記載のＣＧアニメーション用データ構造を利用したＣＧアニメーション用編集システム。
【請求項１０】
前記前記キーフレームデータ中の識別情報及び領域との対応関係を示す情報及び時間との対応関係を示す情報及び変移値を参照するための情報を順次参照してチャンネルを後から生成し、
当該チャンネルデータに基づいて、ＣＧアニメーションを作成することを特徴とする請求項１記載のＣＧアニメーション用データ構造を利用したＣＧアニメーション作成手法。
【請求項１１】
当該タイミングデータの種類を示す識別情報と，当該タイミングデータに付されたラベル（タイミングのラベル）と，タイミング（時間）と，少なくとも１つの他のタイミングのラベルとの対応関係で定義されたタイミングデータと、
前記タイミングのラベルと変移値を参照するための情報との対応関係で定義されたキーフレームデータと、
複数の他のキーフレーム群データとの対応関係又は複数の前記キーフレームデータとの対応関係の少なくともいずれか一と，前記タイミングのラベルとの対応関係で定義されたキーフレーム群データとを有することを特徴とするＣＧアニメーション用データ構造。
【請求項１２】
前記キーフレームデータと、前記タイミングデータとを独立して編集可能な請求項１１記載のＣＧアニメーション用データ構造を利用したＣＧアニメーション用編集システム。
【請求項１３】
複数の前記タイミングデータを作成した後、前記キーフレームデータを作成する請求項１１記載のＣＧアニメーション用データ構造を利用したＣＧアニメーション作成手法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、コンピュータグラフィクスアニメーションに用いる表示要素の、モーションデータのデータ構造と編集機能に関する。
【背景技術】
【０００２】
従来のコンピュータグラフィックス（以下CG）に於けるアニメーションのデータ構造では「時間」と「変化要素」は静的に関連付けられており、任意の「時間」や「変化要素」をグループ化する技術はなかった。例えばキーフレーム補間法によるアニメーション（以下キーフレームアニメーション）において、データはキーフレーム単位で扱われ、時間と変化要素はキーフレームデータ内に直接記述されており、時間と変化要素は不可分である。また、従来の３DCGアニメーション用のデータでは表示用の構造に付けられた名称を構成部位の名称として使用しており、構造と部位名称は不可分であった。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のCGアニメーションのデータ構造では時間はキーフレームデータに直接値が記述されており、変移値と時間が不可分であったため、抽象的なタイミングを設定することが困難だった。また、後からキーフレームの時間を変えたい際に該当するキーフレームを検索する必要があった。
【０００４】
また従来のキーフレームアニメーションでは「キーフレーム補間を行うために同種のキーフレームを時間順に並べたチャンネル」が存在することを前提に作られており、アニメーションデータを部分的に切り出すためには「チャンネルを束ねたグループ」「チャンネルグループを任意の時間長で切ったモーションクリップ」という複数の技術を組み合わせて使用する必要があった。そのため使用者はそれらの技術を把握することと、個々の操作を一つ一つ適切に使用することを求められており、多くの負担を強いられていた。
【０００５】
また部位は「チャンネルを束ねたグループ」の単位として有効な概念であるにもかかわらず、従来はアニメーション表示用データ構造と部位名称が不可分であったため、人が思い浮かべる「腕」のような「チャンネルを束ねたグループ」を形成するための部位を作ることができなかった。また、関節位置に名称を付ける概念のソフトウェアで作成されたデータでは「ひじ」「手首」という名称を使用し、部位に名称を付ける概念のソフトウェアで作成されたデータでは「前腕」「手」という名称を使用する。両者には互換性がなく、データを共有する際に「部位名称を使ったデータ処理」が複雑になっている。
【０００６】
こうしたことによりCGアニメーションの作成工程では創造性の低い作業に煩わされる率が高かった。そこで、この発明は、「アニメーションデータの編集効率及び再利用性を向上させる」ために、アニメーション用ソフトウェア内において「効率的に時間を操作できる仕組みを提供すること」、「任意のキーフレームを直接グループ化する仕組みを提供することで、アニメーションデータの部分切り出しを容易にすること」、「部位名称を利用したシステムを構築しやすくすること」を課題とする。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明は、当該キーフレームデータの種類を示す識別情報と，当該キーフレームデータに付されたラベル（キーフレームのラベル）と，領域との対応関係を示す情報と，時間との対応関係を示す情報と，変移値を参照するための情報との対応関係で定義されたキーフレームデータと、キーフレームデータ中の識別情報及び領域との対応関係を示す情報及び時間との対応関係を示す情報及び変移値を参照するための情報を順次参照してチャンネルを後から生成し、当該チャンネルデータに基づいて、ＣＧアニメーションを作成することを特徴とするＣＧアニメーション用データ構造である。
【０００８】
請求項１１に記載の発明は、当該タイミングデータの種類を示す識別情報と，当該タイミングデータに付されたラベル（タイミングのラベル）と，タイミング（時間）と，少なくとも１つの他のタイミングのラベルとの対応関係で定義されたタイミングデータと、タイミングのラベルと変移値を参照するための情報との対応関係で定義されたキーフレームデータと、複数の他のキーフレーム群データとの対応関係又は複数のキーフレームデータとの対応関係の少なくともいずれか一と，タイミングのラベルとの対応関係で定義されたキーフレーム群データとを有することを特徴とするＣＧアニメーション用データ構造である。
【発明の効果】
【００２７】
本発明によれば、アニメーションデータと実時間と切り離し、タイミングの編集効率を改善する。
【００２８】
本発明によれば、時間データをグループ化することで、時間に様々な複合的な意味を持たせ、編集効率を改善する。
【００２９】
本発明によれば、従来と同じ方法で作られたアニメーションを、任意の単位に分割し、個々に名称等を付けて識別することで、アニメーションデータの見通しを良くし、学習効果、編集効率、再利用性を向上させる。
【００３０】
本発明によれば、アニメーション用のデータ構造の概念から独立して、自由に名称をつけることができ、名称によるアニメーションデータ管理を改善する。
【００３１】
本発明によれば、アニメーションの三大基本要素を同じ手法でグループ化でき、統一された環境でアニメーション編集作業の効率を改善する。
【発明を実施するための最良の形態】
【００３２】
この発明の一実施形態を、図1に示す。
図1で示すシステムはアニメーションの三大基本要素（以下、三大要素）である「領域、時間、動作要素」、すなわち「どこを、何時、どう動かすか」を基本にデータを整理するシステムである。それぞれをグループ化するためのデータ構造と、それらを連携させてアニメーションデータを作り出すエンジン部を中心に構成される。このシステムでは三大要素を「Region、Timing、Movement」と呼ぶ。
以下で基本データ構造を詳細に述べる。
【００３３】
「領域（Region）」
Regionとは、仮想空間上の表示対象物や領域に名称や属性を付与する「ラベル」のようなものとして位置付けられる。3Dモデルの領域を示すためのデータが含まれるが、それ以上の構造的な意味を直接含まない。モーションを付ける対象を示すと共に、モーションデータの再利用などの際に検索キーとしても使用する。
Regionは従来の3D-CGソフトウェアのボーン（あるいはスケルトン、ジョイント等と呼ばれる同種のシステム）からモデルの物理的な骨格構造を取り除いたものである。骨格情報を持たないので、図４のように、「関節」に注目するか「骨」に注目するか、気にすることなく自由に名称をつけることができる。また、これまで困難だった「上腕、前腕、手」を含む「腕」といった定義が可能になり、人の概念に近い取り扱いが可能になる。このことにより言語処理との親和性が向上する。「Regionのグループ化」のメリットとしては他に、従来から変移値は「部位を表すボーン」に関連付けられており、それと同様に複数の部位のモーションをまとめて再利用する場合にも、図５のように、該当部位の「集合」に「モーション」を関連付けられるようにするとわかりやすいことがあげられる。
なお、取り除かれた骨格構造の座標値及び親子関係は別のデータ構造に含まれる。「座標値」は「表示対象物」に、「親子関係」は「変移値」として、後で述べるMovementに含まれる。
Regionには特殊化された「Character」「Prop」「Stage」なども含まれる。なお領域の定義が途中で変化する場合はMovementを特殊化した「動的領域」として扱う。特殊化の概要は以下の通り。
「Character」
個性・性格を持つ単位として主に人間を想定した属性を持つ。（年齢、性別等） 
「Prop」
道具として独立した領域を示す。
「Stage」
場面全体を示す領域で他のRegion（及びその派生）は、この中に含まれる。
【００３４】
「時間（Timing）」
Timingは時間を抽象化・グループ化する。図６に示すように従来のキーフレームを「時間」と「変移値」に分割し、変移値が直接時間を持たないようにし、変移値は実行されるタイミングを参照する形で持つ。これにより変移値は自分が実行されるタイミングについて一切の責任を負わないこととなり、「Timing」側で自由に時間をコントロールできることになる。以下のように、この方式には6つの主なメリットがある。
1.偶然同じ時間に来ているだけのタイミングと、動作の連係上常に同じでなければならないタイミングを明示的に分けることができる。タイミングの抽象化とは「何時何分に○○値に変化する」という情報を持つのではなく、「AというタイミングにBという変移値が割り当てられている」として、Aの時間やBの値は好きに変えられるということを指す。時間は好きに決めてよいのだから2つのタイミングの時間が同じということも当然ありうる。タイミングの抽象化（シンボル化）を行っておけば再編集を行った時に両者のタイミングがずれた場合にでも簡単に修正を行うことができる。
2.キーフレームのタイミングを操作するたびに膨大なキーフレームデータに検索をかけなくてよい。通常、同時刻に複数のオブジェクトに対してキーが打たれており、それは時として数十個、数百個となる。つまりタイミングの数はキーの数に比べて圧倒的に少ないため高速に処理することが可能である。
3.タイミングがモーションデータから独立しているため、タイミングだけの再利用が可能である。例えば「歩く」モーションの「タイミング群」は体格の違う他のキャラクタに対しても変更無しに適用できる。
4. 図７のように、時間の流れを先行して決めることができる。全体の時間の流れを先行して決定することは「ストーリー」作りの観点から見ると有用である。
5.タイミング同士をどのようにグループ化しようとアニメーションには何の影響もなくなるため、タイミング同士を好きに組み合わせてグループを作ることができる。
6.実際の時間と、人の認識には「微妙にずれ」があり、例えば図８のように、腕の様にいくつもの稼動部が連結されているものだと同時に動いているようでも実際に各関節が動くタイミングはそれぞれずれている。複数のタイミングをグループ化し1つのタイミングとしても扱えるようにすることで、こうした差異を吸収することができる。
Timingには特殊化された「Tempo（タイミング群）」等も含まれる。
Tempoは時間方向に長さを持つタイミングのグループである。Tempo自身は変移値を持たないので直接「動き」を持つわけではないが動きが時間と変化量で表される以上、動きの一部である。少なくとも「動き」をコントロールすることができる。実際アニメーション作成時に行う「タイミング」の調整は、動きの調節のかなりの部分に相当する。
Tempoには主に3つのタイプがある。１つは単に名前をつけて再利用や編集がしやすいように括ったもの。2つ目は「手拍子」の概念をデータ構造にしたものであり、基準になるタイミングの間に動きのキーとなるタイミングが複数配置される。３つ目は「手拍子」の内、他のTempoを流用して自分自身は「タイミング」を持たない繰り返し専用のものである。
Tempoはレイヤーのように重ねることができる。レイヤーのように扱えることで複数の動きをブレンドさせることが可能になる。
【００３５】
「変化要素（Movement）」
Movementは動作を記述するシステムの核となるデータ群である。Movementはアニメーション用のキーフレームデータをチャンネルに格納する前に、自分たち自身の中でグループ化してしまうための構造である。これによりグループ化や再利用が一つのデータ構造の中で可能となり、操作が容易になる。CGアニメーションにおいては全てのものが変化する可能性を持っており、Movement（=変移値）ではCGで扱う全てのデータ要素を取り扱う可能性がある。なお、全てのアニメーション要素はMovementを特殊化したものである。
主な動作要素の意味は以下のとおり。
「Movement」
Region（１つか２つ）とTempo（１つ）への参照を持つ。Movement自身は他のデータを格納してグループ化するだけのためのデータである。
他のクラスオブジェクトをグループ化できるためモーションの再利用のための重要なキーとなる。また、属性にRepeat属性を持つ。この属性値に他のMovementが指定されていると、自分自身は中身を持たなくても他のMovementからそこにアニメーションを持ってくることが可能である。
「Key」
最も使用頻度の高いアニメーション用データである。従来ソフトウェアのアニメーションデータのほとんどはこの中に格納される。具体的は、「移動（Translate）」、「回転（Rotate、クォータニオン）」、「拡大縮小（Scale）」それに「マトリックス」が格納可能である。こうした様々なデータをひとえに格納できるようにしてあるのは違う種類同士の相互補間が可能な様にするためである。例えば回転のさせ方には様々な順序ややり方があるがそれらは同列に扱えた方が便利である。
「Link」
2つのRegionへの参照を持ち、従来システムではボーンが受け持っていたパーツ間の階層付けを行う。アニメーションの途中でも変更可能で、従来システムではParentコンストレインツが受け持っていた機能もLink一つで受け持つ。
IK（インバースキネマティクス）
Linkと組み合わせて使用し、インバースキネマティック(逆運動学)という、連続した関節構造の位置を末端側から計算する仕組みを実現する。
「Aim」
指定されたオブジェクトの方角を見続ける。
「動的領域（Regionプロキシ）」
Movemnetを特殊化したものでありながら、Regionとして振舞う。これはRegionがアニメーションの途中で変更されるのに使用される。RegionプロキシはPhysicalクラスに格納されているオブジェクトを呼び出したり、Regionと同じ機能を持つ。
【００３６】
「三大要素のグループ化」
アニメーション三大要素を個別にグループ化するために、本システムではTree構造を使用する。これはTree構造用のノードベースコンテナにより実現される。これに要求される機能はListコンテナとほぼ同様である。ただし、兄弟間の行き来しかできない「一つの階層限定」の反復子が必要である。本システムでは同階層内限定の操作が多いため、この反復子を多用する。
【００３７】
「（仮想空間）表示システム」
実例を図７に示す。
画面上でパーツを選択するとその部分にワイヤーフレームが上書きされ、表示画面上の任意の点でドラッグしポーズを変えることでモーションを編集する。そのほかの表示には「アニメーション表示。アニメーション用時刻での状態を表示する」「既存Timingでの状態表示。すでに変移値を持つものと変移値を持たないものの表示に別れる」「選択Timingでの状態表示。先の編集用表示とそうでないものに別れる」がある。なお、各表示物を選択することでパーツの選択と同時にTimingの選択も行われるから「選択Timing状態表示」のうち編集用でないものの表示は「既存Timing状態表示」と同じでよい。また、アニメーション表示を選択した場合は最寄のTimingが選択される。この最寄Timingを常に選択するオプションを設定することもできる。
なお、アニメーションの再生中でもポーズの変更は可能であり、これにより実際に再生している状態で確認しながらのアニメーション付けが可能になる。
【００３８】
「GUI」
実例を図３に示す。データの詳細表示には、「Tree表示」を使用するとメモリー上に展開されているデータの状態がそのまま表示されるため、デバッグや、システムの仕組みを理解するのには最適である。
【００３９】
「アニメーションデータの生成手順」
Movementを定義するためにはRegionとTimingが必要であることから、原則としてRegionとTimingから作成する。すなわち、シーンに登場するキャラクタや小道具類を決め、シーン全体の時間の流れを先行して決める。全体の時間の流れを先行して決定することは「ストーリー」作りの観点から見ると有効な手順だが、従来のCGアニメーション編集では困難だったため本システムの特徴といえる。
【００４０】
「アニメーション再生」
このシステムではアニメーションの再生方法について何の制限も持たない。言い換えれば、既存のいかなるアニメーション再生方法も実装し、再現することができる。ただし、キーフレーム補間によるアニメーションを優先する。
【００４１】
「キーフレーム補間の原則」
TempoにしてもMovementにしてもモーションの一部を切り出してグループ化する。グループ同士を重ね合わせることも可能である。その点では従来の流用可能モーション（以下、モーションクリップ）と同等のものである。しかしながらモーションクリップは個々が完全に独立しており、継ぎ目をぼかすためにはその為の処理が必要であった。TempoやMovementは、本来はフラットで連続していたモーションの区間をわかり易くするために便宜的に括るためのものであり、例えTempoやMovementが続いていない区間があってもアニメーションは連続的に続いて行かなくてはならない。このため以下の６つの条件を満たす。
１．Movementでグループ化した場合もグループ化前と同じアニメーションが再生できなくてはならない。
２．グループ間に完全に他の変化要素が途絶えている区間がある場合、グループ同士の合い間をキーフレーム補間すること。
３．Timingのグループ化は原則アニメーションには影響してはならない。
４．前項にて影響が許されるのはTempoの属性であるScaleが1以外の値を持つときのみである。
５．以前、他の場所で滑らかに補間されていたMovementの端は他の場所に持ってきた時にも自動的に滑らかに補間されなければならない。
６．「永続化」が指定されている変移値が最後にあった場合そのままの値を維持し続けること。
また、本システムでは従来システムのチャンネルを一度除外しているため、キーフレーム補間のために「動的チャンネル」という新しいチャンネルシステムを構築する。
【００４２】
「動的チャンネル」
ユーザがアニメーションを作る際に操作するのは「タイミングと変移値」である。チャンネルはコンピュータが最終的なポーズを求めるためにキーフレーム間補間を行う際に使用するものであって、普段、人間が見たり操作したりする必要は無い。そのため極力チャンネルの生成を遅らせ、後から動的にチャンネルを生成する。
【００４３】
「動的チャンネルの実態」
変移値にはTimingやRegionへの参照を持っている。また、「Key、Link」など種類も明確である。図９に示すように、この変移値を「参照しているRegionごと」、「変移値の種類ごと」に分類し、「時間順」でソートし直すと、チャンネルと同じ状態に整理される。この分類ごとの「始点終点のイテレータ」を保持したオブジェクトを作成すれば実際の動的チャンネルとなる。動的チャンネルにはMovementの種類に対応したチャンネルが実装されておりMovement同様、継承による多態性を持つ。例えばKeyに対してはKeyChannel、Linkに対してはLinkChannelが実装される。
動的チャンネルシステムは操作の必要が無いため、ユーザインタフェースを持たなくて良い。動的チャンネルシステムが変移値の整列、キーフレーム補間に使用する変移値の選出、補間値の計算まで、アニメーション表示を背後で支えているおかげで、アニメーション三大要素に対して階層化などの操作を自由に行うことができる。
【００４４】
「実施形態の効果」
この実施形態によれば、人の感覚に近い「名称付け」や「グループ化」が可能で、日常使用している自然言語の概念に即した名称を使用することができる。これにより、データ構造だけでも従来型アニメーションデータの冗長性を大幅に改善でき、編集効率や再利用性の向上が期待できる。
また、名称を文字列ではなくシンボルとして他のデータ構造から利用することで、両者の独立性を保ちながら連携した処理を可能にする。例えばキーフレームデータでは変更すべき部位を識別することができ、モーションデータを管理するソフトウェアからは同じ部位の「名称」をキーワードとして、領域の階層構造と関連付けてモーションデータを格納することができる。
また、図10に示すように「動作要素のグループ化」と「動的チャンネル」の組み合わせにより、「ユーザが入力を行う部分」と「コンピュータが自動処理する部分」を明確に分けることが可能になり、効率的に作業できるようになる。
【００４５】
「他の実施形態」
システムはアプリケーションソフトウェアとしてだけではなく、他ソフトウェアから利用するためにライブラリとして供給してもよい。
「領域、時間、変化要素（変移値含む）」を扱っていれば、例えば「Part、Tempo、Motion」などの「Region、Timing、Movement」以外の名称でも良い。
グループ化に用いるのは「Tree」だけでなく「Graph」など他のデータ構造でも良い。
図３の実施形態では、データの詳細表示は「Tree表示」であったが、他の実施形態では、時間軸を「横軸」とし部位やチャンネルを縦軸として、変化要素を配置した「タイムライン表示」でも良い。
仮想三次元空間を使用したCGアニメーションだけでなく二次元平面上のCGアニメーションでも良い。
【図面の簡単な説明】
【００４６】
【図１】この発明の一実施形態を示すシステム構成図である。
【図２】この発明の「アニメーション表示」および「編集画面」の一実施形態を示す画面表示図である。
【図３】この発明の「GUI」の一実施形態を示す画面表示図である。
【図４】この発明の「領域」を示す概念図である。
【図５】「領域」の単体とグループにおけるモーション格納法を示す概念図である。
【図６】この発明の「時間」を示す概念図である。
【図７】「時間」の入力作業における従来技術と本発明の比較図である。
【図８】人にとっての「時間の概念」における従来技術と本発明の比較図である。
【図９】この発明の「変化要素」と、「動的チャンネルの生成」を示す概念図である。
【図１０】「動作要素入力」および「グループ化」におけるワークフローと従来技術と本発明の比較図である。
【図６】
0004772455.tif 000002
【図７】
0004772455.tif 000003
【図９】
0004772455.tif 000004
【図１０】
0004772455.tif 000005
【図１】
0004772455.tif 000006
【図２】
0004772455.tif 000007
【図３】
0004772455.tif 000008
【図４】
0004772455.tif 000009
【図５】
0004772455.tif 000010
【図８】
0004772455.tif 000011