説明

骨格モデルの関節角度の曲がりにくさの制御装置,方法,及びプログラム

【課題】骨格モデルにおいて,関節の曲がりにくさを設定した場合に,不自然なポーズとなってしまうことを改善し,自然な姿勢が得られる骨格モデル制御方法を提供する。
【解決手段】複数の骨が1つ以上の関節によって連結されている骨格モデルの関節角度を制御する方法であって,関節の現在の角度パラメータθpを取得する現在角度取得ステップと,前記関節角度の曲がりにくさ係数wが設定されていない状態で,前記関節角度の補正されていない角度パラメータθnを算出する未補正角度算出ステップと,前記現在の角度パラメータθpと前記未補正角度パラメータθnとに基づいて,予め定められた規則を適用して前記曲がりにくさ係数wを決定し,前記曲がりにくさ係数wを前記関節に適用した場合の,補正された角度パラメータθmを決定する補正済角度決定ステップと,を有する方法によって実現される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は,骨格モデルにおける各々の関節角度(曲げ,捻り)の曲がりにくさの制御に関する。
【背景技術】
【0002】
CGキャラクタ等を動かしてポーズやアニメーションを作る際に,複数の骨を関節で繋いだ骨格モデル(スケルトンモデル)(図1(a))が使われる場合がある。このような骨格モデルは,仮想空間ばかりでなく,ロボット制御等の実空間における対象物を制御する場合にも用いられ得る。
【0003】
本願明細書では,図1(b)のように関節の両側の骨のうち一方を親骨,他方を子骨と呼ぶことにする。関節の回転(曲げ,捻り)の状態は,親骨を基準とした子骨の向きで表すことができる。骨の向きを表すために,各々の骨に対して図1(b)のように座標系が定められる。図1(b)の座標系では,x軸回転が捻り,y軸回転とz軸回転が曲げとなる。子骨の捻りの状態は,y軸(又はz軸)の向きで定義できる。
【0004】
三次元仮想空間又は実空間で人体モデル,動物,構造物等の姿勢(ポーズ,動き等)を制御する際に用いられるこのような骨格モデルにおいては,図1(a)に示す各々の骨および関節の位置,角度,回転(曲げ,捻り)等を意図したとおりに制御することが必要となる。図1(a)に示される骨格モデルでは,各々の骨は関節で結合されており,各々の骨の動きが他の骨の動きに影響を与える。従来から,骨格をモデル化し,骨格モデルを制御する手法として,種々のものが提案されている。
【0005】
骨格モデルを制御する手法の一例として,逆運動学(Inverse Kinematics)のうちのCCD(Cyclic−Coordinate−Descent)法を説明する。なお,本発明はこの手法への適用に限定されるものではない。
【0006】
[CCD(Cyclic−Coordinate−Descent)法]
図2に示すように,複数の関節J乃至Jと複数の骨B乃至Bを有する骨格モデルを例にして説明する。関節Jの位置が固定されている場合において,骨格モデルの骨Bの点Aを目標点である点Dに移動させる場合のCCD法の操作を以下に示す。CCD法は,1回の計算ステップで1つの関節(J)の角度のみを動かして,点Aと点Dとの距離を最小化し,順次この操作を全ての関節(J乃至J)について計算する。この操作によって,順次点Aと点Dとの距離が小さくなる。この計算を繰り返す。具体的な計算方法を以下に示す。
(1)図2(b)に示すように,まず,関節Jの回転角度だけを操作して点Aと点Dとの距離が最短になるようにする。このためには,関節Jを中心として骨Bを角度θだけ回転させ,関節Jと目標Dとを結んだ直線h上に,点Aを移動させる。これによって,点Aは,直線h上に位置するため,点Aと点Dとの距離が最短になる。
(2)図2(c)に示すように,次に関節Jの回転角度だけを操作して点Aと点Dとの距離が最短になるようにする。このためには,関節Jを中心として骨Bを角度θだけ回転させ,関節Jと目標Dとを結んだ直線h上に,点Aを移動させる。これによって,点Aと点Dとの距離が最短になる。
(3)図2(d)に示すように,次に関節Jの回転角度だけを操作して点Aと点Dとの距離が最短になるようにする。このためには,関節Jを中心として骨Bを角度θだけ回転させ,関節Jと目標Dとを結んだ直線h上に,点Aを移動させる。これによって,点Aと点Dとの距離が最短になる。
(4)同じ操作を上記(1)から再度繰り返す。
【0007】
点Aと点Dの距離が閾値e以下になること,及び反復回数が上限回数を超えたこと,の少なくともいずれか一方が満たされたときに計算を打ち切ることとしてもよい。
【0008】
上記の例では,点Aは,端点であったが,一般には,骨格の関節である場合もある。以下の説明では,骨格モデルにおける動かす点Aをエフェクタと呼ぶ。
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述のCCD法では,骨格モデルを実世界の対象により近づけるために,各々の関節部分の関節角度(曲げ,捻り)の曲がりにくさを設定することができる。なお,関節角度の曲がりにくさを設定するには,例えば以下のように抵抗値を設定すればよい。例えば,図2において,関節Jを他の関節(J及びJ)よりも曲がりにくく設定する場合を想定する。この場合には,図2(c)において関節Jの本来の曲がるべき角度θと抵抗値としてW(0<=W<=1)を用いて,実際に曲がるべき角度θ22を,下式により計算する。
θ22=θ×W
となり,
θ22<=θ
となる。すなわち,関節Jに抵抗値Wを適用し,実際の曲がりの角度をθに代えてθ22だけ関節Jを曲げることとすればよい。この抵抗値の設定を各々の関節に適宜適用することによって,骨格モデルの中の任意の関節角度の曲がりにくさを設定することができる。このため,点Aは,関節Jと点Dとを結んだ線h上に存在しなくなるが,そのまま,上述の繰り返し演算を実行すればよい。この設定によって,関節Jは他の関節よりも曲がりにくくなる。
【0010】
図3は,人間の骨格モデルを用いた場合の曲がりにくさの影響を示すための図である。図3(a)に示す姿勢を初期状態とし,両足首C,Dを固定して,点Aから点Bに頭を引き上げる操作を行った場合を想定する。
【0011】
図3(b)は,全ての関節に均一な曲がりにくさを設定した場合の例を示している。膝や腰が曲がった状態から伸びる際の抵抗も,背骨が真っすぐな状態から曲がる際の抵抗も,同程度の抵抗であるため,点Aから点Bに頭を引き上げる操作を行った際に,膝や腰が伸びると同時に背骨も曲がって(反って)しまい,不自然な姿勢となっている。
【0012】
本発明は,上述の欠点を克服することを目的とする。すなわち,関節角度(曲げ,捻り)の曲がりにくさを設定した場合に,曲げるときの抵抗と伸ばすときの抵抗が同じであるために,不自然なポーズとなってしまうことを改善し,図3(c)に示すような自然な姿勢が得られる骨格モデルの制御方法,装置,及びプログラムを提供することを目的とする。なお,本発明の目的は,上述の記載に限られるものではない。
【課題を解決するための手段】
【0013】
本発明は,複数の骨が1つ以上の関節によって連結されている骨格モデルにおいて,前記1つ以上の関節の関節角度を制御する方法であって,前記関節角度には,関節の曲げ及び捻りのうち少なくとも一つを含み,関節角度の状態は角度パラメータで表される。角度パラメータとは,通常の角度をも含む広い概念であって,関節の回転(曲げ,捻り等)の状態を表すパラメータである。具体的には,オイラー角,四元数(クォータニオン),マトリクス等が挙げられる。更に,前記方法は,関節の現在の角度パラメータθを取得する現在角度取得ステップと,前記関節に前記関節角度の曲がりにくさ係数wが設定されていない状態で,前記関節角度の未補正角度パラメータθを算出する未補正角度算出ステップと,前記現在の角度パラメータθと前記未補正角度パラメータθとに基づいて,予め定められた規則を適用して前記曲がりにくさ係数wを決定し,前記曲がりにくさ係数wを前記関節に適用した場合の,補正された角度パラメータθを決定する補正済角度決定ステップと,を有する。
【0014】
また,本発明は,前記θが,θ=θ+w(θ−θ)によって与えられてもよい。
【0015】
加えて,本発明は,上記発明を実現するプログラム又は装置によって提供されてもよい。
【発明の効果】
【0016】
本発明により,骨格モデルを用いてポーズを作成する際に,より自然なポーズを作成しやすくなる。また,キャラクタを動かした際に,自然な動きが得られる。
【図面の簡単な説明】
【0017】
【図1】骨格モデル,親骨,子骨,及び座標系を示す図。
【図2】CCD法による骨格モデルの制御方法を示す図。
【図3】人間の骨格モデルを用いた場合の曲がりにくさの影響を示すための図。
【図4】本発明の実施例を示す図。
【図5】本発明の実施例の処理の流れを示す図。
【図6】本発明のハードウエア構成を示す図。
【図7】本発明の装置構成を示す図。
【発明を実施するための形態】
【0018】
上述の関節角度の曲がりにくさを一般的に記述すれば,以下の通りである。
【0019】
IKで骨格モデルを動かした際に,骨格上のn個の関節が動いた(角度が変化した)とする。このn個の関節をA〜Aとする。関節ごとに予め動きやすさを表す係数が設定されており,関節Aに設定されている係数をWとする(0<W)。Wが大きいほど動きやすい。本明細書で「動く」とは移動のことではなく,関節角度(曲げ,捻り)の変化のことである。
【0020】
〜Wの中の最大値をWmaxとする。IKで動かしたことによる関節角度変化量に対してW/Wmaxを掛ける。その結果,n個の関節のうち動きやすさ係数が最も大きいもの以外は,係数の値に応じて角度変化が抑えられる。このように関節ごとの動きやすさを設定したうえで,更に以下のように個々の関節の曲がりにくさを設定する。
【実施例】
【0021】
図4に示すように,個々の関節角度の曲がりにくさを以下のように設定する。
【0022】
図4(b)に示すように,骨B及びBが関節Aで連結されている。図4(b)の矢印の方向に骨Bが動く場合を想定する。この場合,関節Aの角度は,抵抗が無い場合θからθに変化する。すなわち,IKで動かす前の関節角度パラメータをθとし,動かした後の値をθとする。以下のように,θ,θの値に応じて図4(a)のグラフを使って,係数wを決める。
【0023】
図5に処理フローを示す。具体的な処理は以下の通りである。
(1)θ<aの場合(S501が「はい」):
θ<θの場合(S503が「はい」):グラフの横軸値θに対応する縦軸値をwとする(S505)。
【0024】
それ以外の場合:w=1.0とする(S507)。
(2)θ>aの場合(S509が「はい」):
θ>θの場合(S511が「はい」):グラフの横軸値θに対応する縦軸値をwとする(S513)。
【0025】
それ以外の場合:w=1.0とする(S515)。
(3)上記(1)及び(2)以外の場合:w=1.0(S517)とする
以上の手順によって得られたwを使って,補正された関節角度パラメータθを以下の式によって求める。
θ=θ+w(θ−θ) (1)(S519)
以上の処理を行うことによって,より自然な骨格モデルの挙動が得られる。
【0026】
なお,上記実施例においては,関節角度の曲げを用いたが,角度を把握できる様々な座標系を用いてもよいことは言うまでもない。
【0027】
図6は,本願発明の実施例の装置構成を示す図である。コンピュータ600には,キーボード605,マウス606,ペン608を含むタブレット607,ディスプレイ601が接続されている。ディスプレイ601上には,キャンバス602が表示され,キャンバス602上に図形が描画されている(603)。
【0028】
図7は,本発明の機能構成を示した図である。現在角度取得部701は,関節角度の現在の角度パラメータθを取得する。未補正角度算出部703は,前記関節角度の曲がりにくさが設定されていないとして,前記関節角度が曲がるべき未補正角度パラメータθを算出する。補正済角度決定部705は,前記現在の角度パラメータθと前記未補正角度パラメータθとに基づいて,予め定められた規則を適用して前記関節角度の曲がりにくさwを決定し,前記曲がりにくさwを前記関節に適用した場合の,前記関節角度の補正された角度パラメータθを決定する。この補正された角度パラメータθを用いて,骨格モデルを表示手段711に表示してもよい。また,メモリ707及び入力手段709を有してもよい。
【0029】
[骨の捻りにくさへの適用]
上述の実施例では,主に関節角度の曲げにくさを制御する例を示した。なお,本発明は,関節角度の曲げにくさだけを対象とするものではない。上述の関節角度の曲げにくさの制御は,捻りにくさの制御にそのまま適用できるものである。
【0030】
以上,本発明の実施例を説明したが,各実施例は,排他的なものではなく,必要に応じて組み合わせて実施できることは言うまでもない。また,請求項に係る本発明は,上述の実施例に限定されるものでない点に留意すべきである。

