画像生成装置、画像生成方法、プログラム及び情報記憶媒体
【課題】あるオブジェクトの表面に他のオブジェクトが接触する場合に、前者のオブジェクトの自然なたるみを表現する技術を提供すること。
【解決手段】プログラムは、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更するパラメータ変更手段、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、としてコンピュータを機能させる。
【解決手段】プログラムは、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更するパラメータ変更手段、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、としてコンピュータを機能させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は画像生成装置、画像生成方法、プログラム及び情報記憶媒体に関する。
【背景技術】
【0002】
最近は、物理シミュレーションと組み合わされたコンピュータグラフィックスにより、仮想空間内の3次元オブジェクトの画像を生成することが盛んに行われている。オブジェクトの表面がたるむことを表現するため、オブジェクトの表面の特定の領域だけ動作のタイミングを遅らせるような計算技術が用いられていた。
【発明の概要】
【発明が解決しようとする課題】
【0003】
従来の技術では、例えば動物の左右のうち一方の側に乗ったりしがみついたりするような場合に、そのしがみつき等に起因するたるみを表現することが難しかった。
【0004】
本発明は上記課題を鑑みてなされたものであって、その目的は、あるオブジェクトの表面に他のオブジェクトが乗ったりしがみついたりして接触が生じる場合に、前者のオブジェクトの自然なたるみを表現する画像を生成することのできる技術を提供することにある。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明にかかるプログラムは、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、としてコンピュータを機能させる。
【0006】
また、本発明にかかる画像生成装置は、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段と、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段と、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段と、を含むことを特徴とする。
【0007】
また、本発明にかかる画像生成方法は、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更ステップと、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算ステップと、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画捨ステップと、を含むことを特徴とする。
【0008】
また、本発明にかかるコンピュータ読み取り可能な記憶媒体は、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、としてコンピュータを機能させるプログラムを記憶する。
【0009】
本発明によれば、あるオブジェクトの表面に他のオブジェクトが乗ったりしがみついたりして接触する場合に、前者のオブジェクトの自然なたるみを表現する画像を生成することができる。
【0010】
本発明の一態様では、前記重力パラメータ変更手段は、第1オブジェクトに含まれ互いに拘束された複数の剛体のうち1または複数の剛体を前記剛体と第2オブジェクトとの位置関係に応じて選択し、前記選択された剛体の重力に関するパラメータを変更してもよい。
【0011】
本発明の一態様では、前記重力パラメータ変更手段は、前記第1オブジェクトの表面を示すメッシュに対し前記第2オブジェクトが接触する接触位置と前記第1オブジェクトに含まれる各剛体との近さに基づいて、前記第1オブジェクトに含まれる複数の剛体から1または複数の剛体を選択してもよい。
【0012】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第2オブジェクトとの位置関係に応じて変化するように当該パラメータを変更してもよい。
【0013】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第2オブジェクトとの接触位置と当該選択された剛体との近さに応じて変化するように当該パラメータを変更してもよい。
【0014】
本発明の一態様では、前記重力パラメータ変更手段は、前記接触位置を中心とし所定の方向に長い回転楕円体が示す範囲に含まれる剛体を選択してもよい。
【0015】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択される剛体の位置から前記接触位置へのベクトルと、前記選択される剛体に接続される剛体の位置から前記選択される剛体の位置へのベクトルと、のなす角度が所定の条件を満たすように前記1または複数の剛体を選択してもよい。
【0016】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が1フレーム前の質量から増加するか否かによって当該パラメータの変化量を異ならせてもよい。
【0017】
本発明の一態様では、前記物理計算手段は、前記メッシュと前記第2オブジェクトとの位置関係に基づいて前記第2オブジェクトの動きを計算してもよい。
【図面の簡単な説明】
【0018】
【図1】本発明の実施形態に係る画像生成装置の構成を示す図である。
【図2】本発明の実施形態に係る画像生成装置の機能ブロックを示す図である。
【図3】画像生成装置の処理フローの一例を示す図である。
【図4】描画の対象となるオブジェクトの一例を示す図である。
【図5】図4に示すオブジェクトに含まれるラグドールの一例を示す図である。
【図6】スケルトンおよびラグドールとメッシュとの関係の一例を示す図である。
【図7】重力パラメータ変更部の処理フローの一例を示す図である。
【図8】接触点を中心とする影響範囲の一例を示す図である。
【図9】質量を変更するラグドール32であるか判定するための角度の一例を示す図である。
【図10】重み係数と近さの値との関係の一例を示す図である。
【図11】重力の変化によるオブジェクトの変形の一例を示す図である。
【発明を実施するための形態】
【0019】
以下では、本発明の実施形態について図面に基づいて説明する。図1は本発明の実施形態に係る画像生成装置1の構成を示す図である。画像生成装置1は、中央制御部11と、記憶部12と、演算部13と、入出力部14とを含んでいる。画像生成装置1は、例えばパーソナルコンピュータや家庭用ゲーム機のように3次元画像を生成する機能を有する機器である。
【0020】
中央制御部11は、記憶部12に格納されているプログラムに従って動作し、演算部13や入出力部14を制御する。なお、上記プログラムは、DVD−ROM等のコンピュータで読み取り可能な情報記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【0021】
記憶部12は、RAMやROM等のメモリ素子およびハードディスクドライブ等によって構成されている。記憶部12は、上記プログラムを格納する。また、記憶部12は、各部から入力される情報や演算結果を格納する。
【0022】
演算部13は、浮動小数点計算などの数値演算を高速に行う機能を有する。演算部13は、記憶部12に格納されるプログラムに従って動作し、その計算結果を記憶部12や入出力部14に出力する。
【0023】
入出力部14は、モニタ等の表示出力デバイスを制御する手段や、マウス等の入力デバイスを制御する手段などによって構成されている。入出力部14は、中央制御部11の制御に基づいて、画像データ等を表示出力デバイスに対して出力し、入力デバイスより操作者からの情報を取得する。
【0024】
図2は、本発明の実施形態に係る画像生成装置1の機能ブロックを示す図である。画像生成装置1は機能的に、オブジェクト情報取得部21と、重力パラメータ変更部22と、物理計算部23と、画像描画部24と、オブジェクト情報記憶部25と、を含む。これらの機能は、中央制御部11や演算部13が記憶部12に格納されたプログラムを実行し、入出力部14を制御することによって実現される。
【0025】
以下では画像生成装置1の各機能の処理について処理の順序に従って説明する。図3は、本発明の実施形態に係る画像生成装置1の処理フローの一例を示す図である。
【0026】
オブジェクト情報取得部21は、中央制御部11および演算部13を中心として実現される。オブジェクト情報取得部21は、オブジェクト情報記憶部25から、画像を描画する対象となるオブジェクトの情報を取得する(ステップS111)。ここで、オブジェクト情報記憶部25は、記憶部12を中心として実現され、オブジェクトの情報を記憶する。
【0027】
オブジェクトは複数のスケルトン31、複数のラグドール32、複数のジョイント33、複数のメッシュ34を含んでおり、オブジェクトの情報はこれらの情報を含んでいる。図4は、描画の対象となるオブジェクトである自オブジェクト30の一例を示す図であり、図5は図4に示す自オブジェクト30に含まれるラグドール32の一例を示す図である。
【0028】
各スケルトン31はオブジェクトの骨格となる部分であり、そのオブジェクトを描画する際に用いられる。各スケルトン31はその情報として中心位置、角度、長さを持つ。ラグドール32は物理シミュレーションの対象となる剛体である。ラグドール32のそれぞれはいずれか1つのスケルトン31と1対1対応している。各ラグドール32はその情報として中心位置、角度、速度、角速度、基準となる質量である基準質量、慣性モーメント等をもち、ラグドール32の中心位置と対応するスケルトン31の中心位置とは同じ座標系でみればほぼ同じ位置にある。ラグドール32は他のラグドール32とジョイント33を介して接続しており、接続されるラグドール32は互いに拘束されている。ジョイント33は2つのラグドール32の接続に対応して存在し、その2つのラグドール32間の拘束条件を示す。後述する物理計算部23は各ラグドール32の動き(速度、角速度、位置、角度等)を他のラグドール32との拘束条件や外力等に従って計算する。そして計算されたラグドール32の位置や角度は、対応するスケルトン31の位置や角度に反映される。複数のメッシュ34はオブジェクトの表面を構成する。メッシュ34の形状はポリゴンであり、その情報はポリゴンの頂点を示す情報である。なお、図4および5に示す自オブジェクト30の例は4本足の大きな動物である。なお、必ずしも全てのラグドール32が他のラグドール32と接続されていなくてもよい。例えば、あるオブジェクトを構成するラグドール32の数が1であり、そのラグドール32が他のラグドール32と接続しない単独ラグドールであってもよい。
【0029】
各メッシュ34の位置や形は、ラグドール32の動きにより計算されるスケルトン31の位置等に応じて定まる。図6は、スケルトン31およびラグドール32とメッシュ34との関係の一例を示す図である。図6の例ではラグドール321とラグドール322とがジョイント331を介して接続されており、ラグドール321の中心とスケルトン311との中心位置と角度が一致し、かつラグドール322の中心とスケルトン312の中心位置と角度が一致する。ここで、メッシュ341の頂点A〜Cの座標は、スケルトン311および312の中心位置や角度に応じて定まる。本図の例では、例えば、頂点Aの座標はスケルトン311の位置や角度の関数として、頂点Cの座標はスケルトン312の位置や角度の関数として、頂点Bの座標はスケルトン311および312の位置や角度の関数として求まる。メッシュ341は上記の3つの頂点を結ぶ辺に囲まれるポリゴンであり、自オブジェクト30の表面は、メッシュ341を含む複数のメッシュ34により構成される。なお、自オブジェクト30に対して他のオブジェクトである他オブジェクト35がしがみついたり衝突した場合に自オブジェクト30と他オブジェクト35とが接触する接触点40は、いずれかのメッシュ34上に存在する。自オブジェクト30から他オブジェクト35へはこの接触点40を介して作用が及ぶ。
【0030】
重力パラメータ変更部22は、中央制御部11、記憶部12および演算部13を中心として実現される。重力パラメータ変更部22は各ラグドール32の重力に関するパラメータを他オブジェクト35との位置関係に応じて変更する(ステップS112)。重力に関するパラメータとは、各ラグドール32にかかる重力を決定するパラメータであり、具体的には質量や重力加速度である。重力パラメータ変更部22は各ラグドール32の質量およびそのラグドール32にかかる重力加速度のうち少なくとも一方を変更する。重力パラメータを変更すると、ラグドール32にかかる重力が変化し、そのラグドール32の位置が変化する。その現象をたるみの表現に利用している。以下では質量を変更する例について具体的に説明する。
【0031】
図7は、重力パラメータ変更部22の処理フローの一例を示す図である。重力パラメータ変更部22は、自オブジェクト30に含まれる各ラグドール32について、図7に示す処理を行う。はじめに、重力パラメータ変更部22は、自オブジェクト30に含まれる各ラグドール32のうち処理対象のラグドール32が質量変更対象かを判断する(ステップS121)。ラグドール32が質量変更対象であるか否かを示す質量変更対象フラグの値はこれらの処理を行う前に決定されており、オブジェクト情報記憶部25のラグドール32の情報の1つとして記憶されている。重力パラメータ変更部22はオブジェクト情報取得部21により取得された処理対象のラグドール32の質量変更対象フラグの値に基づいてそのラグドール32が質量変更対象か判断する。質量変更対象フラグの値が、そのラグドール32が質量を変更する対象でないことを示す場合は(ステップS121のN)、このラグドール32についての処理を終了する。このラグドール32についての処理を終了する場合、次のラグドール32があればそれを処理対象のラグドール32としてステップS121から処理を行う。
【0032】
質量変更対象フラグの値が、そのラグドール32が質量を変更する対象であることを示す場合は(ステップS121のY)、重力パラメータ変更部22は処理対象のラグドール32に親ラグドールが存在するか判断する(ステップS122)。ここで、互いに接続する2つのラグドール32にはその2つの間で親子関係があり、親となるラグドール32を親ラグドール、子となるラグドール32を子ラグドールと呼ぶ。ラグドール32に親ラグドールが存在しないことは、接続されるラグドール32の全てが子ラグドールであることと同じである。親ラグドールのないラグドール32は起点となるラグドール32であり、オブジェクトごとに1つ(例えば背骨のうち首に近いものに対応するラグドール)存在する。各ラグドール32の親ラグドールがどれであるかの情報は、オブジェクト情報記憶部25に記憶されており、重力パラメータ変更部22はオブジェクト情報取得部21により取得された親ラグドールの情報に基づいてそのラグドール32に親ラグドールが存在するか判断する。処理対象のラグドール32に親ラグドールが存在しない場合は(ステップS122のN)、このラグドール32についての処理を終了する。
【0033】
処理対象のラグドール32に親ラグドールが存在する場合は(ステップS122のY)、重力パラメータ変更部22は、接触点40と処理対象となるラグドール32との近さの値dを求める(ステップS123)。接触点40のxyz座標を(px,py,pz)、処理対象となるラグドール32の中心座標を(rx,ry,rz)とすると、近さの値dは例えば以下の式で求められる。
【0034】
d=(px−rx)2+k(py−ry)2+(pz−rz)2
【0035】
ここで、kは1より小さい値であり、y方向は重力のかかる方向と等しいとする。重力パラメータ変更部22は上述の式と、接触点40の座標と、処理対象となるラグドール32の中心座標とに基づいて近さの値dを計算する。次に重力パラメータ変更部22は、近さdが閾値Dmax以下であるか判定する(ステップS124)。近さdが閾値Dmaxより大きければ(ステップS124のN)、このラグドール32についての処理を終了し、近さdが閾値Dmax以下であれば(ステップS124のY)ステップS125以降の処理を行う。
【0036】
上述の処理により、接触点40を中心とする一定の範囲の外にあるラグドール32を質量変更の処理対象から外している。以下ではこの一定の範囲を影響範囲と呼ぶ。図8は接触点を中心とする影響範囲の一例を示す図である。影響範囲は接触点40を中心としy方向に長い回転楕円体の形状になる。重力パラメータ変更部22は、その回転楕円体が示す影響範囲内にあるラグドール32(図8の例ではラグドール323,324)のうち他の条件を満たすラグドール32の質量を変更する。影響範囲がy方向に長いのは、実際に物体をつかむような場合に、そのたるむ範囲が上下方向に大きくなることを表現するためである。こうすることでしがみついたり乗ったりするような動作によるたるみをより自然に反映することが可能になる。
【0037】
ステップS125では、重力パラメータ変更部22は質量を変更するラグドール32であるか判定するための角度θを求める。図9は、質量を変更するラグドール32であるか判定するための角度θの一例を示す図である。その角度θは、処理対象となるラグドール32の親ラグドールの中心位置からその処理対象となるラグドール32の中心位置へのベクトルV1と、処理対象となるラグドール32の中心位置から接触点40へのベクトルV2と、のなす角度である。次に重力パラメータ変更部22は、求められた角度の値θが閾値θmaxより大きければ(ステップS126のN)、このラグドール32についての重力に関するパラメータの変更処理を終了する。求められた角度の値が閾値θmax以下の場合は(ステップS126のY)、ステップS127以降でラグドール32に加算する質量を求める。ここで、閾値θmaxはラグドール32ごとに設定されている。ここで、図9をみればわかるように、角度θが90度から大きくなるにつれ、接触点40は親ラグドールより遠い位置になる可能性が高くなり、近さの条件も考慮するとある角度を超えると接触点40は処理対象のラグドール32から見て親ラグドールより奥になる。つまり角度θを用いることで、接触点40が親ラグドールの向こう側にあるか否かを簡便に判定することが可能となる。こうすると、例えば親ラグドールが質量変更対象でなく、さらにその親ラグドールをはさんで左右に子ラグドールとなる2つのラグドール32が接続される場合に、その親ラグドールの左側に接触点40がある場合に右側にも不意にたるみが生じるような現象を防ぐことができる。なお、たるみを表現するラグドール32は、骨格に対応するラグドール32を親ラグドールとして接続するのみであってもよい。このような場合には、親ラグドールではなく単に処理対象となるラグドール32に接続されるラグドール32を用いて角度θを求めてもよい。
【0038】
ステップS121からS126の処理は、重力パラメータ変更部22が、自オブジェクト30に含まれるラグドール32のうちから質量等の重力に関するパラメータを変更するラグドール32をラグドール32と他オブジェクト35との位置関係に応じて選択する処理である。次の処理に移ることのできる場合、処理対象となるラグドール32は質量を変更する対象として選択されている。ラグドール32を選択する条件は、予め質量変更対象として設定されており、親ラグドールが存在し、接触点40を中心とする重力方向に長い所定の大きさの回転楕円体より近くにあり、親ラグドールの中心位置からその処理対象となるラグドール32の中心位置へのベクトルV1と、処理対象となるラグドール32の中心位置から接触点40へのベクトルV2と、のなす角度が閾値以下となることである。
【0039】
次に、重力パラメータ変更部22は、選択されたラグドール32の重力に関するパラメータの値(ここでは質量)をそのラグドール32と他オブジェクト35との位置関係、より具体的には接触点40とラグドール32との近さに応じて変化するように重力に関するパラメータの値を変更する。まず、重力パラメータ変更部22は、各ラグドール32の基準質量に対する加算質量maを求める(ステップS127)。加算質量maの計算式は以下のようになる。
【0040】
ma=w×mc
【0041】
mcは接触点40を介して接触する他オブジェクト35の質量を示し、wは重み係数を示す。加算質量maは、接触点40を介して接触する他オブジェクト35の質量mcに、近さの値dに応じた重み係数wをかけて求める。図10は、重み係数wと近さの値dとの関係の一例を示す図である。図10の例では、近さの値dが閾値Dmaxより小さい値Dminより小さい場合は重み係数wは1となり、近さの値dがDminとDmaxの間にある場合は、近さの値dが増えるにつれて線形的に重み係数wが減っていく、そして近さの値dがDmaxとなると重み係数wは0となる。こうすることで、ラグドール32の質量の変化量は近さに応じて変化する。
【0042】
次に重力パラメータ変更部22は、加算質量maに基づいて処理対象となるラグドール32の質量を変更する。重力パラメータ変更部22は、加算質量maが同じであっても、ラグドール32の質量の前回の描画時(1フレーム前)の質量からの変化量が、ラグドール32の質量が増える場合と減る場合とで異なるように変化量を求める。言い換えれば、ラグドール32と接触点40との近さや接触する他オブジェクト35の質量mcが同じであっても、ラグドール32の質量が1フレーム前の質量から増加する場合と減少する場合とで変化量を異ならせている。より具体的には、1フレーム前における処理対象となるラグドール32に対する加算質量mapと、今回の描画(今のフレーム)における加算質量maとを比較する(ステップS128)。加算質量maが1フレーム前における加算質量mapより増えていれば(ステップS128のY)、ラグドール32の質量は基準質量に加算質量maを足したものとする(ステップS129)。加算質量maが1フレーム前における加算質量mapより減っている場合は(ステップS128のN)、ラグドール32の質量mは以下の式のように、加算質量maから前回の加算質量mapを引いた値に1未満の係数をかけた値を前回の質量に足したものとする(ステップS130)。
【0043】
m=mc+map+α(ma−map)
【0044】
ここで、αは1より小さい正の数である。こうすると、質量が減少する場合には質量が増加する場合より質量の変化に時間がかかる。これにより、たるみが元に戻る時間を長くすることができ、より自然な表現が可能となる。なお、加算質量maが1フレーム前における加算質量mapより増える場合にも複数フレームにかけて加算質量を反映するようにしてもよい。例えば、ラグドール32の質量mの計算式を以下のようにしてもよい。
【0045】
m=mc+map+β(ma−map)
ここで、0<α<β<1
【0046】
ステップS121からS130までの処理をラグドール32ごとに処理すると、物理シミュレーションに用いる各ラグドール32の質量が求まる。なお、質量を増減する代わりに重力加速度を増減してもよいし、質量と重力加速度の両方を増減してもよい。
【0047】
物理計算部23は、中央制御部11、記憶部12および演算部13を中心として実現される。物理計算部23は、重力パラメータ変更部22により変更されたパラメータに基づいて、自オブジェクト30に含まれるラグドール32の動きをシミュレーションする物理計算をする(図3に示すステップS113)。物理計算部23は、各ラグドール32とそのラグドール32に接続される他のラグドール32との物理的な拘束条件に基づいて、ラグドール32の動き(速度、角速度など)を計算する。物理計算部23は、各ラグドール32の動きを、各ラグドール32の運動方程式に基づく計算アルゴリズムを用いて計算する。また、物理計算部23は、各ラグドール32にかかる重力も反映して各ラグドール32の動きを計算する。ここで、ジョイント33を介して接続される2つのラグドール32の拘束条件は少なくとも2つある。1つは親ラグドールからみたジョイント33の相対位置が変化せず、かつ子ラグドールからみたジョイント33の相対位置が変化しない条件である。もう1つは、子ラグドールからジョイント33へ向かう方向が、予め設定された方向からずれるほど、子ラグドールをそのずれた方向と反対の方向へ向かわせる力が強くなるという条件である。なお、この予め設定された方向は、親ラグドールの向きに対して相対的に定められる方向である。
【0048】
このような拘束条件の下で物理計算を行うと、ラグドール32にかかる重力と拘束条件による力とが平衡する位置にラグドール32がずれるような動きが生じる。しがみつきなどによりラグドール32の質量や重力加速度が増加すると、ラグドール32にかかる重力が増え、平衡する位置がしがみつきが無い場合より下方にずれる。
【0049】
また、物理計算部23は接触点40と他オブジェクト35との拘束条件に基づいて他オブジェクト35の動きについて物理計算をしている。拘束条件は、メッシュ34内の接触点40と他オブジェクト35との位置関係に関するものであり、例えばしがみつきの場合には、接触点40の座標と他オブジェクト35に含まれるラグドール32の先端の座標が一致するといったものである。これにより、他オブジェクト35により変化した自オブジェクト30の形状が、さらに他オブジェクト35の動きに反映される。
【0050】
図11は、重力の変化によるオブジェクトの変形の一例を示す図である。破線はしがみつきなどの接触前の状態を示す。ラグドール32の重力Fが増加すると、ラグドール324が下方にずれ、その角度もより下方を向く。
【0051】
画像描画部24は、中央制御部11、演算部13、記憶部12および入出力部14を中心として実現される。画像描画部24は物理計算部23により物理計算された各ラグドール32の動きに基づいて、自オブジェクト30や他オブジェクト35の表面を示す3次元画像を描画する。画像描画部24は、その3次元画像を、入出力部14を介してモニタなどの表示デバイスに出力する。表示デバイスは生成された3次元画像を表示する。
【0052】
その物体の3次元画像の情報を生成する手順について説明する。まず画像描画部24は、各ラグドール32の位置や角度から、その各ラグドール32に対応して設けられるスケルトン31の配置の情報を生成する(ステップS114)。次に画像描画部24は、スケルトン31の座標との位置関係が予め定められている表示用メッシュの頂点座標を生成する(ステップS115)。ここで、表示用メッシュは、重力パラメータ変更部22で用いられるメッシュ34と同じくオブジェクトの表面を構成するポリゴンであり、その頂点座標はスケルトン31の中心位置や角度に応じて定まる。ただし、重力パラメータ変更部22で用いられるメッシュ34に比べると小さくまた数が多い。表示用メッシュは細かな表現をする必要があるからである。次に画像描画部24は、生成された表示用メッシュの頂点座標を用いて、オブジェクトの表面を示す画像を描画する(ステップS116)。
【0053】
これらの処理により、しがみつき等により、図11の輪郭が破線から実線に変化するようなたるみを表現することができる。また、本実施形態では物理計算に用いる質量や重力加速度などの物理計算に用いるパラメータを変化させるため、自オブジェクト30が歩いたり走ったりする動作にもしがみつきの影響を反映することが容易にできる。
【符号の説明】
【0054】
1 画像生成装置、11 中央制御部、12 記憶部、13 演算部、14 入出力部、21 オブジェクト情報取得部、22 重力パラメータ変更部、23 物理計算部、24 画像描画部、25 オブジェクト情報記憶部、30 自オブジェクト、31,311,312 スケルトン、32,321,322,323,324 ラグドール、33,331 ジョイント、34,341 メッシュ、35 他オブジェクト、40 接触点。
【技術分野】
【0001】
本発明は画像生成装置、画像生成方法、プログラム及び情報記憶媒体に関する。
【背景技術】
【0002】
最近は、物理シミュレーションと組み合わされたコンピュータグラフィックスにより、仮想空間内の3次元オブジェクトの画像を生成することが盛んに行われている。オブジェクトの表面がたるむことを表現するため、オブジェクトの表面の特定の領域だけ動作のタイミングを遅らせるような計算技術が用いられていた。
【発明の概要】
【発明が解決しようとする課題】
【0003】
従来の技術では、例えば動物の左右のうち一方の側に乗ったりしがみついたりするような場合に、そのしがみつき等に起因するたるみを表現することが難しかった。
【0004】
本発明は上記課題を鑑みてなされたものであって、その目的は、あるオブジェクトの表面に他のオブジェクトが乗ったりしがみついたりして接触が生じる場合に、前者のオブジェクトの自然なたるみを表現する画像を生成することのできる技術を提供することにある。
【課題を解決するための手段】
【0005】
上記課題を解決するために、本発明にかかるプログラムは、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、としてコンピュータを機能させる。
【0006】
また、本発明にかかる画像生成装置は、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段と、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段と、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段と、を含むことを特徴とする。
【0007】
また、本発明にかかる画像生成方法は、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更ステップと、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算ステップと、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画捨ステップと、を含むことを特徴とする。
【0008】
また、本発明にかかるコンピュータ読み取り可能な記憶媒体は、第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、としてコンピュータを機能させるプログラムを記憶する。
【0009】
本発明によれば、あるオブジェクトの表面に他のオブジェクトが乗ったりしがみついたりして接触する場合に、前者のオブジェクトの自然なたるみを表現する画像を生成することができる。
【0010】
本発明の一態様では、前記重力パラメータ変更手段は、第1オブジェクトに含まれ互いに拘束された複数の剛体のうち1または複数の剛体を前記剛体と第2オブジェクトとの位置関係に応じて選択し、前記選択された剛体の重力に関するパラメータを変更してもよい。
【0011】
本発明の一態様では、前記重力パラメータ変更手段は、前記第1オブジェクトの表面を示すメッシュに対し前記第2オブジェクトが接触する接触位置と前記第1オブジェクトに含まれる各剛体との近さに基づいて、前記第1オブジェクトに含まれる複数の剛体から1または複数の剛体を選択してもよい。
【0012】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第2オブジェクトとの位置関係に応じて変化するように当該パラメータを変更してもよい。
【0013】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第2オブジェクトとの接触位置と当該選択された剛体との近さに応じて変化するように当該パラメータを変更してもよい。
【0014】
本発明の一態様では、前記重力パラメータ変更手段は、前記接触位置を中心とし所定の方向に長い回転楕円体が示す範囲に含まれる剛体を選択してもよい。
【0015】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択される剛体の位置から前記接触位置へのベクトルと、前記選択される剛体に接続される剛体の位置から前記選択される剛体の位置へのベクトルと、のなす角度が所定の条件を満たすように前記1または複数の剛体を選択してもよい。
【0016】
本発明の一態様では、前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が1フレーム前の質量から増加するか否かによって当該パラメータの変化量を異ならせてもよい。
【0017】
本発明の一態様では、前記物理計算手段は、前記メッシュと前記第2オブジェクトとの位置関係に基づいて前記第2オブジェクトの動きを計算してもよい。
【図面の簡単な説明】
【0018】
【図1】本発明の実施形態に係る画像生成装置の構成を示す図である。
【図2】本発明の実施形態に係る画像生成装置の機能ブロックを示す図である。
【図3】画像生成装置の処理フローの一例を示す図である。
【図4】描画の対象となるオブジェクトの一例を示す図である。
【図5】図4に示すオブジェクトに含まれるラグドールの一例を示す図である。
【図6】スケルトンおよびラグドールとメッシュとの関係の一例を示す図である。
【図7】重力パラメータ変更部の処理フローの一例を示す図である。
【図8】接触点を中心とする影響範囲の一例を示す図である。
【図9】質量を変更するラグドール32であるか判定するための角度の一例を示す図である。
【図10】重み係数と近さの値との関係の一例を示す図である。
【図11】重力の変化によるオブジェクトの変形の一例を示す図である。
【発明を実施するための形態】
【0019】
以下では、本発明の実施形態について図面に基づいて説明する。図1は本発明の実施形態に係る画像生成装置1の構成を示す図である。画像生成装置1は、中央制御部11と、記憶部12と、演算部13と、入出力部14とを含んでいる。画像生成装置1は、例えばパーソナルコンピュータや家庭用ゲーム機のように3次元画像を生成する機能を有する機器である。
【0020】
中央制御部11は、記憶部12に格納されているプログラムに従って動作し、演算部13や入出力部14を制御する。なお、上記プログラムは、DVD−ROM等のコンピュータで読み取り可能な情報記憶媒体に格納されて提供されるものであってもよいし、インターネット等のネットワークを介して提供されるものであってもよい。
【0021】
記憶部12は、RAMやROM等のメモリ素子およびハードディスクドライブ等によって構成されている。記憶部12は、上記プログラムを格納する。また、記憶部12は、各部から入力される情報や演算結果を格納する。
【0022】
演算部13は、浮動小数点計算などの数値演算を高速に行う機能を有する。演算部13は、記憶部12に格納されるプログラムに従って動作し、その計算結果を記憶部12や入出力部14に出力する。
【0023】
入出力部14は、モニタ等の表示出力デバイスを制御する手段や、マウス等の入力デバイスを制御する手段などによって構成されている。入出力部14は、中央制御部11の制御に基づいて、画像データ等を表示出力デバイスに対して出力し、入力デバイスより操作者からの情報を取得する。
【0024】
図2は、本発明の実施形態に係る画像生成装置1の機能ブロックを示す図である。画像生成装置1は機能的に、オブジェクト情報取得部21と、重力パラメータ変更部22と、物理計算部23と、画像描画部24と、オブジェクト情報記憶部25と、を含む。これらの機能は、中央制御部11や演算部13が記憶部12に格納されたプログラムを実行し、入出力部14を制御することによって実現される。
【0025】
以下では画像生成装置1の各機能の処理について処理の順序に従って説明する。図3は、本発明の実施形態に係る画像生成装置1の処理フローの一例を示す図である。
【0026】
オブジェクト情報取得部21は、中央制御部11および演算部13を中心として実現される。オブジェクト情報取得部21は、オブジェクト情報記憶部25から、画像を描画する対象となるオブジェクトの情報を取得する(ステップS111)。ここで、オブジェクト情報記憶部25は、記憶部12を中心として実現され、オブジェクトの情報を記憶する。
【0027】
オブジェクトは複数のスケルトン31、複数のラグドール32、複数のジョイント33、複数のメッシュ34を含んでおり、オブジェクトの情報はこれらの情報を含んでいる。図4は、描画の対象となるオブジェクトである自オブジェクト30の一例を示す図であり、図5は図4に示す自オブジェクト30に含まれるラグドール32の一例を示す図である。
【0028】
各スケルトン31はオブジェクトの骨格となる部分であり、そのオブジェクトを描画する際に用いられる。各スケルトン31はその情報として中心位置、角度、長さを持つ。ラグドール32は物理シミュレーションの対象となる剛体である。ラグドール32のそれぞれはいずれか1つのスケルトン31と1対1対応している。各ラグドール32はその情報として中心位置、角度、速度、角速度、基準となる質量である基準質量、慣性モーメント等をもち、ラグドール32の中心位置と対応するスケルトン31の中心位置とは同じ座標系でみればほぼ同じ位置にある。ラグドール32は他のラグドール32とジョイント33を介して接続しており、接続されるラグドール32は互いに拘束されている。ジョイント33は2つのラグドール32の接続に対応して存在し、その2つのラグドール32間の拘束条件を示す。後述する物理計算部23は各ラグドール32の動き(速度、角速度、位置、角度等)を他のラグドール32との拘束条件や外力等に従って計算する。そして計算されたラグドール32の位置や角度は、対応するスケルトン31の位置や角度に反映される。複数のメッシュ34はオブジェクトの表面を構成する。メッシュ34の形状はポリゴンであり、その情報はポリゴンの頂点を示す情報である。なお、図4および5に示す自オブジェクト30の例は4本足の大きな動物である。なお、必ずしも全てのラグドール32が他のラグドール32と接続されていなくてもよい。例えば、あるオブジェクトを構成するラグドール32の数が1であり、そのラグドール32が他のラグドール32と接続しない単独ラグドールであってもよい。
【0029】
各メッシュ34の位置や形は、ラグドール32の動きにより計算されるスケルトン31の位置等に応じて定まる。図6は、スケルトン31およびラグドール32とメッシュ34との関係の一例を示す図である。図6の例ではラグドール321とラグドール322とがジョイント331を介して接続されており、ラグドール321の中心とスケルトン311との中心位置と角度が一致し、かつラグドール322の中心とスケルトン312の中心位置と角度が一致する。ここで、メッシュ341の頂点A〜Cの座標は、スケルトン311および312の中心位置や角度に応じて定まる。本図の例では、例えば、頂点Aの座標はスケルトン311の位置や角度の関数として、頂点Cの座標はスケルトン312の位置や角度の関数として、頂点Bの座標はスケルトン311および312の位置や角度の関数として求まる。メッシュ341は上記の3つの頂点を結ぶ辺に囲まれるポリゴンであり、自オブジェクト30の表面は、メッシュ341を含む複数のメッシュ34により構成される。なお、自オブジェクト30に対して他のオブジェクトである他オブジェクト35がしがみついたり衝突した場合に自オブジェクト30と他オブジェクト35とが接触する接触点40は、いずれかのメッシュ34上に存在する。自オブジェクト30から他オブジェクト35へはこの接触点40を介して作用が及ぶ。
【0030】
重力パラメータ変更部22は、中央制御部11、記憶部12および演算部13を中心として実現される。重力パラメータ変更部22は各ラグドール32の重力に関するパラメータを他オブジェクト35との位置関係に応じて変更する(ステップS112)。重力に関するパラメータとは、各ラグドール32にかかる重力を決定するパラメータであり、具体的には質量や重力加速度である。重力パラメータ変更部22は各ラグドール32の質量およびそのラグドール32にかかる重力加速度のうち少なくとも一方を変更する。重力パラメータを変更すると、ラグドール32にかかる重力が変化し、そのラグドール32の位置が変化する。その現象をたるみの表現に利用している。以下では質量を変更する例について具体的に説明する。
【0031】
図7は、重力パラメータ変更部22の処理フローの一例を示す図である。重力パラメータ変更部22は、自オブジェクト30に含まれる各ラグドール32について、図7に示す処理を行う。はじめに、重力パラメータ変更部22は、自オブジェクト30に含まれる各ラグドール32のうち処理対象のラグドール32が質量変更対象かを判断する(ステップS121)。ラグドール32が質量変更対象であるか否かを示す質量変更対象フラグの値はこれらの処理を行う前に決定されており、オブジェクト情報記憶部25のラグドール32の情報の1つとして記憶されている。重力パラメータ変更部22はオブジェクト情報取得部21により取得された処理対象のラグドール32の質量変更対象フラグの値に基づいてそのラグドール32が質量変更対象か判断する。質量変更対象フラグの値が、そのラグドール32が質量を変更する対象でないことを示す場合は(ステップS121のN)、このラグドール32についての処理を終了する。このラグドール32についての処理を終了する場合、次のラグドール32があればそれを処理対象のラグドール32としてステップS121から処理を行う。
【0032】
質量変更対象フラグの値が、そのラグドール32が質量を変更する対象であることを示す場合は(ステップS121のY)、重力パラメータ変更部22は処理対象のラグドール32に親ラグドールが存在するか判断する(ステップS122)。ここで、互いに接続する2つのラグドール32にはその2つの間で親子関係があり、親となるラグドール32を親ラグドール、子となるラグドール32を子ラグドールと呼ぶ。ラグドール32に親ラグドールが存在しないことは、接続されるラグドール32の全てが子ラグドールであることと同じである。親ラグドールのないラグドール32は起点となるラグドール32であり、オブジェクトごとに1つ(例えば背骨のうち首に近いものに対応するラグドール)存在する。各ラグドール32の親ラグドールがどれであるかの情報は、オブジェクト情報記憶部25に記憶されており、重力パラメータ変更部22はオブジェクト情報取得部21により取得された親ラグドールの情報に基づいてそのラグドール32に親ラグドールが存在するか判断する。処理対象のラグドール32に親ラグドールが存在しない場合は(ステップS122のN)、このラグドール32についての処理を終了する。
【0033】
処理対象のラグドール32に親ラグドールが存在する場合は(ステップS122のY)、重力パラメータ変更部22は、接触点40と処理対象となるラグドール32との近さの値dを求める(ステップS123)。接触点40のxyz座標を(px,py,pz)、処理対象となるラグドール32の中心座標を(rx,ry,rz)とすると、近さの値dは例えば以下の式で求められる。
【0034】
d=(px−rx)2+k(py−ry)2+(pz−rz)2
【0035】
ここで、kは1より小さい値であり、y方向は重力のかかる方向と等しいとする。重力パラメータ変更部22は上述の式と、接触点40の座標と、処理対象となるラグドール32の中心座標とに基づいて近さの値dを計算する。次に重力パラメータ変更部22は、近さdが閾値Dmax以下であるか判定する(ステップS124)。近さdが閾値Dmaxより大きければ(ステップS124のN)、このラグドール32についての処理を終了し、近さdが閾値Dmax以下であれば(ステップS124のY)ステップS125以降の処理を行う。
【0036】
上述の処理により、接触点40を中心とする一定の範囲の外にあるラグドール32を質量変更の処理対象から外している。以下ではこの一定の範囲を影響範囲と呼ぶ。図8は接触点を中心とする影響範囲の一例を示す図である。影響範囲は接触点40を中心としy方向に長い回転楕円体の形状になる。重力パラメータ変更部22は、その回転楕円体が示す影響範囲内にあるラグドール32(図8の例ではラグドール323,324)のうち他の条件を満たすラグドール32の質量を変更する。影響範囲がy方向に長いのは、実際に物体をつかむような場合に、そのたるむ範囲が上下方向に大きくなることを表現するためである。こうすることでしがみついたり乗ったりするような動作によるたるみをより自然に反映することが可能になる。
【0037】
ステップS125では、重力パラメータ変更部22は質量を変更するラグドール32であるか判定するための角度θを求める。図9は、質量を変更するラグドール32であるか判定するための角度θの一例を示す図である。その角度θは、処理対象となるラグドール32の親ラグドールの中心位置からその処理対象となるラグドール32の中心位置へのベクトルV1と、処理対象となるラグドール32の中心位置から接触点40へのベクトルV2と、のなす角度である。次に重力パラメータ変更部22は、求められた角度の値θが閾値θmaxより大きければ(ステップS126のN)、このラグドール32についての重力に関するパラメータの変更処理を終了する。求められた角度の値が閾値θmax以下の場合は(ステップS126のY)、ステップS127以降でラグドール32に加算する質量を求める。ここで、閾値θmaxはラグドール32ごとに設定されている。ここで、図9をみればわかるように、角度θが90度から大きくなるにつれ、接触点40は親ラグドールより遠い位置になる可能性が高くなり、近さの条件も考慮するとある角度を超えると接触点40は処理対象のラグドール32から見て親ラグドールより奥になる。つまり角度θを用いることで、接触点40が親ラグドールの向こう側にあるか否かを簡便に判定することが可能となる。こうすると、例えば親ラグドールが質量変更対象でなく、さらにその親ラグドールをはさんで左右に子ラグドールとなる2つのラグドール32が接続される場合に、その親ラグドールの左側に接触点40がある場合に右側にも不意にたるみが生じるような現象を防ぐことができる。なお、たるみを表現するラグドール32は、骨格に対応するラグドール32を親ラグドールとして接続するのみであってもよい。このような場合には、親ラグドールではなく単に処理対象となるラグドール32に接続されるラグドール32を用いて角度θを求めてもよい。
【0038】
ステップS121からS126の処理は、重力パラメータ変更部22が、自オブジェクト30に含まれるラグドール32のうちから質量等の重力に関するパラメータを変更するラグドール32をラグドール32と他オブジェクト35との位置関係に応じて選択する処理である。次の処理に移ることのできる場合、処理対象となるラグドール32は質量を変更する対象として選択されている。ラグドール32を選択する条件は、予め質量変更対象として設定されており、親ラグドールが存在し、接触点40を中心とする重力方向に長い所定の大きさの回転楕円体より近くにあり、親ラグドールの中心位置からその処理対象となるラグドール32の中心位置へのベクトルV1と、処理対象となるラグドール32の中心位置から接触点40へのベクトルV2と、のなす角度が閾値以下となることである。
【0039】
次に、重力パラメータ変更部22は、選択されたラグドール32の重力に関するパラメータの値(ここでは質量)をそのラグドール32と他オブジェクト35との位置関係、より具体的には接触点40とラグドール32との近さに応じて変化するように重力に関するパラメータの値を変更する。まず、重力パラメータ変更部22は、各ラグドール32の基準質量に対する加算質量maを求める(ステップS127)。加算質量maの計算式は以下のようになる。
【0040】
ma=w×mc
【0041】
mcは接触点40を介して接触する他オブジェクト35の質量を示し、wは重み係数を示す。加算質量maは、接触点40を介して接触する他オブジェクト35の質量mcに、近さの値dに応じた重み係数wをかけて求める。図10は、重み係数wと近さの値dとの関係の一例を示す図である。図10の例では、近さの値dが閾値Dmaxより小さい値Dminより小さい場合は重み係数wは1となり、近さの値dがDminとDmaxの間にある場合は、近さの値dが増えるにつれて線形的に重み係数wが減っていく、そして近さの値dがDmaxとなると重み係数wは0となる。こうすることで、ラグドール32の質量の変化量は近さに応じて変化する。
【0042】
次に重力パラメータ変更部22は、加算質量maに基づいて処理対象となるラグドール32の質量を変更する。重力パラメータ変更部22は、加算質量maが同じであっても、ラグドール32の質量の前回の描画時(1フレーム前)の質量からの変化量が、ラグドール32の質量が増える場合と減る場合とで異なるように変化量を求める。言い換えれば、ラグドール32と接触点40との近さや接触する他オブジェクト35の質量mcが同じであっても、ラグドール32の質量が1フレーム前の質量から増加する場合と減少する場合とで変化量を異ならせている。より具体的には、1フレーム前における処理対象となるラグドール32に対する加算質量mapと、今回の描画(今のフレーム)における加算質量maとを比較する(ステップS128)。加算質量maが1フレーム前における加算質量mapより増えていれば(ステップS128のY)、ラグドール32の質量は基準質量に加算質量maを足したものとする(ステップS129)。加算質量maが1フレーム前における加算質量mapより減っている場合は(ステップS128のN)、ラグドール32の質量mは以下の式のように、加算質量maから前回の加算質量mapを引いた値に1未満の係数をかけた値を前回の質量に足したものとする(ステップS130)。
【0043】
m=mc+map+α(ma−map)
【0044】
ここで、αは1より小さい正の数である。こうすると、質量が減少する場合には質量が増加する場合より質量の変化に時間がかかる。これにより、たるみが元に戻る時間を長くすることができ、より自然な表現が可能となる。なお、加算質量maが1フレーム前における加算質量mapより増える場合にも複数フレームにかけて加算質量を反映するようにしてもよい。例えば、ラグドール32の質量mの計算式を以下のようにしてもよい。
【0045】
m=mc+map+β(ma−map)
ここで、0<α<β<1
【0046】
ステップS121からS130までの処理をラグドール32ごとに処理すると、物理シミュレーションに用いる各ラグドール32の質量が求まる。なお、質量を増減する代わりに重力加速度を増減してもよいし、質量と重力加速度の両方を増減してもよい。
【0047】
物理計算部23は、中央制御部11、記憶部12および演算部13を中心として実現される。物理計算部23は、重力パラメータ変更部22により変更されたパラメータに基づいて、自オブジェクト30に含まれるラグドール32の動きをシミュレーションする物理計算をする(図3に示すステップS113)。物理計算部23は、各ラグドール32とそのラグドール32に接続される他のラグドール32との物理的な拘束条件に基づいて、ラグドール32の動き(速度、角速度など)を計算する。物理計算部23は、各ラグドール32の動きを、各ラグドール32の運動方程式に基づく計算アルゴリズムを用いて計算する。また、物理計算部23は、各ラグドール32にかかる重力も反映して各ラグドール32の動きを計算する。ここで、ジョイント33を介して接続される2つのラグドール32の拘束条件は少なくとも2つある。1つは親ラグドールからみたジョイント33の相対位置が変化せず、かつ子ラグドールからみたジョイント33の相対位置が変化しない条件である。もう1つは、子ラグドールからジョイント33へ向かう方向が、予め設定された方向からずれるほど、子ラグドールをそのずれた方向と反対の方向へ向かわせる力が強くなるという条件である。なお、この予め設定された方向は、親ラグドールの向きに対して相対的に定められる方向である。
【0048】
このような拘束条件の下で物理計算を行うと、ラグドール32にかかる重力と拘束条件による力とが平衡する位置にラグドール32がずれるような動きが生じる。しがみつきなどによりラグドール32の質量や重力加速度が増加すると、ラグドール32にかかる重力が増え、平衡する位置がしがみつきが無い場合より下方にずれる。
【0049】
また、物理計算部23は接触点40と他オブジェクト35との拘束条件に基づいて他オブジェクト35の動きについて物理計算をしている。拘束条件は、メッシュ34内の接触点40と他オブジェクト35との位置関係に関するものであり、例えばしがみつきの場合には、接触点40の座標と他オブジェクト35に含まれるラグドール32の先端の座標が一致するといったものである。これにより、他オブジェクト35により変化した自オブジェクト30の形状が、さらに他オブジェクト35の動きに反映される。
【0050】
図11は、重力の変化によるオブジェクトの変形の一例を示す図である。破線はしがみつきなどの接触前の状態を示す。ラグドール32の重力Fが増加すると、ラグドール324が下方にずれ、その角度もより下方を向く。
【0051】
画像描画部24は、中央制御部11、演算部13、記憶部12および入出力部14を中心として実現される。画像描画部24は物理計算部23により物理計算された各ラグドール32の動きに基づいて、自オブジェクト30や他オブジェクト35の表面を示す3次元画像を描画する。画像描画部24は、その3次元画像を、入出力部14を介してモニタなどの表示デバイスに出力する。表示デバイスは生成された3次元画像を表示する。
【0052】
その物体の3次元画像の情報を生成する手順について説明する。まず画像描画部24は、各ラグドール32の位置や角度から、その各ラグドール32に対応して設けられるスケルトン31の配置の情報を生成する(ステップS114)。次に画像描画部24は、スケルトン31の座標との位置関係が予め定められている表示用メッシュの頂点座標を生成する(ステップS115)。ここで、表示用メッシュは、重力パラメータ変更部22で用いられるメッシュ34と同じくオブジェクトの表面を構成するポリゴンであり、その頂点座標はスケルトン31の中心位置や角度に応じて定まる。ただし、重力パラメータ変更部22で用いられるメッシュ34に比べると小さくまた数が多い。表示用メッシュは細かな表現をする必要があるからである。次に画像描画部24は、生成された表示用メッシュの頂点座標を用いて、オブジェクトの表面を示す画像を描画する(ステップS116)。
【0053】
これらの処理により、しがみつき等により、図11の輪郭が破線から実線に変化するようなたるみを表現することができる。また、本実施形態では物理計算に用いる質量や重力加速度などの物理計算に用いるパラメータを変化させるため、自オブジェクト30が歩いたり走ったりする動作にもしがみつきの影響を反映することが容易にできる。
【符号の説明】
【0054】
1 画像生成装置、11 中央制御部、12 記憶部、13 演算部、14 入出力部、21 オブジェクト情報取得部、22 重力パラメータ変更部、23 物理計算部、24 画像描画部、25 オブジェクト情報記憶部、30 自オブジェクト、31,311,312 スケルトン、32,321,322,323,324 ラグドール、33,331 ジョイント、34,341 メッシュ、35 他オブジェクト、40 接触点。
【特許請求の範囲】
【請求項1】
第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、
前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、
前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、
としてコンピュータを機能させるプログラム。
【請求項2】
前記重力パラメータ変更手段は、第1オブジェクトに含まれ互いに拘束された複数の剛体のうち1または複数の剛体を前記剛体と第2オブジェクトとの位置関係に応じて選択し、前記選択された剛体の重力に関するパラメータを変更する、
ことを特徴とする請求項1に記載のプログラム。
【請求項3】
前記重力パラメータ変更手段は、前記第1オブジェクトの表面を示すメッシュに対し前記第2オブジェクトが接触する接触位置と前記第1オブジェクトに含まれる各剛体との近さに基づいて、前記第1オブジェクトに含まれる複数の剛体から1または複数の剛体を選択する、
ことを特徴とする請求項2に記載のプログラム。
【請求項4】
前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第2オブジェクトとの位置関係に応じて変化するように当該パラメータを変更する、
ことを特徴とする請求項1から3のいずれかに記載のプログラム。
【請求項5】
前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第2オブジェクトとの接触位置と当該選択された剛体との近さに応じて変化するように当該パラメータを変更する、
ことを特徴とする請求項3に記載のプログラム。
【請求項6】
前記重力パラメータ変更手段は、前記接触位置を中心とし所定の方向に長い回転楕円体が示す範囲に含まれる剛体を選択する、
ことを特徴とする請求項3または5に記載のプログラム。
【請求項7】
前記重力パラメータ変更手段は、前記選択される剛体の位置から前記接触位置へのベクトルと、前記選択される剛体に接続される剛体の位置から前記選択される剛体の位置へのベクトルと、のなす角度が所定の条件を満たすように前記1または複数の剛体を選択する、
ことを特徴とする請求項3、5または6に記載のプログラム。
【請求項8】
前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が1フレーム前の質量から増加するか否かによって当該パラメータの変化量を異ならせる、
ことを特徴とする請求項1から7のいずれかに記載のプログラム。
【請求項9】
前記物理計算手段は、前記メッシュと前記第2オブジェクトとの位置関係に基づいて前記第2オブジェクトの動きを計算する、
ことを特徴とする請求項1から8のいずれかに記載のプログラム。
【請求項10】
第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段と、
前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段と、
前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段と、
を含むことを特徴とする画像生成装置。
【請求項11】
第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更ステップと、
前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算ステップと、
前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画捨ステップと、
を含むことを特徴とする画像生成方法。
【請求項12】
第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、
前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、
前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、
としてコンピュータを機能させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項1】
第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、
前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、
前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、
としてコンピュータを機能させるプログラム。
【請求項2】
前記重力パラメータ変更手段は、第1オブジェクトに含まれ互いに拘束された複数の剛体のうち1または複数の剛体を前記剛体と第2オブジェクトとの位置関係に応じて選択し、前記選択された剛体の重力に関するパラメータを変更する、
ことを特徴とする請求項1に記載のプログラム。
【請求項3】
前記重力パラメータ変更手段は、前記第1オブジェクトの表面を示すメッシュに対し前記第2オブジェクトが接触する接触位置と前記第1オブジェクトに含まれる各剛体との近さに基づいて、前記第1オブジェクトに含まれる複数の剛体から1または複数の剛体を選択する、
ことを特徴とする請求項2に記載のプログラム。
【請求項4】
前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第2オブジェクトとの位置関係に応じて変化するように当該パラメータを変更する、
ことを特徴とする請求項1から3のいずれかに記載のプログラム。
【請求項5】
前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が当該剛体と前記第2オブジェクトとの接触位置と当該選択された剛体との近さに応じて変化するように当該パラメータを変更する、
ことを特徴とする請求項3に記載のプログラム。
【請求項6】
前記重力パラメータ変更手段は、前記接触位置を中心とし所定の方向に長い回転楕円体が示す範囲に含まれる剛体を選択する、
ことを特徴とする請求項3または5に記載のプログラム。
【請求項7】
前記重力パラメータ変更手段は、前記選択される剛体の位置から前記接触位置へのベクトルと、前記選択される剛体に接続される剛体の位置から前記選択される剛体の位置へのベクトルと、のなす角度が所定の条件を満たすように前記1または複数の剛体を選択する、
ことを特徴とする請求項3、5または6に記載のプログラム。
【請求項8】
前記重力パラメータ変更手段は、前記選択された剛体の重力に関するパラメータの値が1フレーム前の質量から増加するか否かによって当該パラメータの変化量を異ならせる、
ことを特徴とする請求項1から7のいずれかに記載のプログラム。
【請求項9】
前記物理計算手段は、前記メッシュと前記第2オブジェクトとの位置関係に基づいて前記第2オブジェクトの動きを計算する、
ことを特徴とする請求項1から8のいずれかに記載のプログラム。
【請求項10】
第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段と、
前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段と、
前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段と、
を含むことを特徴とする画像生成装置。
【請求項11】
第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更ステップと、
前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算ステップと、
前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画捨ステップと、
を含むことを特徴とする画像生成方法。
【請求項12】
第1オブジェクトに含まれ互いに拘束された複数の剛体の重力に関するパラメータを当該剛体と第2オブジェクトとの位置関係に応じて変更する重力パラメータ変更手段、
前記変更されたパラメータに基づいて、前記第1オブジェクトに含まれる剛体の動きを物理計算する物理計算手段、および、
前記第1オブジェクトに含まれる剛体の動きに基づいて、前記第1オブジェクトの表面を示す画像を描画する画像描画手段、
としてコンピュータを機能させるプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2013−29892(P2013−29892A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2011−163630(P2011−163630)
【出願日】平成23年7月26日(2011.7.26)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願日】平成23年7月26日(2011.7.26)
【出願人】(310021766)株式会社ソニー・コンピュータエンタテインメント (417)
【Fターム(参考)】
[ Back to top ]