(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-04-19
(45)【発行日】2024-04-30
(54)【発明の名称】骨格モデルの姿勢決定方法及びプログラム
(51)【国際特許分類】
G06T 13/40 20110101AFI20240422BHJP
【FI】
G06T13/40
(21)【出願番号】P 2023204925
(22)【出願日】2023-12-04
【審査請求日】2023-12-04
【早期審査対象出願】
(73)【特許権者】
【識別番号】512162524
【氏名又は名称】株式会社セルシス
(74)【代理人】
【識別番号】100159547
【氏名又は名称】鶴谷 裕二
(74)【代理人】
【識別番号】100223365
【氏名又は名称】大町 真義
(72)【発明者】
【氏名】葛見 聡
【審査官】佐藤 直樹
(56)【参考文献】
【文献】国際公開第2012/111622(WO,A1)
【文献】特開2009-070340(JP,A)
【文献】特開2010-170279(JP,A)
【文献】特開2012-164162(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 13/40
(57)【特許請求の範囲】
【請求項1】
親骨と子骨とが関節によって連結された骨格モデルにおいて、前記親骨に対する前記子骨の
回転を
定義する複数のパラメータによって前記子骨の姿勢を決定する姿勢決定方法であって、
前記複数のパラメータのうちの少なくとも一つのパラメータについて判定を行うことと、
前記判定に基づいて前記複数のパラメータを修正することと、
修正された前記複数のパラメータを用いて、前記子骨の姿勢を決定することと、
を有し、
前記判定を行うことは、前記複数のパラメータのうちのいずれかが、第1の制限を超えるか否かの判定を行うことであって、前記第1の制限は、少なくとも一つのパラメータが他の二つ以上のパラメータに係る制限に影響を与える制限で表される、第1の判定を行うこと、を含み
前記複数のパラメータを修正することは、前記第1の判定が、前記第1の制限を超えるとの判定である場合、前記複数のパラメータが前記第1の制限の範囲内となるように、前記第1の制限を用いて前記複数のパラメータを修正すること、を含む、
姿勢決定方法。
【請求項2】
前記第1の制限は、少なくとも一つのパラメータの増加又は減少に対して、他の二つ以上のパラメータの範囲がいずれも単調減少する制限を含む制限である、
請求項1に記載の姿勢決定方法。
【請求項3】
前記複数のパラメータは、三つのパラメータであり、
前記三つのパラメータの各パラメータを互いに直交する座標軸とする三次元空間で、前記第1の制限は、一つの方向に沿って、断面積が単調減少する立体形状を含む形状による制限である、
請求項1に記載の姿勢決定方法。
【請求項4】
前記立体形状は錐体である、
請求項3に記載の姿勢決定方法。
【請求項5】
前記立体形状は錐体の一部である、
請求項3に記載の姿勢決定方法。
【請求項6】
前記立体形状は、底面の形状が面積を持ち、前記底面から前記一つの方向に所定の距離だけ離れた位置に存在する線分又は曲線を上端の形状とする立体形状である、
請求項3に記載の姿勢決定方法。
【請求項7】
前記立体形状は、底面の形状が面積を持ち、前記底面から前記一つの方向に所定の距離だけ離れた位置に存在する線分又は曲線を上端の形状とする立体形状の一部である、
請求項3に記載の姿勢決定方法。
【請求項8】
前記一つの方向にパラメータが変化することによる前記骨格モデルのポーズの変化は、予め設定された前記骨格モデルの初期ポーズから離れる方向のポーズの変化である、
請求項3に記載の姿勢決定方法。
【請求項9】
前記第1の制限は、前記断面積が単調減少する立体形状を組み合わせた形状を含む、
請求項3に記載の姿勢決定方法。
【請求項10】
前記骨格モデルの変形に、インバースキネマティクスが適用されているか否かの検知を実行すること、を前記判定を行うことの前にさらに有し、
前記判定を行うことは、前記検知が、インバースキネマティクスが適用されていないことを示す場合に、前記複数のパラメータのうちのいずれかが、第2の制限を超えるか否かの判定を行うことであって、前記第2の制限は前記第1の制限の範囲を包含する、第2の判定を行うこと、をさらに含み、
前記複数のパラメータを修正することは、前記検知が、インバースキネマティクスが適用されていないことを示す場合に、前記第2の判定が、前記第2の制限を超えるとの判定である場合、前記複数のパラメータが前記第2の制限の範囲内となるように、前記第2の制限を用いて前記複数のパラメータを修正すること、をさらに含む、
請求項1に記載の姿勢決定方法。
【請求項11】
請求項1ないし10のうち、いずれか1項に記載の姿勢決定方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の技術は、骨格モデルの姿勢決定方法及びプログラムに関する。
【背景技術】
【0002】
コンピュータの画面などにおいて、仮想空間上のキャラクタのポーズやアニメーションを作る技術が存在する。この際に、複数の骨を関節で繋いだ骨格モデル(スケルトンモデル)が使われる場合がある。このような骨格モデルは、仮想空間ばかりでなく、ロボット制御等の実空間における対象物を制御する場合にも用いられ得る。
【0003】
例えば、親骨と子骨とが関節によって連結された骨格モデルの姿勢を制御するように、関節を中心点とする球面上の所与の点を焦点とし、該中心点と該焦点とを結ぶ軸に直交する平面を射影面とし、関節の可動範囲を、射影面上において設定する技術が存在する(例えば、特許文献1参照)。
【0004】
また、親骨に対する子骨の関節における角度範囲を制限することによって子骨の動作を制御するように、関節を中心とする球の球面上に、子骨の角度範囲の境界を定義する角度範囲境界円を設定する。そして、角度範囲境界円は、関節を中心とする球面と親骨または親骨の延長線との交点1を通るものであり、関節を原点とし、交点1から原点に向かう方向をx軸の正方向とする、三次元直交座標系(x、y、z)から、μ=2tan-1(-z/(x+1))、ν=2tan-1(y/(x+1))の関係を有する、モノポーラ球面座標系(μ、ν)を用いる技術が存在する(例えば、特許文献2参照)。
しかしながら、従来の技術では、例えば人間などのキャラクタを含め、多くの種類のキャラクタの骨の曲げ又は捻りの姿勢を決定することは容易ではなかった。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2009-70340号公報
【文献】特開2012-164162号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
開示の技術は、仮想空間において人間などを仮想的に表現するキャラクタ、又は実空間に実在するロボットなどが持つ骨の姿勢を、より容易にかつ的確に決定できる技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
開示の技術は、親骨と子骨とが関節によって連結された骨格モデルにおいて、前記親骨に対する前記子骨の姿勢を表現する複数のパラメータによって前記子骨の姿勢を決定する姿勢決定方法であって、
前記複数のパラメータのうちの少なくとも一つのパラメータについて判定を行うことと、
前記判定に基づいて前記複数のパラメータを修正することと、
修正された前記複数のパラメータを用いて、前記子骨の姿勢を決定することと、
を有し、
【0008】
前記判定を行うことは、前記複数のパラメータのうちのいずれかが、第1の制限を超えるか否かの判定を行うことであって、前記第1の制限は、少なくとも一つのパラメータが他の二つ以上のパラメータに係る制限に影響を与える制限で表される、第1の判定を行うこと、を含み
【0009】
前記複数のパラメータを修正することは、前記第1の判定が、前記第1の制限を超えるとの判定である場合、前記複数のパラメータが前記第1の制限の範囲内となるように、前記第1の制限を用いて前記複数のパラメータを修正すること、を含む、
姿勢決定方法を提供することができる。
【0010】
また、前記第1の制限は、少なくとも一つのパラメータの増加又は減少に対して、他の二つ以上のパラメータの範囲がいずれも単調減少する制限を含む制限であってもよい。
また、前記複数のパラメータは、三つのパラメータであり、
【0011】
前記三つのパラメータの各パラメータを互いに直交する座標軸とする三次元空間で、前記第1の制限は、一つの方向に沿って、断面積が単調減少する立体形状を含む形状による制限であってもよい。
また、前記立体形状は錐体であってもよい。
また、前記立体形状は錐体の一部であってもよい。
【0012】
また、前記立体形状は、底面の形状が面積を持ち、前記底面から前記一つの方向に所定の距離だけ離れた位置に存在する線分又は曲線を上端の形状とする立体形状であってもよい。
【0013】
また、前記立体形状は、底面の形状が面積を持ち、前記底面から前記一つの方向に所定の距離だけ離れた位置に存在する線分又は曲線を上端の形状とする立体形状の一部であってもよい。
【0014】
また、前記一つの方向にパラメータが変化することによる前記骨格モデルのポーズの変化は、予め設定された前記骨格モデルの初期ポーズから離れる方向のポーズの変化であってもよい。
また、前記第1の制限は、前記断面積が単調減少する立体形状を組み合わせた形状を含んでもよい。
また、前記骨格モデルの変形に、インバースキネマティクスが適用されているか否かの検知を実行すること、を前記判定を行うことの前にさらに有し、
【0015】
前記判定を行うことは、前記検知が、インバースキネマティクスが適用されていないことを示す場合に、前記複数のパラメータのうちのいずれかが、第2の制限を超えるか否かの判定を行うことであって、前記第2の制限は前記第1の制限の範囲を包含する、第2の判定を行うこと、をさらに含み、
【0016】
前記複数のパラメータを修正することは、前記検知が、インバースキネマティクスが適用されていないことを示す場合に、前記第2の判定が、前記第2の制限を超えるとの判定である場合、前記複数のパラメータが前記第2の制限の範囲内となるように、前記第2の制限を用いて前記複数のパラメータを修正すること、をさらに含んでもよい。
また、上記姿勢決定方法をコンピュータに実行させるプログラムであってもよい。或いは、このプログラムは、非一時的な記憶媒体に格納されてもよい。
【発明の効果】
【0017】
開示の技術によれば、仮想空間において人間などを仮想的に表現するキャラクタ、又は実空間に実在するロボットなどが持つ骨の姿勢を、より容易にかつ的確に決定できる技術を提供することができる。
【図面の簡単な説明】
【0018】
【
図1】
図1A及び
図1Bは、キャラクタ、骨格モデル,親骨,子骨,及び座標系を示す図である。
【
図3】
図3Aないし
図3Cは、平面群と単位球面の交線が縦グリッドとなることを示す図である。
【
図4】
図4Aないし
図4Cは、平面群と単位球面の交線が横グリッドとなることを示す図である。
【
図6】
図6Aは、xz平面上の点Pのφ,μを示す図である。
図6Bは、xy平面上の点Pのθ,νを示す図である。
【
図7】
図7は、μ、νの値に上限、下限を設定することによる可動領域を示す図である。
【
図8】
図8Aないし
図8Dは、キャラクタ102の上腕(上腕800aないし上腕800d)を含む腕全体の姿勢が変化した図である。
【
図9】
図9は、上腕124及び鎖骨122の座標軸の例を示す図である。
【
図10】
図10Aないし
図10Cは、座標軸X0、Y0、Z0、座標軸X1、Y1、Z1、上腕の捻りλ890dを示した図である。
【
図11】
図11A及び
図11Bは、本発明の手法を用いて、パラメータs,t,uを互いに直交する座標軸とする三次元空間で、パラメータの範囲を制限する例を示す図である。
【
図12】
図12Aは、点1202は、インバースキネマティクスの計算途中や、オペレータによる関節操作などにおいて、パラメータが制限範囲外の値になった状態を示す図である。
図12Bは、修正なしのパラメータが点1251から点1255へと遷移する場合に、本発明の修正によって、パラメータの遷移がどのように変化するかの例を、模式的に示す図である。
【
図13】
図13A及び
図13Bは、パラメータs,t,uを互いに直交する座標軸とする三次元空間において、パラメータの範囲を制限する可動領域立体の、変形例を示す図である。
【
図18】
図18は、実施形態の方法を示すフローチャートである。
【
図19】
図19は、インバースキネマティクスが適用された場合と、インバースキネマティクスが適用されない場合の、姿勢の制御の方法を示すフローチャートである。
【発明を実施するための形態】
【0019】
開示の技術の実施形態を詳細に説明する前に、骨と関節が組み合わされた骨格モデルの姿勢を決定する本開示の技術において利用され得るモノポーラ座標系について説明する。このモノポーラ座標系を用いた場合に、姿勢の決定がどのように行えるかの例を示す。なお、モノポーラ座標系は一例であって、本開示の技術は、モノポーラ座標系以外の座標系を用いることを妨げるものではない。
【0020】
[1.モノポーラ球面座標]
例示として、
図1Aの骨格モデルを用いた場合を想定する。この骨格モデルは、人間の骨格をモデル化したものである。キャラクタ102には、鎖骨122、肩関節123、上腕骨124を含む骨格モデルが存在する。そして、例えば、肩関節の腕の可動範囲には、一定の制限がある。この制限を超えた角度(曲げ、捻り)に腕を曲げるポーズを取らせることは、現実の人間に対するモデルからかけ離れたものになる。人間として自然なポーズを取る骨格モデルを形成するためには、たとえば肩関節の骨の可動範囲に対して、一定の制限を課すことが必要となる。
上述のように、骨格モデル(
図1A)の骨の向きを表すために、各骨に対して
図1Bのように座標系を定める。
【0021】
関節を中心とする単位球面(半径1の球面)を作り、子骨のx軸(x>0の部分)と球面との交点をPとすると、関節の曲げ状態は、球面上の点Pの位置で表すことができる。関節の回転(曲げ、捻り)を表現する方法の一つに、3軸の回転角(オイラー角)を使う方法がある。例として、親骨の座標系を基準にx軸回転、y軸回転、z軸回転の順に回転を掛けた場合、各軸の回転角と点Pの位置との関係に注目すると、z軸回転角が経度に、y軸回転角が緯度に相当する。そこで、y軸回転角、z軸回転角を等間隔にとって球面上にグリッドを作ると、地球儀の経線・緯線と同様の形状になる。北極と南極に相当する2点が角度表現上の特異点となり、扱いにくいため、特異点の数は少ない方が望ましい。
【0022】
これに対して、特異点を1個に減らす手法として、特許文献2に示す方法が知られている。この手法の特性を球面上のグリッドで表すと
図2A及び
図2Bのようになる。このグリッドは、球面上に作られた座標系と捉えることができる。極(特異点)が1個であることから、本願明細書では、この座標系を「モノポーラ球面座標」と呼ぶことにする。
【0023】
以下、このモノポーラ球面座標に関して、次の項目について述べる。
・モノポーラ球面座標を使って関節の角度制限を行なう手法
【0024】
[2.モノポーラ球面座標系の構成]
一般に2次元の座標系に目盛りをつけるとグリッド(格子)となる。以下の説明では、便宜上「グリッド」という用語を用いる場合があるが、その表すものは、単なる格子ではなく座標系の意味を含むものとする。
【0025】
図3Aないし
図3Cは、単位球面上のグリッドの縦線を説明する図である。
【0026】
座標(-1、0、0)の点をP*とし、「極」と呼ぶことにする。極P*を通りy軸に平行な直線をlyとし、
図3Aのように、lyを含む等角度間隔の平面群を用意する。
図3Bのように、この平面群と単位球面とを重ね合わせる。
図3Cに示すように、この平面群と単位球面との交線を、単位球面上のグリッドの縦線とする。
【0027】
図4Aないし
図4Cは、単位球面上のグリッドの横線を説明する図である。
図4Aのように、同様に、極P*を通りz軸に平行な直線をlzとし、lzを含む等角度間隔の平面群を用意する。
図4Bのように、この平面群と単位球面とを重ね合わせる。
図4Cに示すように、この平面群と単位球面との交線をグリッドの横線とする。
【0028】
図5A及び
図5Bのように、直線lyを含む平面の向きを角度φで表し、直線lzを含む平面の向きを角度θで表す。φ、θの符号は、
図5A及び
図5Bに示す方向を正とする。球面上の点Pの位置は、φによって決まる平面、θによって決まる平面、および単位球面の3つの面の交点として決まる。μ≡2φ、ν≡2θとし、μ、νを使って球面上の位置を表す。
【0029】
φ、θをそのまま使わずにμ、νを使うことにより、次のようなメリットがある。
図6Aのように、点Pがxz平面上にある(即ちν=0である)場合を考える。子骨の向きはOPである。座標(1、0、0)の点をQとする。
【0030】
∠OP*P=∠OPP*=φ
∠OP*P+∠OPP*=∠QOP
∴∠QOP=2φ=μ
したがって、ν=0の場合には、μは子骨のy軸回りの回転角となる。同様に、
図6Bのように、点Pがxy平面上にある(即ちμ=0である)場合には、νは子骨のz軸回りの回転角となる。
【0031】
このように、μ、νを使うと回転の状態(子骨の向き)を感覚的に把握しやすい。例えば
図2は、μ、νの値を10°間隔にとって作ったグリッドであるが、xy平面上およびxz平面上ではグリッドが円周上で10°ずつの等間隔になっていることが分かる。
【0032】
[3.モノポーラ球面座標と子骨の向き]
【0033】
子骨の向きを表す単位ベクトルをv≡(x、y、z)とし、これをモノポーラ球面座標で表したものを(μ、ν)とする。両者の関係は次式で表される(本明細書においてvはベクトルを表す)。
【0034】
【0035】
【0036】
以下、具体的な角度(曲げ、捻り)の制御について詳細に述べる。
【0037】
[4.可動領域の設定]
[矩形領域による角度制限]
μ、νの値に上限、下限を設定することで、
図7のように可動領域を設定できる。
【0038】
[実施形態]
上記の手法は、子骨の向きをモノポーラ座標系(μ、ν)で定義した。更に、子骨の捻り角、すなわち子骨の長手方向(x軸)周りの回転角をλとする。なお、関節の曲げと捻りとを総称して、関節の回転と呼ぶことにする。
【0039】
以下の説明では、左上腕、左手などを単に上腕、手などと称し、左・右の表記を省略して説明する。
【0040】
図8Aないし
図8Dは、キャラクタ102の上腕(上腕800aないし上腕800d)を含む腕全体の姿勢が変化した図である。キャラクタ102には、
図1Aに示すような骨格モデルが設定されている。
【0041】
鎖骨の位置及び姿勢を固定して、肩関節より先を動かすことを想定する。また、手首の捻り(前腕に対する手の捻り)は変化しないものとする。
図8Aで、キャラクタ102の上腕800aよりも先にある手首が、オペレータの操作するマウスなどのポインタにより摘ままれて、矢印890aの方向に振り上げられようとしている。
【0042】
図8Bで、上腕800bを含む腕全体は、インバースキネマティクスなどの手法を用いて、略水平に伸びた状態になる。なお、インバースキネマティクスは、骨格モデルの各骨の姿勢を決定する周知の技術であるので、その動作手法についての説明は省略する。更に、上腕800bよりも先にある手首は、オペレータの操作するマウスなどのポインタにより摘ままれた状態を継続し、矢印890bの方向に振り上げられようとしている。
【0043】
図8Cで、オペレータの操作するマウスなどのポインタにより手首が継続的に矢印890c方向に摘ままれて移動した結果、上腕800cを含む腕全体はインバースキネマティクスなどの手法により、略上に伸びた状態になる。
【0044】
図8Aから
図8Cに至るまで、上腕800aないし上腕800cにおける上腕の長手方向軸の周りの捻り(以下、単に捻りという)がほとんど発生しないため、
図8Cの手のひらは、体の外側を向いている。
図8Dは、肩関節につながる上腕800dを矢印890dの方向に、オペレータの指示により、捻りが加えられた状態を示している。
【0045】
図8Cの上腕800cの姿勢と、
図8Dの上腕800dの姿勢とを比較した場合、人間が自然な状態で手全体を上に振り挙げたときの姿勢には、
図8Cの上腕800cの姿勢よりも、
図8Dの上腕800dの姿勢が、より適している。
【0046】
したがって、
図8Aのキャラクタ102の状態から、手首が摘ままれて、インバースキネマティクスなどの手法により、腕全体が、上方に振り上げられた際の状態は、
図8Cのキャラクタ102の状態よりも、
図8Dのキャラクタ102の状態になるのが好ましい。
しかし、
図8Cの姿勢は人間が取り得る姿勢なので、単に関節角度を制限するだけでは、
図8Cの姿勢になることを避けるのは難しい。そこで本発明では、例えば上腕を振り上げる(すなわち上下方向の回転角度が変化する)のに連動して、上腕の捻りの回転と前後方向の回転の可動範囲を敢えて狭くすることによって、
図8Cの姿勢ではなく
図8Dの姿勢になるように、姿勢を変化させる。
【0047】
図9は、上腕124及び鎖骨122の座標軸の例を示す図である。親骨である鎖骨122と、その子骨である上腕124とは、肩関節123で接続されている。鎖骨の座標軸X0、Y0、Z0は鎖骨の根元が原点である。上腕の座標軸X1、Y1、Z1は肩関節123が原点である。上腕の原点は、鎖骨の座標軸X0の上に存在する。上腕座標軸X1は、肩から肘に向かう方向である。回転の説明を分かり易くするために、鎖骨の座標軸を肩関節123の上に重ねて表示する。上腕124の鎖骨に対する曲げは、上述のモノポーラ座標系(μ,ν)で表される。上腕124の鎖骨に対する捻りは、軸X1の周りの回転角度λで表される。
したがって、上腕124の姿勢は、3つのパラメータ(λ,μ,ν)で定義することができる。
【0048】
上記の上腕124の姿勢は、三次元空間において、モノポーラ座標系を用いた場合の定義であるが、骨の姿勢を定義できる他のパラメータ(オイラー角、クォータニオン)を用いることができる、一般的には、三次元空間の骨の姿勢は、3つのパラメータによって定義できる。
【0049】
以下の説明では、この3つのパラメータを(s,t,u)を用いて説明する。例えば、上記のモノポーラ座標系であれば、パラメータ(s,t,u)は、以下のように対応付けられる。
s=λ
t=μ
u=ν
【0050】
図10Aないし
図10Cは、座標系XYZ、軸X1、上腕の捻りλ890dを示した図である。
【0051】
以下に示す実施形態では、
図10Aのキャラクタの姿勢から、オペレータなどの指示により、手首が持ち上げられて、
図10Cのキャラクタの姿勢に至る手法を説明する。
図11A及び
図11Bは、本発明の手法を用いて、パラメータs,t,uを互いに直交する座標軸とする三次元空間で、パラメータの範囲を制限する例を示す図である。
可動領域立体(solid of motion range)1102は、パラメータの可動範囲(許容される範囲)を示す立体であり、可動領域立体1102の表面および内部の領域が可動範囲である。
【0052】
可動領域立体1102は、底面1102cと上端1102aを持ち、底面1102cから上端1102aに向かって、可動領域立体1102の底面に平行な断面1102bの面積が、小さくなるように設定されている例を示している。この場合、パラメータuが大きいほど、他の2つのパラメータs及びtが制限を満たす範囲は狭くなることを示している。
【0053】
例えば、uがパラメータν(すなわちZ0軸周りの上腕124の曲げを示すパラメータ)であるとすると、
図8A、
図8B、
図8Dの順に、手を上に挙げるのに応じて、パラメータuが大きくなるとすると、この動作に応じて、パラメータtの値に対応するパラメータμ(すなわちY0軸周りの上腕124の回転)の範囲が所定の範囲に制限され、かつ、パラメータsの値に対応するパラメータλ(すなわちX1軸周りの上腕124の捻り)の範囲が所定の範囲に制限されるようになる。
【0054】
このように、腕を振り上げた状態において、掌が正面を向くように、上腕124の捻りのパラメータsの値が制限されるように、可動領域立体1102の形状を設定しておくことで、腕を振り上げた状態が、より自然な状態になるようにすることができる。
【0055】
図11Aにおいて、断面1102bの内側は、上腕124を振り上げる途中の状態におけるパラメータの制限範囲を示している。この場合、パラメータuの値は、u1である。そのときのパラメータsの取り得る制限内の範囲は、s1aからs1bの間である。加えて、そのときのパラメータtの取り得る制限内の範囲は、t1aからt1bの間である。
【0056】
上端1102aは、上腕124を振り上げ切った状態におけるパラメータの制限範囲を示している。この場合、パラメータuの値は、u2である。そのときのパラメータsの取り得る値は、s2である。加えて、そのときのパラメータtの取り得る値は、t2である。この場合、s2は、手を振り上げた状態において、掌が正面を向く上腕の捻りの値となっている。
なお、
図8Aの腕を下げた姿勢を初期ポーズとすると、パラメータuが大きくなる方向は、腕を上に挙げるというポーズの変化であり、初期ポーズから離れる方向のポーズの変化と言える。
図12A及び
図12Bは、パラメータが、制限範囲外である場合におけるパラメータの修正の例を示す図である。
【0057】
図12Aで、点1202は、インバースキネマティクスの計算途中や、オペレータによる関節操作などにおいて、パラメータが制限範囲外の値になった状態を示している。この場合、パラメータが可動領域立体1104の表面又は内部になるように、矢印1212又は矢印1214の方向に点1202を移動させて修正すればよい。
【0058】
矢印1214による移動は、可動領域立体1104の表面上の点であって、かつ点1202に最も近い点、への移動である。矢印1212による移動は、点1202を含み底面1220に平行な平面と可動領域立体1104との交わりとして得られる輪郭線上の点であって、かつ点1202に最も近い点、への移動である。この修正方法の詳細については後述する。
【0059】
図12Bは、修正なしのパラメータが点1251から点1255へと遷移する場合に、本発明の修正によって、パラメータの遷移がどのように変化するかの例を、模式的に示す図である。
点1251から点1255へ至る遷移曲線は、点1253で可動領域立体1104の表面と交差している。点1251から点1253までの遷移を表す曲線1252は、可動領域立体1104の内部に位置する。点1253から点1255までの遷移を表す曲線1254は、可動領域立体1104の外部に位置する。
【0060】
曲線1252は、可動領域立体1104の内部に位置するため制限範囲内であり、修正を受けない。パラメータuはu1からu2まで遷移し、パラメータsはs1に留まり、パラメータtはt1からt2まで遷移する。この場合、sはs1の値に留まっているため、上腕の捻りは変化しない。
【0061】
曲線1254は、可動領域立体1104の外部に位置するため制限範囲外であり、修正を受ける。修正によって、曲線1254は、可動領域立体1104の表面上の曲線1264になる。
修正の前後のいずれにおいても、パラメータuはu2からu3まで遷移する。修正前の遷移(曲線1254)では、パラメータsはs1に留まり、パラメータtはt2からt3aまで遷移する。修正後の遷移(曲線1264)では、パラメータsはs1からs2まで遷移し、パラメータtはt2からt3bまで遷移する。このように、修正によって、パラメータsとtの遷移が変化する。パラメータsが、s1からs2まで遷移するため、上腕124に捻りが発生し、掌が正面を向くこととなる。
このようにして、本発明の手法を用いて、骨格モデルの姿勢を変化させる場合に、骨格モデルがより自然な姿勢に変化することとなる。
【0062】
図14Aないし
図14Hは、可動領域立体の形状の例である。可動領域立体の底面に垂直な方向を高さ方向として、等高線を使って可動領域立体の形状を示す。
図14Aに示す可動領域立体は円錐である。可動領域立体の上端は点で、底面は円である。等高線は全て円である。
【0063】
図14Bに示す可動領域立体は、上端が線分で、底面が円である。上端と底面以外の等高線は、小判型(oval)である。この例のように、可動領域立体の形状は錐体以外の形状であってもよい。
図14Cに示す可動領域立体は、上端が点で、底面が小判型である。上端以外の等高線は、小判型である。
図14Dに示す可動領域立体は、上端が線分で、底面が小判型である。上端以外の等高線は、小判型である。
【0064】
図14Eに示す可動領域立体は、上端が線分で、底面が小判型である。上端以外の等高線は、小判型である。この例のように、上端と底面とは、位置がずれていてもよい。言い換えれば、上端形状を底面に垂直投影した形状は、底面の中央に位置しなくてもよい。
図14Fに示す可動領域立体は、上端が線分で、底面が円である。上端と底面以外の等高線は、楕円(ellipse)である。
図14Gに示す可動領域立体は、上端が点で、底面が楕円である。上端以外の等高線は、楕円である。
図14Hに示す可動領域立体は、上端が線分で、底面が楕円である。上端以外の等高線は、楕円である。
【0065】
また、上端の形状は、曲線(curve segment)であってもよい。
また、例えば
図14A~14Hに示すような形状の、ある高さより上の部分を取り除いた形状を、可動領域立体の形状としてもよい。例えば
図14Aに示す形状から、ある高さより上の部分を取り除いた形状は、円錐台となる。円錐台を可動領域立体の形状としてもよい。
【0066】
[修正方法]
図15Aないし
図15Cは、stu空間内の可動領域立体を底面に平行な方向から見た図である。
図15Bに示すように、可動領域立体の外側の空間を、領域A,B,Cの3つの領域に分ける。領域Aと領域Cとの境界は、底面を含む平面である。領域Aと領域Bとの境界は、上端を含み底面に平行な平面である。関節角度を表すパラメータ(s,t,u)は、stu空間内の点の座標に相当する。関節角度に相当する点の位置が、可動領域立体の外側であれば、その点の位置を
【0067】
可動領域立体の表面に移動させることで、関節角度を修正する。修正前の点の位置が、領域A,B,Cのいずれに位置するかによって、
図15Cに示すように、修正の方法は異なる。
【0068】
修正前の点が、点P1aのように領域Aに位置する場合は、点P1aを含み底面に平行な平面の上で点を移動させ、可動領域立体の表面の最近点P1bまで移動させる。点P1bを修正後の位置とする。平面上での点の移動の詳細については後述する。
【0069】
修正前の点が領域Bに位置する場合は、まず領域AとBとの境界面(即ち、可動領域立体の上端を含み底面に平行な平面)に、点を垂直投影する。投影された点の位置が可動領域立体の表面であれば、その位置を修正後の位置とする(例えば点P2aを点P2bに移動させる)。投影された点の位置が可動領域立体の外側であれば、投影された平面の上で点を移動させ、可動領域立体の表面の最近点まで移動させて、修正後の位置とする(例えば点P3aを点P3cに移動させる)。
【0070】
修正前の点が領域Cに位置する場合は、まず可動領域立体の底面を含む平面に、点を垂直投影する。投影された点の位置が可動領域立体の表面であれば、その位置を修正後の位置とする(例えば点P4aを点P4bに移動させる)。投影された点の位置が可動領域立体の外側であれば、投影された平面の上で点を移動させ、可動領域立体の表面の最近点まで移動させて、修正後の位置とする(例えば点P5aを点P5cに移動させる)。
【0071】
底面に平行な平面(あるいは底面を含む平面)の上での点の移動は、以下の方法で行う。例として、当該平面による可動領域立体の断面の輪郭形状が、小判型及び楕円の場合について述べる。なお、この輪郭形状は、可動領域立体の等高線の一つと同じものである。
【0072】
[断面の輪郭形状が小判型の場合]
図16A及び
図16Bは、に小判型の断面輪郭形状を示す図である。輪郭の外側の領域を、領域D乃至Gの4つの領域に分ける。領域の境界は、小判型の直線部分の端点から立てた垂線である。小判型の外側に位置する点を、輪郭上の最近点に移動させる例を、
図16Bに示す。
【0073】
修正前の点が、点Q1aのように領域Dに位置する場合は、輪郭上の最近点Q1bは輪郭の円弧部分の上にある。円弧の中心をO1とすると、点Q1bは、直線Q1aO1と円弧との交点である。点Q1bを修正後の位置とする。
【0074】
修正前の点が、点Q2aのように領域Eに位置する場合は、輪郭上の最近点Q2bは輪郭の直線部分の上にある。点Q2bは、点Q2aから直線に下した垂線の足である。点Q2bを修正後の位置とする。
修正前の点が、点Q3aのように領域Fに位置する場合は、領域Dに位置する場合の手法と同様の手法を用いて、点Q3bを修正後の位置とする。
修正前の点が、点Q4aのように領域Gに位置する場合は、領域Eに位置する場合の手法と同様の手法を用いて、点Q4bを修正後の位置とする。
[断面の輪郭形状が楕円の場合]
【0075】
図17に楕円の断面輪郭形状を示す。修正前の点をQ5aとする。郭上の最近点Q5bを修正後の位置とする。輪郭形状が小判型の場合と比較すると、場合分けが不要という長所がある。なお、最近点Q5bは、4次方程式(quartic equation)の解によって、求めることができる。
【0076】
上記の説明では、分かりやすくかつ単純化するために、上腕の捻りだけに注目して説明を行った。しかしながら、一般には、例えば手首を摘まんでインバースキネマティクスを用いて骨格モデルの姿勢を変化させる場合、上腕以外の骨についても、各骨の曲げに応じて、骨の捻りに適切な制限が加えられることで、キャラクタ102は、より自然な姿勢に変化するようになる。
また、本発明の手法は、上腕以外の他の骨の曲げ及び捻りにも適用できることは言うまでもない。
また、上記の関節角度制限方法の適用を、インバースキネマティクスを使用する場合に限定してもよい。インバースキネマティクスを使用しない場合、すなわち関節の回転角度をマニピュレータで操作するなどの場合、には、上記の関節角度制限方法とは異なる角度制限を適用してもよい。
また、上記の関節角度制限方法による制限を第1の制限とし、第1の制限を包含するような第2の制限をあらかじめ用意しておき、インバースキネマティクスを使用する場合には第1の制限を適用し、インバースキネマティクスを使用しない場合には第2の制限を適用するようにしてもよい。
【0077】
図11Bは、パラメータs,t,uを互いに直交する座標軸とする三次元空間において、可動領域立体1104が斜めを向いており、この可動領域立体によって制限範囲が定義されている例を示した図である。底面1104cは座標軸に平行ではなく、高さの方向(底面に垂直な方向)も座標軸に平行ではない。
【0078】
このように、斜めを向いた可動領域立体を用いてパラメータの範囲を制限することも可能である。この場合、例えば、
図12Aの1212による修正は,底面1104cに平行な断面1104bの平面内で行われる。例えば、鎖骨の座標軸が斜めに設定されており、腕を上に挙げる回転がパラメータtとuの両方を変化させる場合には、このような斜めを向いた可動領域立体を用いるとよい。
図13A及び
図13Bは、パラメータs,t,uを互いに直交する座標軸とする三次元空間において、パラメータの範囲を制限する可動領域立体の、変形例を示す図である。
【0079】
図13Aは、錐体1302と錐体1304とが、共通の底面を持ち合体した可動領域立体1300を示す図である。このように、可動領域立体は、錐体に限定されるものではない。例えば、脚を前後に振り上げる動作に対する、ももの骨の回転には、このような図形の制限1300が適用し得る。
【0080】
図13Bは、インバースキネマティクスを使用する場合の可動領域立体である錐体1312と、インバースキネマティクスを使用ない場合の可動領域立体である直方体1314との関係を示す図である。一般的に、人体の骨の曲げ及び捻りは、複数の関節を同時に動かす場合と、特定の1つの関節だけを動かす場合とでは、前者の方が、制限が狭くなる傾向がある。インバースキネマティクスが適用される場合は、前者の場合に対応する場合が多い。このため、インバースキネマティクスを使用する場合に適用する第1の制限よりも、インバースキネマティクスを使用しない場合に適用する第2の制限は、広くなるのが自然である。すなわち、第2の制限は、第1の制限を包含する制限となるのが自然である。
図13Bは、この関係を示した図である。
例えばロボットのキャラクタのように、複数のオブジェクトを関節で繋いだ構造のキャラクタの場合は、オブジェクト自体が本発明の骨であるとして、本発明の手法を適用してもよい。
関節の回転を表現するパラメータとして,四元数(クォータニオン)を用いてもよい。四元数の実数部をqrとし,虚数部をqx,qy,qzとする。回転を表現する四元数は,次の性質を有する。
1) qr
2 + qx
2 + qy
2 + qz
2 = 1
2) (qr,qx,qy,qz)と(-qr,-qx,-qy,-qz)とは,同じ姿勢を表す。
上記2)の2つの表現のうち,実数部が非負となる表現を常に使うようにすれば,
qr=(qx
2+qy
2+qz
2)
1/2
の計算でqx,qy,qzからqrを求めることができる。そのためqx,qy,qzの3つのパラメータで回転を表現できる。回転を表現するパラメータとしてqx,qy,qzを用いて,本発明の手法を適用してもよい。
【0081】
図18は、実施形態の方法を示すフローチャートである。
[S1802]複数のパラメータのうちのいずれかが、第1の制限(少なくとも一つのパラメータが他の二つ以上のパラメータに係る制限に影響を与える制限)を超えるかが検査される。検査が肯定的(Yes)である場合には、ステップS1804に進む。検査が否定的(No)である場合には、ステップS1806に進む。
【0082】
[S1804]複数のパラメータが第1の制限の範囲内となるように、第1の制限を用いて複数のパラメータを修正する。
[S1806]複数のパラメータを用いて、子骨の姿勢を決定する。
以上のようにすることによって、より自然な骨格モデルの姿勢が得られる。
図19は、インバースキネマティクスが適用された場合と、インバースキネマティクスが適用されない場合の、姿勢の制御の方法を示すフローチャートである。
【0083】
[S1902]インバースキネマティクスが適用されているかが検査される。検査が肯定的である場合(Yes)、処理は、S1908に進む。検査が否定的である場合(No)、処理は、S1904に進む。
【0084】
[S1904]複数のパラメータのうちのいずれかが、第2の制限(第1の制限の範囲を包含する制限)を超えるかが検査される。検査が肯定的である場合(Yes)、処理は、S1906に進む。検査が否定的である場合(No)、処理は、S1912に進む。
[S1906]複数のパラメータが第2の制限の範囲内となるように、第2の制限を用いて複数のパラメータを修正する。
【0085】
[S1908]複数のパラメータのうちのいずれかが、第1の制限(少なくとも一つのパラメータが他の二つ以上のパラメータに係る制限に影響を与える制限)を超えるかが検査される。検査が肯定的である場合(Yes)、処理は、S1910に進む。検査が否定的である場合(No)、処理は、S1912に進む。
[S1910]複数のパラメータが第1の制限の範囲内となるように、第1の制限を用いて複数のパラメータを修正する。
[S1912]複数のパラメータを用いて、子骨の姿勢を決定する。
【0086】
以上のようにして、インバースキネマティクスが適用された場合とインバースキネマティクスが適用されない場合とで、制限を異ならせて、骨格モデルの姿勢を適切に設定することができる。
【0087】
【0088】
実施形態のハードウエア構成は、CPU2001、本実施形態のプログラム及びデータが格納され得るROM2002、RAM2003、ネットワークインタフェース2005、入力インタフェース2006、表示インタフェース2007、外部メモリインタフェース2008を有する。これらのハードウエアは、バス2004によって相互に接続されている。
【0089】
ネットワークインタフェース2005は、ネットワーク2015に接続されている。ネットワーク2015には、有線LAN、無線LAN、インターネット、電話網などがある。入力インタフェース2006には、入力部2016が接続されている。表示インタフェース2007には、表示部2017が接続される。表示部2017は、複数の表示装置により実現されてもよい。外部メモリインタフェース2008には、記憶媒体2018が接続される。記憶媒体2018は、RAM、ROM、CD-ROM、DVD-ROM、ハードディスク、メモリーカード、USBメモリ等であってもよい。
【0090】
例示した実施形態の方法又はプログラムの手順は、矛盾のない限り順番を入れ替えることができる。また、矛盾のない限り、例示された1つの手順を、異なるタイミングで、複数回実行することができる。また、矛盾のない限り、複数の手順を同時に実行したりすることができる。また、全ての手順が必須のものではなく、矛盾の無い限り、一部の手順が存在しないか、実行されなくてもよい。
【0091】
上記の点は、請求項に規定された方法の構成要件についても同様に当てはまるものである。すなわち、矛盾のない限り構成要件の順番を入れ替えることができる。また、矛盾のない限り、複数の構成要件が同時に実施されることができる。そして、これらの構成要件の実施も、請求項に規定された技術的範囲に属する。
【0092】
また、各手順は、オペレーティングシステム又はハードウエアで実行されてもよい。また、プログラムは、非一時的な媒体に記憶された状態で配布することができる。
【0093】
上述の実施形態を実現するプログラム及び方法は、
図20に示されるハードウエア構成を備えるコンピュータにより実行され得る。すなわち、実施形態のプログラムは、コンピュータに実行させる方法として、インプリメントされてもよい。
プログラムは記憶媒体2018、ROM2002、又はRAM2003に記憶されてもよい。
各実施形態は、プログラムをインストールしたハードウエアの装置としてインプリメントされ得る。
【符号の説明】
【0094】
2001 CPU
2002 ROM
2003 RAM
2004 バス
2005 ネットワークインタフェース
2006 入力インタフェース
2007 表示インタフェース
2008 外部メモリインタフェース
2015 ネットワーク
2016 入力部
2017 表示部
2018 記憶媒体
【要約】 (修正有)
【課題】仮想空間のキャラクタ又は実空間のロボットなどが持つ骨の姿勢を、より容易にかつ的確に決定する骨格モデルの姿勢決定方法及びプログラムを提供する。
【解決手段】姿勢決定方法は、親骨と子骨とが関節によって連結された骨格モデルにおいて、親骨に対する子骨の姿勢を表現する複数のパラメータのうちの少なくとも一つのパラメータについて判定を行うことと、判定に基づいて複数のパラメータを修正することと、修正された複数のパラメータを用いて、子骨の姿勢を決定することと、を有する。判定を行うことは、複数のパラメータのうちのいずれかが、第1の制限を超えるか否かの判定を行う。第1の制限は、少なくとも一つのパラメータが他の二つ以上のパラメータに係る制限に影響を与える制限で表されること、を含み、第1の制限を超えるとの判定である場合、複数のパラメータが第1の制限の範囲内となるように、複数のパラメータを修正する。
【選択図】
図19