(57)【特許請求の範囲】
【請求項１】
スケルトンモデルのキーフレームの形状を変形させて、スケルトンモデルの中間フレームの形状を生成するための画像生成装置であって、
移動経路が指定されたスケルトンモデルのノードが、該移動経路上の所与の位置に引っ張られるように、スケルトンモデルの形状を変形させ、
スケルトンモデルのアーク方向ベクトルの向きが、キーフレームでのアーク方向ベクトルに基づき得られる中割りアーク方向ベクトルの方向に近づくように、スケルトンモデルの形状を変形させ、
スケルトンモデルのアーク法線ベクトルの向きが、キーフレームでのアーク法線ベクトルに基づき得られる中割りアーク法線ベクトルの方向に近づくように、スケルトンモデルの形状を変形させる形状データ生成部を含むことを特徴とする画像生成装置。
【請求項２】
請求項１において、
前記形状データ生成部が、
スケルトンモデルを、スケルトンモデルのノードの座標を含む基本変数により表し、
スケルトンモデルのアークの長さが所与の値となることを規定する式を含み前記基本変数を未知数とする基本式と、前記基本式を満たす解を一意的に特定するための評価式の少なくとも一方を、所与の情報に基づいて変化させ、
基本式をほぼ満たし且つスケルトンモデルのアーク方向ベクトルの方向と中割りアーク方向ベクトルの方向との差を含む評価式の値がほぼ極小、ほぼ極大及びほぼ停留のいずれかになるように基本変数の解を求め、
求められた解に基づいてスケルトンモデルの形状を変形させることを特徴とする画像生成装置。
【請求項３】
請求項１又は２において、
前記形状データ生成部が、
スケルトンモデルを、スケルトンモデルのノードの座標を含む基本変数により表し、
スケルトンモデルのアークの長さが所与の値となることを規定する式を含み前記基本変数を未知数とする基本式と、前記基本式を満たす解を一意的に特定するための評価式の少なくとも一方を、所与の情報に基づいて変化させ、
基本式をほぼ満たし且つスケルトンモデルのアーク法線ベクトルの方向と中割りアーク法線ベクトルの方向との差を含む評価式の値がほぼ極小、ほぼ極大及びほぼ停留のいずれかになるように基本変数の解を求め、
求められた解に基づいてスケルトンモデルの形状を変形させることを特徴とする画像生成装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記形状データ生成部が、
移動経路が指定されたスケルトンモデルのノードと、移動経路が指定されたスケルトンモデルの前記ノードの位置を制御するための制御点との間に、該ノードと該制御点との距離に応じて変化する張力を働かせてスケルトンモデルの形状を変形させることを特徴とする画像生成装置。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記形状データ生成部が、
移動経路が指定されたスケルトンモデルの複数のノードと、移動経路が指定されたスケルトンモデルの前記複数のノードの位置を制御するための少なくとも1つの制御点との間に、該複数のノードと該少なくとも１つの制御点との距離に応じて変化する張力を働かせると共に、該張力の総和が所与の値以下になるような条件の下でスケルトンモデルの形状を変形させることを特徴とする画像生成装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記形状データ生成部が、
移動経路が指定されたスケルトンモデルのノードが、該移動経路上の所与の位置に引っ張られるように、スケルトンモデルの形状を変形させた後に、スケルトンモデルのアーク方向ベクトルの向きが、キーフレームでのアーク方向ベクトルに基づき得られる中割りアーク方向ベクトルの方向に近づくように、スケルトンモデルの形状を変形させると共に、
移動経路が指定されたスケルトンモデルのノードが、該移動経路上の所与の位置に引っ張られるように、スケルトンモデルの形状を変形させる際の第１の反復計算の初期段階において、スケルトンモデルのアーク方向ベクトルの向きを中割りアーク方向ベクトルの方向に近づける演算を行うことを特徴とする画像生成装置。
【請求項７】
請求項１乃至５のいずれかにおいて、
前記形状データ生成部が、
スケルトンモデルのアーク方向ベクトルの向きが、キーフレームでのアーク方向ベクトルに基づき得られる中割りアーク方向ベクトルの方向に近づくように、スケルトンモデルの形状を変形させた後に、移動経路が指定されたスケルトンモデルのノードが、該移動経路上の所与の位置に引っ張られるように、スケルトンモデルの形状を変形させると共に、
スケルトンモデルのアーク方向ベクトルの向きが、キーフレームでのアーク方向ベクトルに基づき得られる中割りアーク方向ベクトルの方向に近づくように、スケルトンモデルの形状を変形させる際の第２の反復計算の初期段階において、移動経路が指定されたスケルトンモデルのノードを、該移動経路上の所与の位置に引っ張る演算を行うことを特徴とする画像生成装置。
【請求項８】
請求項１乃至７のいずれかにおいて、
スケルトンモデルの中間フレームの形状に基づいて、スケルトンモデルの画像を生成する画像生成部を更に含むことを特徴とする画像生成装置。
【請求項９】
コンピュータにより情報の読み取りが可能であり、スケルトンモデルのキーフレームの形状を変形させて、スケルトンモデルの中間フレームの形状を生成するための情報記憶媒体であって、
移動経路が指定されたスケルトンモデルのノードが、該移動経路上の所与の位置に引っ張られるように、スケルトンモデルの形状を変形させ、
スケルトンモデルのアーク方向ベクトルの向きが、キーフレームでのアーク方向ベクトルに基づき得られる中割りアーク方向ベクトルの方向に近づくように、スケルトンモデルの形状を変形させ、
スケルトンモデルのアーク法線ベクトルの向きが、キーフレームでのアーク法線ベクトルに基づき得られる中割りアーク法線ベクトルの方向に近づくように、スケルトンモデルの形状を変形させる形状データ生成部として、コンピュータを機能させるためのプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項１０】
画像生成装置が、形状データ生成部を備え、スケルトンモデルのキーフレームの形状を変形させて、スケルトンモデルの中間フレームの形状を導出する中間フレーム形状導出方法であって、
前記形状データ生成部が、
移動経路が指定されたスケルトンモデルのノードが、該移動経路上の所与の位置に引っ張られるように、スケルトンモデルの形状を変形させ、
スケルトンモデルのアーク方向ベクトルの向きが、キーフレームでのアーク方向ベクトルに基づき得られる中割りアーク方向ベクトルの方向に近づくように、スケルトンモデルの形状を変形させ、
スケルトンモデルのアーク法線ベクトルの向きが、キーフレームでのアーク法線ベクトルに基づき得られる中割りアーク法線ベクトルの方向に近づくように、スケルトンモデルの形状を変形させることを特徴とするスケルトンモデルの中間フレーム形状導出方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はスケルトンモデルの中間フレーム形状導出方法、スケルトンモデルの形状変形方法、画像生成装置及び情報記憶媒体に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
コンピュータグラフィックス等の分野においては、人や動物等のキャラクタのモーション（アニメーション）を作成する際に、次のような手順が多く用いられる。
【０００３】
（Ｄ1）まず、図１（Ａ）に示すようなスケルトンモデル１０を用意する。なお、以下では、スケルトンモデル１０の関節点１２や端点１４をノードと呼び、ノード同士を結ぶ骨１６をアークと呼ぶことにする。
【０００４】
（Ｄ2）次に、図１（Ｂ）に示すように、スケルトンモデル１０を変形してスケルトンモデルのキーフレームの形状２０、２２を作成する。
【０００５】
（Ｄ3）次に、図１（Ｃ）に示すように、キーフレームの形状２０、２２を補間して、スケルトンモデルの中間フレームの形状２４を作成する。
【０００６】
さて、一般的な作業手順においては、上記の工程（Ｄ2）のキーフレームの形状２０、２２は、ユーザー（広義には操作者）がマウスやキーボード等の入力装置を用いて手作業で作成する。一方、工程（Ｄ3）の中間フレームの形状２４は、プログラムが自動的に生成する。
【０００７】
また通常、工程（Ｄ3）の前に、ユーザーは、幾つかのノードに対して、ノードの固定あるいはパスカーブ（広義には移動経路）の指定を行う。
【０００８】
ここでノード固定とは、補間すべき２つのキーフレーム間の全ての中間フレームにおいて、そのノードを同じ位置に保つよう指示することである。このようなノード固定は、例えば、キャラクタの肩を固定しながら腕を振らす場合等に必要になる。
【０００９】
またパスカーブの指定とは、キーフレーム間で、そのノードが、指定されたパスカーブ上を動くよう指示することである。このパスカーブの指定は、単なる経路そのものの指定のみならず、キーフレーム間の各中間フレームにおける、そのノード（パスカーブが指定されたノード）の位置を指定することに相当する。このようなパスカーブの指定は、例えば、キャラクタの手や足の先を、ユーザーの所望する軌道上で移動させたい場合等に必要になる。
【００１０】
図２（Ａ）に示す例では、スケルトンモデル２６は４個のノードＮ1，Ｎ2，Ｎ3，Ｎ4と３本のアークＡ12，Ａ23，Ａ34から構成されている。各アークＡ12，Ａ23，Ａ34には、各アークの捻りの向きを表すために、アーク法線ベクトルＮＶ12，ＮＶ23，ＮＶ34が付されている。これらの各アーク法線ベクトルは大きさが１で、各アークに垂直になっている。
【００１１】
この例では、スケルトンモデル２６に対して、２つのキーフレームの形状が用意されている。更に、ノードＮ1は固定され、ノードＮ4にはパスカーブ２８が指定されている。そして、このような指定がなされても、フレーム（キーフレーム）ｆ0，ｆ4の形状を滑らかに補間し、図２（Ｂ）に示すような中間フレームｆ1，ｆ2，ｆ3におけるスケルトンモデルの形状を生成することが望まれる。即ち、指定されたパスカーブ２８上をノードＮ4が通りながらも、中間フレームにおけるスケルトンモデルの形状も滑らかに変化することが望まれる。
【００１２】
本発明は、以上のような技術的課題に鑑みてなされたものであり、その目的とするところは、ノードの移動経路が指定されている場合にも、滑らかに補間されたスケルトンモデルの中間フレーム形状を得ることができるスケルトンモデルの中間フレーム形状導出方法、スケルトンモデルの形状変形方法、画像生成装置及び情報記憶媒体を提供することにある。
【００１３】
【課題を解決するための手段】
上記課題を解決するために本発明は、スケルトンモデルのキーフレームの形状から、スケルトンモデルの中間フレームの形状を導出する中間フレーム形状導出方法であって、移動経路が指定されたスケルトンモデルのノードが、該移動経路上の所与の位置に引っ張られるように、スケルトンモデルの形状を変形する第１の変形ステップと、スケルトンモデルのアーク方向ベクトルの向きが、キーフレームでのアーク方向ベクトルに基づき得られる中割りアーク方向ベクトルの方向に近づくように、スケルトンモデルの形状を変形する第２の変形ステップと、スケルトンモデルのアーク法線ベクトルの向きが、キーフレームでのアーク法線ベクトルに基づき得られる中割りアーク法線ベクトルの方向に近づくように、スケルトンモデルの形状を変形する第３の変形ステップとを含むことを特徴とする。
【００１４】
本発明では、第１の変形ステップにより、移動経路が指定されたノードが移動経路上の位置に引っ張られるようにスケルトンモデルが変形し、第２の変形ステップにより、アーク方向ベクトルの向きが中割りアーク方向ベクトルの方向に近づくようにスケルトンモデルが変形する。また、第３の変形ステップにより、アーク法線ベクトルの向きが中割りアーク法線ベクトルの方向に近づくようにスケルトンモデルが変形する。従って、本発明によれば、移動経路が指定されたノードを移動経路上の位置に近づけながら、アーク方向ベクトルやアーク法線ベクトルの向きを中割りアーク方向ベクトルや中割りアーク法線ベクトルの方向に近づけることが可能になる。この結果、ノードの移動経路の指定と、スケルトンモデルの中間フレーム形状の滑らかな補間とを両立できるようになる。
【００１５】
なお、第１、第２、第３の変形ステップの順序は任意である。また、ノードの位置、アーク方向ベクトルの向き、アーク法線ベクトルの向きは、各々、移動経路上の位置、中割りアーク方向ベクトルの方向、中割りアーク法線ベクトルの方向に少なくとも近づけばよく、完全に一致する必要はない。また、中割りアーク方向ベクトル、中割りアーク法線ベクトルは、各々、キーフレームでのアーク方向ベクトル、アーク法線ベクトルを少なくとも用いて得ることができるものであればよい。
【００１６】
また本発明は、スケルトンモデルを、スケルトンモデルのノードの座標を含む基本変数により表し、スケルトンモデルのアークの長さが所与の値となることを規定する式を含み前記基本変数を未知数とする基本式と、前記基本式を満たす解を一意的に特定するための評価式の少なくとも一方を、所与の情報に基づいて変化させ、基本式をほぼ満たし且つスケルトンモデルのアーク方向ベクトルの方向と中割りアーク方向ベクトルの方向との差を含む評価式の値がほぼ極小、ほぼ極大及びほぼ停留のいずれかになるように基本変数の解を求め、求められた解に基づいてスケルトンモデルの形状を変形することを特徴とする。このようにすれば、アーク方向ベクトルの方向と中割りアーク方向ベクトルの方向との差を含む評価式をほぼ極小等にする条件の付加により、基本式を満たす解が一意的に特定され、スケルトンモデルの形状が決定される。従って、アーク方向ベクトルの向きを中割りアーク方向ベクトルの方向に近づけるようなスケルトンモデルの変形を、簡易に実現できるようになる。
【００１７】
また本発明は、スケルトンモデルを、スケルトンモデルのノードの座標を含む基本変数により表し、スケルトンモデルのアークの長さが所与の値となることを規定する式を含み前記基本変数を未知数とする基本式と、前記基本式を満たす解を一意的に特定するための評価式の少なくとも一方を、所与の情報に基づいて変化させ、基本式をほぼ満たし且つスケルトンモデルのアーク法線ベクトルの方向と中割りアーク法線ベクトルの方向との差を含む評価式の値がほぼ極小、ほぼ極大及びほぼ停留のいずれかになるように基本変数の解を求め、求められた解に基づいてスケルトンモデルの形状を変形することを特徴とする。このようにすれば、アーク法線ベクトルの方向と中割りアーク法線ベクトルの方向との差を含む評価式をほぼ極小等にする条件の付加により、基本式を満たす解が一意的に特定され、スケルトンモデルの形状が決定される。従って、アーク法線ベクトルの向きを中割りアーク法線ベクトルの方向に近づけるようなスケルトンモデルの変形を、簡易に実現できるようになる。
【００１８】
また本発明は、移動経路が指定されたスケルトンモデルのノードの位置を制御するための制御点を用意し、前記第１の変形ステップにおいて、移動経路が指定されたスケルトンモデルの前記ノードと前記制御点との間に、該ノードと該制御点との距離に応じて変化する張力を働かせてスケルトンモデルの形状を変形することを特徴とする。このようにすれば、指定された移動経路上をノードが通ることが不可能な場合にも、計算に破綻が生じるのを回避できるようになる。
【００１９】
また本発明は、移動経路が指定されたスケルトンモデルの複数のノードの位置を制御するために、少なくとも１つの制御点を用意し、前記第１の変形ステップにおいて、移動経路が指定された前記複数のノードと前記少なくとも１つの制御点との間に、該複数のノードと該少なくとも１つの制御点との距離に応じて変化する張力を働かせると共に、該張力の総和が所与の値以下になるような条件の下でスケルトンモデルの形状を変形することを特徴とする。このようにすれば、複数のノードが少なくとも１つの制御点により引っ張られることにより張力の総和が過大になりスケルトンモデルに暴れが生じてしまう事態を防止できる。そして更に、本発明によれば、各張力は、ノードと制御点との距離に応じた強さになる。従って、スケルトンモデルの形状に複数の釣り合い状態が生じてしまう事態も防止できる。
【００２０】
また本発明は、前記第１の変形ステップの後に前記第２の変形ステップを行うと共に、前記第１の変形ステップの第１の反復計算の初期段階において、スケルトンモデルのアーク方向ベクトルの向きを中割りアーク方向ベクトルの方向に近づける演算を行うことを特徴とする。このようにすれば、第１の変形ステップの第１の反復計算の初期段階において、第２の変形ステップでの変形に好適な形状にスケルトンモデルを変形することが可能になる。この結果、適正形状へのスケルトンモデルの変形が、第２の変形ステップにおいて不能になる事態を防止できる。
【００２１】
また本発明は、前記第２の変形ステップの後に前記第１の変形ステップを行うと共に、前記第２の変形ステップの第２の反復計算の初期段階において、移動経路が指定されたスケルトンモデルのノードを、該移動経路上の所与の位置に引っ張る演算を行うことを特徴とする。このようにすれば、第２の変形ステップの第２の反復計算の初期段階において、第１の変形ステップでの変形に好適な形状にスケルトンモデルを変形することが可能になる。この結果、適正形状へのスケルトンモデルの変形が、第１の変形ステップにおいて不能になる事態を防止できる。
【００２２】
また本発明は、スケルトンモデルの形状変形方法であって、スケルトンモデルの複数のノードの位置を制御するために、少なくとも１つの制御点を用意し、スケルトンモデルの前記複数のノードと前記少なくとも１つの制御点との間に、該複数のノードと該少なくとも１つの制御点との距離に応じて変化する張力を働かせると共に、該張力の総和が所与の値以下になるような条件の下でスケルトンモデルの形状を変形することを特徴とする。
【００２３】
本発明によれば、複数のノードが少なくとも１つの制御点により引っ張られることによりスケルトンモデルに暴れが生じてしまう事態を防止できると共に、スケルトンモデルの形状に複数の釣り合い状態が生じてしまう事態も防止できる。
【００２４】
また本発明は、スケルトンモデルの形状変形方法であって、所与の第１の条件に従った第１の反復計算によりスケルトンモデルの形状を変形する第１の変形ステップと、所与の第２の条件に従った第２の反復計算によりスケルトンモデルの形状を変形する第２の変形ステップとを含み、前記第１の変形ステップの後に前記第２の変形ステップを行うと共に、前記第１の変形ステップの前記第１の反復計算での初期段階において、前記第２の変形ステップの前記第２の条件が加味された演算を行うことを特徴とする。
【００２５】
本発明によれば、第１の変形ステップの第１の反復計算の初期段階において、第２の変形ステップでの変形に好適な形状にスケルトンモデルを変形することが可能になる。この結果、適正形状へのスケルトンモデルの変形が、第２の変形ステップにおいて不能になる事態を防止できる。
【００２６】
また本発明に係る画像生成装置は、上記のいずれかの方法により得られるスケルトンモデルの形状を出力する手段と、操作者がスケルトンモデルの形状の作成のための指示を行う操作手段とを含むことを特徴とする。これにより、本発明の方法を用いた形状データ作成ツール等の実現が可能となる。
【００２７】
また本発明に係る画像生成装置は、上記のいずれかの方法により得られるスケルトンモデルに付随して動くオブジェクトの画像を出力する手段を含むことを特徴とする。これにより、本発明の方法により得られた形状データを使用したゲーム装置等の実現が可能となる。
【００２８】
【発明の実施の形態】
以下、本発明の実施形態について、図面に基づいて詳細に説明する。
【００２９】
１．比較例の説明
まず、本実施形態の比較例について説明する。
【００３０】
図２（Ｂ）に示すような中間フレームｆ1、ｆ2、ｆ3のスケルトンモデルの形状を求める比較例として、関節角補間を用いる手法とインバースキネマティクスを用いる手法が考えられる。
【００３１】
１.１  関節角補間
この比較例１では、スケルトンモデルの各関節角を補間して中間フレームの形状を求める。
【００３２】
図３（Ａ）を例にとれば、キーフレームｆ0でのアークＡ12の関節角θ10と、キーフレームｆ4でのアークＡ12の関節角θ14とを補間し、中間フレームｆ2での関節角θ12を求めている。より具体的には、θ12＝（θ10＋θ14）／２としている。同様に、θ20とθ24を補間することでθ22を求め、θ30とθ34を補間することでθ32を求めている。
【００３３】
しかしながら、この比較例１では、ノードＮ4が、指定されたパスカーブ２８上を移動しなくなる。即ち、ノードＮ4は、パスカーブ２８上の位置３０ではなく、位置３２を通るようになる。従って、中間フレームの形状を滑らかに変化させることはできるが、ノードＮ4をパスカーブ２８上で移動させたいというユーザーの要望には応えることができない。
【００３４】
１.２  インバースキネマティクス
この比較例２では、固定されたノードをルートとし、パスカーブが指定されたノードをエフェクタとして、インバースキネマティクスを用いて中間フレームの形状を求める。図３（Ｂ）を例にとれば、固定ノードＮ1がルートになり、パスカーブ２８が指定されたノードＮ4がエフェクタになる。そして、ノードＮ4をつまんでパスカーブ２８に沿って動かしながら、中間フレームでのスケルトンモデルの形状をインバースキネマティクスにより求める。
【００３５】
しかしながら、この比較例２では、インバースキネマティクスにより得られたフレームｆ4での形状３４が、本来のキーフレームでの形状３６とは異なったものになってしまう。従って、ノードＮ4をパスカーブ２８上で移動させることはできるが、キーフレームの形状を所望の形状にしたいというユーザーの要望には応えることができない。
【００３６】
以上のような比較例１、２の問題を解決するために、本実施形態では、以下のような手法によりスケルトンモデルの中間フレーム形状を導出している。
【００３７】
２．本実施形態の概要
２.１  前提条件
まず、ユーザーが次のような手順でキャラクタのモーション（アニメーション）を作成するものとする。即ち、まず、ユーザーは、キャラクタの幾つかのポーズを作成し、これをキーフレームとして登録する。次に、幾つかのノードに対して、キーフレーム間のパスカーブ（広義には移動経路）を指定する。このパスカーブの指定により、キーフレーム間の各中間フレームにおけるノードの位置が指定されることになる。なお、中間フレームにおけるノードの位置は、ユーザーが明示的に指定するようにしてもよいし、ユーザーが指定したパスカーブやユーザーが指定したノードの移動速度に基づき、プログラムが計算により求めるようにしてもよい。
【００３８】
さて、ユーザーがキャラクタのモーションを作成する際に、あるキーフレームから次のキーフレームまでの間、ノードの位置を固定したい場合がある。このようなノードの固定は、パスカーブが直線であって、しかもそのパスカーブの始点と終点が一致している場合として捉えることができる。
【００３９】
そこで、本実施形態では、ノードの固定をパスカーブの指定により行うようにしている。即ち、ユーザーは、ノードを固定したい場合には、始点と終点とが一致する直線のパスカーブをそのノードに指定することになる。このようにすれば、パスカーブ指定の他に、ノード固定の指定というユーザーインターフェースを別に設ける必要がなくなる。これにより、ユーザーの矛盾したノード固定指定により計算が破綻する等の事態を防止できる。
【００４０】
さて、本実施形態では、次の２つの要件を満たし、キーフレーム間を滑らかに補間するような中間フレームを生成することを目指している。
【００４１】
第１に、出来上がったスケルトンモデルのモーションは、キーフレームのポーズを必ず通るようにする。但し、スケルトンモデルがポリゴンオブジェクトと干渉する場合は、この限りでない。
【００４２】
第２に、パスカーブが指定されたノードは、形状的に不可能な場合を除き、必ず指定された通りの動きをするようにする。ここで、形状的に不可能とは、アークの長さ、関節角の可動範囲、ポリゴンオブジェクトとの干渉等の制約により、指定されたパスカーブ上をノードが移動することが不可能な状態を言う。
【００４３】
２.２  ３ステップのpullerによる中間フレーム形状の導出方法
本実施形態では、３ステップのpullerにより、スケルトンモデルの中間フレームの形状を導出している。この導出方法を、図４のＰＡＤ（Program Analysis Diagram）を用いて詳細に説明する。
【００４４】
なお、以下の説明では、補間すべき２つのキーフレームを、第kフレーム、第k+nフレームとする。また、これらのキーフレームでのスケルトンモデルの形状を補間し、中間フレームである第k+1〜k+n-1フレームでの形状を導出するものとする。
【００４５】
２.２.１  中割りアーク方向ベクトルの導出
まず、スケルトンモデルの各アークについて、中割りアーク方向ベクトルを導出する（図４のステップＵ１）。より具体的には、第kフレームのアーク方向ベクトルの向きと、第k+nフレームのアーク方向ベクトルの向きとを均等に中割りし、第k+1〜第k+n-1フレーム用の中割りアーク方向ベクトルを求める。
【００４６】
なおアークの一端から他端に向かう単位ベクトルをアーク方向ベクトルと呼ぶことにする。中割りアーク方向ベクトルとは、キーフレームでのアーク方向ベクトルの向きを均等に中割りしたものである。
【００４７】
図５のアークＡ12を例にとれば、キーフレームｆ0でのアーク方向ベクトル４０の向きと、キーフレームｆ4でのアーク方向ベクトル４２の向きを４等分することで、中割りアーク方向ベクトルが導出される。アークＡ23、Ａ34についての中割りアーク方向ベクトルも同様にして導出される。
【００４８】
導出された中割りアーク方向ベクトルは、後述するように、中間フレームの形状導出の際のStep2で使用される。
【００４９】
２.２.２  ノードpuller、AV pullerによる変形
中割りアーク方向ベクトルの導出後、以下の手順で、第k+1フレームから第k+nフレームまでのスケルトンモデルの形状を順次導出する。即ち、i-1フレームのスケルトンモデルの形状（１フレーム前の形状）を読み込み（図４のステップＵ２）、次の２ステップ（Step1，Step2）の変形を行い（ステップＵ３、Ｕ４）、iフレームの形状として保存する（ステップＵ５）。
【００５０】
Step1：パスカーブが指定されていないノードを非固定にし、パスカーブが指定されたノードをパスカーブ上の所与の位置に引っ張り、計算が収束するまでスケルトンモデルを変形させる（図４のステップＵ３）。このStep１でノードに作用させる引っ張りを、ノードpullerと呼ぶことにする。
【００５１】
例えば図６には、キーフレームｆ0の形状に対してノードpullerを作用させ、フレームｆ1の形状を導出する過程が示されている。図６では、ノードＮ2，Ｎ3は非固定になっており、ノードＮ1，Ｎ4に対してノードpullerを作用させている。ここでノードＮ4はパスカーブが指定されたノードである。ノードＮ4は、このノードpullerにより、パスカーブ上の位置４４に引っ張られることになる。一方、ノードＮ1は固定ノードである。固定ノードＮ1については、前述のように、始点と終点が一致した直線のパスカーブ指定がなされたとして取り扱う。即ち、ノードＮ1に作用するノードpullerは初期状態において長さが０になる。
【００５２】
Step2：パスカーブが指定されたノードをStep1終了時の位置に固定し、パスカーブが指定されていないノードは非固定のままにする。そして、アーク方向ベクトルの向きが、それぞれの中割りアーク方向ベクトルの方向になるべく近づくような捻りを作用させ、計算が収束するまでスケルトンモデルを変形させる（図４のステップＵ４）。このアークに作用させる捻りを、AV puller (arc vector puller)と呼ぶことにする。
【００５３】
例えば図７では、ノードＮ1，Ｎ4を固定し、ノードＮ２、Ｎ３を非固定にして、AV pullerを作用させている。これにより、アークＡ12，Ａ23，Ａ34（アーク方向ベクトル）の向きが、各々、中割りアーク方向ベクトル４６、４８、５０の方向に近づくように、スケルトンモデルが変形されることになる。
【００５４】
なお、ノードpuller、AV pullerによるスケルトンモデルの変形は、例えば、本出願人により出願された特開平10-208072の手法によるインバースキネマティクスにより実現できる。
【００５５】
また、各アーク方向ベクトルの方向と各中割りアーク方向ベクトルの方向とは、一般的には完全には一致しない。例えば図７では、ノードＮ1，Ｎ4は固定されており、このような条件の下で各アーク方向ベクトルの方向と各中割りアーク方向ベクトルの方向を完全に一致させることは、幾何学的には不可能な場合が多いからである。しかしながら、ノードpuller、AV pullerによる変形を、特開平10-208072に示されるようなインバースキネマティクスを用いて行えば、中間フレームの形状を滑らかに変化させることは可能になる。
【００５６】
以上のノードpuller、AV pullerによる変形処理（図４のステップＵ２〜Ｕ５）が、i＝k+1からi＝k+nになるまで繰り返され、第kフレームの形状から第k+1フレームの形状、第k+1フレームの形状から第k+2フレームの形状、第k+2フレームの形状から第k+3フレームの形状、第k+3フレームの形状から第k+4フレームの形状というように、スケルトンモデルの形状が順次導出される。そして第K+nフレームのスケルトンモデルの形状が導出されると、各アーク法線ベクトルの向きの修正処理が行われる。
【００５７】
即ち、ノードpuller、AV pullerによる変形により最終的に得られた第k+nフレームでのアーク法線ベクトルの向きは、キーフレームとして登録した時の向きとは異なっている。
【００５８】
図８（Ａ）を例にとれば、ノードpuller、AV pullerによる変形により得られたフレームｆ4（第k+nフレーム）のアーク法線ベクトル５２の向きは、キーフレームとして登録した時のアーク法線ベクトル５４の向きとは異なっている。そこで、アークの法線ベクトル５２の向きの修正処理が必要になる。
【００５９】
２.２.３  中割りアーク法線ベクトルの導出
まず、スケルトンモデルの各アークについて、中割りアーク法線ベクトルを導出する（図４のステップＵ６）。
【００６０】
より具体的には、ノードpuller、AV pullerによる変形により最終的に得られた第k+nフレームのアーク法線ベクトルと、キーフレーム登録時の第k+nフレームのアーク法線ベクトルとを比較し、そのアーク方向ベクトル回りの回転角度φNVを求める。図８（Ａ）を例にとれば、アーク法線ベクトル５２から５４への、アーク方向ベクトル回りの回転角度φNVを求める。
【００６１】
次に、このφNVをフレーム数nで均等割りする。そして、各フレームのアーク法線ベクトルを、そのアークのアーク方向ベクトル回りに捻ったものを中割りアーク法線ベクトルとする。即ち、第k+iフレームでは、アーク法線ベクトルをφNV・i/nだけ捻ったものが中割りアーク法線ベクトルとなる。
【００６２】
図８（Ｂ）を例にとれば、フレームｆ1では、アーク法線ベクトル５６をφNV／４だけアーク方向ベクトル回りに捻ったものが中割りアーク法線ベクトル５８になる。一方、フレームｆ2ではφNV／２、フレームｆ3では３φNV／４だけ、アーク法線ベクトルを捻ったものが中割りアーク法線ベクトルになる。
【００６３】
なお、アーク法線ベクトルはアーク方向ベクトルに直交し、中割りアーク法線ベクトルは、アーク法線ベクトルをアーク方向ベクトル回りに所与の角度だけ回転させたものである。従って、中割りアーク法線ベクトルもアーク方向ベクトルに直交し、アークの法線ベクトルとしての要件を満たすことになる。
【００６４】
２.２.４  NV pullerによる変形
中割りアーク法線ベクトルの導出後、以下の手順で、第k+1フレームから第k+n-1フレームまでのスケルトンモデルの形状を順次修正する。即ち、iフレームのスケルトンモデルの形状を読み込み（図４のステップＵ７）、次のStep3の変形を行い（ステップＵ８）、ｉフレームの形状として保存する（ステップＵ９）。
【００６５】
Step3：全てのノードを固定する。そして、アーク法線ベクトルの向きが、当該フレームのそれぞれの中割りアーク法線ベクトルの方向になるべく近づくような捻りを作用させ、計算が収束するまでスケルトンを変形させる（図４のステップＵ８）。このアーク法線ベクトルに作用させる捻りを、NV puller (normal vector puller)と呼ぶことにする。このNV pullerによる変形処理（図４のステップＵ７〜Ｕ９）が、i＝k+1からi＝k+n-1になるまで繰り返され、第k+1フレームから第k+n-1フレームまでのスケルトンモデルのアーク法線ベクトルの向きが順次修正される。
【００６６】
図８（Ｂ）を例にとれば、フレームｆ1では、アークＡ12のアーク法線ベクトル５６の向きを、中割りアーク法線ベクトル５８の方向に近づけるNV pullerを作用させる。フレームｆ2、ｆ3、ｆ4についても同様である。例えばフレームｆ4では、図８（Ａ）において、アーク法線ベクトル５２の向きを、中割りアーク法線ベクトル５４の向きになるべく近づけるNV pullerが作用する。これにより、アーク法線ベクトル５２の向きが、キーフレーム登録時のアーク法線ベクトル（中割りアーク法線ベクトル）５４の向きと異なってしまうという事態を解消できる。
【００６７】
以上のように、ノードpuller、AV puller、NV pullerの３ステップのpullerを順次作用させ中間フレームの形状を導出することで、前述の２.１の２つの要件（出来上がったスケルトンモデルのモーションは、キーフレームのポーズを必ず通り、パスカーブが指定されたノードは、形状的に不可能な場合を除き、必ず指定された通りの動きをするようにする）を満足するキーフレーム補間を実現できるようになる。
【００６８】
２.３  ラバーバンドによるノードpuller
本実施形態では、上述のStep1のノードpullerとして、特開平10-208072に開示されるラバーバンドの手法を用いている。
【００６９】
図９（Ａ）を例にとれば、パスカーブが指定されたノードＮ4はノードpuller、即ちラバーバンド６２によりパスカーブ上の位置（制御点）６０に引っ張られる。ここで、ラバーバンド６２は根と先を持ち、ラバーバンド６２の根は制御点６０と共に動き、ラバーバンド６２の先はノードＮ4に固定されたままになる。ラバーバンド６２は縮もうとする性質を有し、ノードＮ4と制御点６０との間には、例えば、ノードＮ4と制御点６０との距離に応じて変化する張力（距離を極小にしようとする力）が働くことになる。この張力により、図９（Ａ）に示すように、ノードＮ4が制御点６０の方に引っ張られ、スケルトンモデルが変形することになる。
【００７０】
ノードpullerとしてラバーバンドを用いることで次のような利点を得ることができる。例えばユーザーが図９（Ｂ）に示すようなパスカーブ６４を指定した場合、フレームｆ2において、ノードＮ4をパスカーブ６４上の位置６６に移動させることは不可能である。このような場合にラバーバンドを用いないと、計算が破綻してしまう。しかしながら、ラバーバンド６８を用いてフレームｆ2のノードＮ4を、制御点である位置６６に引っ張るようにすれば、上記のような計算の破綻を回避できるようになる。
【００７１】
２.４  ラバーバンドの張力の適応可変
本実施形態では、複数のノードに対してパスカーブの指定が可能である。例えば図１０（Ａ）に示すように、２つのノードＮ4、Ｎ5にパスカーブが指定された場合には、これらの２つのノードＮ4、Ｎ5の位置を制御するための２つの制御点７０、７２が用意される。そして、ノードＮ4、Ｎ5と制御点７０、７２との間にはラバーバンド７４、７６が作用する。
【００７２】
このように、本実施形態では、複数のノードに複数のラバーバンドが作用する場合がある。
【００７３】
ラバーバンドの張力が強くなると、スケルトンモデルに暴れが生じやすくなるが、この暴れは、ラバーバンドの張力に上限を設けることである程度解消できる。しかしながら、上記のように複数のノードに複数のラバーバンドが作用すると（スケルトンモデルに複数のラバーバンドが作用すると）、ラバーバンドの張力に上限を設けただけでは、次のような問題が生じてしまう。
【００７４】
例えば図１０（Ａ）のように、ラバーバンド７４、７６によりノードＮ4、Ｎ5が同一方向に引っ張られると、個々のラバーバンド７４、７６の張力は小さくても、全ラバーバンドの張力の総和は大きくなる。このため、各ラバーバンド７４、７６の張力に上限を設けても、スケルトンモデルに暴れが生じてしまう。
【００７５】
また、図１０（Ｂ）に示すように、ノードＮ1、Ｎ3に対してパスカーブ７８、８０が指定され、中間フレームｆ2において、ラバーバンド８２、８４が伸びたまた釣り合い状態になった場合を考える。この場合、ラバーバンド８２、８４の張力に単に上限を設けただけでは、図１０（Ｂ）、（Ｃ）、（Ｄ）の全ての状態が釣り合い状態になる。ラバーバンドは、その長さが例えばｌr*の時に張力が上限になり、図１０（Ｂ）、（Ｃ）、（Ｄ）の全ての場合において、ラバーバンド８２、８４の張力は上限に達しており等しくなっているからである。即ち、ユーザーにとっては図１０（Ｂ）の釣り合い状態が最も望ましいのに、図１０（Ｃ）、（Ｄ）のように釣り合い状態になってしまう可能性がある。
【００７６】
そこで、本実施形態では、このように複数のノードと複数（１つでもよい）の制御点との間に複数の張力（ラバーバンド）が働く場合に、ノードと制御点との間にその距離に応じた張力を働かせると共に、その張力の総和が所与の値以下になるような条件の下でスケルトンモデルを変形している。
【００７７】
本実施形態によれば、図１０（Ａ）のように複数のノードＮ4、Ｎ5に対して複数のラバーバンド７４、７６による張力が働いても、これらの張力の総和は所与の値以下になる。従って、スケルトンモデルに暴れが生じる事態を回避できる。また、各張力は、固有の上限値を持たず、ノードと制御点との距離に応じてその強さが変化する。従って、図１０（Ｃ）、（Ｄ）のような釣り合い状態になる事態も回避できる。図１０（Ｃ）ではラバーバンド８２よりも８４の張力が強くなり、図１０（Ｄ）ではラバーバンド８４よりも８２の張力が強くなり、共に釣り合い状態が崩れるからである。
【００７８】
２.５  Step1におけるAV pullerの追加
図１１（Ａ）のように、フレーム（キーフレーム）ｆ0、ｆ4を補間する場合において、ノードＮ4に対して８６に示すようなパスカーブ指定がなされたとする。この場合、フレームｆ1におけるスケルトンモデルの形状は、本来、図１１（Ｂ）に示す形状８７になるべきである。
【００７９】
しかしながら、図１１（Ｃ）において、フレームｆ0のスケルトンモデルの形状に対して上述したStep1のノードpullerのみを作用させると、スケルトンモデルの形状は、図１１（Ｃ）の形状８８、９０のいずれに変形するかは不定となる。この場合、形状８８に変形すれば問題は生じない。しかし、形状９０に変形してしまった場合には、その後のStep2においてAV pullerを作用させても、アークＡ12に作用するAV pullerとアークＡ34に作用するAV pullerとが互いに釣り合ってしまう。このため、形状９０は、それ以上変形せず、図１１（Ｂ）の本来の形状８７に到達できなくなってしまう。
【００８０】
そこで、本実施形態では、図４のステップＵ３を、図１２のＰＡＤに示すように修正し、Step1の反復計算の第１のループ（広義には反復計算の初期段階）においては、ノードpullerだけでなく、AV pullerも同時に作用させてスケルトンモデルを変形している（ステップＶ１）。即ち、反復計算の第１のループにおいて、パスカーブが指定されたノードをパスカーブ上の所与の位置に引っ張る演算のみならず、アーク法線ベクトルの向きを中割りアーク方向ベクトルの方向に近づける演算も行う。一方、第２のループ以降は、ノードpullerのみを作用させて、計算が収束するまでスケルトンモデルを変形している（ステップＶ２）。
【００８１】
以上のようにすることで、フレームｆ1でのスケルトンモデルの形状を、図１１（Ｂ）の本来の形状８７にすることが可能になる。
【００８２】
なお、図１２では、第１のループにおいてのみ、ノードpuller及びAV pullerの両方を作用させているが、例えば第２、第３のループ等においても、ノードpuller及びAV pullerの両方を作用させてもよい。また、第１のループではノードpullerのみを作用させて、第２のループでノードpuller及びAV pullerの両方を作用させることも可能である。
【００８３】
３．スケルトンモデルの形状変形方法
ノードpuller、AV puller、NV pullerによるスケルトンモデルの変形の際には、例えば特開平10-208072に開示されたスケルトンモデルの形状変形方法を用いることができる。以下、このスケルトンモデルの形状変形方法について簡単に説明する。
【００８４】
３.１  基本原理
本実施形態の形状変形方法では、図１３（Ａ）に示すように、スケルトンモデル１１８を表す基本変数として、ノード１０２、１０３、１０４の座標（ｘ、ｙ、ｚ）、アーク１０６、１０７、１０８に垂直なアーク法線ベクトル１１０、１１１、１１２の成分（ｕ、ｖ、ｗ）を使用する。このように、基本変数としてノード座標、アーク法線ベクトルを用いることで、全てのノード、アークを対等なものとして扱うことが可能となる。なお、アーク法線ベクトルを他の変数で代替えすることも可能である。
【００８５】
次に図１３（Ｂ）に示すように、上記基本変数を未知数とする基本式として、アークの長さが所与の値となることを規定する式、アーク法線ベクトルの長さが所与の値となることを規定する式、アーク法線ベクトルがアークに垂直になることを規定する式を用意する。なお例えば基本式ｇ＝０、ｈ＝０を他の式で代替えすることも可能である。
【００８６】
ここで図１３（Ｂ）に示す基本式は非線形となる。そこで本実施形態ではニュートン法等の反復計算法により解を求める。このようにニュートン法等を用いることで、基本式を、基本変数の変化量の１次式で表すことが可能となる。これにより解くべき連立方程式は図１３（Ｃ）に示すものになる。
【００８７】
しかしながら図１３（Ｃ）の式では、変数の数が式の数よりも多い。そこで本実施形態では、基本式を満たす解を一意的に特定するための評価式を用意する。そして評価式の値をほぼ極小、ほぼ極大及びほぼ停留のいずれかにするという条件を付加し、ラグランジュの乗数法を適用して基本変数の解を求める。ラグランジュの乗数法を用いることで、解くべき式は図１３（Ｄ）のようになり、変数の数が式の数と一致するため、解を一意的に定めることが可能となる。
【００８８】
なお本実施形態では、パスカーブ上の所与の位置の座標、中割りアーク方向ベクトル、中割りアーク法線ベクトルなどの所与の情報に基づいてスケルトンモデルを変形させる。この時、上記所与の情報に基づいて基本式、評価式が変化する。具体的には、上記所与の情報に基づいて基本式や評価式に含まれる既知数、式自体の形が変化し、これによりスケルトンモデルの形状が変形することになる。
【００８９】
３.２  アーク法線ベクトルの変化量の一次近似
さて本実施形態では、図１４（Ａ）に示すように、アーク法線ベクトルｎ（ｕ、ｖ、ｗ）の変化量を、所与の１つの変数であるρにより表して基本変数の解を求めている。より具体的には、アーク法線ベクトルｎの変化量を、変数ρの一次式で近似する。アーク法線ベクトルｎはｕ、ｖ、ｗの３変数で表されるが、図１４（Ａ）に示すようにｎはアーク１５０に垂直且つ大きさが一定であるため、実際にはｎの自由度は１である。従ってｎの変化量も１つの変数ρで表すことが可能であり、これにより解くべき基本変数の数を減らすことができ、処理の高速化を図れる。
【００９０】
３.３  評価式
また本実施形態では好ましいスケルトンモデルの変形を得るために、アーク間角度の変化量、ノードと所与の制御点との間の距離、端部に固定ノードを持つアークの向きの変化量、ノード座標の変化量及びノード座標の速度変化量等を評価式に含ませている。より具体的には、図１４（Ｂ）に示すように評価式に種々の条件を加えている。例えば評価式にアーク間角度の変化量を含ませ、アーク間角度の変化量の２乗和を極小化等することにより、ある１組のアーク間だけが突出して曲がる等の事態を防止し、アーク間の曲げを全体的にバランスの良いものにすることができる。また評価式にノードと所与の制御点との間の距離を含ませることで、ラバーバンドを実現できる。また端部に固定ノードを持つアークの向きの変化量、ノード座標の変化量を評価式に含ませ、固定ノード回りのアーク回転ダンパー、ノードダンパー等を設定することで、解が不定になることを防止できる。またノード座標の変化量、ノード座標の速度変化量を評価式に含ませ、ノードダンパー、ノードイナーシャを設定することで、計算の収束が安定しないことに起因するアークの暴れを防止できる。
【００９１】
４．詳細なアルゴリズム
次に本実施形態の詳細なアルゴリズムの例について説明する。なお以下の説明において使用される総和符号の意味は下記の通りである。なお下記において、アーク間の角度をアングルと呼び、アングルを構成する２本のアーク及びその端点である３つのノードをアングルの構成要素と呼ぶ。
【００９２】
【数１】
0004155425.tif 000002
また添え字の順序と符号との関係は以下の通りである。
【００９３】
【数２】
0004155425.tif 000003
４.１  基本式
図１５において、ノードＮiの座標を（ｘi、ｙi、ｚi）とする。またアークには、３次元空間内での回転を表すために、アーク法線ベクトルを設ける。アークＡij（ノードＮi、ノードＮjを結ぶアーク）の法線ベクトルをｎij（ｕij、ｖij、ｗij）とする。本実施形態では、これらの基本変数を用いてスケルトンモデルの形状を表す。アークごとに次の基本式が成り立つ。
【００９４】
【数３】
0004155425.tif 000004
式(1)は、アークＡijの長さがＬijであることを意味する。式(2)は、法線ベクトルの大きさが1であることを意味する。式(3)は、アーク法線ベクトルとアークが垂直であることを意味する。
【００９５】
４.２  基本式の解法
式(1)(2)(3)は非線形方程式であり、また式の数が変数の数より少ない。そこで、ニュートン法とラグランジュの乗数法を組み合わせて解くことにする。
【００９６】
なお、特に指示する必要のない場合は、変数の添え字を省略して表記する。
【００９７】
４.２.１  ニュートン法の適用
ループ１回ごとの各変数の変化量を、次のように定義する。
【００９８】
【数４】
0004155425.tif 000005
上記の基本式(1)にニュートン法を適用すると、次式が得られる。
【００９９】
【数５】
0004155425.tif 000006
これを整理すると、次式になる。
【０１００】
【数６】
0004155425.tif 000007
ｌijはアーク長さの現在値で、次式で表される。計算が収束した状態では、ｌij＝Ｌijとなる。
【０１０１】
【数７】
0004155425.tif 000008
また、λはスケールファクターである。λの値としては、次式のようにアーク長Ｌijの平均値を用いることにする。なおＮarcは、スケルトンを構成するアークの本数である。
【０１０２】
【数８】
0004155425.tif 000009
式(2),(3)及び変数ｕ，ｖ，ｗについては、解くべき方程式の未知数を減らすために、ニュートン法を使わず、以下に述べる１変数ρによる１次近似を用いる。
【０１０３】
４.２.２  アーク法線ベクトル変化量の１次近似
アーク法線ベクトルｎijはアークＡijに垂直で、大きさ１であるため、成分ｕij、ｖij、ｗijは、３変数でありながら、図１４（Ａ）に示すように変化の自由度は１である。そこで、解くべき方程式の未知数を減らすために、１変数による１次近似を行う。
【０１０４】
図１５に示すように、アークの始点ノードＮiから終点ノードＮjに向かう単位ベクトルを、アーク方向ベクトルａijと定義する。また、同図に示すようにアークＡij上にベクトルｓijを作る。
【０１０５】
【数９】
0004155425.tif 000010
式(2),(3)を微分して整理すると、次式のように、ｎij（ｕij，ｖij，ｗij） の変化量Δｎij（Δｕij，Δｖij，Δｗij）を、新たに導入した未知変数ρijの１次式として近似できる。
【０１０６】
【数１０】
0004155425.tif 000011
ｎijが、次のイベントサイクルでとる値をｎ′ijとする。ｎ′ijは、本来アークＡijに垂直で大きさ１となるべきであるが、変化量の２乗のオーダーで誤差を生じてしまう。そこで、次式のように、まず方向を修正し、更に大きさを１に修正したものをｎ′ijとする。ただし、ａ′ijは、ａijが次のイベントサイクルでとる値である。
【０１０７】
【数１１】
0004155425.tif 000012
４.２.３  ラグランジュの乗数法の適用
式(6)は、式の数が変数の数より少なく、また変数ρを含まないので、これだけではスケルトンモデルの変形を一意的に定めることはできない。そこで、ρを含む評価式を用意し、この式を極小化するという条件のもとで、ラグランジュの乗数法を適用して解を求める。評価式は、式Ｕ1，Ｕ2，Ｕ3，… の総和Ｕeとして構成する。未定乗数αijを導入し、次式のようにＵを定義する。
【０１０８】
【数１２】
0004155425.tif 000013
式(6)と次式(14)を連立させて、これを解くことにより、解ξ，η，ζ，ρを得る。
【０１０９】
【数１３】
0004155425.tif 000014
得られた解に基づき、次式によりｘ，ｙ，ｚの新しい値ｘ′，ｙ′，ｚ′を求め、ノードの座標が決まる。
【０１１０】
【数１４】
0004155425.tif 000015
そして式(11), (12)によりｎ（ｕ，ｖ，ｗ）の新しい値ｎ′（ｕ′，ｖ′，ｗ′）を求め、アーク法線ベクトルが決まる。
【０１１１】
４.３  アークの方向固定
４.３.１  アークの方向固定の意味
アークの方向を固定した場合、そのアークは次のような拘束を受けるものとする。
【０１１２】
即ち、両端のノードが固定されていない場合には、平行移動のみが可能になる（アーク法線ベクトルの向きも変化できない）。一方、両端のノードのうち少なくとも一方が固定されている場合には、移動も回転もできない（完全固定状態）。
【０１１３】
４.３.２  Trans group
隣接する複数のアークが方向固定されており、これらのアークが移動する場合には、これらのアークは一体となって平行移動することになる。このような１本以上のアーク（あるいは２個以上のノード）のグループをtrans groupと呼ぶことにする。
【０１１４】
trans groupの中のノードの１つを代表ノードとすると、trans groupの中の代表ノード以外のノードの移動量は、代表ノードの移動量と等しくなる。
【０１１５】
方向固定されたアークについては、式(1)、(6)は不要となり、変数ρも消え去る。trans groupの中の代表ノード以外のノードについては、式(14)から変数ξ，η，ζが消え去る。このように変数の数が減ることで、計算負荷を軽くすることができる。
【０１１６】
４.４  評価式の作成
前述のように、ラグランジュの乗数法を適用するには、極小化すべき評価式を用意する必要がある。評価式としては、図１４（Ｂ）で説明したように、アーク間角度の変化量、ノード座標の変化量、ノード座標の速度変化量等を含む種々の評価式を考えることができる。これらの評価式の詳細については特開平10-208072に開示されている。
【０１１７】
４.４.１  ラバーバンドの設定
ラバーバンドは、収縮しようとする性質を持った仮想的なアークである。ここで、ラバーバンドの一端を（ｘi，ｙi，ｚi）とし、他端を（ｘci，ｙci，ｚci）とする。特開平10-208072に開示されるように、このラバーバンドを用いて、ユーザーは、スケルトンモデルを所望の形状に変形できる。この場合に、ラバーバンドの一端（ｘi，ｙi，ｚi）は、ユーザーがマウス等でピックしたノードＮiになり、他端（ｘci，ｙci，ｚci）は、ユーザーのマウスの動きに合わせて移動する。
【０１１８】
また、このラバーバンドは、前述のようにノードpullerにも利用できる。この場合には、一端（ｘi，ｙi，ｚi）は、パスカーブ指定されたノードＮiになり、他端（ｘci，ｙci，ｚci）は、制御点（パスカーブ上の所与の位置）になる。
【０１１９】
式(13)の評価式Ｕeに、次式Ｕ2を加えることで、ラバーバンドの収縮性を表現できる。Ｗrは、ラバーバンドの収縮性（張力）の強さを表すウェイト値（重み係数）である。
【０１２０】
【数１５】
0004155425.tif 000016
Ｕ2iの偏微分は以下のようになる。
【０１２１】
【数１６】
0004155425.tif 000017
４.４.２  ラバーバンドのウェイト値の適応可変
ラバーバンドの張力が強くなると暴れが発生する傾向がある。そこで、ラバーバンドのウェイト値Ｗrを、スケルトンモデルの状態に応じて可変にする。この際、単にウェイト値に上限を設けるだけでは不十分であり、次の場合を考慮する必要がある。
【０１２２】
第１に、複数のノードをピックし、同一方向に引っ張った場合には、個々のラバーバンドの張力は小さくても、全ラバーバンドの張力の総和は大きくなってしまう（図１０（Ａ）参照）。
【０１２３】
第２に、複数のノードを異なる方向に引っ張った場合には、単純にラバーバンドの張力に上限を設けたのでは、次のような不具合が生じる。即ち、ラバーバンドが伸びた状態でスケルトンモデルの形状が収束した場合に、釣り合い状態が一意的に定まらない場合が生じる。例えば図１６（Ａ）のように、１本のアークを左右に引っ張ったとする。ここで、ラバーバンド１２０、１２２のリミット長をｌr*とすると、図１６（Ｂ）、（Ｃ）、（Ｄ）は全て釣り合い状態となる。図１６（Ｂ）、（Ｃ）、（Ｄ）では、ラバーバンド１２０、１２２の長さは全てｌr*以上になっており、ラバーバンド１２０、１２２の張力が全て等しく上限値になっているからである。
【０１２４】
そこでラバーバンドのウェイト値Ｗrを、次式に示すように、ラバーバンドの長さｌriの総和の逆数に比例した値にする。
【０１２５】
【数１７】
0004155425.tif 000018
但し、ラバーバンド長の総和が小さいときに、ウェイト値Ｗrが大きくなりすぎないように、Ｗrには上限値Ｗr*を設定しておく。
【０１２６】
Ｗrを式(19)のように可変制御することで、複数のノードと複数の制御点との間に働くラバーバンドの張力の総和が所与の値以下になるような条件の下で、スケルトンモデルの形状を変形できるようになる。また、各ラバーバンドの張力には固有の上限値が設けられていなく、式(17)のように、ラバーバンドの張力は、パスカーブが指定されたノードＮi（ｘi，ｙi，ｚi）と、制御点（ｘci，ｙci，ｚci）との距離に応じて変化する。従って、図１６（Ｂ）、（Ｃ）、（Ｄ）のような釣り合い状態が一意的に定まらないという事態を回避できるようになる。
【０１２７】
４.４.３  ノードpuller
ノードpullerは、４.４.１、４.４.２節で説明したラバーバンドを利用して実現する。ノードpullerを作用させて収束計算を行うことで、ノードpullerによるスケルトンモデルの変形を実現できる。
【０１２８】
４.４.４  AV puller
AV pullerを作用させた際に、各アークのアーク方向ベクトルと中割りアーク方向ベクトルとの向きの差の２乗和が極小になるよう、スケルトンモデルを変形させる。式(13)の評価式Ｕeに、次式ＵAを加えて収束計算を行うことで、この変形を実現できる。
【０１２９】
【数１８】
0004155425.tif 000019
ここでＷAは、AV pullerの強さを表すウェイト値（重み係数）である。図１７に示すように、アークＡijのアーク方向ベクトルａijと中割りアーク方向ベクトルａpijとのなす角をθpijとする。また、θpijの変化量を次式のようにφpijとする。
【０１３０】
【数１９】
0004155425.tif 000020
φpijを、ξ，η，ζの１次近似式で表すことにする。まず、次式が成り立つ。
【０１３１】
【数２０】
0004155425.tif 000021
上式を、φpijの２次以上の項を無視して変形すると、次式が得られる。
【０１３２】
【数２１】
0004155425.tif 000022
図１７に示すように、ａijとａpijが作る平面内でａijに垂直な単位ベクトルａqijを作る。
【０１３３】
【数２２】
0004155425.tif 000023
式(26)を式(27)等を用いて変形し、ξi，ξj，ηi，ηj，ζi，ζj，ρijによるＵAijの偏微分を求めると、次式のようになる。
【０１３４】
【数２３】
0004155425.tif 000024
以上の方法では、θpij＝０の場合に、ベクトルａqijが不定となり計算不能となる。そこで、θpij＜＜１の場合は、次式を用いる。
【０１３５】
【数２４】
0004155425.tif 000025
式(30)を変形し、ξi，ξj，ηi，ηj，ζi，ζj，ρijによるＵAijの偏微分を求めると、下式のようになる。
【０１３６】
【数２５】
0004155425.tif 000026
４.４.５  NV puller
NV pullerを作用させた際に、各アークのアーク法線ベクトルと中割りアーク法線ベクトルとの向きの差の２乗和が極小になるよう、スケルトンモデルを変形させる。式(13)の評価式Ｕeに次式ＵNを加えることで、これを実現できる。
【０１３７】
【数２６】
0004155425.tif 000027
ＷNは、NV pullerの強さを表すウェイト値（重み係数）である。また、アークＡijの法線ベクトルｎij（ｕij，ｖij，ｗij）に対する中割りアーク法線ベクトルをｎpij（ｕpij，ｖpij，ｗpij）とする。
【０１３８】
ξi，ξj，ηi，ηj，ζi，ζj，ρijによるＵNijの偏微分を求めると、次式のようになる。
【０１３９】
【数２７】
0004155425.tif 000028
５．画像生成装置、情報記憶媒体
図１８（Ａ）、（Ｂ）、（Ｃ）に、本実施形態のスケルトンモデルの中間フレーム形状導出方法、形状変形方法を利用した画像生成装置、情報記憶媒体の種々の実施形態を示す。
【０１４０】
図１８（Ａ）は、画像生成装置の１つである形状データ作成ツールに本実施形態を適用した例である。スケルトンモデルのキーフレームの形状の作成のための指示、パスカーブの指定等は、例えばキーボード２００、ポインティングデバイスであるマウス２０２を用いて行われる。処理部２１０は、本実施形態の方法によりスケルトンモデルの形状変形を行い形状データを生成する形状データ生成部２１２と、この形状データ生成部２１２で生成された形状データに基づいてスケルトンモデルの画像を合成する画像生成部２１４とを含む。処理部２１０は、ハードウェア的には、ＣＰＵ、ＤＳＰ、メモリ、必要であれば画像生成用のＡＳＩＣ等により構成される。ＦＤ、ＣＤ、ＤＶＤ、ＩＣカード、メモリ等で構成される情報記憶媒体２１６には、本実施形態の方法を実現する形状データ作成プログラム、このプログラムの実行のために必要なデータ等の種々の情報が格納されている。処理部２１０は、キーボード２００、マウス２０２からの入力情報、情報記憶媒体２１６に格納される情報に基づいて処理を行い、これにより表示部２１８上にスケルトンモデル画像２１９等が表示される。この形状データ作成ツールによれば、表示されるスケルトンモデル画像２１９の形状を確認しながら、形状データの作成を行うことができ、設計作業の効率化を図れる。
【０１４１】
図１８（Ｂ）は、画像生成装置の１つであるゲーム装置に本実施形態を適用した例である。ゲームコントローラ２２０、２２２は、プレーヤが操作情報を入力するためのものである。処理部２３０は、プレーヤからの操作情報に基づいてゲーム画像を合成するための演算等を行うゲーム演算部２３２と、このゲーム演算部２３２からの演算結果に基づいて画像生成を行う画像生成部２３４とを含み、ハードウェア的には、ＣＰＵ、ＤＳＰ、メモリ、必要であれば画像生成用のＡＳＩＣ等により構成される。情報記憶媒体２３６には、本実施形態の方法により作成された形状データ或いはこの形状データに基づき生成された種々の情報、及びゲームプログラム等が格納されている。表示部２３８上には、上記形状データ等に基づいて動作するゲームキャラクタの画像２３９、２４０等が表示される。ゲーム装置が業務用のものであれば、形状データ、ゲームプログラムは、半導体メモリ、ハードディスク等から成る情報記憶媒体に格納され、ゲーム装置が家庭用のものであれば、形状データ、ゲームプログラムは、ＣＤ、ＤＶＤ、ゲームカセット等から成る情報記憶媒体に格納される。また複数の端末をホスト装置を介して通信回線で接続し、ゲームプログラム等を配給するタイプのゲーム装置においては、形状データ、ゲームプログラムはホスト装置の情報記憶媒体、例えば磁気ディスク、ＣＤ、ＤＶＤ、半導体メモリ等に格納される。
【０１４２】
一方、図１８（Ｃ）は、ゲーム演算部２４２が形状データ生成部２４３を含む場合のゲーム装置の例である。この場合、情報記憶媒体２４６には、形状データの代わりに、本実施形態の方法を実現する形状データ生成プログラムが格納され、形状データの生成はゲーム装置に内蔵される形状データ生成部２４３がリアルタイムに行う。例えばゲームコントローラ２２０、２２２等によりプレーヤが、スケルトンモデルに所望の動作を行わせる。これによりスケルトンモデルに付随して動くオブジェクトの画像２３９、２４０が表示部２３８に表示されることになる。
【０１４３】
なお本発明は上記実施形態で説明したものに限らず、種々の変形実施が可能である。
【０１４４】
例えば本実施形態では、ノードpullerによる変形の後にAV pullerによる変形を行う場合について説明したが、本発明では、AV pullerによる変形の後にノードpullerによる変形を行うようにしてもよい。例えば、指定ノードがパスカーブ上を通ることよりも、アークが指定方向に向くことを優先する場合には、AV pullerによる変形の後にノードpullerによる変形を行うことが望ましい。この場合には、４.３節で説明したアークの方向固定の手法により、アークの向く方向を固定することになる。
【０１４５】
また、ノードpuller、AV puller、NV pullerによる変形は、図１３（Ａ）〜図１３（Ｄ）で説明した手法（基本式や評価式を所与の情報に基づき変化させながら基本変数の解を求める手法）により実現することが特に望ましい。しかしながら、本発明はこれに限定されず、これらの変形を、別の手法により実現するようにしてもよい。
【０１４６】
また、２.４節で説明したラバーバンドの張力の適応可変の手法は、ノードpullerにおけるラバーバンドのみならず、スケルトンモデルの変形に使用する種々のラバーバンドに対して広く適用できる。例えば特開平10-208072に開示されるような、ユーザのマウス操作によるスケルトンモデルの変形の際に使用するラバーバンドに対しても、ラバーバンドの張力の適応可変の手法は適用できる。
【０１４７】
また、第１の変形ステップの反復計算での初期段階において、第２の変形ステップの第２の条件が加味された演算を行う手法の適用例は、ノードpullerによる変形の初期段階にAV pullerを作用させる適用例（図１２参照）に限定されるものではない。例えば、AV pullerによる変形の初期段階にノードpullerを作用させる適用例など、種々の適用例を考えることができる。
【０１４８】
【図面の簡単な説明】
【図１】図１（Ａ）、（Ｂ）、（Ｃ）は、キャラクタのモーション作成の手順について説明するための図である。
【図２】図２（Ａ）、（Ｂ）は、パスカーブ指定や中間フレームの形状導出について説明するための図である。
【図３】図３（Ａ）、（Ｂ）は、本実施形態の比較例について説明するための図である。
【図４】本実施形態の処理について説明するためのＰＡＤである。
【図５】中割りアーク方向ベクトルの導出について説明するための図である。
【図６】ノードpullerによる変形について説明するための図である。
【図７】  AV pullerによる変形について説明するための図である。
【図８】図８（Ａ）、（Ｂ）は、中割りアーク法線ベクトルの導出について説明するための図である。
【図９】図９（Ａ）、（Ｂ）は、ノードpullerとしてラバーバンドを用いる手法について説明するための図である。
【図１０】図１０（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）は、ラバーバンドの張力の適応可変について説明するための図である。
【図１１】図１１（Ａ）、（Ｂ）、（Ｃ）は、ノードpullerを作用させて行う反復計算の初期段階において、AV pullerを作用させる手法について説明するための図である。
【図１２】ノードpullerを作用させて行う反復計算の初期段階において、AV pullerを作用させる手法について説明するためのＰＡＤである。
【図１３】図１３（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）は、基本式や評価式を所与の情報に基づき変化させながら基本変数の解を求める手法について説明するための図である。
【図１４】図１４（Ａ）は、アーク法線ベクトルの変化量を１変数で表す手法について説明するための図であり、図１４（Ｂ）は、評価式の種々の例を示す図である。
【図１５】アーク、ノード、アーク法線ベクトル等の関係について説明するための図である。
【図１６】図１６（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）は、ラバーバンドの張力の適応可変について説明するための図である。
【図１７】アーク方向ベクトル、中割りアーク方向ベクトル等の関係について説明するための図である。
【図１８】図１８（Ａ）、（Ｂ）、（Ｃ）は、画像生成装置、情報記憶媒体の種々の実施形態について示す図である。
【符号の説明】
１０    スケルトンモデル
１２    関節点（ノード）
１４    端点（ノード）
１６    骨（アーク）
２０、２２  キーフレームの形状
２４    中間フレームの形状
２６    スケルトンモデル
２８    パスカーブ
４０、４２  アーク方向ベクトル
４４    パスカーブ上の位置
４６、４８、５０  中割りアーク方向ベクトル
５２    ノードpuller、AV pullerによる変形後のアーク法線ベクトル
５４    キーフレーム登録時のアーク法線ベクトル
５６    アーク法線ベクトル
５８    中割りアーク法線ベクトル
６０    制御点（パスカーブ上の位置）
６２    ラバーバンド
６４    パスカーブ
６６    制御点（パスカーブ上の位置）
６８    ラバーバンド
【図１】
0004155425.tif 000029
【図２】
0004155425.tif 000030
【図３】
0004155425.tif 000031
【図４】
0004155425.tif 000032
【図５】
0004155425.tif 000033
【図６】
0004155425.tif 000034
【図７】
0004155425.tif 000035
【図８】
0004155425.tif 000036
【図９】
0004155425.tif 000037
【図１０】
0004155425.tif 000038
【図１１】
0004155425.tif 000039
【図１２】
0004155425.tif 000040
【図１３】
0004155425.tif 000041
【図１４】
0004155425.tif 000042
【図１５】
0004155425.tif 000043
【図１６】
0004155425.tif 000044
【図１７】
0004155425.tif 000045
【図１８】
0004155425.tif 000046