(57)【特許請求の範囲】
【請求項１】
複数の要素が接続されてなる物体の画像をコンピュータに生成させるプログラムであって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、
前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、
としてコンピュータを機能させ、
前記補正手段は、前記親子情報および前記各要素の動きに基づいて、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が正の閾値より大きい場合に、前記距離が前記正の閾値になるように前記子要素の位置を補正する、
ことを特徴とするプログラム。
【請求項２】
計算時点における前記物体の動作の種類であって他の物体と前記所与の関係を有する要素を示す動作の種類を決定する動作種類決定手段、としてさらにコンピュータを機能させ、
前記親子情報取得手段は、前記決定された動作の種類に基づいて前記親子情報を取得する、
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記親子情報取得手段は、前記決定された動作の種類と、当該動作の種類が決定されている経過時間とに基づいて、前記親子情報を取得する、
ことを特徴とする請求項２に記載のプログラム。
【請求項４】
複数の要素が接続されてなる物体の画像を生成する画像生成装置であって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段と、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段と、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段と、
前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段と、
を含み、
前記補正手段は、前記親子情報および前記各要素の動きに基づいて、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が正の閾値より大きい場合に、前記距離が前記正の閾値になるように前記子要素の位置を補正する、
ことを特徴とする画像生成装置。
【請求項５】
複数の要素が接続されてなる物体の画像を生成する画像生成方法であって、
計算手段が、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算ステップと、
親子情報取得手段が、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得ステップと、
補正手段が、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正ステップと、
画像生成手段が、前記補正ステップにより補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成ステップと、
を含み、
前記補正ステップでは、前記親子情報および前記各要素の動きに基づいて、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が正の閾値より大きい場合に、前記距離が前記正の閾値になるように前記子要素の位置を補正する、
ことを特徴とする画像生成方法。
【請求項６】
コンピュータに、複数の要素が接続されてなる物体の画像を生成させるプログラムであって、
前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、
他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、
前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、
前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、
としてコンピュータを機能させ、
前記補正手段は、前記親子情報および前記各要素の動きに基づいて、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が正の閾値より大きい場合に、前記距離が前記正の閾値になるように前記子要素の位置を補正する、
ことを特徴とするプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像生成装置、画像生成方法、プログラム及び情報記憶媒体に関する。
【背景技術】
【０００２】
例えば鎖のように複数の要素が接続された多体の物体について、その動きをシミュレートし、その物体の画像を生成する技術がある。多体の物体に含まれる複数の要素間に生じる相互作用を考慮するために、ガウスザイデル法(Gauss-Seidel method)やインパルス法などの反復的な方法で動きが計算される。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Erin Catto, “Fast and Simple Physics usingSequential Impulses”, Game Developers Conference 2006
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数の要素が接続されてなる多体の物体の動きを反復的な方法により計算する場合、例えばある要素に強い力や加速度が加わるなどの原因により、生成される画像が不自然となる場合があった。
【０００５】
本発明は上記課題を鑑みてなされたものであって、その目的は、ある要素に強い力や加速度などが加わっても、自然な画像を生成することができる技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明にかかるプログラムは、複数の要素が接続されてなる物体の画像をコンピュータに生成させるプログラムであって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、としてコンピュータを機能させる。
【０００７】
また、本発明にかかる画像生成装置は、複数の要素が接続されてなる物体の画像を生成する画像生成装置であって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段と、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段と、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段と、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段と、を含むことを特徴とする。
【０００８】
また、本発明にかかる画像生成方法は、複数の要素が接続されてなる物体の画像を生成する画像生成方法であって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算ステップと、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得ステップと、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正ステップと、前記補正ステップにより補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成ステップと、を含むことを特徴とする。
【０００９】
また、本発明にかかるコンピュータ読み取り可能な記憶媒体は、コンピュータに、複数の要素が接続されてなる物体の画像を生成させるプログラムであって、前記各要素と当該要素に接続される他の前記要素との物理的な拘束条件に基づいて、前記各要素の動きを反復的に計算する計算手段、他の物体と所与の関係を有する要素を示す情報に基づいて、前記各要素と前記他の要素との接続に対応する親子情報であって前記各要素と前記他の要素のうち一方を親要素とし他方を子要素とする親子情報を取得する親子情報取得手段、前記親子情報および前記各要素の動きに基づいて、前記親要素に対する前記子要素の位置を補正する補正手段、および、前記補正手段により補正された前記各要素の位置に基づいて、前記物体の画像の情報を生成する画像生成手段、としてコンピュータを機能させるプログラムを記憶する。
【００１０】
本発明によれば、ある要素に強い力や加速度が加わるような場合でも、自然な画像を生成することができる。
【００１１】
本発明の一態様では、前記補正手段は、前記親子情報および前記各要素の動きに基づいて、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置とが所定の条件を満たすように前記親要素に対する前記子要素の位置を補正してもよい。
【００１２】
本発明の一態様では、前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記子要素の位置を補正してもよい。
【００１３】
本発明の一態様では、前記補正手段は、前記子要素に対する前記親要素が含む接続部の位置と、前記親要素に対する前記子要素が含む接続部の位置との距離が所定の閾値より大きい場合に、前記距離が前記所定の閾値になるように前記子要素の位置を補正してもよい。
【００１４】
本発明の一態様では、本発明に係るプログラムは、計算時点における前記物体の動作の種類であって他の物体と前記所与の関係を有する要素を示す動作の種類を決定する動作種類決定手段、としてさらにコンピュータを機能させ、前記親子情報取得手段は、前記決定された動作の種類に基づいて前記親子情報を取得してもよい。
【００１５】
本発明の一態様では、前記親子情報取得手段は、前記決定された動作の種類と、当該動作の種類が決定されている経過時間とに基づいて、前記親子情報を取得してもよい。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る画像生成装置の構成を示す図である。
【図２】本発明の実施形態に係る画像生成装置の機能ブロックを示す図である。
【図３】あるフレームにおける物理シミュレーションの対象となる物体の一例を示す図である。
【図４】１つの要素の構成の一例を示す図である。
【図５】本発明の実施形態に係る画像生成装置の処理フローの一例を示す図である。
【図６】計算対象となるフレームの直前のフレームにおける物体の各要素の配置の一例を示す図である。
【図７】動き計算部が計算した物理量が示す物体の各要素の配置の一例を示す図である。
【図８】図３に示す物体における親子関係の一例を示す図である。
【図９】親子情報の一例を示す図である。
【図１０】物体の補正された各要素の配置の一例を示す図である。
【図１１】計算対象となる直前のフレームにおける物体の各要素の配置の他の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下では、本発明の実施形態について図面に基づいて説明する。図１は本発明の実施形態に係る画像生成装置１の構成を示す図である。画像生成装置１は、中央制御部１１と、記憶部１２と、演算部１３と、入出力部１４とを含んでいる。画像生成装置１は、例えばパーソナルコンピュータや家庭用ゲーム機のように３次元画像を生成する機能を有する機器である。    
【００１８】
中央制御部１１は、記憶部１２に格納されているプログラムに従って動作し、演算部１３や入出力部１４を制御する。なお、上記プログラムは、ＤＶＤ−ＲＯＭ等のコンピュータで読み取り可能な情報記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【００１９】
記憶部１２は、ＲＡＭやＲＯＭ等のメモリ素子およびハードディスクドライブ等によって構成されている。記憶部１２は、上記プログラムを格納する。また、記憶部１２は、各部から入力される情報や演算結果を格納する。
【００２０】
演算部１３は、浮動小数点計算などの数値演算を高速に行う機能を有する。演算部１３は、記憶部１２に格納されるプログラムに従って動作し、その計算結果を記憶部１２や入出力部１４に出力する。
【００２１】
入出力部１４は、モニタ等の表示出力デバイスを制御する手段や、マウス等の入力デバイスを制御する手段などによって構成されている。入出力部１４は、中央制御部１１の制御に基づいて、画像データ等を表示出力デバイスに対して出力し、入力デバイスより操作者からの情報を取得する。
【００２２】
図２は、本発明の実施形態に係る画像生成装置の機能ブロックを示す図である。画像生成装置１は機能的に、動作種類決定部２１と、動作データ取得部２２と、動作データ記憶部２３と、動き計算部２４と、位置補正部２５と、画像生成部２６と、親子情報取得部２７と、を含む。これらの機能は、中央制御部１１や演算部１３が記憶部１２に格納されたプログラムを実行し、入出力部１４を制御することによって実現される。
【００２３】
図３は、あるフレームにおける物理シミュレーションの対象となる物体の一例を示す図である。物体は、動きを計算する際には複数のラグドール（要素）３０が接続されて構成される。本実施形態にかかる画像生成装置１は、あるフレームにおける物体の動き（より具体的には物体の各ラグドール３０の速度、角速度、位置、角度など）を計算によりシミュレートし、その動きに基づいて物体の画像を生成する。なお、図３の例は人の身体を模した物体を示している。図３に示すラグドール３０には処理の際に用いるｒ１〜ｒ１０のＩＤが付されている。
【００２４】
図４は、１つのラグドール３０の構成の一例を示す図である。各ラグドール３０は、１つのラグドール本体３１と、１または複数のジョイント（接続部）３２とを含む。ラグドール本体３１の形状は、直方体や円柱などである。ジョイント３２は、他のラグドール３０に含まれるジョイント３２と接続する部分であり、本図の例では点で表される。あるラグドール３０は、ジョイント３２を介して他のラグドール３０との間で力などの相互作用を及ぼしあっている。あるラグドール３０においてラグドール本体３１に対する各ジョイント３２の位置は予め決まっており、その位置関係は図中ではジョイント３２とラグドール本体３１とを結ぶ線で表している。各ラグドール３０は、物理計算を行うための物理量として、質量、慣性モーメント、速度、角速度、位置、角度といったパラメータを有する。画像生成装置１は計算された各ラグドール３０の位置や角度の情報を用いて、物体の画像を生成する。
【００２５】
以下では画像生成装置１の各機能の処理について処理の順序に従って説明する。図５は、本発明の実施形態に係る画像生成装置１の処理フローの一例を示す図である。
【００２６】
動作種類決定部２１は、中央制御部１１、記憶部１２、および入出力部１４を中心として実現される。動作種類決定部２１は、計算時点（計算対象となるフレーム）における動作の種類を取得する（ステップＳ１１１）。物体の動作は、「右手でぶらさがる」、「左手でぶらさがる」、「ジャンプする」、「背中の衝突により飛ばされる」といった動作の種類に予め分類されている。動作種類決定部２１は、入力デバイスを操作するユーザから入出力部１４を介して取得する情報や、直前のフレームにおける他の物体（例えば壁や天井など）との衝突判定や近接判定の結果などに基づいて、予め定められた複数の動作の種類のうちから１つの動作の種類を決定する。ここで、例えば、「右手でぶらさがる」の動作の種類では、右手が他の物体と接続し、「背中の衝突により飛ばされる」では背中が衝突していることを示している。動作の種類は、他の物体との関係を有するラグドール３０、つまり、他の物体との接続するラグドール３０がどれであるかや衝突するラグドール３０がどれであるかといったことを示している。
【００２７】
動作データ記憶部２３は記憶部１２を中心として実現される。動作データ記憶部２３には、計算対象となる物体について複数の動作データ（モーションデータともいう）を記憶する。動作データは、決定された動作の種類とその動作の種類で動作を始めてからの経過時間とのそれぞれに関連づけられて記憶される。それぞれの動作データは、関連づけられた動作の種類のその経過時間における物体の各ラグドール３０の配置を示す。動作データが示す各ラグドール３０の配置は基準となる配置であり、各ラグドール３０に対して物理法則を反映させつつ外力以外の動きを発生させるための情報である。動作データは、各ラグドール３０の基準となる位置（基準位置）や角度（基準角度）の情報を含む。また、関連づけられた経過時間におけるラグドール３０間の親子関係を示す情報も含む。基準となる位置により外力以外による動きを発生させる方法、親子関係、および補正の詳細については後述する。
【００２８】
動作データ取得部２２は、中央制御部１１、記憶部１２、および演算部１３を中心として実現される。動作データ取得部２２は、動作種類決定部２１で決定された動作の種類と、動作種類決定部２１で複数フレームの間ずっとこの動作の種類が決定されている場合の経過時間とに基づいて、動作データ記憶部２３に記憶された複数の動作データのうちから１つの動作データを取得する（ステップＳ１１２）。
【００２９】
動き計算部２４は、中央制御部１１、記憶部１２、および演算部１３を中心として実現される。動き計算部２４は、各ラグドール３０とそのラグドール３０に接続される他のラグドール３０との物理的な拘束条件に基づいて、そのラグドール３０の動きを反復的に計算する。より具体的な処理について説明する。まず動き計算部２４は、各ラグドール３０の物理量を取得する（ステップＳ１１３）。ここで取得する物理量は、各ラグドール３０の質量、慣性モーメント、計算対象のフレームの直前のフレームにおいて計算された各ラグドール３０の位置、向き、速度、および角速度といったものである。次に、動き計算部２４は、計算対象のフレームにおける物体の各ラグドール３０の位置、角度、速度、角速度といった物理量（動き）を、ラグドール３０間の物理的な拘束条件に基づいて計算する（ステップＳ１１４）。ここで、物理的拘束条件は、より具体的には互いに接続される２つのラグドール３０の一方に含まれ他方と接続するジョイント３２と、他方に含まれ一方に接続するジョイント３２と、の距離や角度などの位置関係の条件である。具体例としては上述の２つのジョイント３２の距離を０にし、ラグドール本体３１からジョイント３２へ伸びる線どうしの角度を一定の範囲内にするという条件がある。ジョイント３２間の距離を固定する拘束条件の代わりに、上述の２つのジョイント３２間で距離に応じてバネのように力がかかるといった拘束条件にしてもよい。
【００３０】
動き計算部２４は、それぞれラグドール３０のいずれかに対応する複数の運動方程式であって、対応するラグドール３０とそれに接続されるラグドール３０との間の物理的な拘束条件が反映された運動方程式に基づいて各ラグドール３０の物理量を計算している。ここで、各ラグドール３０の運動方程式は、以下の式で表される。
【００３１】
【数１】
0005396434.tif 000002
ここで、Ｆｋ：力、τｋ：トルク、ｍｋ：質量、Ｉｋ：慣性モーメント、ｖｋ：速度ベクトル、ωｋ：角速度ベクトル
【００３２】
なお、ｋは各ラグドール３０のＩＤに対応する数である。各ラグドール３０にかかる力Ｆは、重力ｆ１、ジョイント３２によって他のラグドール３０からかかる力ｆ２、動作データが示す位置や向きとの相違に応じてかかる力ｆ３などの合力である。動き計算部２４は上述の方程式に基づく時間積分の式を計算することにより直前のフレームの物理量から計算対象となるフレームの速度、角速度を取得し、さらに位置や角度などの物理量も取得する。時間積分の方法としては例えばオイラー法がある。
【００３３】
他のラグドール３０からかかる力ｆ２は、自分のラグドール３０から他のラグドール３０に及ぼした力などによって生じる他のラグドール３０の速度変化などにも依存するため、その力ｆ２の厳密な強さを求めることは難しい。そのため、本実施形態ではインパルス法を用いて各ラグドール３０の物理量を計算している。ここで、インパルス法では、ラグドール３０間で及ぼし合う力をラグドール３０間の微小な衝突の繰返しによって表現する。他のラグドール３０からかかる力ｆ２は、ジョイント３２における衝突による速度変化に基づいて導かれる。なお、衝突による速度変化はジョイント３２における反発計数を０とし、さらに運動量保存則を適用した計算式で求められる。衝突に関する反復計算は１フレームにつき複数回行う。この回数は計算資源を考慮して予め定められている。反復回数は有限であるため、反復回数を超える数のラグドール３０を介して接続されるラグドール３０どうしでは、相互作用を反映できない場合がある。
【００３４】
動作データが示す位置や向きとの相違に応じてかかる力ｆ３は、各ラグドール３０のジョイント３２の位置を、動作データが示すそのジョイント３２の基準となる位置に近づかせる向きの力であり、その大きさはがジョイント３２の位置と基準となる位置との距離が遠くなるほど大きくなる。動作データは、各ラグドール３０の基準となる位置や角度の情報からなり、それらを用いてジョイント３２の基準となる位置が求められる。これにより、予めポーズなどの動きのデータを生成しておけば、外力等による影響を折り込んだ物体の動作を表現することが可能である。
【００３５】
なお、上述のインパルス法の他に、各ラグドール３０の運動方程式に基づく時間積分の式を反復解法を用いて解く方法もある。反復解法として、例えば投影型ガウスザイデル法(Projected Gauss-Seidel Method)がある。なお、投影型ガウスザイデル法とインパルス法とでは実質的な計算内容は同じである。反復解法を用いても反復回数と計算結果との関係は変わらない。
【００３６】
図６は、計算対象となるフレームの直前のフレームにおける物体の各ラグドール３０の配置の一例を示す図である。この時点での動作の種類は「右手でぶら下がる」であり、右前腕に相当するラグドール３０の手先側にジョイント３２が設けられ、移動する壁の表面上のある位置に接続される。ここで、移動する壁は、右側に移動しており、その速度はこれまでのフレームにおける物体の移動速度より速いとする。
【００３７】
図７は、動き計算部２４が計算した物理量が示す物体の各ラグドール３０の配置の一例を示す図である。本来の物理法則に従えば、あるラグドール３０のジョイント３２と他のラグドール３０に含まれる接続先となるジョイント３２とで位置が一致しなければならない。しかし反復計算の回数の制限により全てのラグドール３０に壁からかかる力を反映しきれず、ジョイント３２の位置がずれてしまう。
【００３８】
親子情報取得部２７は、中央制御部１１、記憶部１２、および演算部１３を中心として実現される。親子情報取得部２７は、計算時点において他の物体と衝突または接続するラグドール３０に基づいて親子情報を取得する。親子情報は、各ラグドール３０とそのラグドール３０に接続する他のラグドール３０との接続に対応しており、その接続のそれぞれを構成する２つのラグドール３０のうち一方を親ラグドール（親要素）とし他方を子ラグドール（子要素）とする関係を示している。以下では親子情報の取得方法について説明する。後述の補正では、ある接続について親ラグドールと子ラグドールとの配置が予め定められた条件を満たすように、子ラグドールの位置を補正する。
【００３９】
はじめに、親子情報取得部２７は、動作種類決定部２１で決定された動作の種類に応じて、計算時点において親ラグドールを有さず一番の親となるラグドール３０（以下では起点ラグドールという）を示す情報を取得する（ステップＳ１１５）。後述の補正では子ラグドールの位置を補正するため、起点ラグドールの位置は補正されない。よって、他の物体と接続するなどの理由により補正すると最も不自然となるラグドール３０を起点ラグドールにするとよい。起点ラグドールの情報は、予め動作の種類および経過時間に対応づけて記憶部１２に格納されており、親子情報取得部２７は、動作の種類および経過時間に関連づけられた起点ラグドールを記憶部１２から取得する。例えば図６や図７の例では、起点ラグドールは右前腕に対応するラグドール３０（ＩＤ：ｒ６）となる。
【００４０】
次に、親子情報取得部２７はラグドール３０間の接続ごとに、接続される２つのラグドール３０のうち一方を親ラグドール、他方を子ラグドールとする親子関係を示す親子情報を生成する（ステップＳ１１６）。各接続の親子関係は、ループ上の接続をしていない限り、起点ラグドールが定まれば一意に定まる。よって、起点ラグドール自体が親子関係を示す情報といえる。図８は、図３に示す物体における親子関係の一例を示す図である。図８は親子関係をツリー状に表している。図８の箱はラグドール３０を、箱の間をつなぐ線が接続を示している。図８では、接続の上側に示されるラグドール３０が親ラグドールであり、下側に示されるラグドール３０が子ラグドールである。図９は、親子情報の一例を示す図である。図８に示すような親子関係は、親ラグドールのＩＤと子ラグドールのＩＤとの組を並べた親子情報により表される。
【００４１】
図９に示される親子情報は、例えば公知の経路探索アルゴリズムを応用して求めることができる。具体的には、まず各接続におけるラグドール３０間の探索距離を１に固定し、各ラグドール３０の起点ラグドールからの距離を求める。次に各接続について起点ラグドールからの距離の小さい方を親ラグドールとし、大きい方を子ラグドールとするように親ラグドールのＩＤと子ラグドールのＩＤとの組を生成すればよい。なお、親子情報取得部２７は必ずしも動的に親子情報を生成しなくてもよい。例えば、親子情報を予め生成し、動作の種類（情報）や経過時間に対応づけて記憶部１２に記憶しておいてもよい。その場合、親子情報取得部２７は、起点ラグドールの情報の代わりに、親子情報を記憶部１２から直接取得すればよい。
【００４２】
位置補正部２５は、中央制御部１１、記憶部１２、および演算部１３を中心として実現される。位置補正部２５は、親子情報および各ラグドール３０の動きに基づいて、親ラグドールが含む子ラグドールに対するジョイント３２の位置と、子ラグドールが含む親ラグドールに対するジョイント３２の位置とが所定の条件を満たすように親ラグドールに対する子ラグドールの位置を補正し、各ラグドール３０の位置を補正する（ステップＳ１１７）。補正の手順について以下に詳細に説明する。
【００４３】
はじめに、各ラグドール３０に含まれるジョイント３２の位置を示す位置ベクトルを取得する。次に、各接続について位置の補正を行う。ここで、親ラグドールに含まれるジョイント３２のうち子ラグドールに接続するジョイント３２の位置ベクトルをＪｐとし、子ラグドールに含まれるジョイント３２のうち親ラグドールに接続するジョイント３２の位置を示す位置ベクトルをＪｃとする。そして、ＪｐとＪｃの距離Ｄ、つまり｜Ｊｐ−Ｊｃ｜を求める。距離Ｄが閾値θを超えた場合、子ラグドールの位置を補正する。補正前の子ラグドールの位置を示すベクトルをＲｉとすると、補正後の子ラグドールの位置を示すベクトルをＲｉ’は、以下の式で表される。
【００４４】
Ｒｉ’←Ｒｉ＋（（Ｄ−θ）／Ｄ）（Ｊｐ−Ｊｃ）
【００４５】
図１０は、物体の補正された各ラグドール３０の配置の一例を示す図である。補正により、２つのラグドール３０を接続するジョイント３２の位置のずれが抑えられる。これにより、あるラグドール３０に強い力や加速度などが加わり、補正がなければジョイント３２の位置のずれにより描画が不自然になるような場合であっても、自然な画像を描画することができる。
【００４６】
また、上述の補正手順では、ジョイント３２の位置のずれが一定の閾値θを超えた場合にのみ補正を行っている。こうすれば、補正に伴う物理量の不整合が認識されるおそれを軽減できる。閾値θは、ジョイント３２の位置のずれが目立たないように予め適宜設定すればよい。また補正後のジョイント３２間の距離が閾値θになるように補正している。このようにすることで、時間が進むにつれ補正前のジョイント３２間の距離が閾値θの付近で変化するような場合に、補正により生じる不安定な挙動を軽減することができる。
【００４７】
また、位置補正部２５は上述の各ラグドール３０の位置の補正に加え、ジョイント３２間の角度の拘束条件を満たすように各ラグドール３０の角度を補正してもよい。
【００４８】
画像生成部２６は、中央制御部１１、演算部１３、記憶部１２および入出力部１４を中心として実現される。画像生成部２６は位置補正部２５により補正された各ラグドール３０の位置に基づいて、物体の画像の情報を生成する（ステップＳ１１８）。画像生成部２６は、物体を構成する各ラグドール３０の補正された位置や角度に基づいて、その物体の３次元画像の情報を生成し、入出力部１４を介してモニタなどの表示デバイスにその情報を出力する。表示デバイスは生成された３次元画像を表示する。その物体の３次元画像の情報を生成する手順としては、まず画像生成部２６は、各ラグドール３０の位置や角度から、その各ラグドール３０に対応して設けられるスケルトン（骨格）の座標を生成する。多くの場合、それぞれのスケルトンは、対応するラグドール３０含む対向する２つのジョイント３２を結ぶ線に相当する。次に画像生成部２６は、スケルトンの座標との位置関係が予め定められているスキンを生成し、そのスキンの画像の情報を生成する。ここで、スキンは複数のポリゴンからなり、そのスケルトンを包むように配置される。
【００４９】
ここで、上述の親子情報取得部２７は、他の物体と特定の配置関係を有するラグドール３０によって親子情報を変化させている。図１１は、計算対象となる直前のフレームにおける物体の各ラグドール３０の配置の他の一例を示す図である。本図の例では図６の例と異なり、動作の種類は「左手でぶら下がる」であり、左前腕に相当するラグドール３０の手先側にジョイント３２が設けられ、移動する壁の表面に接続されている。この場合、ジョイント３２間の位置のずれが生じる場所や、補正後の位置をずらすと描画が不自然になるラグドール３０は図６の例と異なるが、それに応じた親子情報を取得することができる。これらの構成により、反復的な方法で計算される場合に生じるラグドール３０間の位置のずれが他の物体と衝突または接続するラグドール３０によって異なり、さらにその衝突または接続するラグドール３０が時間的に変化するような場合であっても、その衝突または接続するラグドール３０に応じて自然になるよう補正された画像を生成することができる。
【符号の説明】
【００５０】
１  画像生成装置、１１  中央制御部、１２  記憶部、１３  演算部、１４入出力部、２１  動作種類決定部、２２  動作データ取得部、２３  動作データ記憶部、２４  動き計算部、２５  位置補正部、２６  画像生成部、２７  親子情報取得部、３０  ラグドール、３１  ラグドール本体、３２  ジョイント。
【図１】
0005396434.tif 000003
【図２】
0005396434.tif 000004
【図３】
0005396434.tif 000005
【図４】
0005396434.tif 000006
【図５】
0005396434.tif 000007
【図６】
0005396434.tif 000008
【図７】
0005396434.tif 000009
【図８】
0005396434.tif 000010
【図９】
0005396434.tif 000011
【図１０】
0005396434.tif 000012
【図１１】
0005396434.tif 000013