(57)【特許請求の範囲】
【請求項１】
第１オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第２オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、
前記変更されたパラメータに基づいて、前記第１オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、
前記第１オブジェクトに含まれる剛体の動きに基づいて、前記第１オブジェクトの表面を示す画像を描画する画像描画手段、
としてコンピュータを機能させ、
前記重力パラメータ変更手段は、前記第１オブジェクトに含まれ互いに拘束された複数の剛体のうち１または複数の剛体を、前記第１オブジェクトの表面を示すメッシュに対し前記第２オブジェクトが接触する接触位置と前記第１オブジェクトに含まれる各剛体との近さに基づいて選択し、前記選択された剛体の重力に関するパラメータを変更する、
ことを特徴とするプログラム。
【請求項２】
前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第２オブジェクトとの位置関係に応じて変化するように当該パラメータを変更する、
ことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第２オブジェクトとの接触位置と当該選択された剛体との近さに応じて変化するように当該パラメータを変更する、
ことを特徴とする請求項１に記載のプログラム。
【請求項４】
前記重力パラメータ変更手段は、前記接触位置を中心とし所定の方向に長い回転楕円体が示す範囲に含まれる剛体を選択する、
ことを特徴とする請求項１または３に記載のプログラム。
【請求項５】
前記重力パラメータ変更手段は、前記選択される剛体の位置から前記接触位置へのベクトルと、前記選択される剛体に接続される剛体の位置から前記選択される剛体の位置へのベクトルと、のなす角度が所定の条件を満たすように前記１または複数の剛体を選択する、
ことを特徴とする請求項１，３および４のいずれかに記載のプログラム。
【請求項６】
前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が１フレーム前の当該パラメータの値から増加するか否かによって当該パラメータの変化量を異ならせる、
ことを特徴とする請求項１から５のいずれかに記載のプログラム。
【請求項７】
前記物理計算手段は、前記メッシュと前記第２オブジェクトとの位置関係に基づいて前記第２オブジェクトの動きを計算する、
ことを特徴とする請求項１から６のいずれかに記載のプログラム。
【請求項８】
第１オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第２オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段と、
前記変更されたパラメータに基づいて、前記第１オブジェクトに含まれる剛体の動きを物理計算する物理計算手段と、
前記第１オブジェクトに含まれる剛体の動きに基づいて、前記第１オブジェクトの表面を示す画像を描画する画像描画手段と、を含み、
前記重力パラメータ変更手段は、前記第１オブジェクトに含まれ互いに拘束された複数の剛体のうち１または複数の剛体を、前記第１オブジェクトの表面を示すメッシュに対し前記第２オブジェクトが接触する接触位置と前記第１オブジェクトに含まれる各剛体との近さに基づいて選択し、前記選択された剛体の重力に関するパラメータを変更する、
ことを特徴とする画像生成装置。
【請求項９】
重力パラメータ変更手段が、第１オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第２オブジェクトとの位置関係に応じて変更する重力パラメータ変更ステップと、
物理計算手段が、前記変更されたパラメータに基づいて、前記第１オブジェクトに含まれる剛体の動きを物理計算する物理計算ステップと、
画像描画手段が、前記第１オブジェクトに含まれる剛体の動きに基づいて、前記第１オブジェクトの表面を示す画像を描画する画像描画ステップと、
を含み、
前記重力パラメータ変更ステップでは、前記第１オブジェクトに含まれ互いに拘束された複数の剛体のうち１または複数の剛体を、前記第１オブジェクトの表面を示すメッシュに対し前記第２オブジェクトが接触する接触位置と前記第１オブジェクトに含まれる各剛体との近さに基づいて選択し、前記選択された剛体の重力に関するパラメータを変更する、
ことを特徴とする画像生成方法。
【請求項１０】
第１オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第２オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、
前記変更されたパラメータに基づいて、前記第１オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、
前記第１オブジェクトに含まれる剛体の動きに基づいて、前記第１オブジェクトの表面を示す画像を描画する画像描画手段、
としてコンピュータを機能させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体であって、
前記重力パラメータ変更手段は、前記第１オブジェクトに含まれ互いに拘束された複数の剛体のうち１または複数の剛体を、前記第１オブジェクトの表面を示すメッシュに対し前記第２オブジェクトが接触する接触位置と前記第１オブジェクトに含まれる各剛体との近さに基づいて選択し、前記選択された剛体の重力に関するパラメータを変更する、
ことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像生成装置、画像生成方法、プログラム及び情報記憶媒体に関する。
【背景技術】
【０００２】
最近は、物理シミュレーションと組み合わされたコンピュータグラフィックスにより、仮想空間内の３次元オブジェクトの画像を生成することが盛んに行われている。オブジェクトの表面がたるむことを表現するため、オブジェクトの表面の特定の領域だけ動作のタイミングを遅らせるような計算技術が用いられていた。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従来の技術では、例えば動物の左右のうち一方の側に乗ったりしがみついたりするような場合に、そのしがみつき等に起因するたるみを表現することが難しかった。
【０００４】
本発明は上記課題を鑑みてなされたものであって、その目的は、あるオブジェクトの表面に他のオブジェクトが乗ったりしがみついたりして接触が生じる場合に、前者のオブジェクトの自然なたるみを表現する画像を生成することのできる技術を提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明にかかるプログラムは、第１オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第２オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、前記変更されたパラメータに基づいて、前記第１オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、前記第１オブジェクトに含まれる剛体の動きに基づいて、前記第１オブジェクトの表面を示す画像を描画する画像描画手段、としてコンピュータを機能させる。
【０００６】
また、本発明にかかる画像生成装置は、第１オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第２オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段と、前記変更されたパラメータに基づいて、前記第１オブジェクトに含まれる剛体の動きを物理計算する物理計算手段と、前記第１オブジェクトに含まれる剛体の動きに基づいて、前記第１オブジェクトの表面を示す画像を描画する画像描画手段と、を含むことを特徴とする。
【０００７】
また、本発明にかかる画像生成方法は、第１オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第２オブジェクトとの位置関係に応じて変更する重力パラメータ変更ステップと、前記変更されたパラメータに基づいて、前記第１オブジェクトに含まれる剛体の動きを物理計算する物理計算ステップと、前記第１オブジェクトに含まれる剛体の動きに基づいて、前記第１オブジェクトの表面を示す画像を描画する画像描画捨ステップと、を含むことを特徴とする。
【０００８】
また、本発明にかかるコンピュータ読み取り可能な記憶媒体は、第１オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第２オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、前記変更されたパラメータに基づいて、前記第１オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、前記第１オブジェクトに含まれる剛体の動きに基づいて、前記第１オブジェクトの表面を示す画像を描画する画像描画手段、としてコンピュータを機能させるプログラムを記憶する。
【０００９】
本発明によれば、あるオブジェクトの表面に他のオブジェクトが乗ったりしがみついたりして接触する場合に、前者のオブジェクトの自然なたるみを表現する画像を生成することができる。
【００１０】
本発明の一態様では、前記重力パラメータ変更手段は、第１オブジェクトに含まれ互いに拘束された複数の剛体のうち１または複数の剛体を前記剛体と第２オブジェクトとの位置関係に応じて選択し、前記選択された剛体の重力に関するパラメータを変更してもよい。
【００１１】
本発明の一態様では、前記重力パラメータ変更手段は、前記第１オブジェクトの表面を示すメッシュに対し前記第２オブジェクトが接触する接触位置と前記第１オブジェクトに含まれる各剛体との近さに基づいて、前記第１オブジェクトに含まれる複数の剛体から１または複数の剛体を選択してもよい。
【００１２】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第２オブジェクトとの位置関係に応じて変化するように当該パラメータを変更してもよい。
【００１３】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第２オブジェクトとの接触位置と当該選択された剛体との近さに応じて変化するように当該パラメータを変更してもよい。
【００１４】
本発明の一態様では、前記重力パラメータ変更手段は、前記接触位置を中心とし所定の方向に長い回転楕円体が示す範囲に含まれる剛体を選択してもよい。
【００１５】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択される剛体の位置から前記接触位置へのベクトルと、前記選択される剛体に接続される剛体の位置から前記選択される剛体の位置へのベクトルと、のなす角度が所定の条件を満たすように前記１または複数の剛体を選択してもよい。
【００１６】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が１フレーム前の質量から増加するか否かによって当該パラメータの変化量を異ならせてもよい。
【００１７】
本発明の一態様では、前記物理計算手段は、前記メッシュと前記第２オブジェクトとの位置関係に基づいて前記第２オブジェクトの動きを計算してもよい。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係る画像生成装置の構成を示す図である。
【図２】本発明の実施形態に係る画像生成装置の機能ブロックを示す図である。
【図３】画像生成装置の処理フローの一例を示す図である。
【図４】描画の対象となるオブジェクトの一例を示す図である。
【図５】図４に示すオブジェクトに含まれるラグドールの一例を示す図である。
【図６】スケルトンおよびラグドールとメッシュとの関係の一例を示す図である。
【図７】重力パラメータ変更部の処理フローの一例を示す図である。
【図８】接触点を中心とする影響範囲の一例を示す図である。
【図９】質量を変更するラグドール３２であるか判定するための角度の一例を示す図である。
【図１０】重み係数と近さの値との関係の一例を示す図である。
【図１１】重力の変化によるオブジェクトの変形の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下では、本発明の実施形態について図面に基づいて説明する。図１は本発明の実施形態に係る画像生成装置１の構成を示す図である。画像生成装置１は、中央制御部１１と、記憶部１２と、演算部１３と、入出力部１４とを含んでいる。画像生成装置１は、例えばパーソナルコンピュータや家庭用ゲーム機のように３次元画像を生成する機能を有する機器である。
【００２０】
中央制御部１１は、記憶部１２に格納されているプログラムに従って動作し、演算部１３や入出力部１４を制御する。なお、上記プログラムは、ＤＶＤ−ＲＯＭ等のコンピュータで読み取り可能な情報記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【００２１】
記憶部１２は、ＲＡＭやＲＯＭ等のメモリ素子およびハードディスクドライブ等によって構成されている。記憶部１２は、上記プログラムを格納する。また、記憶部１２は、各部から入力される情報や演算結果を格納する。
【００２２】
演算部１３は、浮動小数点計算などの数値演算を高速に行う機能を有する。演算部１３は、記憶部１２に格納されるプログラムに従って動作し、その計算結果を記憶部１２や入出力部１４に出力する。
【００２３】
入出力部１４は、モニタ等の表示出力デバイスを制御する手段や、マウス等の入力デバイスを制御する手段などによって構成されている。入出力部１４は、中央制御部１１の制御に基づいて、画像データ等を表示出力デバイスに対して出力し、入力デバイスより操作者からの情報を取得する。
【００２４】
図２は、本発明の実施形態に係る画像生成装置１の機能ブロックを示す図である。画像生成装置１は機能的に、オブジェクト情報取得部２１と、重力パラメータ変更部２２と、物理計算部２３と、画像描画部２４と、オブジェクト情報記憶部２５と、を含む。これらの機能は、中央制御部１１や演算部１３が記憶部１２に格納されたプログラムを実行し、入出力部１４を制御することによって実現される。
【００２５】
以下では画像生成装置１の各機能の処理について処理の順序に従って説明する。図３は、本発明の実施形態に係る画像生成装置１の処理フローの一例を示す図である。
【００２６】
オブジェクト情報取得部２１は、中央制御部１１および演算部１３を中心として実現される。オブジェクト情報取得部２１は、オブジェクト情報記憶部２５から、画像を描画する対象となるオブジェクトの情報を取得する（ステップＳ１１１）。ここで、オブジェクト情報記憶部２５は、記憶部１２を中心として実現され、オブジェクトの情報を記憶する。
【００２７】
オブジェクトは複数のスケルトン３１、複数のラグドール３２、複数のジョイント３３、複数のメッシュ３４を含んでおり、オブジェクトの情報はこれらの情報を含んでいる。図４は、描画の対象となるオブジェクトである自オブジェクト３０の一例を示す図であり、図５は図４に示す自オブジェクト３０に含まれるラグドール３２の一例を示す図である。
【００２８】
各スケルトン３１はオブジェクトの骨格となる部分であり、そのオブジェクトを描画する際に用いられる。各スケルトン３１はその情報として中心位置、角度、長さを持つ。ラグドール３２は物理シミュレーションの対象となる剛体である。ラグドール３２のそれぞれはいずれか１つのスケルトン３１と１対１対応している。各ラグドール３２はその情報として中心位置、角度、速度、角速度、基準となる質量である基準質量、慣性モーメント等をもち、ラグドール３２の中心位置と対応するスケルトン３１の中心位置とは同じ座標系でみればほぼ同じ位置にある。ラグドール３２は他のラグドール３２とジョイント３３を介して接続しており、接続されるラグドール３２は互いに拘束されている。ジョイント３３は２つのラグドール３２の接続に対応して存在し、その２つのラグドール３２間の拘束条件を示す。後述する物理計算部２３は各ラグドール３２の動き（速度、角速度、位置、角度等）を他のラグドール３２との拘束条件や外力等に従って計算する。そして計算されたラグドール３２の位置や角度は、対応するスケルトン３１の位置や角度に反映される。複数のメッシュ３４はオブジェクトの表面を構成する。メッシュ３４の形状はポリゴンであり、その情報はポリゴンの頂点を示す情報である。なお、図４および５に示す自オブジェクト３０の例は４本足の大きな動物である。なお、必ずしも全てのラグドール３２が他のラグドール３２と接続されていなくてもよい。例えば、あるオブジェクトを構成するラグドール３２の数が１であり、そのラグドール３２が他のラグドール３２と接続しない単独ラグドールであってもよい。
【００２９】
各メッシュ３４の位置や形は、ラグドール３２の動きにより計算されるスケルトン３１の位置等に応じて定まる。図６は、スケルトン３１およびラグドール３２とメッシュ３４との関係の一例を示す図である。図６の例ではラグドール３２１とラグドール３２２とがジョイント３３１を介して接続されており、ラグドール３２１の中心とスケルトン３１１との中心位置と角度が一致し、かつラグドール３２２の中心とスケルトン３１２の中心位置と角度が一致する。ここで、メッシュ３４１の頂点Ａ〜Ｃの座標は、スケルトン３１１および３１２の中心位置や角度に応じて定まる。本図の例では、例えば、頂点Ａの座標はスケルトン３１１の位置や角度の関数として、頂点Ｃの座標はスケルトン３１２の位置や角度の関数として、頂点Ｂの座標はスケルトン３１１および３１２の位置や角度の関数として求まる。メッシュ３４１は上記の３つの頂点を結ぶ辺に囲まれるポリゴンであり、自オブジェクト３０の表面は、メッシュ３４１を含む複数のメッシュ３４により構成される。なお、自オブジェクト３０に対して他のオブジェクトである他オブジェクト３５がしがみついたり衝突した場合に自オブジェクト３０と他オブジェクト３５とが接触する接触点４０は、いずれかのメッシュ３４上に存在する。自オブジェクト３０から他オブジェクト３５へはこの接触点４０を介して作用が及ぶ。
【００３０】
重力パラメータ変更部２２は、中央制御部１１、記憶部１２および演算部１３を中心として実現される。重力パラメータ変更部２２は各ラグドール３２の重力に関するパラメータを他オブジェクト３５との位置関係に応じて変更する（ステップＳ１１２）。重力に関するパラメータとは、各ラグドール３２にかかる重力を決定するパラメータであり、具体的には質量や重力加速度である。重力パラメータ変更部２２は各ラグドール３２の質量およびそのラグドール３２にかかる重力加速度のうち少なくとも一方を変更する。重力パラメータを変更すると、ラグドール３２にかかる重力が変化し、そのラグドール３２の位置が変化する。その現象をたるみの表現に利用している。以下では質量を変更する例について具体的に説明する。
【００３１】
図７は、重力パラメータ変更部２２の処理フローの一例を示す図である。重力パラメータ変更部２２は、自オブジェクト３０に含まれる各ラグドール３２について、図７に示す処理を行う。はじめに、重力パラメータ変更部２２は、自オブジェクト３０に含まれる各ラグドール３２のうち処理対象のラグドール３２が質量変更対象かを判断する（ステップＳ１２１）。ラグドール３２が質量変更対象であるか否かを示す質量変更対象フラグの値はこれらの処理を行う前に決定されており、オブジェクト情報記憶部２５のラグドール３２の情報の１つとして記憶されている。重力パラメータ変更部２２はオブジェクト情報取得部２１により取得された処理対象のラグドール３２の質量変更対象フラグの値に基づいてそのラグドール３２が質量変更対象か判断する。質量変更対象フラグの値が、そのラグドール３２が質量を変更する対象でないことを示す場合は（ステップＳ１２１のＮ）、このラグドール３２についての処理を終了する。このラグドール３２についての処理を終了する場合、次のラグドール３２があればそれを処理対象のラグドール３２としてステップＳ１２１から処理を行う。
【００３２】
質量変更対象フラグの値が、そのラグドール３２が質量を変更する対象であることを示す場合は（ステップＳ１２１のＹ）、重力パラメータ変更部２２は処理対象のラグドール３２に親ラグドールが存在するか判断する（ステップＳ１２２）。ここで、互いに接続する２つのラグドール３２にはその２つの間で親子関係があり、親となるラグドール３２を親ラグドール、子となるラグドール３２を子ラグドールと呼ぶ。ラグドール３２に親ラグドールが存在しないことは、接続されるラグドール３２の全てが子ラグドールであることと同じである。親ラグドールのないラグドール３２は起点となるラグドール３２であり、オブジェクトごとに１つ（例えば背骨のうち首に近いものに対応するラグドール）存在する。各ラグドール３２の親ラグドールがどれであるかの情報は、オブジェクト情報記憶部２５に記憶されており、重力パラメータ変更部２２はオブジェクト情報取得部２１により取得された親ラグドールの情報に基づいてそのラグドール３２に親ラグドールが存在するか判断する。処理対象のラグドール３２に親ラグドールが存在しない場合は（ステップＳ１２２のＮ）、このラグドール３２についての処理を終了する。
【００３３】
処理対象のラグドール３２に親ラグドールが存在する場合は（ステップＳ１２２のＹ）、重力パラメータ変更部２２は、接触点４０と処理対象となるラグドール３２との近さの値ｄを求める（ステップＳ１２３）。接触点４０のｘｙｚ座標を（ｐｘ，ｐｙ，ｐｚ）、処理対象となるラグドール３２の中心座標を（ｒｘ，ｒｙ，ｒｚ）とすると、近さの値ｄは例えば以下の式で求められる。
【００３４】
ｄ＝（ｐｘ−ｒｘ）２＋ｋ（ｐｙ−ｒｙ）２＋（ｐｚ−ｒｚ）２
【００３５】
ここで、ｋは１より小さい値であり、ｙ方向は重力のかかる方向と等しいとする。重力パラメータ変更部２２は上述の式と、接触点４０の座標と、処理対象となるラグドール３２の中心座標とに基づいて近さの値ｄを計算する。次に重力パラメータ変更部２２は、近さｄが閾値Ｄｍａｘ以下であるか判定する（ステップＳ１２４）。近さｄが閾値Ｄｍａｘより大きければ（ステップＳ１２４のＮ）、このラグドール３２についての処理を終了し、近さｄが閾値Ｄｍａｘ以下であれば（ステップＳ１２４のＹ）ステップＳ１２５以降の処理を行う。
【００３６】
上述の処理により、接触点４０を中心とする一定の範囲の外にあるラグドール３２を質量変更の処理対象から外している。以下ではこの一定の範囲を影響範囲と呼ぶ。図８は接触点を中心とする影響範囲の一例を示す図である。影響範囲は接触点４０を中心としｙ方向に長い回転楕円体の形状になる。重力パラメータ変更部２２は、その回転楕円体が示す影響範囲内にあるラグドール３２（図８の例ではラグドール３２３，３２４）のうち他の条件を満たすラグドール３２の質量を変更する。影響範囲がｙ方向に長いのは、実際に物体をつかむような場合に、そのたるむ範囲が上下方向に大きくなることを表現するためである。こうすることでしがみついたり乗ったりするような動作によるたるみをより自然に反映することが可能になる。
【００３７】
ステップＳ１２５では、重力パラメータ変更部２２は質量を変更するラグドール３２であるか判定するための角度θを求める。図９は、質量を変更するラグドール３２であるか判定するための角度θの一例を示す図である。その角度θは、処理対象となるラグドール３２の親ラグドールの中心位置からその処理対象となるラグドール３２の中心位置へのベクトルＶ１と、処理対象となるラグドール３２の中心位置から接触点４０へのベクトルＶ２と、のなす角度である。次に重力パラメータ変更部２２は、求められた角度の値θが閾値θｍａｘより大きければ（ステップＳ１２６のＮ）、このラグドール３２についての重力に関するパラメータの変更処理を終了する。求められた角度の値が閾値θｍａｘ以下の場合は（ステップＳ１２６のＹ）、ステップＳ１２７以降でラグドール３２に加算する質量を求める。ここで、閾値θｍａｘはラグドール３２ごとに設定されている。ここで、図９をみればわかるように、角度θが９０度から大きくなるにつれ、接触点４０は親ラグドールより遠い位置になる可能性が高くなり、近さの条件も考慮するとある角度を超えると接触点４０は処理対象のラグドール３２から見て親ラグドールより奥になる。つまり角度θを用いることで、接触点４０が親ラグドールの向こう側にあるか否かを簡便に判定することが可能となる。こうすると、例えば親ラグドールが質量変更対象でなく、さらにその親ラグドールをはさんで左右に子ラグドールとなる２つのラグドール３２が接続される場合に、その親ラグドールの左側に接触点４０がある場合に右側にも不意にたるみが生じるような現象を防ぐことができる。なお、たるみを表現するラグドール３２は、骨格に対応するラグドール３２を親ラグドールとして接続するのみであってもよい。このような場合には、親ラグドールではなく単に処理対象となるラグドール３２に接続されるラグドール３２を用いて角度θを求めてもよい。
【００３８】
ステップＳ１２１からＳ１２６の処理は、重力パラメータ変更部２２が、自オブジェクト３０に含まれるラグドール３２のうちから質量等の重力に関するパラメータを変更するラグドール３２をラグドール３２と他オブジェクト３５との位置関係に応じて選択する処理である。次の処理に移ることのできる場合、処理対象となるラグドール３２は質量を変更する対象として選択されている。ラグドール３２を選択する条件は、予め質量変更対象として設定されており、親ラグドールが存在し、接触点４０を中心とする重力方向に長い所定の大きさの回転楕円体より近くにあり、親ラグドールの中心位置からその処理対象となるラグドール３２の中心位置へのベクトルＶ１と、処理対象となるラグドール３２の中心位置から接触点４０へのベクトルＶ２と、のなす角度が閾値以下となることである。
【００３９】
次に、重力パラメータ変更部２２は、選択されたラグドール３２の重力に関するパラメータの値（ここでは質量）をそのラグドール３２と他オブジェクト３５との位置関係、より具体的には接触点４０とラグドール３２との近さに応じて変化するように重力に関するパラメータの値を変更する。まず、重力パラメータ変更部２２は、各ラグドール３２の基準質量に対する加算質量ｍａを求める（ステップＳ１２７）。加算質量ｍａの計算式は以下のようになる。
【００４０】
ｍａ＝ｗ×ｍｃ
【００４１】
ｍｃは接触点４０を介して接触する他オブジェクト３５の質量を示し、ｗは重み係数を示す。加算質量ｍａは、接触点４０を介して接触する他オブジェクト３５の質量ｍｃに、近さの値ｄに応じた重み係数ｗをかけて求める。図１０は、重み係数ｗと近さの値ｄとの関係の一例を示す図である。図１０の例では、近さの値ｄが閾値Ｄｍａｘより小さい値Ｄｍｉｎより小さい場合は重み係数ｗは１となり、近さの値ｄがＤｍｉｎとＤｍａｘの間にある場合は、近さの値ｄが増えるにつれて線形的に重み係数ｗが減っていく、そして近さの値ｄがＤｍａｘとなると重み係数ｗは０となる。こうすることで、ラグドール３２の質量の変化量は近さに応じて変化する。
【００４２】
次に重力パラメータ変更部２２は、加算質量ｍａに基づいて処理対象となるラグドール３２の質量を変更する。重力パラメータ変更部２２は、加算質量ｍａが同じであっても、ラグドール３２の質量の前回の描画時（１フレーム前）の質量からの変化量が、ラグドール３２の質量が増える場合と減る場合とで異なるように変化量を求める。言い換えれば、ラグドール３２と接触点４０との近さや接触する他オブジェクト３５の質量ｍｃが同じであっても、ラグドール３２の質量が１フレーム前の質量から増加する場合と減少する場合とで変化量を異ならせている。より具体的には、１フレーム前における処理対象となるラグドール３２に対する加算質量ｍａｐと、今回の描画（今のフレーム）における加算質量ｍａとを比較する（ステップＳ１２８）。加算質量ｍａが１フレーム前における加算質量ｍａｐより増えていれば（ステップＳ１２８のＹ）、ラグドール３２の質量は基準質量に加算質量ｍａを足したものとする（ステップＳ１２９）。加算質量ｍａが１フレーム前における加算質量ｍａｐより減っている場合は（ステップＳ１２８のＮ）、ラグドール３２の質量ｍは以下の式のように、加算質量ｍａから前回の加算質量ｍａｐを引いた値に１未満の係数をかけた値を前回の質量に足したものとする（ステップＳ１３０）。
【００４３】
ｍ＝ｍｃ＋ｍａｐ＋α（ｍａ−ｍａｐ）
【００４４】
ここで、αは１より小さい正の数である。こうすると、質量が減少する場合には質量が増加する場合より質量の変化に時間がかかる。これにより、たるみが元に戻る時間を長くすることができ、より自然な表現が可能となる。なお、加算質量ｍａが１フレーム前における加算質量ｍａｐより増える場合にも複数フレームにかけて加算質量を反映するようにしてもよい。例えば、ラグドール３２の質量ｍの計算式を以下のようにしてもよい。
【００４５】
ｍ＝ｍｃ＋ｍａｐ＋β（ｍａ−ｍａｐ）
ここで、０＜α＜β＜１
【００４６】
ステップＳ１２１からＳ１３０までの処理をラグドール３２ごとに処理すると、物理シミュレーションに用いる各ラグドール３２の質量が求まる。なお、質量を増減する代わりに重力加速度を増減してもよいし、質量と重力加速度の両方を増減してもよい。
【００４７】
物理計算部２３は、中央制御部１１、記憶部１２および演算部１３を中心として実現される。物理計算部２３は、重力パラメータ変更部２２により変更されたパラメータに基づいて、自オブジェクト３０に含まれるラグドール３２の動きをシミュレーションする物理計算をする（図３に示すステップＳ１１３）。物理計算部２３は、各ラグドール３２とそのラグドール３２に接続される他のラグドール３２との物理的な拘束条件に基づいて、ラグドール３２の動き（速度、角速度など）を計算する。物理計算部２３は、各ラグドール３２の動きを、各ラグドール３２の運動方程式に基づく計算アルゴリズムを用いて計算する。また、物理計算部２３は、各ラグドール３２にかかる重力も反映して各ラグドール３２の動きを計算する。ここで、ジョイント３３を介して接続される２つのラグドール３２の拘束条件は少なくとも２つある。１つは親ラグドールからみたジョイント３３の相対位置が変化せず、かつ子ラグドールからみたジョイント３３の相対位置が変化しない条件である。もう１つは、子ラグドールからジョイント３３へ向かう方向が、予め設定された方向からずれるほど、子ラグドールをそのずれた方向と反対の方向へ向かわせる力が強くなるという条件である。なお、この予め設定された方向は、親ラグドールの向きに対して相対的に定められる方向である。
【００４８】
このような拘束条件の下で物理計算を行うと、ラグドール３２にかかる重力と拘束条件による力とが平衡する位置にラグドール３２がずれるような動きが生じる。しがみつきなどによりラグドール３２の質量や重力加速度が増加すると、ラグドール３２にかかる重力が増え、平衡する位置がしがみつきが無い場合より下方にずれる。
【００４９】
また、物理計算部２３は接触点４０と他オブジェクト３５との拘束条件に基づいて他オブジェクト３５の動きについて物理計算をしている。拘束条件は、メッシュ３４内の接触点４０と他オブジェクト３５との位置関係に関するものであり、例えばしがみつきの場合には、接触点４０の座標と他オブジェクト３５に含まれるラグドール３２の先端の座標が一致するといったものである。これにより、他オブジェクト３５により変化した自オブジェクト３０の形状が、さらに他オブジェクト３５の動きに反映される。
【００５０】
図１１は、重力の変化によるオブジェクトの変形の一例を示す図である。破線はしがみつきなどの接触前の状態を示す。ラグドール３２の重力Ｆが増加すると、ラグドール３２４が下方にずれ、その角度もより下方を向く。
【００５１】
画像描画部２４は、中央制御部１１、演算部１３、記憶部１２および入出力部１４を中心として実現される。画像描画部２４は物理計算部２３により物理計算された各ラグドール３２の動きに基づいて、自オブジェクト３０や他オブジェクト３５の表面を示す３次元画像を描画する。画像描画部２４は、その３次元画像を、入出力部１４を介してモニタなどの表示デバイスに出力する。表示デバイスは生成された３次元画像を表示する。
【００５２】
その物体の３次元画像の情報を生成する手順について説明する。まず画像描画部２４は、各ラグドール３２の位置や角度から、その各ラグドール３２に対応して設けられるスケルトン３１の配置の情報を生成する（ステップＳ１１４）。次に画像描画部２４は、スケルトン３１の座標との位置関係が予め定められている表示用メッシュの頂点座標を生成する（ステップＳ１１５）。ここで、表示用メッシュは、重力パラメータ変更部２２で用いられるメッシュ３４と同じくオブジェクトの表面を構成するポリゴンであり、その頂点座標はスケルトン３１の中心位置や角度に応じて定まる。ただし、重力パラメータ変更部２２で用いられるメッシュ３４に比べると小さくまた数が多い。表示用メッシュは細かな表現をする必要があるからである。次に画像描画部２４は、生成された表示用メッシュの頂点座標を用いて、オブジェクトの表面を示す画像を描画する（ステップＳ１１６）。
【００５３】
これらの処理により、しがみつき等により、図１１の輪郭が破線から実線に変化するようなたるみを表現することができる。また、本実施形態では物理計算に用いる質量や重力加速度などの物理計算に用いるパラメータを変化させるため、自オブジェクト３０が歩いたり走ったりする動作にもしがみつきの影響を反映することが容易にできる。
【符号の説明】
【００５４】
１  画像生成装置、１１  中央制御部、１２  記憶部、１３  演算部、１４  入出力部、２１  オブジェクト情報取得部、２２  重力パラメータ変更部、２３  物理計算部、２４  画像描画部、２５  オブジェクト情報記憶部、３０  自オブジェクト、３１，３１１，３１２  スケルトン、３２，３２１，３２２，３２３，３２４  ラグドール、３３，３３１  ジョイント、３４，３４１  メッシュ、３５  他オブジェクト、４０  接触点。
【図１】
0005396441.tif 000002
【図２】
0005396441.tif 000003
【図３】
0005396441.tif 000004
【図４】
0005396441.tif 000005
【図５】
0005396441.tif 000006
【図６】
0005396441.tif 000007
【図７】
0005396441.tif 000008
【図８】
0005396441.tif 000009
【図９】
0005396441.tif 000010
【図１０】
0005396441.tif 000011
【図１１】
0005396441.tif 000012