画像生成装置、画像生成方法、プログラム及び情報記憶媒体
【課題】ある要素に強い力や加速度などが加わっても、自然な画像を生成する技術を提供すること。
【解決手段】画像生成装置は、複数の要素が接続されてなる物体の画像の情報を生成する。画像生成装置は、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて前記各要素の動きを反復的に計算する計算手段、他の物体と所与の関係を有する要素を示す情報に基づいて前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、前記親子情報および前記各要素の動きに基づいて前記親要素に対する前記子要素の位置を補正する補正手段、および、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、を含む。
【解決手段】画像生成装置は、複数の要素が接続されてなる物体の画像の情報を生成する。画像生成装置は、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて前記各要素の動きを反復的に計算する計算手段、他の物体と所与の関係を有する要素を示す情報に基づいて前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、前記親子情報および前記各要素の動きに基づいて前記親要素に対する前記子要素の位置を補正する補正手段、および、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、を含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像生成装置、画像生成方法、プログラム及び情報記憶媒体に関する。
【背景技術】
【0002】
例えば鎖のように複数の要素が接続された多体の物体について、その動きをシミュレートし、その物体の画像を生成する技術がある。多体の物体に含まれる複数の要素間に生じる相互作用を考慮するために、ガウスザイデル法(Gauss-Seidel method)やインパルス法などの反復的な方法で動きが計算される。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Erin Catto, “Fast and Simple Physics usingSequential Impulses”, Game Developers Conference 2006
【発明の概要】
【発明が解決しようとする課題】
【0004】
複数の要素が接続されてなる多体の物体の動きを反復的な方法により計算する場合、例えばある要素に強い力や加速度が加わるなどの原因により、生成される画像が不自然となる場合があった。
【0005】
本発明は上記課題を鑑みてなされたものであって、その目的は、ある要素に強い力や加速度などが加わっても、自然な画像を生成することができる技術を提供することにある。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明にかかるプログラムは、複数の要素が接続されてなる物体の画像をコンピュータに生成させるプログラムであって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、としてコンピュータを機能させる。
【0007】
また、本発明にかかる画像生成装置は、複数の要素が接続されてなる物体の画像を生成する画像生成装置であって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段と、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段と、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段と、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段と、を含むことを特徴とする。
【0008】
また、本発明にかかる画像生成方法は、複数の要素が接続されてなる物体の画像を生成する画像生成方法であって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算ステップと、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得ステップと、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正ステップと、前記補正ステップにより補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成ステップと、を含むことを特徴とする。
【0009】
また、本発明にかかるコンピュータ読み取り可能な記憶媒体は、コンピュータに、複数の要素が接続されてなる物体の画像を生成させるプログラムであって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、としてコンピュータを機能させるプログラムを記憶する。
【0010】
本発明によれば、ある要素に強い力や加速度が加わるような場合でも、自然な画像を生成することができる。
【0011】
本発明の一態様では、前記補正手段は、前記親子情報および前記各要素の動きに基づいて、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置とが所定の条件を満たすように前記親要素に対する前記子要素の位置を補正してもよい。
【0012】
本発明の一態様では、前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記子要素の位置を補正してもよい。
【0013】
本発明の一態様では、前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記距離が前記所定の閾値になるように前記子要素の位置を補正してもよい。
【0014】
本発明の一態様では、本発明に係るプログラムは、計算時点における前記物体の動作の種類であって他の物体と前記所与の関係を有する要素を示す動作の種類を決定する動作種類決定手段、としてさらにコンピュータを機能させ、前記親子情報取得手段は、前記決定された動作の種類に基づいて前記親子情報を取得してもよい。
【0015】
本発明の一態様では、前記親子情報取得手段は、前記決定された動作の種類と、当該動作の種類が決定されている経過時間とに基づいて、前記親子情報を取得してもよい。
【図面の簡単な説明】
【0016】
【図1】本発明の実施形態に係る画像生成装置の構成を示す図である。
【図2】本発明の実施形態に係る画像生成装置の機能ブロックを示す図である。
【図3】あるフレームにおける物理シミュレーションの対象となる物体の一例を示す図である。
【図4】1つの要素の構成の一例を示す図である。
【図5】本発明の実施形態に係る画像生成装置の処理フローの一例を示す図である。
【図6】計算対象となるフレームの直前のフレームにおける物体の各要素の配置の一例を示す図である。
【図7】動き計算部が計算した物理量が示す物体の各要素の配置の一例を示す図である。
【図8】図3に示す物体における親子関係の一例を示す図である。
【図9】親子情報の一例を示す図である。
【図10】物体の補正された各要素の配置の一例を示す図である。
【図11】計算対象となる直前のフレームにおける物体の各要素の配置の他の一例を示す図である。
【発明を実施するための形態】
【0017】
以下では、本発明の実施形態について図面に基づいて説明する。図1は本発明の実施形態に係る画像生成装置1の構成を示す図である。画像生成装置1は、中央制御部11と、記憶部12と、演算部13と、入出力部14とを含んでいる。画像生成装置1は、例えばパーソナルコンピュータや家庭用ゲーム機のように3次元画像を生成する機能を有する機器である。
【0018】
中央制御部11は、記憶部12に格納されているプログラムに従って動作し、演算部13や入出力部14を制御する。なお、上記プログラムは、DVD−ROM等のコンピュータで読み取り可能な情報記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【0019】
記憶部12は、RAMやROM等のメモリ素子およびハードディスクドライブ等によって構成されている。記憶部12は、上記プログラムを格納する。また、記憶部12は、各部から入力される情報や演算結果を格納する。
【0020】
演算部13は、浮動小数点計算などの数値演算を高速に行う機能を有する。演算部13は、記憶部12に格納されるプログラムに従って動作し、その計算結果を記憶部12や入出力部14に出力する。
【0021】
入出力部14は、モニタ等の表示出力デバイスを制御する手段や、マウス等の入力デバイスを制御する手段などによって構成されている。入出力部14は、中央制御部11の制御に基づいて、画像データ等を表示出力デバイスに対して出力し、入力デバイスより操作者からの情報を取得する。
【0022】
図2は、本発明の実施形態に係る画像生成装置の機能ブロックを示す図である。画像生成装置1は機能的に、動作種類決定部21と、動作データ取得部22と、動作データ記憶部23と、動き計算部24と、位置補正部25と、画像生成部26と、親子情報取得部27と、を含む。これらの機能は、中央制御部11や演算部13が記憶部12に格納されたプログラムを実行し、入出力部14を制御することによって実現される。
【0023】
図3は、あるフレームにおける物理シミュレーションの対象となる物体の一例を示す図である。物体は、動きを計算する際には複数のラグドール(要素)30が接続されて構成される。本実施形態にかかる画像生成装置1は、あるフレームにおける物体の動き(より具体的には物体の各ラグドール30の速度、角速度、位置、角度など)を計算によりシミュレートし、その動きに基づいて物体の画像を生成する。なお、図3の例は人の身体を模した物体を示している。図3に示すラグドール30には処理の際に用いるr1〜r10のIDが付されている。
【0024】
図4は、1つのラグドール30の構成の一例を示す図である。各ラグドール30は、1つのラグドール本体31と、1または複数のジョイント(接続部)32とを含む。ラグドール本体31の形状は、直方体や円柱などである。ジョイント32は、他のラグドール30に含まれるジョイント32と接続する部分であり、本図の例では点で表される。あるラグドール30は、ジョイント32を介して他のラグドール30との間で力などの相互作用を及ぼしあっている。あるラグドール30においてラグドール本体31に対する各ジョイント32の位置は予め決まっており、その位置関係は図中ではジョイント32とラグドール本体31とを結ぶ線で表している。各ラグドール30は、物理計算を行うための物理量として、質量、慣性モーメント、速度、角速度、位置、角度といったパラメータを有する。画像生成装置1は計算された各ラグドール30の位置や角度の情報を用いて、物体の画像を生成する。
【0025】
以下では画像生成装置1の各機能の処理について処理の順序に従って説明する。図5は、本発明の実施形態に係る画像生成装置1の処理フローの一例を示す図である。
【0026】
動作種類決定部21は、中央制御部11、記憶部12、および入出力部14を中心として実現される。動作種類決定部21は、計算時点(計算対象となるフレーム)における動作の種類を取得する(ステップS111)。物体の動作は、「右手でぶらさがる」、「左手でぶらさがる」、「ジャンプする」、「背中の衝突により飛ばされる」といった動作の種類に予め分類されている。動作種類決定部21は、入力デバイスを操作するユーザから入出力部14を介して取得する情報や、直前のフレームにおける他の物体(例えば壁や天井など)との衝突判定や近接判定の結果などに基づいて、予め定められた複数の動作の種類のうちから1つの動作の種類を決定する。ここで、例えば、「右手でぶらさがる」の動作の種類では、右手が他の物体と接続し、「背中の衝突により飛ばされる」では背中が衝突していることを示している。動作の種類は、他の物体との関係を有するラグドール30、つまり、他の物体との接続するラグドール30がどれであるかや衝突するラグドール30がどれであるかといったことを示している。
【0027】
動作データ記憶部23は記憶部12を中心として実現される。動作データ記憶部23には、計算対象となる物体について複数の動作データ(モーションデータともいう)を記憶する。動作データは、決定された動作の種類とその動作の種類で動作を始めてからの経過時間とのそれぞれに関連づけられて記憶される。それぞれの動作データは、関連づけられた動作の種類のその経過時間における物体の各ラグドール30の配置を示す。動作データが示す各ラグドール30の配置は基準となる配置であり、各ラグドール30に対して物理法則を反映させつつ外力以外の動きを発生させるための情報である。動作データは、各ラグドール30の基準となる位置(基準位置)や角度(基準角度)の情報を含む。また、関連づけられた経過時間におけるラグドール30間の親子関係を示す情報も含む。基準となる位置により外力以外による動きを発生させる方法、親子関係、および補正の詳細については後述する。
【0028】
動作データ取得部22は、中央制御部11、記憶部12、および演算部13を中心として実現される。動作データ取得部22は、動作種類決定部21で決定された動作の種類と、動作種類決定部21で複数フレームの間ずっとこの動作の種類が決定されている場合の経過時間とに基づいて、動作データ記憶部23に記憶された複数の動作データのうちから1つの動作データを取得する(ステップS112)。
【0029】
動き計算部24は、中央制御部11、記憶部12、および演算部13を中心として実現される。動き計算部24は、各ラグドール30とそのラグドール30に接続される他のラグドール30との物理的な拘束条件に基づいて、そのラグドール30の動きを反復的に計算する。より具体的な処理について説明する。まず動き計算部24は、各ラグドール30の物理量を取得する(ステップS113)。ここで取得する物理量は、各ラグドール30の質量、慣性モーメント、計算対象のフレームの直前のフレームにおいて計算された各ラグドール30の位置、向き、速度、および角速度といったものである。次に、動き計算部24は、計算対象のフレームにおける物体の各ラグドール30の位置、角度、速度、角速度といった物理量(動き)を、ラグドール30間の物理的な拘束条件に基づいて計算する(ステップS114)。ここで、物理的拘束条件は、より具体的には互いに接続される2つのラグドール30の一方に含まれ他方と接続するジョイント32と、他方に含まれ一方に接続するジョイント32と、の距離や角度などの位置関係の条件である。具体例としては上述の2つのジョイント32の距離を0にし、ラグドール本体31からジョイント32へ伸びる線どうしの角度を一定の範囲内にするという条件がある。ジョイント32間の距離を固定する拘束条件の代わりに、上述の2つのジョイント32間で距離に応じてバネのように力がかかるといった拘束条件にしてもよい。
【0030】
動き計算部24は、それぞれラグドール30のいずれかに対応する複数の運動方程式であって、対応するラグドール30とそれに接続されるラグドール30との間の物理的な拘束条件が反映された運動方程式に基づいて各ラグドール30の物理量を計算している。ここで、各ラグドール30の運動方程式は、以下の式で表される。
【0031】
【数1】
ここで、Fk:力、τk:トルク、mk:質量、Ik:慣性モーメント、vk:速度ベクトル、ωk:角速度ベクトル
【0032】
なお、kは各ラグドール30のIDに対応する数である。各ラグドール30にかかる力Fは、重力f1、ジョイント32によって他のラグドール30からかかる力f2、動作データが示す位置や向きとの相違に応じてかかる力f3などの合力である。動き計算部24は上述の方程式に基づく時間積分の式を計算することにより直前のフレームの物理量から計算対象となるフレームの速度、角速度を取得し、さらに位置や角度などの物理量も取得する。時間積分の方法としては例えばオイラー法がある。
【0033】
他のラグドール30からかかる力f2は、自分のラグドール30から他のラグドール30に及ぼした力などによって生じる他のラグドール30の速度変化などにも依存するため、その力f2の厳密な強さを求めることは難しい。そのため、本実施形態ではインパルス法を用いて各ラグドール30の物理量を計算している。ここで、インパルス法では、ラグドール30間で及ぼし合う力をラグドール30間の微小な衝突の繰返しによって表現する。他のラグドール30からかかる力f2は、ジョイント32における衝突による速度変化に基づいて導かれる。なお、衝突による速度変化はジョイント32における反発計数を0とし、さらに運動量保存則を適用した計算式で求められる。衝突に関する反復計算は1フレームにつき複数回行う。この回数は計算資源を考慮して予め定められている。反復回数は有限であるため、反復回数を超える数のラグドール30を介して接続されるラグドール30どうしでは、相互作用を反映できない場合がある。
【0034】
動作データが示す位置や向きとの相違に応じてかかる力f3は、各ラグドール30のジョイント32の位置を、動作データが示すそのジョイント32の基準となる位置に近づかせる向きの力であり、その大きさはがジョイント32の位置と基準となる位置との距離が遠くなるほど大きくなる。動作データは、各ラグドール30の基準となる位置や角度の情報からなり、それらを用いてジョイント32の基準となる位置が求められる。これにより、予めポーズなどの動きのデータを生成しておけば、外力等による影響を折り込んだ物体の動作を表現することが可能である。
【0035】
なお、上述のインパルス法の他に、各ラグドール30の運動方程式に基づく時間積分の式を反復解法を用いて解く方法もある。反復解法として、例えば投影型ガウスザイデル法(Projected Gauss-Seidel Method)がある。なお、投影型ガウスザイデル法とインパルス法とでは実質的な計算内容は同じである。反復解法を用いても反復回数と計算結果との関係は変わらない。
【0036】
図6は、計算対象となるフレームの直前のフレームにおける物体の各ラグドール30の配置の一例を示す図である。この時点での動作の種類は「右手でぶら下がる」であり、右前腕に相当するラグドール30の手先側にジョイント32が設けられ、移動する壁の表面上のある位置に接続される。ここで、移動する壁は、右側に移動しており、その速度はこれまでのフレームにおける物体の移動速度より速いとする。
【0037】
図7は、動き計算部24が計算した物理量が示す物体の各ラグドール30の配置の一例を示す図である。本来の物理法則に従えば、あるラグドール30のジョイント32と他のラグドール30に含まれる接続先となるジョイント32とで位置が一致しなければならない。しかし反復計算の回数の制限により全てのラグドール30に壁からかかる力を反映しきれず、ジョイント32の位置がずれてしまう。
【0038】
親子情報取得部27は、中央制御部11、記憶部12、および演算部13を中心として実現される。親子情報取得部27は、計算時点において他の物体と衝突または接続するラグドール30に基づいて親子情報を取得する。親子情報は、各ラグドール30とそのラグドール30に接続する他のラグドール30との接続に対応しており、その接続のそれぞれを構成する2つのラグドール30のうち一方を親ラグドール(親要素)とし他方を子ラグドール(子要素)とする関係を示している。以下では親子情報の取得方法について説明する。後述の補正では、ある接続について親ラグドールと子ラグドールとの配置が予め定められた条件を満たすように、子ラグドールの位置を補正する。
【0039】
はじめに、親子情報取得部27は、動作種類決定部21で決定された動作の種類に応じて、計算時点において親ラグドールを有さず一番の親となるラグドール30(以下では起点ラグドールという)を示す情報を取得する(ステップS115)。後述の補正では子ラグドールの位置を補正するため、起点ラグドールの位置は補正されない。よって、他の物体と接続するなどの理由により補正すると最も不自然となるラグドール30を起点ラグドールにするとよい。起点ラグドールの情報は、予め動作の種類および経過時間に対応づけて記憶部12に格納されており、親子情報取得部27は、動作の種類および経過時間に関連づけられた起点ラグドールを記憶部12から取得する。例えば図6や図7の例では、起点ラグドールは右前腕に対応するラグドール30(ID:r6)となる。
【0040】
次に、親子情報取得部27はラグドール30間の接続ごとに、接続される2つのラグドール30のうち一方を親ラグドール、他方を子ラグドールとする親子関係を示す親子情報を生成する(ステップS116)。各接続の親子関係は、ループ上の接続をしていない限り、起点ラグドールが定まれば一意に定まる。よって、起点ラグドール自体が親子関係を示す情報といえる。図8は、図3に示す物体における親子関係の一例を示す図である。図8は親子関係をツリー状に表している。図8の箱はラグドール30を、箱の間をつなぐ線が接続を示している。図8では、接続の上側に示されるラグドール30が親ラグドールであり、下側に示されるラグドール30が子ラグドールである。図9は、親子情報の一例を示す図である。図8に示すような親子関係は、親ラグドールのIDと子ラグドールのIDとの組を並べた親子情報により表される。
【0041】
図9に示される親子情報は、例えば公知の経路探索アルゴリズムを応用して求めることができる。具体的には、まず各接続におけるラグドール30間の探索距離を1に固定し、各ラグドール30の起点ラグドールからの距離を求める。次に各接続について起点ラグドールからの距離の小さい方を親ラグドールとし、大きい方を子ラグドールとするように親ラグドールのIDと子ラグドールのIDとの組を生成すればよい。なお、親子情報取得部27は必ずしも動的に親子情報を生成しなくてもよい。例えば、親子情報を予め生成し、動作の種類(情報)や経過時間に対応づけて記憶部12に記憶しておいてもよい。その場合、親子情報取得部27は、起点ラグドールの情報の代わりに、親子情報を記憶部12から直接取得すればよい。
【0042】
位置補正部25は、中央制御部11、記憶部12、および演算部13を中心として実現される。位置補正部25は、親子情報および各ラグドール30の動きに基づいて、親ラグドールが含む子ラグドールに対するジョイント32の位置と、子ラグドールが含む親ラグドールに対するジョイント32の位置とが所定の条件を満たすように親ラグドールに対する子ラグドールの位置を補正し、各ラグドール30の位置を補正する(ステップS117)。補正の手順について以下に詳細に説明する。
【0043】
はじめに、各ラグドール30に含まれるジョイント32の位置を示す位置ベクトルを取得する。次に、各接続について位置の補正を行う。ここで、親ラグドールに含まれるジョイント32のうち子ラグドールに接続するジョイント32の位置ベクトルをJpとし、子ラグドールに含まれるジョイント32のうち親ラグドールに接続するジョイント32の位置を示す位置ベクトルをJcとする。そして、JpとJcの距離D、つまり|Jp−Jc|を求める。距離Dが閾値θを超えた場合、子ラグドールの位置を補正する。補正前の子ラグドールの位置を示すベクトルをRiとすると、補正後の子ラグドールの位置を示すベクトルをRi’は、以下の式で表される。
【0044】
Ri’←Ri+((D−θ)/D)(Jp−Jc)
【0045】
図10は、物体の補正された各ラグドール30の配置の一例を示す図である。補正により、2つのラグドール30を接続するジョイント32の位置のずれが抑えられる。これにより、あるラグドール30に強い力や加速度などが加わり、補正がなければジョイント32の位置のずれにより描画が不自然になるような場合であっても、自然な画像を描画することができる。
【0046】
また、上述の補正手順では、ジョイント32の位置のずれが一定の閾値θを超えた場合にのみ補正を行っている。こうすれば、補正に伴う物理量の不整合が認識されるおそれを軽減できる。閾値θは、ジョイント32の位置のずれが目立たないように予め適宜設定すればよい。また補正後のジョイント32間の距離が閾値θになるように補正している。このようにすることで、時間が進むにつれ補正前のジョイント32間の距離が閾値θの付近で変化するような場合に、補正により生じる不安定な挙動を軽減することができる。
【0047】
また、位置補正部25は上述の各ラグドール30の位置の補正に加え、ジョイント32間の角度の拘束条件を満たすように各ラグドール30の角度を補正してもよい。
【0048】
画像生成部26は、中央制御部11、演算部13、記憶部12および入出力部14を中心として実現される。画像生成部26は位置補正部25により補正された各ラグドール30の位置に基づいて、物体の画像の情報を生成する(ステップS118)。画像生成部26は、物体を構成する各ラグドール30の補正された位置や角度に基づいて、その物体の3次元画像の情報を生成し、入出力部14を介してモニタなどの表示デバイスにその情報を出力する。表示デバイスは生成された3次元画像を表示する。その物体の3次元画像の情報を生成する手順としては、まず画像生成部26は、各ラグドール30の位置や角度から、その各ラグドール30に対応して設けられるスケルトン(骨格)の座標を生成する。多くの場合、それぞれのスケルトンは、対応するラグドール30含む対向する2つのジョイント32を結ぶ線に相当する。次に画像生成部26は、スケルトンの座標との位置関係が予め定められているスキンを生成し、そのスキンの画像の情報を生成する。ここで、スキンは複数のポリゴンからなり、そのスケルトンを包むように配置される。
【0049】
ここで、上述の親子情報取得部27は、他の物体と特定の配置関係を有するラグドール30によって親子情報を変化させている。図10は、計算対象となる直前のフレームにおける物体の各ラグドール30の配置の他の一例を示す図である。本図の例では図6の例と異なり、動作の種類は「左手でぶら下がる」であり、左前腕に相当するラグドール30の手先側にジョイント32が設けられ、移動する壁の表面に接続されている。この場合、ジョイント32間の位置のずれが生じる場所や、補正後の位置をずらすと描画が不自然になるラグドール30は図6の例と異なるが、それに応じた親子情報を取得することができる。これらの構成により、反復的な方法で計算される場合に生じるラグドール30間の位置のずれが他の物体と衝突または接続するラグドール30によって異なり、さらにその衝突または接続するラグドール30が時間的に変化するような場合であっても、その衝突または接続するラグドール30に応じて自然になるよう補正された画像を生成することができる。
【符号の説明】
【0050】
1 画像生成装置、11 中央制御部、12 記憶部、13 演算部、14入出力部、21 動作種類決定部、22 動作データ取得部、23 動作データ記憶部、24 動き計算部、25 位置補正部、26 画像生成部、27 親子情報取得部、30 ラグドール、31 ラグドール本体、32 ジョイント。
【技術分野】
【0001】
本発明は画像生成装置、画像生成方法、プログラム及び情報記憶媒体に関する。
【背景技術】
【0002】
例えば鎖のように複数の要素が接続された多体の物体について、その動きをシミュレートし、その物体の画像を生成する技術がある。多体の物体に含まれる複数の要素間に生じる相互作用を考慮するために、ガウスザイデル法(Gauss-Seidel method)やインパルス法などの反復的な方法で動きが計算される。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Erin Catto, “Fast and Simple Physics usingSequential Impulses”, Game Developers Conference 2006
【発明の概要】
【発明が解決しようとする課題】
【0004】
複数の要素が接続されてなる多体の物体の動きを反復的な方法により計算する場合、例えばある要素に強い力や加速度が加わるなどの原因により、生成される画像が不自然となる場合があった。
【0005】
本発明は上記課題を鑑みてなされたものであって、その目的は、ある要素に強い力や加速度などが加わっても、自然な画像を生成することができる技術を提供することにある。
【課題を解決するための手段】
【0006】
上記課題を解決するために、本発明にかかるプログラムは、複数の要素が接続されてなる物体の画像をコンピュータに生成させるプログラムであって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、としてコンピュータを機能させる。
【0007】
また、本発明にかかる画像生成装置は、複数の要素が接続されてなる物体の画像を生成する画像生成装置であって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段と、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段と、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段と、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段と、を含むことを特徴とする。
【0008】
また、本発明にかかる画像生成方法は、複数の要素が接続されてなる物体の画像を生成する画像生成方法であって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算ステップと、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得ステップと、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正ステップと、前記補正ステップにより補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成ステップと、を含むことを特徴とする。
【0009】
また、本発明にかかるコンピュータ読み取り可能な記憶媒体は、コンピュータに、複数の要素が接続されてなる物体の画像を生成させるプログラムであって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、としてコンピュータを機能させるプログラムを記憶する。
【0010】
本発明によれば、ある要素に強い力や加速度が加わるような場合でも、自然な画像を生成することができる。
【0011】
本発明の一態様では、前記補正手段は、前記親子情報および前記各要素の動きに基づいて、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置とが所定の条件を満たすように前記親要素に対する前記子要素の位置を補正してもよい。
【0012】
本発明の一態様では、前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記子要素の位置を補正してもよい。
【0013】
本発明の一態様では、前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記距離が前記所定の閾値になるように前記子要素の位置を補正してもよい。
【0014】
本発明の一態様では、本発明に係るプログラムは、計算時点における前記物体の動作の種類であって他の物体と前記所与の関係を有する要素を示す動作の種類を決定する動作種類決定手段、としてさらにコンピュータを機能させ、前記親子情報取得手段は、前記決定された動作の種類に基づいて前記親子情報を取得してもよい。
【0015】
本発明の一態様では、前記親子情報取得手段は、前記決定された動作の種類と、当該動作の種類が決定されている経過時間とに基づいて、前記親子情報を取得してもよい。
【図面の簡単な説明】
【0016】
【図1】本発明の実施形態に係る画像生成装置の構成を示す図である。
【図2】本発明の実施形態に係る画像生成装置の機能ブロックを示す図である。
【図3】あるフレームにおける物理シミュレーションの対象となる物体の一例を示す図である。
【図4】1つの要素の構成の一例を示す図である。
【図5】本発明の実施形態に係る画像生成装置の処理フローの一例を示す図である。
【図6】計算対象となるフレームの直前のフレームにおける物体の各要素の配置の一例を示す図である。
【図7】動き計算部が計算した物理量が示す物体の各要素の配置の一例を示す図である。
【図8】図3に示す物体における親子関係の一例を示す図である。
【図9】親子情報の一例を示す図である。
【図10】物体の補正された各要素の配置の一例を示す図である。
【図11】計算対象となる直前のフレームにおける物体の各要素の配置の他の一例を示す図である。
【発明を実施するための形態】
【0017】
以下では、本発明の実施形態について図面に基づいて説明する。図1は本発明の実施形態に係る画像生成装置1の構成を示す図である。画像生成装置1は、中央制御部11と、記憶部12と、演算部13と、入出力部14とを含んでいる。画像生成装置1は、例えばパーソナルコンピュータや家庭用ゲーム機のように3次元画像を生成する機能を有する機器である。
【0018】
中央制御部11は、記憶部12に格納されているプログラムに従って動作し、演算部13や入出力部14を制御する。なお、上記プログラムは、DVD−ROM等のコンピュータで読み取り可能な情報記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【0019】
記憶部12は、RAMやROM等のメモリ素子およびハードディスクドライブ等によって構成されている。記憶部12は、上記プログラムを格納する。また、記憶部12は、各部から入力される情報や演算結果を格納する。
【0020】
演算部13は、浮動小数点計算などの数値演算を高速に行う機能を有する。演算部13は、記憶部12に格納されるプログラムに従って動作し、その計算結果を記憶部12や入出力部14に出力する。
【0021】
入出力部14は、モニタ等の表示出力デバイスを制御する手段や、マウス等の入力デバイスを制御する手段などによって構成されている。入出力部14は、中央制御部11の制御に基づいて、画像データ等を表示出力デバイスに対して出力し、入力デバイスより操作者からの情報を取得する。
【0022】
図2は、本発明の実施形態に係る画像生成装置の機能ブロックを示す図である。画像生成装置1は機能的に、動作種類決定部21と、動作データ取得部22と、動作データ記憶部23と、動き計算部24と、位置補正部25と、画像生成部26と、親子情報取得部27と、を含む。これらの機能は、中央制御部11や演算部13が記憶部12に格納されたプログラムを実行し、入出力部14を制御することによって実現される。
【0023】
図3は、あるフレームにおける物理シミュレーションの対象となる物体の一例を示す図である。物体は、動きを計算する際には複数のラグドール(要素)30が接続されて構成される。本実施形態にかかる画像生成装置1は、あるフレームにおける物体の動き(より具体的には物体の各ラグドール30の速度、角速度、位置、角度など)を計算によりシミュレートし、その動きに基づいて物体の画像を生成する。なお、図3の例は人の身体を模した物体を示している。図3に示すラグドール30には処理の際に用いるr1〜r10のIDが付されている。
【0024】
図4は、1つのラグドール30の構成の一例を示す図である。各ラグドール30は、1つのラグドール本体31と、1または複数のジョイント(接続部)32とを含む。ラグドール本体31の形状は、直方体や円柱などである。ジョイント32は、他のラグドール30に含まれるジョイント32と接続する部分であり、本図の例では点で表される。あるラグドール30は、ジョイント32を介して他のラグドール30との間で力などの相互作用を及ぼしあっている。あるラグドール30においてラグドール本体31に対する各ジョイント32の位置は予め決まっており、その位置関係は図中ではジョイント32とラグドール本体31とを結ぶ線で表している。各ラグドール30は、物理計算を行うための物理量として、質量、慣性モーメント、速度、角速度、位置、角度といったパラメータを有する。画像生成装置1は計算された各ラグドール30の位置や角度の情報を用いて、物体の画像を生成する。
【0025】
以下では画像生成装置1の各機能の処理について処理の順序に従って説明する。図5は、本発明の実施形態に係る画像生成装置1の処理フローの一例を示す図である。
【0026】
動作種類決定部21は、中央制御部11、記憶部12、および入出力部14を中心として実現される。動作種類決定部21は、計算時点(計算対象となるフレーム)における動作の種類を取得する(ステップS111)。物体の動作は、「右手でぶらさがる」、「左手でぶらさがる」、「ジャンプする」、「背中の衝突により飛ばされる」といった動作の種類に予め分類されている。動作種類決定部21は、入力デバイスを操作するユーザから入出力部14を介して取得する情報や、直前のフレームにおける他の物体(例えば壁や天井など)との衝突判定や近接判定の結果などに基づいて、予め定められた複数の動作の種類のうちから1つの動作の種類を決定する。ここで、例えば、「右手でぶらさがる」の動作の種類では、右手が他の物体と接続し、「背中の衝突により飛ばされる」では背中が衝突していることを示している。動作の種類は、他の物体との関係を有するラグドール30、つまり、他の物体との接続するラグドール30がどれであるかや衝突するラグドール30がどれであるかといったことを示している。
【0027】
動作データ記憶部23は記憶部12を中心として実現される。動作データ記憶部23には、計算対象となる物体について複数の動作データ(モーションデータともいう)を記憶する。動作データは、決定された動作の種類とその動作の種類で動作を始めてからの経過時間とのそれぞれに関連づけられて記憶される。それぞれの動作データは、関連づけられた動作の種類のその経過時間における物体の各ラグドール30の配置を示す。動作データが示す各ラグドール30の配置は基準となる配置であり、各ラグドール30に対して物理法則を反映させつつ外力以外の動きを発生させるための情報である。動作データは、各ラグドール30の基準となる位置(基準位置)や角度(基準角度)の情報を含む。また、関連づけられた経過時間におけるラグドール30間の親子関係を示す情報も含む。基準となる位置により外力以外による動きを発生させる方法、親子関係、および補正の詳細については後述する。
【0028】
動作データ取得部22は、中央制御部11、記憶部12、および演算部13を中心として実現される。動作データ取得部22は、動作種類決定部21で決定された動作の種類と、動作種類決定部21で複数フレームの間ずっとこの動作の種類が決定されている場合の経過時間とに基づいて、動作データ記憶部23に記憶された複数の動作データのうちから1つの動作データを取得する(ステップS112)。
【0029】
動き計算部24は、中央制御部11、記憶部12、および演算部13を中心として実現される。動き計算部24は、各ラグドール30とそのラグドール30に接続される他のラグドール30との物理的な拘束条件に基づいて、そのラグドール30の動きを反復的に計算する。より具体的な処理について説明する。まず動き計算部24は、各ラグドール30の物理量を取得する(ステップS113)。ここで取得する物理量は、各ラグドール30の質量、慣性モーメント、計算対象のフレームの直前のフレームにおいて計算された各ラグドール30の位置、向き、速度、および角速度といったものである。次に、動き計算部24は、計算対象のフレームにおける物体の各ラグドール30の位置、角度、速度、角速度といった物理量(動き)を、ラグドール30間の物理的な拘束条件に基づいて計算する(ステップS114)。ここで、物理的拘束条件は、より具体的には互いに接続される2つのラグドール30の一方に含まれ他方と接続するジョイント32と、他方に含まれ一方に接続するジョイント32と、の距離や角度などの位置関係の条件である。具体例としては上述の2つのジョイント32の距離を0にし、ラグドール本体31からジョイント32へ伸びる線どうしの角度を一定の範囲内にするという条件がある。ジョイント32間の距離を固定する拘束条件の代わりに、上述の2つのジョイント32間で距離に応じてバネのように力がかかるといった拘束条件にしてもよい。
【0030】
動き計算部24は、それぞれラグドール30のいずれかに対応する複数の運動方程式であって、対応するラグドール30とそれに接続されるラグドール30との間の物理的な拘束条件が反映された運動方程式に基づいて各ラグドール30の物理量を計算している。ここで、各ラグドール30の運動方程式は、以下の式で表される。
【0031】
【数1】
ここで、Fk:力、τk:トルク、mk:質量、Ik:慣性モーメント、vk:速度ベクトル、ωk:角速度ベクトル
【0032】
なお、kは各ラグドール30のIDに対応する数である。各ラグドール30にかかる力Fは、重力f1、ジョイント32によって他のラグドール30からかかる力f2、動作データが示す位置や向きとの相違に応じてかかる力f3などの合力である。動き計算部24は上述の方程式に基づく時間積分の式を計算することにより直前のフレームの物理量から計算対象となるフレームの速度、角速度を取得し、さらに位置や角度などの物理量も取得する。時間積分の方法としては例えばオイラー法がある。
【0033】
他のラグドール30からかかる力f2は、自分のラグドール30から他のラグドール30に及ぼした力などによって生じる他のラグドール30の速度変化などにも依存するため、その力f2の厳密な強さを求めることは難しい。そのため、本実施形態ではインパルス法を用いて各ラグドール30の物理量を計算している。ここで、インパルス法では、ラグドール30間で及ぼし合う力をラグドール30間の微小な衝突の繰返しによって表現する。他のラグドール30からかかる力f2は、ジョイント32における衝突による速度変化に基づいて導かれる。なお、衝突による速度変化はジョイント32における反発計数を0とし、さらに運動量保存則を適用した計算式で求められる。衝突に関する反復計算は1フレームにつき複数回行う。この回数は計算資源を考慮して予め定められている。反復回数は有限であるため、反復回数を超える数のラグドール30を介して接続されるラグドール30どうしでは、相互作用を反映できない場合がある。
【0034】
動作データが示す位置や向きとの相違に応じてかかる力f3は、各ラグドール30のジョイント32の位置を、動作データが示すそのジョイント32の基準となる位置に近づかせる向きの力であり、その大きさはがジョイント32の位置と基準となる位置との距離が遠くなるほど大きくなる。動作データは、各ラグドール30の基準となる位置や角度の情報からなり、それらを用いてジョイント32の基準となる位置が求められる。これにより、予めポーズなどの動きのデータを生成しておけば、外力等による影響を折り込んだ物体の動作を表現することが可能である。
【0035】
なお、上述のインパルス法の他に、各ラグドール30の運動方程式に基づく時間積分の式を反復解法を用いて解く方法もある。反復解法として、例えば投影型ガウスザイデル法(Projected Gauss-Seidel Method)がある。なお、投影型ガウスザイデル法とインパルス法とでは実質的な計算内容は同じである。反復解法を用いても反復回数と計算結果との関係は変わらない。
【0036】
図6は、計算対象となるフレームの直前のフレームにおける物体の各ラグドール30の配置の一例を示す図である。この時点での動作の種類は「右手でぶら下がる」であり、右前腕に相当するラグドール30の手先側にジョイント32が設けられ、移動する壁の表面上のある位置に接続される。ここで、移動する壁は、右側に移動しており、その速度はこれまでのフレームにおける物体の移動速度より速いとする。
【0037】
図7は、動き計算部24が計算した物理量が示す物体の各ラグドール30の配置の一例を示す図である。本来の物理法則に従えば、あるラグドール30のジョイント32と他のラグドール30に含まれる接続先となるジョイント32とで位置が一致しなければならない。しかし反復計算の回数の制限により全てのラグドール30に壁からかかる力を反映しきれず、ジョイント32の位置がずれてしまう。
【0038】
親子情報取得部27は、中央制御部11、記憶部12、および演算部13を中心として実現される。親子情報取得部27は、計算時点において他の物体と衝突または接続するラグドール30に基づいて親子情報を取得する。親子情報は、各ラグドール30とそのラグドール30に接続する他のラグドール30との接続に対応しており、その接続のそれぞれを構成する2つのラグドール30のうち一方を親ラグドール(親要素)とし他方を子ラグドール(子要素)とする関係を示している。以下では親子情報の取得方法について説明する。後述の補正では、ある接続について親ラグドールと子ラグドールとの配置が予め定められた条件を満たすように、子ラグドールの位置を補正する。
【0039】
はじめに、親子情報取得部27は、動作種類決定部21で決定された動作の種類に応じて、計算時点において親ラグドールを有さず一番の親となるラグドール30(以下では起点ラグドールという)を示す情報を取得する(ステップS115)。後述の補正では子ラグドールの位置を補正するため、起点ラグドールの位置は補正されない。よって、他の物体と接続するなどの理由により補正すると最も不自然となるラグドール30を起点ラグドールにするとよい。起点ラグドールの情報は、予め動作の種類および経過時間に対応づけて記憶部12に格納されており、親子情報取得部27は、動作の種類および経過時間に関連づけられた起点ラグドールを記憶部12から取得する。例えば図6や図7の例では、起点ラグドールは右前腕に対応するラグドール30(ID:r6)となる。
【0040】
次に、親子情報取得部27はラグドール30間の接続ごとに、接続される2つのラグドール30のうち一方を親ラグドール、他方を子ラグドールとする親子関係を示す親子情報を生成する(ステップS116)。各接続の親子関係は、ループ上の接続をしていない限り、起点ラグドールが定まれば一意に定まる。よって、起点ラグドール自体が親子関係を示す情報といえる。図8は、図3に示す物体における親子関係の一例を示す図である。図8は親子関係をツリー状に表している。図8の箱はラグドール30を、箱の間をつなぐ線が接続を示している。図8では、接続の上側に示されるラグドール30が親ラグドールであり、下側に示されるラグドール30が子ラグドールである。図9は、親子情報の一例を示す図である。図8に示すような親子関係は、親ラグドールのIDと子ラグドールのIDとの組を並べた親子情報により表される。
【0041】
図9に示される親子情報は、例えば公知の経路探索アルゴリズムを応用して求めることができる。具体的には、まず各接続におけるラグドール30間の探索距離を1に固定し、各ラグドール30の起点ラグドールからの距離を求める。次に各接続について起点ラグドールからの距離の小さい方を親ラグドールとし、大きい方を子ラグドールとするように親ラグドールのIDと子ラグドールのIDとの組を生成すればよい。なお、親子情報取得部27は必ずしも動的に親子情報を生成しなくてもよい。例えば、親子情報を予め生成し、動作の種類(情報)や経過時間に対応づけて記憶部12に記憶しておいてもよい。その場合、親子情報取得部27は、起点ラグドールの情報の代わりに、親子情報を記憶部12から直接取得すればよい。
【0042】
位置補正部25は、中央制御部11、記憶部12、および演算部13を中心として実現される。位置補正部25は、親子情報および各ラグドール30の動きに基づいて、親ラグドールが含む子ラグドールに対するジョイント32の位置と、子ラグドールが含む親ラグドールに対するジョイント32の位置とが所定の条件を満たすように親ラグドールに対する子ラグドールの位置を補正し、各ラグドール30の位置を補正する(ステップS117)。補正の手順について以下に詳細に説明する。
【0043】
はじめに、各ラグドール30に含まれるジョイント32の位置を示す位置ベクトルを取得する。次に、各接続について位置の補正を行う。ここで、親ラグドールに含まれるジョイント32のうち子ラグドールに接続するジョイント32の位置ベクトルをJpとし、子ラグドールに含まれるジョイント32のうち親ラグドールに接続するジョイント32の位置を示す位置ベクトルをJcとする。そして、JpとJcの距離D、つまり|Jp−Jc|を求める。距離Dが閾値θを超えた場合、子ラグドールの位置を補正する。補正前の子ラグドールの位置を示すベクトルをRiとすると、補正後の子ラグドールの位置を示すベクトルをRi’は、以下の式で表される。
【0044】
Ri’←Ri+((D−θ)/D)(Jp−Jc)
【0045】
図10は、物体の補正された各ラグドール30の配置の一例を示す図である。補正により、2つのラグドール30を接続するジョイント32の位置のずれが抑えられる。これにより、あるラグドール30に強い力や加速度などが加わり、補正がなければジョイント32の位置のずれにより描画が不自然になるような場合であっても、自然な画像を描画することができる。
【0046】
また、上述の補正手順では、ジョイント32の位置のずれが一定の閾値θを超えた場合にのみ補正を行っている。こうすれば、補正に伴う物理量の不整合が認識されるおそれを軽減できる。閾値θは、ジョイント32の位置のずれが目立たないように予め適宜設定すればよい。また補正後のジョイント32間の距離が閾値θになるように補正している。このようにすることで、時間が進むにつれ補正前のジョイント32間の距離が閾値θの付近で変化するような場合に、補正により生じる不安定な挙動を軽減することができる。
【0047】
また、位置補正部25は上述の各ラグドール30の位置の補正に加え、ジョイント32間の角度の拘束条件を満たすように各ラグドール30の角度を補正してもよい。
【0048】
画像生成部26は、中央制御部11、演算部13、記憶部12および入出力部14を中心として実現される。画像生成部26は位置補正部25により補正された各ラグドール30の位置に基づいて、物体の画像の情報を生成する(ステップS118)。画像生成部26は、物体を構成する各ラグドール30の補正された位置や角度に基づいて、その物体の3次元画像の情報を生成し、入出力部14を介してモニタなどの表示デバイスにその情報を出力する。表示デバイスは生成された3次元画像を表示する。その物体の3次元画像の情報を生成する手順としては、まず画像生成部26は、各ラグドール30の位置や角度から、その各ラグドール30に対応して設けられるスケルトン(骨格)の座標を生成する。多くの場合、それぞれのスケルトンは、対応するラグドール30含む対向する2つのジョイント32を結ぶ線に相当する。次に画像生成部26は、スケルトンの座標との位置関係が予め定められているスキンを生成し、そのスキンの画像の情報を生成する。ここで、スキンは複数のポリゴンからなり、そのスケルトンを包むように配置される。
【0049】
ここで、上述の親子情報取得部27は、他の物体と特定の配置関係を有するラグドール30によって親子情報を変化させている。図10は、計算対象となる直前のフレームにおける物体の各ラグドール30の配置の他の一例を示す図である。本図の例では図6の例と異なり、動作の種類は「左手でぶら下がる」であり、左前腕に相当するラグドール30の手先側にジョイント32が設けられ、移動する壁の表面に接続されている。この場合、ジョイント32間の位置のずれが生じる場所や、補正後の位置をずらすと描画が不自然になるラグドール30は図6の例と異なるが、それに応じた親子情報を取得することができる。これらの構成により、反復的な方法で計算される場合に生じるラグドール30間の位置のずれが他の物体と衝突または接続するラグドール30によって異なり、さらにその衝突または接続するラグドール30が時間的に変化するような場合であっても、その衝突または接続するラグドール30に応じて自然になるよう補正された画像を生成することができる。
【符号の説明】
【0050】
1 画像生成装置、11 中央制御部、12 記憶部、13 演算部、14入出力部、21 動作種類決定部、22 動作データ取得部、23 動作データ記憶部、24 動き計算部、25 位置補正部、26 画像生成部、27 親子情報取得部、30 ラグドール、31 ラグドール本体、32 ジョイント。
【特許請求の範囲】
【請求項1】
複数の要素が接続されてなる物体の画像をコンピュータに生成させるプログラムであって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、
前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、
としてコンピュータを機能させるプログラム。
【請求項2】
前記補正手段は、前記親子情報および前記各要素の動きに基づいて、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置とが所定の条件を満たすように前記親要素に対する前記子要素の位置を補正する、
ことを特徴とする請求項1に記載のプログラム。
【請求項3】
前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記子要素の位置を補正する、
ことを特徴とする請求項2に記載のプログラム。
【請求項4】
前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記距離が前記所定の閾値になるように前記子要素の位置を補正する、
ことを特徴とする請求項3に記載のプログラム。
【請求項5】
計算時点における前記物体の動作の種類であって他の物体と前記所与の関係を有する要素を示す動作の種類を決定する動作種類決定手段、としてさらにコンピュータを機能させ、
前記親子情報取得手段は、前記決定された動作の種類に基づいて前記親子情報を取得する、
ことを特徴とする請求項1から4のいずれかに記載のプログラム。
【請求項6】
前記親子情報取得手段は、前記決定された動作の種類と、当該動作の種類が決定されている経過時間とに基づいて、前記親子情報を取得する、
ことを特徴とする請求項5に記載のプログラム。
【請求項7】
複数の要素が接続されてなる物体の画像を生成する画像生成装置であって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段と、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段と、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段と、
前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段と、
を含むことを特徴とする画像生成装置。
【請求項8】
複数の要素が接続されてなる物体の画像を生成する画像生成方法であって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算ステップと、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得ステップと、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正ステップと、
前記補正ステップにより補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成ステップと、
を含むことを特徴とする画像生成方法。
【請求項9】
コンピュータに、複数の要素が接続されてなる物体の画像を生成させるプログラムであって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、
前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、
としてコンピュータを機能させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項1】
複数の要素が接続されてなる物体の画像をコンピュータに生成させるプログラムであって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、
前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、
としてコンピュータを機能させるプログラム。
【請求項2】
前記補正手段は、前記親子情報および前記各要素の動きに基づいて、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置とが所定の条件を満たすように前記親要素に対する前記子要素の位置を補正する、
ことを特徴とする請求項1に記載のプログラム。
【請求項3】
前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記子要素の位置を補正する、
ことを特徴とする請求項2に記載のプログラム。
【請求項4】
前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記距離が前記所定の閾値になるように前記子要素の位置を補正する、
ことを特徴とする請求項3に記載のプログラム。
【請求項5】
計算時点における前記物体の動作の種類であって他の物体と前記所与の関係を有する要素を示す動作の種類を決定する動作種類決定手段、としてさらにコンピュータを機能させ、
前記親子情報取得手段は、前記決定された動作の種類に基づいて前記親子情報を取得する、
ことを特徴とする請求項1から4のいずれかに記載のプログラム。
【請求項6】
前記親子情報取得手段は、前記決定された動作の種類と、当該動作の種類が決定されている経過時間とに基づいて、前記親子情報を取得する、
ことを特徴とする請求項5に記載のプログラム。
【請求項7】
複数の要素が接続されてなる物体の画像を生成する画像生成装置であって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段と、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段と、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段と、
前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段と、
を含むことを特徴とする画像生成装置。
【請求項8】
複数の要素が接続されてなる物体の画像を生成する画像生成方法であって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算ステップと、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得ステップと、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正ステップと、
前記補正ステップにより補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成ステップと、
を含むことを特徴とする画像生成方法。
【請求項9】
コンピュータに、複数の要素が接続されてなる物体の画像を生成させるプログラムであって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、
前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、
としてコンピュータを機能させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−256102(P2012−256102A)
【公開日】平成24年12月27日(2012.12.27)
【国際特許分類】
【出願番号】特願2011−127376(P2011−127376)
【出願日】平成23年6月7日(2011.6.7)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
【公開日】平成24年12月27日(2012.12.27)
【国際特許分類】
【出願日】平成23年6月7日(2011.6.7)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
[ Back to top ]