(57)【特許請求の範囲】
【請求項１】
複数の骨が１つ以上の関節によって連結されている骨格モデルにおいて，前記１つ以上の関節の関節角度をコンピュータが制御する方法であって，前記関節角度には，関節の曲げ及び捻りのうち少なくとも一つを含み，
前記方法は，
関節の現在の角度パラメータθｐを取得する現在角度取得ステップと，
前記関節に前記関節角度の曲がりにくさ係数ｗが設定されていない状態で，前記関節角度の補正されていない角度パラメータθｎを算出する未補正角度算出ステップと，
前記現在の角度パラメータθｐと前記補正されていない角度パラメータθｎとに基づいて，予め定められた規則を適用して前記曲がりにくさ係数ｗを決定し，前記曲がりにくさ係数ｗを前記関節に適用した場合の，補正された角度パラメータθｍを決定する補正済角度決定ステップと，
を有し，
前記予め定められた規則は，
前記θｐの値，及び／又は前記θｐとθｎとの大小関係に基づいて，前記ｗの値を変更する規則である，方法。
【請求項２】
前記θｍが，
θｍ＝θｐ＋ｗ（θｎ−θｐ）
によって与えられる，請求項１記載の方法。
【請求項３】
前記ｗは，前記θｐ，及び／又は（θｎ−θｐ）の関数である，請求項２記載の方法。
【請求項４】
請求項１乃至３のうちいずれか１項記載の方法をコンピュータに実行させる命令を有するプログラム。
【請求項５】
複数の骨が１つ以上の関節によって連結されている骨格モデルにおいて，前記１つ以上の関節の関節角度を制御する装置であって，前記関節角度には，関節の曲げ及び捻りのうち少なくとも一つを含み，
前記装置は，
関節の現在の角度パラメータθｐを取得する現在角度取得部と，
前記関節に前記関節角度の曲がりにくさ係数ｗが設定されていない状態で，前記関節角度の補正されていない角度パラメータθｎを算出する未補正角度算出部と，
前記現在の角度パラメータθｐと前記補正されていない角度パラメータθｎとに基づいて，予め定められた規則を適用して前記曲がりにくさ係数ｗを決定し，前記曲がりにくさ係数ｗを前記関節に適用した場合の，補正された角度パラメータθｍを決定する補正済角度決定部と，
を有し，
前記予め定められた規則は，
前記θｐの値，及び／又は前記θｐとθｎとの大小関係に基づいて，前記ｗの値を変更する規則である，装置。
【請求項６】
前記θｍが，
θｍ＝θｐ＋ｗ（θｎ−θｐ）
によって与えられる，請求項５記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，骨格モデルにおける各々の関節角度（曲げ，捻り）の曲がりにくさの制御に関する。
【背景技術】
【０００２】
ＣＧキャラクタ等を動かしてポーズやアニメーションを作る際に，複数の骨を関節で繋いだ骨格モデル（スケルトンモデル）（図１（ａ））が使われる場合がある。このような骨格モデルは，仮想空間ばかりでなく，ロボット制御等の実空間における対象物を制御する場合にも用いられ得る。
【０００３】
本願明細書では，図１（ｂ）のように関節の両側の骨のうち一方を親骨，他方を子骨と呼ぶことにする。関節の回転（曲げ，捻り）の状態は，親骨を基準とした子骨の向きで表すことができる。骨の向きを表すために，各々の骨に対して図１（ｂ）のように座標系が定められる。図１（ｂ）の座標系では，ｘ軸回転が捻り，ｙ軸回転とｚ軸回転が曲げとなる。子骨の捻りの状態は，ｙ軸（又はｚ軸）の向きで定義できる。
【０００４】
三次元仮想空間又は実空間で人体モデル，動物，構造物等の姿勢（ポーズ，動き等）を制御する際に用いられるこのような骨格モデルにおいては，図１（ａ）に示す各々の骨および関節の位置，角度，回転（曲げ，捻り）等を意図したとおりに制御することが必要となる。図１（ａ）に示される骨格モデルでは，各々の骨は関節で結合されており，各々の骨の動きが他の骨の動きに影響を与える。従来から，骨格をモデル化し，骨格モデルを制御する手法として，種々のものが提案されている。
【０００５】
骨格モデルを制御する手法の一例として，逆運動学（Ｉｎｖｅｒｓｅ  Ｋｉｎｅｍａｔｉｃｓ）のうちのＣＣＤ（Ｃｙｃｌｉｃ−Ｃｏｏｒｄｉｎａｔｅ−Ｄｅｓｃｅｎｔ）法を説明する。なお，本発明はこの手法への適用に限定されるものではない。
【０００６】
［ＣＣＤ（Ｃｙｃｌｉｃ−Ｃｏｏｒｄｉｎａｔｅ−Ｄｅｓｃｅｎｔ）法］
図２に示すように，複数の関節Ｊ１乃至Ｊ３と複数の骨Ｂ１乃至Ｂ３を有する骨格モデルを例にして説明する。関節Ｊ３の位置が固定されている場合において，骨格モデルの骨Ｂ１の点Ａを目標点である点Ｄに移動させる場合のＣＣＤ法の操作を以下に示す。ＣＣＤ法は，１回の計算ステップで１つの関節（Ｊ１）の角度のみを動かして，点Ａと点Ｄとの距離を最小化し，順次この操作を全ての関節（Ｊ１乃至Ｊ３）について計算する。この操作によって，順次点Ａと点Ｄとの距離が小さくなる。この計算を繰り返す。具体的な計算方法を以下に示す。
（１）図２（ｂ）に示すように，まず，関節Ｊ１の回転角度だけを操作して点Ａと点Ｄとの距離が最短になるようにする。このためには，関節Ｊ１を中心として骨Ｂ１を角度θ１だけ回転させ，関節Ｊ１と目標Ｄとを結んだ直線ｈ１上に，点Ａを移動させる。これによって，点Ａは，直線ｈ１上に位置するため，点Ａと点Ｄとの距離が最短になる。
（２）図２（ｃ）に示すように，次に関節Ｊ２の回転角度だけを操作して点Ａと点Ｄとの距離が最短になるようにする。このためには，関節Ｊ２を中心として骨Ｂ２を角度θ２だけ回転させ，関節Ｊ２と目標Ｄとを結んだ直線ｈ２上に，点Ａを移動させる。これによって，点Ａと点Ｄとの距離が最短になる。
（３）図２（ｄ）に示すように，次に関節Ｊ３の回転角度だけを操作して点Ａと点Ｄとの距離が最短になるようにする。このためには，関節Ｊ３を中心として骨Ｂ３を角度θ３だけ回転させ，関節Ｊ３と目標Ｄとを結んだ直線ｈ３上に，点Ａを移動させる。これによって，点Ａと点Ｄとの距離が最短になる。
（４）同じ操作を上記（１）から再度繰り返す。
【０００７】
点Ａと点Ｄの距離が閾値ｅ以下になること，及び反復回数が上限回数を超えたこと，の少なくともいずれか一方が満たされたときに計算を打ち切ることとしてもよい。
【０００８】
上記の例では，点Ａは，端点であったが，一般には，骨格の関節である場合もある。以下の説明では，骨格モデルにおける動かす点Ａをエフェクタと呼ぶ。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のＣＣＤ法では，骨格モデルを実世界の対象により近づけるために，各々の関節部分の関節角度（曲げ，捻り）の曲がりにくさを設定することができる。なお，関節角度の曲がりにくさを設定するには，例えば以下のように抵抗値を設定すればよい。例えば，図２において，関節Ｊ２を他の関節（Ｊ１及びＪ３）よりも曲がりにくく設定する場合を想定する。この場合には，図２（ｃ）において関節Ｊ２の本来の曲がるべき角度θ２と抵抗値としてＷ（０＜＝Ｗ＜＝１）を用いて，実際に曲がるべき角度θ２２を，下式により計算する。
θ２２＝θ２×Ｗ
となり，
θ２２＜＝θ２
となる。すなわち，関節Ｊ２に抵抗値Ｗを適用し，実際の曲がりの角度をθ２に代えてθ２２だけ関節Ｊ２を曲げることとすればよい。この抵抗値の設定を各々の関節に適宜適用することによって，骨格モデルの中の任意の関節角度の曲がりにくさを設定することができる。このため，点Ａは，関節Ｊ２と点Ｄとを結んだ線ｈ２上に存在しなくなるが，そのまま，上述の繰り返し演算を実行すればよい。この設定によって，関節Ｊ２は他の関節よりも曲がりにくくなる。
【００１０】
図３は，人間の骨格モデルを用いた場合の曲がりにくさの影響を示すための図である。図３（ａ）に示す姿勢を初期状態とし，両足首Ｃ，Ｄを固定して，点Ａから点Ｂに頭を引き上げる操作を行った場合を想定する。
【００１１】
図３（ｂ）は，全ての関節に均一な曲がりにくさを設定した場合の例を示している。膝や腰が曲がった状態から伸びる際の抵抗も，背骨が真っすぐな状態から曲がる際の抵抗も，同程度の抵抗であるため，点Ａから点Ｂに頭を引き上げる操作を行った際に，膝や腰が伸びると同時に背骨も曲がって（反って）しまい，不自然な姿勢となっている。
【００１２】
本発明は，上述の欠点を克服することを目的とする。すなわち，関節角度（曲げ，捻り）の曲がりにくさを設定した場合に，曲げるときの抵抗と伸ばすときの抵抗が同じであるために，不自然なポーズとなってしまうことを改善し，図３（ｃ）に示すような自然な姿勢が得られる骨格モデルの制御方法，装置，及びプログラムを提供することを目的とする。なお，本発明の目的は，上述の記載に限られるものではない。
【課題を解決するための手段】
【００１３】
本発明は，複数の骨が１つ以上の関節によって連結されている骨格モデルにおいて，前記１つ以上の関節の関節角度を制御する方法であって，前記関節角度には，関節の曲げ及び捻りのうち少なくとも一つを含み，関節角度の状態は角度パラメータで表される。角度パラメータとは，通常の角度をも含む広い概念であって，関節の回転（曲げ，捻り等）の状態を表すパラメータである。具体的には，オイラー角，四元数（クォータニオン），マトリクス等が挙げられる。更に，前記方法は，関節の現在の角度パラメータθｐを取得する現在角度取得ステップと，前記関節に前記関節角度の曲がりにくさ係数ｗが設定されていない状態で，前記関節角度の未補正角度パラメータθｎを算出する未補正角度算出ステップと，前記現在の角度パラメータθｐと前記未補正角度パラメータθｎとに基づいて，予め定められた規則を適用して前記曲がりにくさ係数ｗを決定し，前記曲がりにくさ係数ｗを前記関節に適用した場合の，補正された角度パラメータθｍを決定する補正済角度決定ステップと，を有する。
【００１４】
また，本発明は，前記θｍが，θｍ＝θｐ＋ｗ（θｎ−θｐ）によって与えられてもよい。
【００１５】
加えて，本発明は，上記発明を実現するプログラム又は装置によって提供されてもよい。
【発明の効果】
【００１６】
本発明により，骨格モデルを用いてポーズを作成する際に，より自然なポーズを作成しやすくなる。また，キャラクタを動かした際に，自然な動きが得られる。
【図面の簡単な説明】
【００１７】
【図１】骨格モデル，親骨，子骨，及び座標系を示す図。
【図２】ＣＣＤ法による骨格モデルの制御方法を示す図。
【図３】人間の骨格モデルを用いた場合の曲がりにくさの影響を示すための図。
【図４】本発明の実施例を示す図。
【図５】本発明の実施例の処理の流れを示す図。
【図６】本発明のハードウエア構成を示す図。
【図７】本発明の装置構成を示す図。
【発明を実施するための形態】
【００１８】
上述の関節角度の曲がりにくさを一般的に記述すれば，以下の通りである。
【００１９】
ＩＫで骨格モデルを動かした際に，骨格上のｎ個の関節が動いた（角度が変化した）とする。このｎ個の関節をＡ１〜Ａｎとする。関節ごとに予め動きやすさを表す係数が設定されており，関節Ａｉに設定されている係数をＷｉとする（０＜Ｗｉ）。Ｗｉが大きいほど動きやすい。本明細書で「動く」とは移動のことではなく，関節角度（曲げ，捻り）の変化のことである。
【００２０】
Ｗ１〜Ｗｎの中の最大値をＷｍａｘとする。ＩＫで動かしたことによる関節角度変化量に対してＷｉ／Ｗｍａｘを掛ける。その結果，ｎ個の関節のうち動きやすさ係数が最も大きいもの以外は，係数の値に応じて角度変化が抑えられる。このように関節ごとの動きやすさを設定したうえで，更に以下のように個々の関節の曲がりにくさを設定する。
【実施例】
【００２１】
図４に示すように，個々の関節角度の曲がりにくさを以下のように設定する。
【００２２】
図４（ｂ）に示すように，骨Ｂ１及びＢ２が関節Ａで連結されている。図４（ｂ）の矢印の方向に骨Ｂ２が動く場合を想定する。この場合，関節Ａの角度は，抵抗が無い場合θｐからθｎに変化する。すなわち，ＩＫで動かす前の関節角度パラメータをθｐとし，動かした後の値をθｎとする。以下のように，θｐ，θｎの値に応じて図４（ａ）のグラフを使って，係数ｗを決める。
【００２３】
図５に処理フローを示す。具体的な処理は以下の通りである。
（１）θｐ＜ａ０の場合（Ｓ５０１が「はい」）：
θｎ＜θｐの場合（Ｓ５０３が「はい」）：グラフの横軸値θｐに対応する縦軸値をｗとする（Ｓ５０５）。
【００２４】
それ以外の場合：ｗ＝１．０とする（Ｓ５０７）。
（２）θｐ＞ａ１の場合（Ｓ５０９が「はい」）：
θｎ＞θｐの場合（Ｓ５１１が「はい」）：グラフの横軸値θｐに対応する縦軸値をｗとする（Ｓ５１３）。
【００２５】
それ以外の場合：ｗ＝１．０とする（Ｓ５１５）。
（３）上記（１）及び（２）以外の場合：ｗ＝１．０（Ｓ５１７）とする
以上の手順によって得られたｗを使って，補正された関節角度パラメータθｍを以下の式によって求める。
θｍ＝θｐ＋ｗ（θｎ−θｐ）    （１）（Ｓ５１９）
以上の処理を行うことによって，より自然な骨格モデルの挙動が得られる。
【００２６】
なお，上記実施例においては，関節角度の曲げを用いたが，角度を把握できる様々な座標系を用いてもよいことは言うまでもない。
【００２７】
図６は，本願発明の実施例の装置構成を示す図である。コンピュータ６００には，キーボード６０５，マウス６０６，ペン６０８を含むタブレット６０７，ディスプレイ６０１が接続されている。ディスプレイ６０１上には，キャンバス６０２が表示され，キャンバス６０２上に図形が描画されている（６０３）。
【００２８】
図７は，本発明の機能構成を示した図である。現在角度取得部７０１は，関節角度の現在の角度パラメータθｐを取得する。未補正角度算出部７０３は，前記関節角度の曲がりにくさが設定されていないとして，前記関節角度が曲がるべき未補正角度パラメータθｎを算出する。補正済角度決定部７０５は，前記現在の角度パラメータθｐと前記未補正角度パラメータθｎとに基づいて，予め定められた規則を適用して前記関節角度の曲がりにくさｗを決定し，前記曲がりにくさｗを前記関節に適用した場合の，前記関節角度の補正された角度パラメータθｍを決定する。この補正された角度パラメータθｍを用いて，骨格モデルを表示手段７１１に表示してもよい。また，メモリ７０７及び入力手段７０９を有してもよい。
【００２９】
［骨の捻りにくさへの適用］
上述の実施例では，主に関節角度の曲げにくさを制御する例を示した。なお，本発明は，関節角度の曲げにくさだけを対象とするものではない。上述の関節角度の曲げにくさの制御は，捻りにくさの制御にそのまま適用できるものである。
【００３０】
以上，本発明の実施例を説明したが，各実施例は，排他的なものではなく，必要に応じて組み合わせて実施できることは言うまでもない。また，請求項に係る本発明は，上述の実施例に限定されるものでない点に留意すべきである。
【図１】
0005602043.tif 000002
【図２】
0005602043.tif 000003
【図３】
0005602043.tif 000004
【図４】
0005602043.tif 000005
【図５】
0005602043.tif 000006
【図６】
0005602043.tif 000007
【図７】
0005602043.tif 000008