【特許請求の範囲】
【請求項1】
複数の骨が1つ以上の関節によって連結されている骨格モデルにおいて,前記1つ以上の関節の関節角度を制御する方法であって,前記関節角度には,関節の曲げ及び捻りのうち少なくとも一つを含み,
前記方法は,
関節の現在の角度パラメータθを取得する現在角度取得ステップと,
前記関節に前記関節角度の曲がりにくさ係数wが設定されていない状態で,前記関節角度の補正されていない角度パラメータθを算出する未補正角度算出ステップと,
前記現在の角度パラメータθと前記未補正角度パラメータθとに基づいて,予め定められた規則を適用して前記曲がりにくさ係数wを決定し,前記曲がりにくさ係数wを前記関節に適用した場合の,補正された角度パラメータθを決定する補正済角度決定ステップと,
を有する方法。
【請求項2】
前記θが,
θ=θ+w(θ−θ
によって与えられる,請求項1記載の方法。
【請求項3】
請求項1又は2記載の方法をコンピュータに実行させる命令を有するプログラム。
【請求項4】
複数の骨が1つ以上の関節によって連結されている骨格モデルにおいて,前記1つ以上の関節の関節角度を制御する装置であって,前記関節角度には,関節の曲げ及び捻りのうち少なくとも一つを含み,
前記装置は,
関節の現在の角度パラメータθを取得する現在角度取得部と,
前記関節に前記関節角度の曲がりにくさ係数wが設定されていない状態で,前記関節角度の補正されていない角度パラメータθを算出する未補正角度算出部と,
前記現在の角度パラメータθと前記未補正角度パラメータθとに基づいて,予め定められた規則を適用して前記曲がりにくさ係数wを決定し,前記曲がりにくさ係数wを前記関節に適用した場合の,補正された角度パラメータθを決定する補正済角度決定部と,
を有する装置。
【請求項5】
前記θが,
θ=θ+w(θ−θ
によって与えられる,請求項4記載の装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2012−164221(P2012−164221A)
【公開日】平成24年8月30日(2012.8.30)
【国際特許分類】
【出願番号】特願2011−25361(P2011−25361)
【出願日】平成23年2月8日(2011.2.8)
【出願人】(596021562)株式会社セルシス (22)
【Fターム(参考)】