(57)【特許請求の範囲】
【請求項１】
ジオメトリ処理部および描画処理部を有し、ユーザが入力するモデル形状などのデータに基づきスケルトンデータを作成してアニメーションのモデルを完成させるゲーム機におけるアニメーション生成方式において、
入力されるデータに基づき部品単位でモデルを構築するモデル作成手段と、
前記モデル作成手段で作成した部品が何であるかの情報を入力する入力手段と、
前記モデル作成手段で作成したモデルに対し、入力された情報から手，足，胴体等の種類毎に適切なスケルトンデータを構築するスケルトンデータ作成手段と、
前記スケルトンデータ作成手段で作成した各ボーンを動きの目的ごとに分類、管理する分類管理手段と、
各ボーンのパーツに元のアニメーションデータを加工して貼り合わせるアニメーションデータ加工手段と、
前記加工したアニメーションデータから、各分類ごとに決められた法則にしたがってボーン計算を行い、アニメーションを実行するアニメーション実行手段とを備え、
前記アニメーションデータ加工手段では、キャラクタが移動する際の基準となる重心を、すべての足の付け根位置の平均位置に設定し、
元のモデルデータと作成されたモデルとの手足の長さの比であるスケール値を求め、
足の場合、足の付け根からの垂線と高さ０の平面の交点を求め、その交点の原点からの位置ベクトルを求め、腕の場合は、足の場合と同じ方法によって時間毎に位置ベクトルを求めることにより、
前記スケール値で求めたアニメーションデータのスケーリングを行い、前記位置ベクトルでオフセットを行い、
前記アニメーション実行手段では、インバースキネマティックで手足について根元から先端部の各関節の回転値を計算し、手足のボーンを、移動，回転するように構成したことを特徴とするアニメーション生成方式。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ上で表現される、モデルのアニメーションを生成するアニメーション生成方式に関する。
【０００２】
【従来の技術】
従来、コンピュータ上で表現されるモデルをリアルタイムにアニメーションさせる場合、予めモデルデータおよびモデルをアニメーションさせるスケルトンデータを、静的なデータとして用意しておく必要があった。
一般的には、モデル内にスケルトン階層を構築し、スケルトンを構築する各ボーンごとに、回転、移動値のアニメーションデータを用意し、そのデータを用いてアニメーションさせる。
しかし、この方法では、例えば各ボーンの長さが違うモデルの場合、適切なアニメーションを行うことができない。
【０００３】
【発明が解決しようとする課題】
図８Ａは、従来のアニメーションの動作を説明するための図で、モデルが正しく歩行している状態を示している。
モデルの足のボーン５２は地面５１に対し平行に移動している。
図８Ｂは、従来のアニメーションの動作を説明するための図で、図８Ａの動きに対し、不自然な場合を示している。（ａ）はモデルが歩行するアニメーションの初期角度が異なる場合，（ｂ）はモデルサイズが大きすぎる場合、（ｃ）はモデルサイズが小さすぎる場合である。
【０００４】
（ａ）ではモデルの歩行の初期角度が異なるため足のボーン５４の軌跡５５は地面５３に対し交差する。（ｂ）ではモデルサイズが大きすぎるため地面５６より足のボーン５７が下側位置になり、地面５６に対し平行であるが、地面５６の中を歩くような形になる。（ｃ）ではモデルサイズが小さすぎるため地面５９より足のボーン６０が浮き上がり、地面５９に対し平行であるが、空中を歩くような形となる。
従来のアニメーションではこのように足を構成するボーンの長さが違えば、地面を踏みしめる歩きの表現で不可欠な要素は完全に欠落してしまう。また、構成するボーンの一本でも角度が違えば、元の表現したい動きとは程遠いものになってしまう。
【０００５】
したがって従来のアニメーション作成では、例えばコンピュータゲーム上で、ユーザがモデルを作成し動的に生成されたモデル（スケルトン）を動かすというようなことは不可能である。
本発明は上記問題を解決するもので、その目的は、モデルをアニメーションさせるためのスケルトンを、その動作の目的別に管理し、少ないアニメーションデータから、形状の異なるスケルトンを自然にアニメーションさせることができるアニメーション生成方式を提供することにある。
【０００６】
【課題を解決するための手段】
前記目的を達成するために本発明によるアニメーション生成方式は、ジオメトリ処理部および描画処理部を有し、ユーザが入力するモデル形状などのデータに基づきスケルトンデータを作成してアニメーションのモデルを完成させるゲーム機におけるアニメーション生成方式において、入力されるデータに基づき部品単位でモデルを構築するモデル作成手段と、前記モデル作成手段で作成した部品が何であるかの情報を入力する入力手段と、前記モデル作成手段で作成したモデルに対し、入力された情報から手，足，胴体等の種類毎に適切なスケルトンデータを構築するスケルトンデータ作成手段と、前記スケルトンデータ作成手段で作成した各ボーンを動きの目的ごとに分類、管理する分類管理手段と、各ボーンのパーツに元のアニメーションデータを加工して貼り合わせるアニメーションデータ加工手段と、前記加工したアニメーションデータから、各分類ごとに決められた法則にしたがってボーン計算を行い、アニメーションを実行するアニメーション実行手段とを備え、前記アニメーションデータ加工手段では、キャラクタが移動する際の基準となる重心を、すべての足の付け根位置の平均位置に設定し、元のモデルデータと作成されたモデルとの手足の長さの比であるスケール値を求め、足の場合、足の付け根からの垂線と高さ０の平面の交点を求め、その交点の原点からの位置ベクトルを求め、腕の場合は、足の場合と同じ方法によって時間毎に位置ベクトルを求めることにより、前記スケール値で求めたアニメーションデータのスケーリングを行い、前記位置ベクトルでオフセットを行い、前記アニメーション実行手段では、インバースキネマティックで手足について根元から先端部の各関節の回転値を計算し、手足のボーンを、移動，回転するように構成されている。
【０００７】
【作用】
前記構成によれば、ユーザが作るモデルからスケルトンを自動生成し、多少のモデル構造に差異があっても自然なアニメーション動作をさせることができる。
【０００８】
【発明の実施の形態】
以下、図面を参照して本発明をさらに詳しく説明する。
図１は、本発明によるアニメーション生成方式を適用したゲーム装置の回路の実施の形態を示すブロック図である。この例はゲーム装置を示すもので、本発明に直接関係する回路のみを記載してある。
操作部７を操作することによりゲーム処理部２がゲーム全体の制御を行い、ゲームを進行させることができる。ゲーム開始により画像がディスプレイ１１に表示されるとともにバックグランド音がサウンド処理部８を介してスピーカ９より出力される。
記憶部１０はグラフィックメモリ１０ａ，オーディオメモリ１０ｂを有している。この他に所定メモリ領域にゲームプログラム，ジオメトリプログラム，描画プログラムなどを格納している。
【０００９】
画像処理部３はジオメトリ処理部４および描画処理部５の機能を有している。ジオメトリ処理部４は、ポリゴンの３次元座標データを高速に処理する制御部で、ゲーム処理部から送られてくるポリゴンの座標データにモデルの移動，回転等に対する処理を行い、クリッピング，視野変換等の処理を行う。
描画処理部５は、ポリゴンモデルのレンダリングを高速に処理する制御部で、ポリゴンデータに対してレンダリング処理を行い、陰面処理およびシェーディング処理等を行う。レンダリング部５で処理されたモデルのデータは、１画面毎にグラフィックメモリ１０ａに格納され、このデータは図示しないＤ／Ａコンバータで映像信号に変換され、ディスプレイ１１に表示される。
ゲーム処理部２，ジオメトリ処理部４および描画処理部５の各機能は、記憶部１０に格納されているゲームプログラム，ジオメトリプログラム，描画プログラムを図示しないＣＰＵで処理することにより実現される。
【００１０】
描画処理部５は、モデル作成部５ａ，スケルトンデータ作成部５ｂ，分類管理部５ｃ，アニメーションデータ加工部５ｄおよびアニメーション実行部５ｅの機能を有している。
モデル作成部５ａは、操作部７より入力される形状データに基づき部品単位（手，足，胴体，頭など）でモデルを構築する。操作部７は手書き入力可能なアナログスティックを含み、該アナログスティックでモデルの形状を入力可能であり、また、ボタンやカーソル操作により作成した部品が何であるかの情報を入力することができる。スケルトンデータ作成部５ｂは、モデル作成部で作成された部品のモデルが入力情報から何であるかを知り、例えば足であれば、足の情報から足ボーンのスケルトンデータを構築する。
【００１１】
分類管理部５ｃは、スケルトンデータ作成部５ｂで作成した各ボーンを、動きの目的ごとに分類して管理する。アニメーションデータ加工部５ｄは、各ボーンのパーツに元のアニメーションデータを加工して貼り合わせる制御を行う。アニメーション実行部５ｅは、加工したアニメーションデータから、各分類（手，足，胴など）ごとに決められた法則にしたがってボーン計算を行い、アニメーションを実行する。
【００１２】
図２は腕，足のスケルトンを構築する実施の形態を示す図である。
スケルトンデータ作成部５ｂは以下に示すような修正を行って足，腕のスケルトンデータを作成する。
図２（ａ）において、腕，足の根元に近いノードから各関節をＡＢＣおよびＤとする。各関節は足であれば、Ａは付け根１４，Ｂは膝１５，Ｃは接地部１６，Ｄはつま先１７に対応する。
【００１３】
腕、足のアニメーションは、ＡＢＣをインバースキネマティックスを用いてコントロールすることで実現する。
ＡＢ，ＢＣ，ＣＤの長さをそれぞれＬ１，Ｌ２，Ｌ３としたとき、インバースキネマティックスの性質上、Ｌ１，Ｌ２の長さのバランスが好ましくない場合は思ったような動きをさせることができない。
これは、Ｌ１，Ｌ２の差が大きい場合、Ｃの到達可能範囲が挟まるため、アニメーションの再現率が悪くなるからである。よって、ユーザが入力した形の特徴を残しつつ、インバースキネマティックスを計算する上で都合の良いようにノード位置をコントロールする必要がある。
【００１４】
スケルトンの理想的な形とは以下のようなものである。
（１）Ｌ１とＬ２の差が少ないこと。
この場合、Ｃの到達範囲が最大になる。
（２）Ｌ３が十分に小さいこと。
Ｌ３が大きい場合、足の動きのメインとなるＣの動きよりもＤの動きが大きくなってしまうため、好ましくない。
（３）ユーザの入力データの特徴が尊重されていること。
【００１５】
図２（ｂ）（ｃ）（ｄ）（ｅ）および（ｆ）に示すようなバランスの悪いボーン形状である場合、上記の条件を満たすように以下のような修正を加える。
図２（ｂ）はＬ３が、Ｌ１＋Ｌ２より大きい場合である。この場合はＢをＣの位置へ移動させる。そしてＣは、ＢとＤの間に移動させ、ＡＢ＝ＢＣを満たす位置に配置する。
図２（ｃ）はＬ１が、Ｌ２＋Ｌ３より大きい場合である。この場合はＣをＢの位置へ移動させる。そしてＤをＣの位置に移動させ、ＢはＡとＣの中間に移動させる。
図２（ｄ）はＡＢＣがほぼ一直線上に存在する場合である。この場合はＢをＡとＣの中間に配置する。
図２（ｅ）は、ＢＣＤがほぼ一直線上に存在する場合である。ＣをＤの近くまで移動させる。そしてＢをＡとＣの中間に配置する。
図２（ｆ）は、ＡＢＣＤがほぼ一直線上に存在する場合である。ＣをＤの近くまで移動させる。そしてＢをＡとＣの中間に配置する。
【００１６】
図３は、重心のアニメーション方法を説明するための図である。
動的に作られたモデルの重心は以下のように決定する。
重心を決定するのに必要な要素は、胴体と足である。そして重心の位置（腰の部分）は、すべての足の付け根位置の平均の位置に設定する。階層構造は図３に示すようになる。重心２０と胴体２１があり、その下に足２２，足２３，足２３ａが存在する。多数の足を記載したのは、足の長さの平均をとるためである。アニメーションデータ加工部５ｄは重心アニメーションの加工を以下のように行う。
重心のアニメーションは、回転、移動のデータを用いる。回転はそのまま利用できるが、移動値は、スケーリングが必要となる。動的に作られたモデルのすべての足の長さの平均を、仮のモデルデータのすべての足の長さの平均で割ったものがスケール値になる。アニメーション実行部５ｅは、このスケーリングされた値を用いて重心の移動値をアニメーションさせる。
【００１７】
図４は、胴体のアニメーション方法を説明するための図である。
一般的に胴体のアニメーションは全体の骨の動きの方向が重要視される。また、一般的なスケルトンの回転は各ボーンのローカル座標系で行われる。静的なモデルを動かす場合は、ローカル座標は事前に決定されるため、それを考慮してアニメーションデータを作成できる。しかし、動的にスケルトンを生成させる場合は、ローカル座標がどのような方向になるか予測できない。したがって、全体の骨の動きの方向を重視するため、本システムの胴体アニメーションはモデル空間座標軸で回転させるようにしている。。
【００１８】
図４（ａ）（ｃ）および（ｅ）において、３つのボーン部２５，２６および２７で背骨が構成され、アニメーションデータでそれぞれのボーン部に回転，移動を与えることにより背骨を構成する各ボーン部２５，２６および２７は（ａ）では２８の位置に、（ｂ）では２９の位置に、（ｃ）では３０の位置にそれぞれ変化している状態を示している。
同じボーンの構成ならば、図４（ｂ）の背骨の動きは（ａ）と同じ回転方向となり通常のローカル座標系の回転でよい。しかし、ローカル座標系の異なるボーンを同じアニメーションで回転させると、図４（ｃ）の背骨の動きは（ｄ）に示すようになり、胴体アニメーションで重要な全体の動きの方向が反対方向に変わってしまう。そこで本発明ではモデル空間座標軸で回転させることにより、図４（ｅ）の背骨とは異なる形状の図４（ｆ）のボーンであっても、全体の動きの方向を一致させることができる。
【００１９】
図５は、手足のアニメーション方法を説明するための図である。
ユーザの作成するモデルは動的に生成されるため、腕、足は長さ、付け根の位置等が特定できない。よって、それらに依存しないアニメーションシステムが必要となる。
下記の処理はアニメーションデータ加工部５ｄまたはアニメーション実行部５ｅが行う。
（１）アニメーションスケール値を求める
図５（ａ）で示すような各手足のボーン３６，３１の長さを求め、アニメーションスケール値とする。これは、根元から先端までの、各ボーンの長さの合計である。求めた足の長さを、対応する元データの足の長さで割ったものがスケール値になる。
【００２０】
（２）アニメーションオフセット値を求める
足の場合は、図５（ｂ）の左側に示すように足３２の付け根からの垂線３３と、高さ０の平面３４との交点を求め、その交点の原点３５からの位置ベクトルがオフセット値となる。ただし、腕の場合（図５（ｂ）の右側）は、腕の付け根位置はリアルタイムに変化するので、オフセット値は時間ごとに再計算する必要がある。
（３）アニメーションデータのスケーリング
アニメーション時には、まず、アニメーションデータから現在時間の値を求め（この値は原点からの位置ベクトル）、（１）で求めたスケール値で、スケーリングする。図５（ｃ）の３７はアニメーションデータを模型化したものであり、図５（ｃ）の左下側および右下側に示すボーン３８，３９はスケール値でスケーリングした状態であり、右下側のアニメーションデータは左下側のそれより小さくなっている。
【００２１】
（４）オフセットする
（２）で求めたオフセット値で、アニメーションデータをオフセットする。図５（ｄ）の左側と右側に示すボーン４０，４１はそれぞれの方向にオフセット、すなわち平行移動し、アニメーションデータを統一する。
（５）インバースキネマティック
求めた位置に、手足の先端部の位置を一致させる。一致させるにはインバースキネマティックで、根元から先端部の各関節の回転値を計算する。図５（ｅ）のボーン４２の先端４２ａは移動，回転させられて位置４３に一致する。
【００２２】
図６は、本発明によるアニメーション生成の具体例を示す図、図７Ａおよび図７Ｂは、図６で作成したアニメーションの動作を説明するための図である。
ユーザの形状入力により図６▲１▼〜▲５▼)に示すように胴体，左足，右足，左手，右手が加えられてアニメーションのモデルが完成する。そして、図７Ａおよび図７Ｂ▲１▼〜▲８▼)に示すようにアニメーション画像は自然な状態でアニメ動作を行うことができる。
【００２３】
【発明の効果】
以上、説明したように本発明は入力されるデータに基づき部品単位でモデルを構築するモデル作成手段と、モデル作成手段で作成した部品が何であるかの情報を入力する入力手段と、モデル作成手段で作成したモデルに対し、入力された情報から手，足，胴体等の種類毎に適切なスケルトンデータを構築するスケルトンデータ作成手段と、スケルトンデータ作成手段で作成した各ボーンを動きの目的ごとに分類、管理する分類管理手段と、各ボーンのパーツに元のアニメーションデータを加工して貼り合わせるアニメーションデータ加工手段と、加工したアニメーションデータから、各分類ごとに決められた法則にしたがってボーン計算を行い、アニメーションを実行するアニメーション実行手段とを備え、アニメーションデータ加工手段では、キャラクタが移動する際の基準となる重心を、すべての足の付け根位置の平均位置に設定し、元のモデルデータと作成されたモデルとの手足の長さの比であるスケール値を求め、足の場合、足の付け根からの垂線と高さ０の平面の交点を求め、その交点の原点からの位置ベクトルを求め、腕の場合は、足の場合と同じ方法によって時間毎に位置ベクトルを求めることにより、スケール値で求めたアニメーションデータのスケーリングを行い、前記位置ベクトルでオフセットを行い、アニメーション実行手段では、インバースキネマティックで手足について根元から先端部の各関節の回転値を計算し、手足のボーンを、移動，回転するように構成したものである。
したがって、スケルトンの長さ、角度、位置に依存せず、かつ一様のアニメーションを行うことができる。
実際アニメーションデータを作成する際には、モデルの差異はこのシステムで吸収するため、最小限のアニメーションデータで、より多くの種類のモデルをアニメーションさせることができるという効果がある。
【図面の簡単な説明】
【図１】本発明によるアニメーション生成方式を適用した装置の回路の実施の形態を示すブロック図である。
【図２】腕，足のスケルトンを構築する実施の形態を示す図である。
【図３】重心のアニメーション方法を説明するための図である。
【図４】胴体のアニメーション方法を説明するための図である。
【図５】手足のアニメーション方法を説明するための図である。
【図６】アニメーション構築の具体例を示す図である。
【図７Ａ】図６で作成したアニメーションの動作を説明するための図で、前半部分を示している。
【図７Ｂ】図６で作成したアニメーションの動作を説明するための図で、後半部分を示している。
【図８Ａ】従来のアニメーションの動作を説明するための図で、あるモデルが正しく歩行している状態を示している。
【図８Ｂ】従来のアニメーションの動作を説明するための図で、（ａ）はあるモデルが歩行するアニメーションであって、初期角度が異なる場合，（ｂ）はモデルサイズが大きすぎる場合、（ｃ）はモデルサイズが小さすぎる場合をそれぞれ示している。
【符号の説明】
１  処理部
２  ゲーム処理部
３  画像処理部
４  ジオメトリ処理部
５  描画処理部（レンダリング部）
６  バス
７  操作部
８  サウンド処理部
９  スピーカ
１０  記憶部
１１  ディスプレイ
１４  付け根（関節）
１５  膝（関節）
１６  接地部
１７  つま先
１８  足のボーン
【図１】
0003669939.tif 000002
【図２】
0003669939.tif 000003
【図３】
0003669939.tif 000004
【図４】
0003669939.tif 000005
【図５】
0003669939.tif 000006
【図６】
0003669939.tif 000007
【図７Ａ】
0003669939.tif 000008
【図７Ｂ】
0003669939.tif 000009
【図８Ａ】
0003669939.tif 000010
【図８Ｂ】
0003669939.tif 000011