説明

画像生成装置、画像生成方法、ならびに、プログラム

【課題】仮想空間内のオブジェクトを変形させた画像を容易に生成する
【解決手段】主ボーンには副ボーンが予め関連付けられ、副ボーンには制御点が予め関連付けられる。画像生成装置200において、記憶部201は主ボーンの位置を示す情報を含む主ボーン情報251と、副ボーンの位置を示す情報を含む副ボーン情報252と、制御点の位置を示す情報を含む制御点情報253とを記憶する。更新部204は主ボーンに固定された座標系における副ボーンの位置を変化させる。計算部202は仮想空間に固定された座標系における制御点の位置を副ボーンの位置の変化量に基づいて計算する。画像生成部203は計算された制御点の位置に基づいてスキンの形状を決めた画像を生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想空間内のオブジェクトを変形させた画像を容易に生成するために好適な画像生成装置、画像生成方法、ならびに、プログラムに関する。
【背景技術】
【0002】
従来から、コンピュータグラフィックスにおいて人物や動物などのキャラクターを表現する際に、その骨格をボーン(あるいはスケルトンとも呼ばれる)という線分状オブジェクトで抽象化し、各ボーンの回りにボーンに対して位置が固定される点の位置によって、皮膚の形状を抽象化したスキンという面形状を求める技術が提案されている。
【0003】
ここで、ボーンやスキンは、3次元グラフィックスのモデリング技法で用いられる概念である。ボーンは、位置と姿勢が定まるリンク(線分状オブジェクト)であって、手足の関節のような部分で回転移動できる回転軸や回転角に制限を設けたものをいう。このように、回転移動に制限を設けた線分状オブジェクトは、「リンク」とも呼ばれる。
【0004】
また、3次元空間内に配置される面形状の断面図(リブ)を並べ、これらをつなぎ合わせて複雑な曲面からなる形状が作られるが、この面形状をスキンと呼ぶ。
【0005】
一般に、リブはボーンに固定されているので、ボーンが位置や姿勢を変更すると、これとともにリブの位置や姿勢も変更される。したがって、リブの形状を決める頂点(リブが多角形の場合)や、各種の制御点(リブが曲線による形状の場合)も、ボーンに固定されている。
【0006】
ボーンやスキンを用いたモデリング技法において、モデルをより自然に表現するために様々な工夫がなされている。例えば特許文献1には、連結される2つのボーンの連結点付近のスキンの形状をできるだけ自然に変化させることができる装置が開示されている。これによれば、人間や動物の骨格における肘や膝などを捻ったとき、肘や膝付近のスキンが不自然に細くなってしまうことはない。
【0007】
また、例えば特許文献2には、ポリゴンの頂点に複数のボーンを関連付け、このポリゴンの頂点に、関連付けられたボーンに対する関連度合いに相当する比重値を持たせて、キャラクターを高速に表示できる手法が開示されている。
【特許文献1】特開2007−148856号公報
【特許文献2】特開2002−92644号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
オブジェクトの外形となるスキンを変形させるためには、ボーンの位置や姿勢を変化させ、そしてボーンに対して固定された制御点の位置を、ボーンの位置や姿勢の変化に合わせて変化させる。しかしながら、部分的にスキンの形状を変化させたい場合、従来の技術をそのまま適用しようとすると、変化させたいスキンを構成する制御点が関連付けられたボーン全体の位置や姿勢を変えなければならず、変形させたくない部分のスキンまでも変形してしまうという問題があった。
【0009】
また、現実の粘土などを用いたいわゆるクレイアニメーションにおいて、キャラクタを部分的にもしくは全体的にぺしゃんこに変形させてコミカルに表現する手法があるが、これを従来の技術によって仮想空間内で表現しようとすると、ボーンを細かく分けて繋げたり逆に少なくしたりしなければならず、変形させたいオブジェクトの基本骨格を変える必要が出てくる。一方で、クレイアニメーションでも変形させるときと変形させないときがあり、変形させないときには従来の3次元(3D)アニメーションと同様の構成としてデザイナーの設計上の負担を低減したいという要望もある。また、ボーン同士を繋げる関節部分は、曲がることが想定されるところにのみ配置したいのが実情であるため、オブジェクトの基本骨格は変えたくないという要望もある。そのため、デザイナーへの負担を軽減しつつも、オブジェクトの形状を簡単に変えることができる技術が望まれている。
【0010】
本発明はこのような課題を解決するものであり、仮想空間内のオブジェクトを変形させた画像を容易に生成するために好適な画像生成装置、画像生成方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0012】
本発明の第1の観点に係る画像生成装置は、記憶部、計算部、画像生成部、更新部を有する。
記憶部は、仮想空間に配置される座標系(以下「親座標系」という。)における主ボーンの位置と、当該主ボーンに固定された座標系(以下「主座標系」という。)における副ボーンの位置と、当該副ボーンに固定された座標系(以下「副座標系」という。)における当該副ボーンに関連付けられた制御点の位置と、を記憶する。
計算部は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する。
画像生成部は、計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する。
更新部は、当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させる。
【0013】
ここで、仮想空間内に配置されるキャラクタオブジェクトの画像は、主ボーン、副ボーン、制御点、スキンを用いて表現される。
ボーンは、キャラクタオブジェクトの骨格となる線分状オブジェクトであり、ボーンの位置や向きが変化することによってキャラクタオブジェクトの基本的な位置や姿勢が変化する。本発明では、主ボーンと副ボーンの2種類のボーンを定義する。主ボーンはキャラクタオブジェクトの骨格であり、主ボーンが結合する際の主ボーン同士の対応関係と、主ボーンの形状は不変であるが、主ボーンの親座標系(仮想空間に固定された座標系)における位置は可変である。
主ボーンには、主ボーン上の所定位置を初期位置として副ボーンが配置される。主ボーンと副ボーンとの対応関係と、副ボーンの形状は不変であるが、副ボーンの主座標系(主ボーンに固定された座標系)における位置は可変である。
副ボーンには1つ以上の制御点が関連付けられる。例えば主座標系における制御点の位置を不変とすると、副ボーンの位置が変化したとき、制御点の位置も同じ変化量だけ位置が変化する。
各制御点を頂点としたポリゴンの集合によって表される面がスキンである。キャラクタオブジェクトの表面はスキンによって覆われる。制御点の位置が変化すればスキンの形状も変化する。つまり、キャラクタオブジェクトの形状を変化させる場合、画像生成装置は、まず主座標系における副ボーンの位置を移動させる。次に副ボーンの位置の変化量に基づいて制御点の位置も移動させる。このとき、移動後の制御点の位置は、副座標系から主座標系に、更に主座標系から親座標系に座標変換を施すことにより、親座標系における位置として計算される。すなわち、主座標系における副ボーンの位置を移動させれば、親座標系における制御点の位置が移動し、その結果スキンの形状が変化することになる。
【0014】
本発明によれば、キャラクタオブジェクト全体のうち変化させたい部分のスキンを構成する制御点が関連付けられた副ボーンのみについて位置を変化させれば、変化させたい部分のスキンだけが変化し、キャラクタオブジェクトが変形する。すなわち、キャラクタオブジェクトの所望の部分だけを容易に変形させることができ、変形させたくない部分には影響しない(変形しない)。
例えば、いわゆるクレイアニメーション等でキャラクタの一部分(例えば手のひらなど)もしくは全部が押し潰されてぺしゃんこになってしまうようなコミカルな表現手法があるが、3次元仮想空間においても容易に同じような表現が可能になる。つまり、キャラクタオブジェクトを構成する主ボーンに複数の副ボーンを予め関連付け、さらに各副ボーンに制御点を関連付けておくと、変形させたい部分付近の副ボーンの位置を変化させるだけで、キャラクタオブジェクトの所望の部分だけを変形させることができる。
【0015】
例えば、当該副ボーンに関連付けられた当該制御点の当該副座標系における位置は一定としてもよい。
本発明によれば、常に副ボーンの移動量と同じ量だけ制御点の位置を移動させることになるので、より簡単にスキンを変形させることができるようになる。例えば、ある移動対象の副ボーンに複数の制御点が予め関連付けられているとき、その副ボーンに関連付けられた制御点はすべて同じ移動量だけ移動させればよい。そして、その副ボーンに関連付けられた制御点のみから構成されるポリゴンについては、形状を変化させずに位置を移動させるだけで済み、より簡単にキャラクタオブジェクトを変形させることができる。
【0016】
例えば、当該主ボーンには複数の当該副ボーンが関連付けられ、当該副ボーンのそれぞれに異なる制御点が関連付けられる。
また、記憶部は、当該副ボーンのそれぞれについて、当該副ボーンに固定された副座標系における当該副ボーンに関連付けられた制御点の位置を記憶する。
そして、計算部は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系におけるそれぞれの位置と、当該副ボーンのそれぞれに関連付けられた当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系におけるそれぞれの位置を計算してもよい。
本発明によれば、1つの副ボーンには複数の制御点が関連付けられるので、一度に多くの制御点の位置を変えることができる。すなわち、複数のポリゴンの集合をまとめて移動することができ、より広いスキンを一度に変形できる。
【0017】
計算部は、当該副ボーンの移動方向を正とする軸をもつ1次元座標系(以下「移動座標系」という。)における座標値が最も大きい制御点(以下「先端制御点」という。)の移動量が、
(a)所定値より小さい場合、当該副ボーンに関連付けられた当該制御点の当該副座標系における位置が一定になるように、当該制御点のそれぞれを移動させた位置を計算し、
(b)所定値より大きい場合、当該先端制御点の当該副座標系における位置を一定にし、当該先端制御点以外の制御点の当該副座標系における位置を移動させた位置を計算する、
ようにしてもよい。
例えば、変形させるキャラクタオブジェクトが立体的な形状をもっていて、その形状が可変であり、そのキャラクタオブジェクトが固い壁や床などの面に押し潰されてぺしゃんこになる様子を表す画像を生成するとする。この例では、所定値とは、キャラクタオブジェクトから面までの最短距離のことである。制御点の中には、最も面に近いもの(つまり先端制御点)、次に面に近いもの、…、最も面に遠いものがある。
キャラクタオブジェクトが面のある向きに移動するとき、キャラクタオブジェクトが面に接するまでの間(つまり上記(a)の場合)、制御点の位置の変化量は、副ボーンの位置の変化量と同じである。例えば副ボーンが平行移動すれば、制御点も同じ変位だけ平行移動する。例えば副ボーンが回転移動すれば、制御点も同じ角度だけ回転移動する。
さらにキャラクタオブジェクトが面のある向きに移動し続けると、やがてキャラクタオブジェクトは面と衝突する。言い換えれば、先端制御点が面と接触する。キャラクタオブジェクトが面と衝突すると(つまり上記(b)の場合)、副座標系における先端制御点の位置はそれ以上変化せず固定される。他の制御点は引き続き同じ移動方向に移動する。やがて2番目に面に近い制御点が面と接触すると、2番目の制御点の位置はそれ以上変化せず固定される。同様にして3番目、4番目…に近い制御点の位置もやがて固定され、最終的には移動対象の副ボーンに関連付けられた制御点の位置はすべて固定される。キャラクタオブジェクトが面より奥にめり込んでしまうことはない。したがって、立体的な形状をもったキャラクタオブジェクトを、クレイアニメーションでぺしゃんこになるような表現手法と同じように変化させることが可能になる。
【0018】
計算部は、さらに、
(b1)当該先端制御点以外の制御点の当該移動座標系における位置が、当該先端制御点の当該移動座標系における位置と等しくなった場合、当該先端制御点以外の制御点の当該副座標系における位置も一定としてもよい。
本発明によれば、面に最も近い制御点(先端制御点)、2番目に面に近い制御点など、各制御点が固定される位置は、面と接する位置である。すなわち、移動対象の副ボーンに関連付けられた制御点は面に沿って平らに変形する。したがって、立体的な形状をもったキャラクタオブジェクトは面に沿って平らに変形することになり、クレイアニメーションでぺしゃんこになるような表現手法と同じような形状変化が可能になる。
【0019】
記憶部は、当該主ボーンの当該親座標系における向きと、当該副ボーンの当該主座標系における向きと、をさらに記憶してもよい。
そして、計算部は、当該主ボーンの当該親座標系における位置及び向きと、当該副ボーンの当該主座標系における位置及び向きと、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算してもよい。
本発明によれば、副ボーンは任意に姿勢を変えられるボーンとして定義できるようになる。例えば、副ボーンの形状は、点や、任意の長さをもった線分や曲線などとすることができる。また、平面、曲面などのような2次元の形状でもよいし、円柱、角柱、円錐、角錐、球形、多面体などのような3次元の形状でもよい。したがって、副ボーンを平行移動させるだけでなく、回転移動させることもできるようになり、スキンを様々な形状に変化させることが可能になる。
【0020】
更新部は、当該副ボーンの当該主座標系における位置を、平行移動と回転移動とのうち少なくともいずれか一方により移動させて、当該位置を更新してもよい。
本発明によれば、画像生成装置は、副ボーンを平行移動させたり回転移動させたりすることができる。例えば副座標系における制御点の位置を固定にすると、副ボーンの平行移動又は回転移動による移動量と同じ量だけ制御点の位置も移動する。したがって、キャラクタオブジェクトを部分的にもしくは全体的に平らにすることができるほか、所望の部分に窪みをつけたり捻ったりすることもできる。なお、回転移動には、ある点を中心に回転させる中心点回転移動(腕をぐるぐる回すような回転移動)だけでなく、ある軸を中心に回転させる軸回転移動(筒をころころ転がすような回転移動)も含まれる。
【0021】
記憶部は、当該副ボーンに関連付けて当該副座標系における位置が固定されたバウンディングエリアの位置と、障害物オブジェクトの当該親座標系における位置と、をさらに記憶してもよい。
また、画像生成装置は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該バウンディングエリアが割り当てられた当該副座標系における当該バウンディングエリアの位置と、当該親座標系における当該障害物オブジェクトの位置と、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定する衝突判定部をさらに備えることができる。
そして、更新部は、当該障害物オブジェクトと衝突すると判定されたバウンディングエリアの位置を、当該バウンディングエリアと当該障害物オブジェクトが衝突しなくなるまで、当該障害物オブジェクトから遠ざけるように移動させてもよい。
ここで、バウンディングエリアは、キャラクタオブジェクトと障害物オブジェクトとの衝突判定に用いられ、予め設定された位置に配置される。副ボーンに固定された副座標系におけるバウンディングエリアの位置は不変である。典型的には、バウンディングエリアは、キャラクタオブジェクトの表面と同じか、もしくは表面より外側に覆うように、配置される。例えばバウンディングエリアの形状をキャラクタオブジェクトの表面と同じ形状にすると、スキンをそのままバウンディングエリアとして扱うことができる。障害物オブジェクトがバウンディングエリアに接したとき、もしくはバウンディングエリア内に入ったとき、キャラクタオブジェクトは障害物オブジェクトと衝突したものと判定される。
キャラクタオブジェクトが障害物オブジェクトと衝突したと判定されると、バウンディングエリアの位置は障害物オブジェクトから遠ざかるように移動する。副座標系におけるバウンディングエリアの位置は不変であるから、副ボーンも障害物オブジェクトから遠ざかるように移動する。つまり、副ボーンの移動に合わせて、関連付けられた制御点の位置も移動し、スキンの形状が変化する。
本発明によれば、画像生成装置は、キャラクタオブジェクトを変形させるとき、変形する側のキャラクタオブジェクトを、変形させる側の(相手の)キャラクタオブジェクトの形状に合わせるように、変形させることができる。バウンディングエリアの形状をスキンの形状に合わせるようにすれば、よりリアリティのある変形のさせ方が可能になる。また、バウンディングエリアの形状を簡略化すれば、デフォルメされた変形のさせ方が可能になる。
【0022】
記憶部は、当該主ボーンの当該親座標系における向きと、当該副ボーンの当該主座標系における向きと、当該バウンディングエリアの当該副座標系における向きと、当該障害物オブジェクトの当該親座標系における向きと、をさらに記憶してもよい。
そして、衝突判定部は、当該主ボーンの当該親座標系における位置及び向きと、当該副ボーンの当該主座標系における位置及び向きと、当該バウンディングエリアが割り当てられた当該副ボーンに固定された副座標系における当該バウンディングエリアの位置及び向きと、当該障害物オブジェクトの当該親座標系における位置及び向きと、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定してもよい。
本発明によれば、バウンディングエリアは任意に姿勢を変えられるエリアとして定義できるようになる。バウンディングエリアは、平行移動、回転移動、もしくはこれらの移動の組み合わせを用いて移動することができる。つまり、副ボーンが様々な移動方法で移動し、スキンは様々な形状に変化する。例えば、障害物オブジェクトの形状に合わせて、スキンの一部もしくは全部を押したり引っ張ったりして変形することもできるし、回転させたり捻ったりして変形することもできる。
【0023】
当該バウンディングエリアは、当該バウンディングエリアが割り当てられた副ボーンに関連付けられた複数の制御点と、当該副ボーンとの距離の平均値、もしくは、最大値を半径とし、当該副ボーンの位置を中心とする球であってもよい。
バウンディングエリアとして球の形状を採用すると、キャラクタオブジェクトと障害物オブジェクトとの衝突判定が簡略化される。また、衝突後のスキンの変形のさせ方も簡略化される。例えば、バウンディングエリアと障害物オブジェクトが衝突するとき、障害物オブジェクトの形状も部分的に球体として近似すると、衝突判定と衝突前後の形状変化は、剛体の球体同士の衝突モデルに置き換えることが可能になる。また、衝突モデルとして扱う際、古典力学における完全弾性衝突に仮定したり、これらの球体の質量を同じに、もしくはどちらか片方の質量を圧倒的に大きいものと仮定したりすれば、衝突後の球体の位置の計算は容易になる。すなわち、衝突後の制御点の位置計算は簡略化され、スキンを簡単に変形させることができるようになる。
【0024】
計算部は、当該主座標系と当該副座標系のスケールを変更し、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該スケールを変更した主座標系における位置と、当該制御点の当該スケールを変更した副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算してもよい。
例えば、主座標系と副座標系のスケールをそれぞれ同じ量だけ変えると、主ボーンは形状を変えずに大きさが拡大又は縮小する。座標系として、一般的には3次元座標系が用いられるが、いずれの1つ又は2つの次元についてスケールを変えることとしてもよく、この場合、主ボーンの大きさだけでなく、あるいは主ボーンの大きさに変えて、主ボーンの形状も変化する。
本発明によれば、副ボーンの位置を移動させるだけでなく主ボーンの大きさや形状を変えることによってスキンを変化させることができる。すなわち、キャラクタオブジェクトの変化の仕方にバリエーションを持たせることができる。例えば、キャラクタオブジェクトの一部分もしくは全部が拡大・縮小するように変形させることができる。
【0025】
本発明のその他の観点に係る画像生成方法は、記憶部、計算部、画像生成部、更新部を有する画像生成装置にて実行される画像生成方法であって、計算ステップ、画像生成ステップ、更新ステップを備える。
記憶部には、仮想空間に配置される座標系(以下「親座標系」という。)における主ボーンの位置と、当該主ボーンに固定された座標系(以下「主座標系」という。)における副ボーンの位置と、当該副ボーンに固定された座標系(以下「副座標系」という。)における当該副ボーンに関連付けられた制御点の位置と、が記憶される。
計算ステップは、計算部が、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する。
画像生成ステップは、画像生成部が、計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する。
更新ステップは、更新部が、当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させる。
本発明によれば、オブジェクトの変形させたくない部分は変形させず、所望の部分だけを変形させた画像を、容易に生成することができる。
【0026】
本発明のその他の観点に係るプログラムは、コンピュータを、記憶部、計算部、画像生成部、更新部として機能させる。
記憶部は、仮想空間に配置される座標系(以下「親座標系」という。)における主ボーンの位置と、当該主ボーンに固定された座標系(以下「主座標系」という。)における副ボーンの位置と、当該副ボーンに固定された座標系(以下「副座標系」という。)における当該副ボーンに関連付けられた制御点の位置と、を記憶する。
計算部は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する。
画像生成部は、計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する。
更新部は、当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させる。
本発明によれば、オブジェクトの変形させたくない部分は変形させず、所望の部分だけを変形させた画像を、容易に生成することができる。
【0027】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0028】
本発明によれば、仮想空間内のオブジェクトを変形させた画像を容易に生成することができる。
【発明を実施するための最良の形態】
【0029】
本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0030】
図1は、プログラムを実行することにより、本発明の画像生成装置の機能を果たす典型的な情報処理装置100の概要構成を示す模式図である。以下、本図を参照して説明する。
【0031】
情報処理装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、インターフェース104と、コントローラ105と、外部メモリ106と、DVD−ROM(Digital Versatile Disk - Read Only Memory)ドライブ107と、画像処理部108と、音声処理部109と、NIC(Network Interface Card)110と、を備える。
【0032】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ107に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態の画像生成装置が実現される。
【0033】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
【0034】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0035】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0036】
インターフェース104を介して接続されたコントローラ105は、ユーザがダンスゲームやサッカーゲームなどのゲームの実行の際に行う操作入力を受け付ける。
【0037】
インターフェース104を介して着脱自在に接続された外部メモリ106には、ゲームのプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワークを用いたゲームのチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0038】
DVD−ROMドライブ107に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ107は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0039】
画像処理部108は、DVD−ROMから読み出されたデータをCPU 101や画像処理部108が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部108が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部108に接続されるモニター(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0040】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やアルファブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0041】
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0042】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【0043】
また、ゲームの画像などの情報をDVD−ROMに用意しておき、これをフレームメモリに展開することによって、ゲームの様子などを画面に表示することができるようになる。
【0044】
音声処理部109は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【0045】
音声処理部109では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM(Adaptive Differential Pulse Code Modulation)形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
【0046】
NIC 110は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
【0047】
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ107に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0048】
次に、本実施形態の画像生成装置200の機能的な構成について説明する。
図2は、画像生成装置200の機能的な構成を示す図である。本図に示すように、画像生成装置200は、記憶部201、計算部202、画像生成部203、更新部204を備える。
【0049】
図3は、ボーン、制御点、スキンを用いたオブジェクトの仮想空間モデルの一例を表す図である。仮想空間にはグローバルな座標系311が定義され、以下、この座標系311を「親座標系」311と呼ぶことにする。例えば親座標系311にはデカルト座標系が用いられる。
【0050】
この仮想空間には、主ボーン301(本図中では301A、301Bの2つ)が配置されている。主ボーン301の長さと形状は一定である。主ボーン301の位置と向きは可変である。つまり主ボーン301の姿勢は変化する。主ボーン301Aの端点305A2は、主ボーン301Bの端点305B1に連結されている。例えば、主ボーン301Bは、端点305B1を回転中心にして、主ボーン301Aに対して回転することができる。
【0051】
主ボーン301の位置は、親座標系311における座標値として表すことができる。また、主ボーン301の向きも、親座標系311における方向ベクトルとして表すことができる。主ボーン301の形状は任意である。
【0052】
主ボーン301Aは、図示しない他の主ボーンと端点305A1で連結されていてもよい。同様に、主ボーン301Bは、図示しない他の主ボーンと端点305B2で連結されていてもよい。本発明をより理解しやすくするため、2つの主ボーン301A,301Bから構成されるモデルを用いて説明する。
【0053】
主ボーン301Aには、主ボーン301Aに固定された座標系312が定義され、以下、この座標系312を「主座標系」312と呼ぶ。主座標系312の原点の位置は、主ボーン301Aの端点305A1の位置と一致する。同様に、主ボーン301Bにも別の主座標系(図示せず)を定義することができる。例えば主座標系312には極座標系が用いられる。
【0054】
例えば、主ボーン301Aに固定された主座標系312における回転量を与えることにより、一方の主ボーン301Aに対する他方の主ボーン301Bの相対的な姿勢が一意に定まることになる。主ボーン301Bの運動は、主座標系312から親座標系311に座標変換することにより、親座標系311における運動として記述できる。なお、ここで言う回転には、「ある1つの軸を中心に回転する」の意味だけでなく、「ある1つの点を中心に回転する」の意味も含まれる。
【0055】
主ボーン301には、副ボーン302(本図中では302A、302B、302Cの3つ)が関連付けられている。副ボーン302の初期位置(オブジェクトを変形させる前の位置)は、主ボーン301上の所定の位置である。それぞれの副ボーン302には、1つ以上の制御点303が関連付けられている。本図中では、副ボーン302Aには制御点303A1〜303A6が、副ボーン302Bには制御点303B1〜303B6が、副ボーン302Cには制御点303C1〜303C6が、それぞれ関連付けられている。以下、図中では、この関連付けを点線で表現している。
【0056】
つまり、制御点303は、従来のように主ボーン301に関連付けられるのではなく、副ボーン302に関連付けられる。1つの制御点303は、いずれか1つの副ボーン302に関連付けられる。1つの副ボーン302に複数の制御点303を関連付けてもよい。
【0057】
副ボーン302の位置と向きは、主座標系312を用いて、それぞれ主ボーンに対する相対座標と相対ベクトルとして表すことができる。主座標系312から親座標系311に座標変換することにより、主座標系312を用いた副ボーン302の位置と向きは、それぞれ親座標系311を用いた座標とベクトルとして表すことができる。
【0058】
副ボーン302Aには、副ボーン302Aに固定された座標系313が定義され、以下、この座標系313を「副座標系」313と呼ぶ。副座標系313の原点の位置は、副ボーン302の位置と一致する。同様に、副ボーン302B,302Cにもそれぞれ副座標系(図示せず)を定義することができる。例えば副座標系313には極座標系が用いられる。
【0059】
親座標系311又は主座標系312における制御点303の位置は可変であるが、副座標系313における制御点303の位置(言い換えれば、制御点303の副ボーン302に対する相対的位置)は不変である。
【0060】
副ボーン302の形状は任意である。本図では、副ボーン302A,302B,302Cはいずれも角柱の形状をしているが、これは本発明を理解しやすいように便宜的に記したものである。典型的には、副ボーン302は長さも太さもゼロの架空のボーンとすることができる。副ボーン302は制御点303の位置の制御のために用いるものであって、画像生成装置200が生成する画像には副ボーン302は描かれない。
【0061】
座標変換により制御点303の親座標系311における位置が決まると、制御点303の位置に基づいてスキン304の形状を決めることができる。本実施形態では、スキン304は、微小な多角形(典型的には三角形や四角形など)のポリゴン(プリミティブ)の集合体であり、予め決められた対応付けで制御点303をポリゴンの頂点としている。スキン304の形状は、ポリゴンに分割され数値データ化されて表される。
【0062】
制御点303をポリゴンの頂点としてスキン304の形状を定める手法のほか、各制御点303に重みを割り振ることによって定義されるNURBS(Non Uniform Rational B Spline)曲面をスキンとする手法を用いてもよい。この手法では、制御点303の数をさらに増やすことも可能である。この場合には、2つのパラメータu,vの有理多項式によりスキン304内の点の座標値が定められ、スキン304の形状が定まることとなる。
【0063】
図2に戻り、記憶部201は、主ボーン情報251、副ボーン情報252、制御点情報253を記憶する。RAM 103とCPU 101が協働して記憶部201として機能する。
【0064】
主ボーン情報251は、仮想空間に配置される親座標系311における主ボーン301の位置と向きを示す情報である。複数の主ボーン301が存在する場合には、それぞれの主ボーン301の位置と向きを示す主ボーン情報251が記憶部201に記憶される。位置は、親座標系311を用いた座標値として表される。向きは、親座標系311を用いた方向ベクトルとして表される。ただし、主ボーン301の向きが不変である(もしくは不変を見なせる)モデルの場合、主ボーン情報251は、主ボーン301の向きを示す情報を含まなくてもよい。
【0065】
副ボーン情報252は、主ボーン301に固定された主座標系312における副ボーン302の位置と向きを示す情報である。複数の副ボーン302が存在する場合には、それぞれの副ボーン302の位置と向きを示す副ボーン情報252が記憶部201に記憶される。位置と向きは、それぞれ主座標系312を用いた座標値と方向ベクトルとして表される。また、位置と向きは、主座標系312から親座標系311に座標変換することにより、それぞれ親座標系311を用いた座標値と方向ベクトルとして表すことができる。ただし、副ボーン302の向きが不変である(もしくは不変を見なせる)モデルの場合、副ボーン情報252は、副ボーン302の向きを示す情報を含まなくてもよい。
【0066】
制御点情報253は、副ボーン302のそれぞれについて、副ボーン302に固定された副座標系313における、副ボーン302に予め割り当てられた制御点303の位置を示す情報である。複数の制御点303が存在する場合には、それぞれの制御点303の位置を示す制御点情報253が記憶部201に記憶される。ある副ボーン302に固定された副座標系313における、その副ボーン302に関連付けられた制御点303の位置は、一定である。制御点303の位置は、副座標系313から主座標系312に座標変換することにより、主座標系312を用いた座標値として表される。さらに制御点303の位置は、主座標系312から親座標系311に座標変換することによって、親座標系311を用いた座標値として表わされる。
【0067】
計算部202は、記憶部201に記憶された主ボーン情報251と副ボーン情報252と制御点情報253とに基づいて、各制御点303の親座標系311における位置を計算する。つまり、計算部202は、副座標系313における制御点303の位置を、副座標系313から主座標系312に座標変換し、更に主座標系312から親座標系311に座標変換することによって、副座標系313における位置を親座標系311における位置に変換する。CPU 101と画像処理部108が協働して計算部202として機能する。
【0068】
画像生成部203は、計算部202により計算された制御点303の親座標系311における位置に基づいて、スキン304の形状を求め、仮想空間に配置されるスキン304の形状を表す画像を生成する。画像生成部203は、予め決められた対応付けで各制御点303を頂点としたポリゴンを配置することによって、スキン304を配置した画像を生成する。例えば、後述する更新部204により副ボーン302の主座標系における位置又は向きが更新されると、画像生成部203は、計算部202によって計算された更新後の制御点303の位置に基づいて新たなスキン304を配置した画像を生成する。CPU 101と画像処理部108が協働して画像生成部203として機能する。
【0069】
更新部204は、記憶部201に記憶された、副ボーン302の主座標系312における位置と向きを更新することによって、スキン304の形状を変化させる。CPU 101と画像処理部108とRAM 103が協働して、画像生成部203として機能する。
【0070】
図4(a)と(b)は、仮想空間に配置された主ボーン301、副ボーン302、制御点303、スキン304を簡略化して表した図である。図4(a)は更新部204による更新前であり、図4(b)は更新部204による更新後である。副ボーン302は、長さも太さもゼロのボーン、すなわち形状が「点」のボーンとすることができる。
【0071】
デカルト座標系を用いて説明すると、更新部204は、例えば副ボーン302Bの位置をX軸方向にΔLX、Y軸方向にΔLY、Z軸方向にΔLZだけ平行移動させる。このとき、それぞれの制御点303の位置は、予め関連付けられた副ボーン302に対して所定の位置に固定されているため、更新部204は、副ボーン302Bに関連付けられた制御点303B1,303B2,303B3の位置も、X軸方向にΔLX、Y軸方向にΔLY、Z軸方向にΔLZだけ平行移動させる。各座標値の変化量ΔLX,ΔLY,ΔLZの大きさは任意である。
【0072】
この平行移動の結果、図4(a)に示される各制御点303を頂点とするポリゴンで表現されるスキン304の形状は、図4(b)に示すように、副ボーン302に関連付けられた制御点303B1,303B2,303B3が主ボーン301側にへこんだ形状になる。例えば、皮膚を指で押してへこむ様子を表す画像を生成することができる。
【0073】
なお、更新部204は、複数の副ボーン302についてそれぞれ別個に、任意の位置に移動させることができる。
【0074】
副ボーン302の移動は、平行移動に限られない。
図5(a)と(b)は、仮想空間に配置された主ボーン301、副ボーン302、制御点303、スキン304を簡略化して表した図である。図5(a)は更新部204による更新前を表し、図5(b)は更新部204による更新後を表している。副ボーン302は、長さも太さもゼロのボーンである。この例では、更新部204は、副ボーン302Bに固定された副座標系において副ボーン302Bの位置と向きの両方を変化させることによって、制御点303B1〜303B3をX軸方向にΔLX、Y軸方向にΔLY、Z軸方向にΔLZだけ平行移動させ、且つ、1つの軸を中心に角度Δθだけ回転移動(軸回転移動)させている。勿論、更新部204は、回転移動のみ行ってもよい。角度Δθ(回転量)の大きさは任意である。
【0075】
この軸回転移動の結果、図5(a)に示すスキン304の形状は、図5(b)に示すような副ボーン302B付近が盛り上がって且つねじれた形状に変化する。例えば、皮膚を指でつまみつつ、ねじったときの様子を表す画像を生成することができる。
【0076】
回転移動は、1つの軸を中心に回転させる移動だけに限らず、1つの点(典型的には副ボーン302の位置)を中心に回転させる移動(中心点回転移動)でもよい。図6(a)は、図5(a)の状態から更新部204によって更新された後の状態を示す図である。副ボーン302は、長さも太さもゼロのボーンである。この例では、更新部204は、副ボーン302Bに固定された副座標系において、副ボーン302Bの位置を固定し、副ボーン302Bの向きを変化させることによって、制御点303B1〜303B3を、1つの点(副ボーン302Bの位置)を中心に角度Δφだけ回転移動させている。勿論、更新部204は、平行移動と軸回転移動の少なくともいずれか一方と共に、中心点回転させてもよい。角度Δφ(回転量)の大きさは任意である。
【0077】
この中心点回転移動の結果、図5(a)に示すスキン304の形状は、図6(a)に示すような副ボーン302B付近がねじれた形状に変化する。例えば、雑巾を絞ったときの様子を表す画像を生成することができる。
【0078】
副ボーン302の長さと太さは、いずれもゼロでない値であってもよい。言い換えれば、副ボーン302の形状は「点」に限られず、任意の長さをもった線分や曲線などでもよい。また、平面、曲面などのような任意の2次元の形状でもよいし、円柱、角柱、円錐、角錐、球形、多面体などのような任意の3次元の形状でもよい。
【0079】
例えば、図6(b)では、副ボーン302A,302B,302Cはいずれも角柱の形状をしている。そして、副ボーン302Aに関連付けられた制御点303A1〜303A3は、副ボーン302Aの異なる部分で関連付けられて(結ばれて)いる。本図では、制御点303A1は副ボーン302Aの中央部分と、制御点303A2は副ボーン302Aの上端部分と、制御点303A3は副ボーン302Aの下端部分と、それぞれ結ばれている。副ボーン302B,302Cについても同様である。ただし、制御点303を副ボーン302のどの場所と結ぶかは自由である。
【0080】
副ボーン302に点ではない形状をもたせたとしても、各制御点303が副ボーン302の同一部分で関連付けて(結んで)平行移動・軸回転移動・中心点回転移動させる場合には、更新後のスキン304の形状は、上述のように副ボーン302を点の形状としたときと実質的に同じになる。
【0081】
なお、更新部204は、上記のように副ボーン302を移動させることによって制御点303の位置を変える制御ができるほか、主座標系312における副ボーン302の位置を変えずに親座標系311における主ボーン301の位置を変える制御や、主座標系312における副ボーン302の位置を変えずに直接制御点303の位置を変える制御といった、従来と同じ制御もできる。更新部204は、ゲーム毎に、あるいはゲームのシーン毎に、これらの制御を使い分ける。
【0082】
次に、画像生成装置200の上記各部が実行する画像生成処理について、図7のフローチャートを用いて説明する。この画像生成処理によって、スキン304の形状が変化した画像が生成される。例えば、画像生成装置200の各部は、垂直同期(VSync)などの所定のタイミングで画像生成処理を繰り返し実行する。
【0083】
以下の説明では、例えば図8に示すように、ヘビ型のキャラクタオブジェクト800が配置される仮想空間モデルを考える。キャラクタオブジェクト800の表面は、複数の制御点303によって決まるポリゴンの集合から構成されるスキン304で覆われている。主ボーン301(例えば背骨)の形状に沿って、副ボーン302(本図中では302A,302B,302Cの3つ)を配置する。それぞれの副ボーン302には、1個以上の制御点303(本図中では、副ボーン302Aに関連付けられた制御点303A(○印で表現),副ボーン302Bに関連付けられた制御点303B(×印で表現),副ボーン302Cに関連付けられた制御点303C(□印で表現)、の3種類)が関連付けられる。
【0084】
まず、画像生成部203は、記憶部201に記憶されている主ボーン情報251と副ボーン情報252と制御点情報253とを読み出す(ステップS701)。上述のように、主ボーン情報251は、親座標系311における主ボーン301の位置を示す情報である。副ボーン情報252は、主座標系312における副ボーン302の位置を示す情報である。制御点情報253は、副座標系313における副ボーン302に割り当てられた制御点303の位置を示す情報である。なお、主ボーン301の向きと副ボーン302の向きを一定としている。
【0085】
計算部202は、副座標系313における各制御点303の位置を計算する(ステップS702)。例えば、計算部202は、キャラクタオブジェクト800が移動したり姿勢を変えたりするとき、変化後の各制御点303の位置を計算する。なお、計算部202は、親座標系311における主ボーン301の位置と、主座標系312における副ボーン302の位置も計算するが、主ボーン301と副ボーン302の位置が変わらないのであれば、これらの計算を省略してもよい。
【0086】
例えば図9に示すように、キャラクタオブジェクト800が車オブジェクト(図示せず)のタイヤに轢かれたとき、画像生成部203は地面820にタイヤ痕900を配置し、更新部204はキャラクタオブジェクト800を構成する制御点303のうち、タイヤに轢かれた部分に含まれる制御点303Bに関連付けられた副ボーン302Bの副座標系313における位置を、地面820に向かって垂直な方向に平行移動させる。
【0087】
すると、各制御点303Bの副座標系313における位置を一定としているため、各制御点303Bの主座標系312における位置も、副ボーン302と同じ方向に平行移動することになる。
【0088】
計算部202は、副座標系313における各制御点303の位置を、親座標系311に座標変換する(ステップS703)。
【0089】
画像生成部203は、ポリゴンの頂点と制御点303との間に予め決定された対応関係に基づいて、ステップS703で計算された各制御点303の位置から、スキン304の形状を計算する(ステップS704)。この対応関係は、例えば制御点303の識別番号とポリゴンの識別番号とを対応付けるデータとしてテーブル形式等で記述され、予め記憶部201に記憶されている。
【0090】
更新部204は、主ボーン情報251と副ボーン情報252と制御点情報253とを更新する(ステップS705)。つまり、更新部204は、計算部202がステップS702で計算した主ボーン301の位置と、副ボーン302の位置と、制御点303の位置とを新たな位置とした、主ボーン情報251と副ボーン情報252と制御点情報253とを生成して、記憶部201を更新する。
【0091】
そして、画像生成部203は、更新された各制御点303の位置を各ポリゴンの頂点として、スキン304の形状を決定し、スキン304の形状を表す画像を生成する(ステップS706)。画像生成部203は、移動させる副ボーン302Bに対応付けられた制御点303Bのみから構成されるポリゴン(タイヤに轢かれた部分のポリゴン)を平行移動させ、頂点の一部に制御点303Bが含まれるポリゴン(タイヤ痕810の両際の部分)の形状を変化させるだけでよい。
【0092】
本実施形態によれば、画像生成装置200は、すべてのスキン304の位置と形状を計算し直す必要はなく、移動させる制御点303のみから構成されるポリゴンについては形状を変化させずに移動させるだけでよいので、より簡単にオブジェクトを変形させた画像を生成できるようになる。
【0093】
例えば、被写体が粘土で作成されているクレイアニメーションでは、キャラクタが何かにぶつかったときや落ちたときなどに、キャラクタをぺしゃんこにするコミカルな表現手法が用いられるが、本発明によれば、直接制御点303の位置を制御する代わりに副ボーン302の位置が向きを変化させることにより、3次元仮想空間においてまるでクレイアニメーションであるかのようにキャラクタを変形させた画像を簡単に生成することができる。例えば図8のように地面を這っているキャラクタオブジェクト800が車に轢かれて、図9に示すようにぺしゃんこになってしまった様子を表す画像を簡単に生成できる。
【0094】
(実施形態2)
次に、本発明のその他の実施形態について説明する。上述の実施形態では、副ボーン302に固定された副座標系313における制御点303の位置は一定としているが、本実施形態は、制御点303の位置の移動量がしきい値より小さければ不変とし、大きければ可変としている点で異なる。
【0095】
図10〜13は、本実施形態で扱う仮想空間モデルの主ボーン301、副ボーン302、制御点303、スキン304を表す図である。スキン304が表す面と、衝突面(典型的には地面や壁など)1020とは、ゼロでない角度Δψをなす。更新部204は、衝突面1020への向きを移動方向として、副ボーン302を移動させる。なお、本発明をより理解しやすくするために、移動開始前の各制御点303が等間隔αのマス目状に配置されているものとする。
【0096】
本実施形態では、一例として副ボーン302A〜302Cのうち副ボーン302Bのみを平行移動させる。副ボーン302Bには、衝突面1020に近い順に、制御点303B1,303B2,303B3の3種類がある。言い換えれば、副ボーン302の移動方向を正の向きとする軸を持つ1次元座標系(以下「移動座標系」と言う。)314において、座標値が大きい順に、制御点303B1,303B2,303B3が配置される。移動座標系314において「衝突面1020に最も近い」とは、移動座標系314における位置の座標値が最も大きいということである。
【0097】
図14は、上述のステップS702の処理の詳細を説明するためのフローチャートである。
【0098】
上述のステップS702において、計算部202は、移動座標系314における副ボーン302Bの移動量と同じ量だけ移動させた、各制御点303B1〜B3の位置を計算する。そして、移動座標系314から副座標系313に座標変換して、副座標系313における各制御点303の位置を計算する(ステップS1401)。
【0099】
なお、副座標系313の1つの軸と、移動座標系314の軸とを一致させれば、この移動座標系314から副座標系313への座標変換を省略することができる。
【0100】
次に更新部204は、衝突面1020に最も近い制御点303B1(先端制御点)の移動量が所定のしきい値Δλより小さいか否かを判別する(ステップS1402)。
【0101】
ここで、図11は、制御点303B1をしきい値Δλだけ移動させたときの仮想空間モデルを表す図である。所定のしきい値Δλは、典型的には、移動開始前のスキン304と衝突面1020との距離の最小値である。例えば、あるキャラクタオブジェクトが地面の上に落ちていくとき、衝突面1020は地面であり、落ちていくキャラクタオブジェクトの表面と地面との最短距離がΔλになる。
【0102】
制御点303B1の移動量(あるいは副ボーン302Bの移動量)がしきい値Δλより小さい場合(ステップS1402;YES)、更新部204は、ステップS1401に戻り引き続き副ボーン302Bを移動方向1050に移動させる。計算部202は、副ボーン302の移動量と同じ量だけ、移動する副ボーン302に関連付けられた制御点303も移動させる。
【0103】
制御点303B1の移動量(あるいは副ボーン302Bの移動量)がしきい値Δλより小さくない場合(ステップS1402;NO)、計算部202は、衝突面1020に最も近い制御点303B1を現在の位置に固定させる(ステップS1403)。すなわち、制御点303B1をそれ以上移動させない。例えば、あるキャラクタオブジェクトが地面の上に落ちていくとき、キャラクタオブジェクトの衝突面1020に最も近い部分が地面に接すると、地面に接した部分はその位置で固定され、地面にめり込むことはない。
【0104】
そして更新部204は副ボーン302Bを移動させ、計算部202は固定していない他の制御点303B2,303B3を移動方向1050に移動させる(ステップS1404)。計算部202は、移動座標系314における副ボーン302Bの移動量と同じ量だけ移動させた、制御点303B2,303B3の位置を計算する。そして、移動座標系314から副座標系313に座標変換して、副座標系313における各制御点303の位置を計算する。
【0105】
図12は、制御点303B1を固定し、他の制御点303B2,303B3をさらに移動させたときの仮想空間モデルを表す図である。この時点で制御点303B1はΔλだけ移動しているが、303B2,303B3は、次の[数1]で表す量だけ移動することになる。
【0106】
移動量 = Δλ+Δα×sinΔψ ・・・[数1]
【0107】
さらに計算部202は、次に衝突面1020に近い制御点303B2の位置が、固定した制御点303B1(先端制御点)の移動座標系314における位置と同じか否かを判別する(ステップS1405)。つまり、制御点303B2が衝突面1020に接したか否かを判別する。
【0108】
移動座標系314における制御点303B2の位置が制御点303B1の位置と同じでない場合、すなわち制御点303B2が衝突面と接していない場合(ステップS1405;NO)、更新部204は、ステップS1404に戻り引き続き副ボーン302Bを移動方向1050に移動させる。計算部202は、固定されていない各制御点303も副ボーン302と同じ移動量だけ移動させる。つまり、副ボーン302Bに関連付けられた制御点303B1,303B2,303B3のうち、既にステップS1403で固定した制御点303B1は移動させない。
【0109】
一方、同じである場合(ステップS1405;YES)、計算部202は、移動対象の副ボーン302Bに関連付けられたすべての制御点303B1,303B2,303B3を固定したか否かを判別する(ステップS1406)。図12では制御点303B2,303B3がまだ固定されていない。
【0110】
すべての制御点303がまだ固定されていない場合(ステップS1406;NO)、計算部202は、次に衝突面1020に近い制御点303B2の移動座標系314における位置を、現在の位置に固定する(ステップS1407)。
【0111】
そして、更新部204は、ステップS1404に戻り、副ボーン302Bをさらに移動させ、計算部202は、固定していない他の制御点303B3を移動方向1050に同じ量だけ移動させる。すなわち、計算部202は、移動座標系314における副ボーン302Bの移動量と同じ量だけ移動させた、制御点303B3の位置を計算する。そして、移動座標系314から副座標系313に座標変換して、副座標系313における各制御点303の位置を計算する。
【0112】
すべての制御点303の位置を固定するまでステップS1404〜S1407の処理を繰り返す結果、各制御点303の移動座標系314における移動量は、次の[数2]〜[数4]で表される。
【0113】
制御点303B1(先端制御点)の移動量= Δλ ・・・[数2]
制御点303B2の移動量= Δλ+Δα×sinΔψ ・・・[数3]
制御点303B3の移動量= Δλ+2×Δα×sinΔψ ・・・[数4]
【0114】
図13は、副ボーン302Bに関連付けられたすべての制御点303Bを移動した後の仮想空間モデルを表す図である。移動開始前に衝突面1020に対して角度Δψだけ傾いていたスキン304の形状のうち、副ボーン302Bに関連付けられた制御点303Bのみから構成されるポリゴンで表される部分は、移動終了後には衝突面1020に対して平行に重なっている。
【0115】
衝突面1020は平面に限られず、任意の形状の曲面などでもよい。更新後のスキン304は、任意の形状の曲面に沿った(曲面の形に合うように変形した)形状になる。また、衝突面1020は、任意の形状をもったキャラクタオブジェクトの一部分を構成する面でもよい。
【0116】
なお、変形させたキャラクタオブジェクトを元の形状に戻す場合には、更新部204は、副ボーン302の位置と向きを主ボーン301上の所定の初期位置に戻せばよい。例えば、上述の各ステップを逆の順番に実行すれば、まるで現実世界の立体絵本(飛び出す絵本、しかけ絵本)を開くように、ぺしゃんこになったキャラクタオブジェクトを逆モーションで元に戻すことができる。
【0117】
本実施形態によれば、画像生成装置200は、複雑な計算を要することなく、立体的な形状をもった任意のキャラクタオブジェクトを、まるでクレイアニメーションで表現しているかのように容易に変形させることができる。
【0118】
例えば、図15(a)に示すように3次元仮想空間内に配置された立体的なキャラクタオブジェクト1510が地面1520に向かう移動方向1530に落下しているとする。キャラクタオブジェクト1510の表面は、複数の制御点303によって定義される複数のポリゴンから構成されるスキン304で覆われている。キャラクタオブジェクト1510が地面1520にぶつかるまでの落下中、主ボーン301、副ボーン302、制御点303、スキン304は移動方向1520に平行移動する。キャラクタオブジェクト1510が地面1520にぶつかると、更新部204は副ボーン303を移動方向1530に少しずつ移動させ、計算部202は副ボーン302に関連付けられた制御点303を[数2]〜[数4]のように異なる移動量だけそれぞれ移動させる。その結果、スキン304の形状は地面1520に沿って平らな形状になり、キャラクタオブジェクト1510は図15(b)に示すように地面1520の上でぺしゃんこになる。
【0119】
(実施形態3)
次に、本発明のその他の実施形態について説明する。上述の実施形態ではキャラクタオブジェクトと面との衝突を考えているが、本実施形態では、あるキャラクタオブジェクトと、他のキャラクタオブジェクト(以下「障害物オブジェクト」という。)との衝突を考える。
【0120】
図16は、本実施形態の画像生成装置200の機能的な構成を示す図である。画像生成装置200は、衝突判定部205をさらに備える。
【0121】
図17(a)は、本実施形態において扱われる仮想空間モデルを表す図である。仮想空間には、例えばボクシングのサンドバッグの形をしたキャラクタオブジェクト1710と、ボクサーのグローブの形をした障害物オブジェクト1720とが配置される。障害物オブジェクト1720が移動方向1730に移動すると、やがてキャラクタオブジェクト1710と障害物オブジェクト1720は衝突することになる。
【0122】
キャラクタオブジェクト1710は、主ボーン301に沿って配置される副ボーン302に関連付けられた複数の制御点303を頂点とするポリゴンから構成されるスキン304で覆われている。
【0123】
図17(b)は、図17(a)の円内を拡大した図である。バウンディングエリア1750は、キャラクタオブジェクト1710と障害物オブジェクト1720が衝突するか否かを判別するために予め設定される領域である。典型的には、バウンディングエリア1750の形状は、キャラクタオブジェクト1710の形状の一部又は全部と一致する。ただし、バウンディングエリア1750は、キャラクタオブジェクト1710の外形よりやや大きく、スキン304を外側から覆うような概略的な形状でもよいし、キャラクタオブジェクト1710のおおよその形状を表すデフォルメした形状でもよい。バウンディングエリア1750の副座標系313における位置は一定である。本図では、バウンディングエリア1750の形状は、スキン304の形状の一部分と一致している。
【0124】
記憶部201は、障害物情報254とバウンディングエリア情報255をさらに記憶する。
【0125】
障害物情報254は、仮想空間に配置される親座標系311における障害物オブジェクト1720の位置と向きを示す情報である。位置は、親座標系311を用いた座標値として表される。向きは、親座標系311を用いた方向ベクトルとして表される。ただし、障害物オブジェクト1720の向きが不変である(もしくは不変を見なせる)モデルの場合、障害物情報254は、障害物オブジェクト1720の向きを示す情報を含まなくてもよい。
【0126】
バウンディングエリア情報255は、副ボーン302に関連付けて副座標系313における位置が固定されたバウンディングエリア1750の位置と向きを示す情報である。ただし、バウンディングエリア1750の向きが不変である(もしくは不変を見なせる)モデルの場合、バウンディングエリア情報255は、バウンディングエリア1750の向きを示す情報を含まなくてもよい。
【0127】
衝突判定部205は、主ボーン情報251と、副ボーン情報252と、障害物情報254と、バウンディングエリア情報255とに基づいて、バウンディングエリア1750と障害物オブジェクト1720が衝突するか否かを判定する。例えば、障害判定部205は、バウンディングエリア1750内に含まれる所定の代表点(図示せず)のいずれかの座標値が障害物オブジェクト1750内(障害物オブジェクト1720の表面を構成するスキンによって囲まれる領域内)にあるか否かによって判別する。図17(b)のように、バウンディングエリア1750の形状をスキン304の形状の一部分と一致させる場合には、所定の代表点として制御点303を用いればよい。
【0128】
更新部204は、障害物オブジェクト1720と衝突すると判定されたバウンディングエリア1750の位置を、バウンディングエリア1750と障害物オブジェクト1720が衝突しなくなるまで、障害物オブジェクト1720から遠ざけるように移動させる。つまり、更新部204は、障害物オブジェクト1720が占める空間とバウンディングエリア1750が占める空間とに重なりがないように、バウンディングエリア1750を移動させる。副座標系313におけるバウンディングエリア1750の位置は一定であるので、更新部204は副ボーン302も同じ移動量だけ移動させることになる。
【0129】
図18(a)は、衝突判定部205によってバウンディングエリア1750と障害物オブジェクト1720が衝突すると判別されたときに、更新部204が図17(a)に示す状態から副ボーン302を移動させた様子を表す図である。図18(b)は、図18(a)の円内を拡大した図である。更新部204は、バウンディングエリア1750と障害物オブジェクト1720が衝突しなくなるまで、副ボーン302を移動させる。図18(a)では、更新部204は、副ボーン302B,302C,302Dを、移動座標系314の正の向きにΔξだけ、それぞれ平行移動させている。制御点303の副座標系313における位置は一定であるので、制御点303B,303C,303DもΔξだけ平行移動される。
【0130】
ただし、更新部204は、副ボーン302を障害物オブジェクト1720の進行方向に平行移動させるのではなく、他の方向に平行移動させてもよい。
【0131】
例えば図19(a)と(b)に示すように、副ボーン302Dの位置を中心とする球形のバウンディングエリア1750と、障害物オブジェクト1720を部分的に球形で近似してできる近似障害物1725とを定義し、バウンディングエリア1750と近似障害物1725との球体衝突モデルを考える。ここで、更新部204は、バウンディングエリア1750と近似障害物1725を共に剛体として扱う。バウンディングエリア1750を表す球の半径は、例えばバウンディングエリア1750が割り当てられた副ボーン302Dに関連付けられた制御点303Dと、副ボーン302Dとの距離の平均値もしくは最大値である。近似障害物1725を表す球の半径は、例えば予め決められた値、もしくは、バウンディングエリア1750を表す球の半径と同じ値にする。
【0132】
剛体の球体衝突モデルを考えるにあたり、衝突前後のバウンディングエリア1750と近似障害物1725のそれぞれの位置の計算を簡単にするために、バウンディングエリア1750を表す球の質量μAを近似障害物1725を表す球の質量μBと同じにし(μA=μB)、且つ、近似障害物1725を表す球の半径γBをバウンディングエリア1750を表す球の半径γAと同じ値にする(γA=γB)と良い。
【0133】
あるいは、近似障害物1725を表す球の質量μBを、バウンディングエリア1750を表す球の質量μAより十分に(圧倒的に)大きくし(μA<<μB)、且つ、近似障害物1725を表す球の半径γBをバウンディングエリア1750を表す球の半径γAと同じ値にする(γA=γB)と良い。この場合、衝突後も障害物オブジェクト1720の移動方向1730は不変であるとみなすことができる。
【0134】
バウンディングエリア1750と近似障害物1725が衝突すると、計算部202は、副ボーン302Dの主座標系312における位置を、一般に古典力学で扱う剛体の球体衝突モデルを用いて計算する。そして、計算部202は、副座標系313から親座標系311に座標変換することにより、制御点303の親座標系311における位置を計算する。例えば、衝突後の副ボーン302Dの位置は、図面の横方向にΔξ1、縦方向にΔξ2だけ移動する。同様に、副ボーン302Dに関連付けられた各制御点302Dの位置も、図面の横方向にΔξ1、縦方向にΔξ2だけ移動する。
【0135】
計算部202は、すべての副ボーン302について剛体の球体衝突モデルを適用し、同様にしてすべての制御点303の位置を計算する。
【0136】
なお、更新部204は、平行移動の代わりに、もしくは平行移動に加えて、副ボーン302を軸回転移動や中心点回転移動で移動させてもよい。
【0137】
衝突前の近似障害物1725を表す球の占める全領域は、障害物オブジェクト1720の表面に対してバウンディングエリア1750の反対側にあることが望ましい。
【0138】
本実施形態によれば、画像生成装置200は、任意の形状をもったオブジェクト同士の衝突前後を表す画像、特に衝突後にオブジェクトが変形した画像を容易に生成できるようになる。従来のように主ボーン301に制御点を関連付けて主ボーン301の位置を移動させると、オブジェクトの変形させたくない部分までも変形してしまうが、本発明のように副ボーン302に制御点を関連付けて副ボーン302の位置を移動させると、オブジェクトの変形させたい部分のみを変形させ、変形させたくない部分はそのまま変形させないようにすることができる。
【0139】
図20(a)は、従来技術をそのまま適用し、主ボーン301を1本から5本に変えて骨格を構成した場合の仮想空間モデルを表す図である。例えばオブジェクトの真ん中付近がへこむように変形させると、図20(b)のように、パンチした所だけでなくオブジェクト全体がしなるように変形する。これは、より現実世界の現象に近い表現手法と言える。しかし、クレイアニメーションなどのように、現実世界ではあり得ないようにわざとキャラクタを平らにして表現することによって、変形した部分をより強調できるケースや、大げさにおもしろおかしく表現できるケースもある。本発明はこのようなケースで用いると特に効果的である。
【0140】
(実施形態4)
次に、本発明のその他の実施形態について説明する。上述の各実施形態では、主ボーン301を一定の形状としている。しかし、主ボーン301の大きさ、長さ、形状などを可変にしてもよい。以下詳述する。
【0141】
本実施形態の記憶部201は、主ボーン情報251として、仮想空間に配置される親座標系311における主ボーン301の位置と向きを示す情報に加えて、主ボーン301の拡縮率Pを示す情報を更に記憶する。
【0142】
例えば、オブジェクトが他のオブジェクトに接触したり衝突したりしていない状態(通常状態)では、主ボーン301の拡縮率Pを1とする。一方、オブジェクトが他のオブジェクトに接触したり衝突したりした状態(接触状態・衝突状態)では、計算部202は、拡縮率Pを変化させる。ただし、P>0とする。
【0143】
図21は、通常状態にある仮想空間モデルを表す図である。ヘビ型オブジェクト2100は、領域2110内に3つの主ボーン301A,301B,301Cを含み、それぞれの主ボーン301には1つ以上の副ボーン302が対応付けられている。例えば主ボーン301Bには3つの副ボーン302B1,302B2,302B3が対応付けられている。さらにそれぞれの副ボーン302には1つ以上の制御点303が割り当てられている。例えば副ボーン302Bには3つの制御点303B1,303B2,303B3が割り当てられている。
【0144】
図22は、掃除機のような吸引口と接触状態にある仮想空間モデルを表す図である。ヘビ型オブジェクト2100は、吸引口に吸い込まれるように変形する。このとき、計算部202は、外力2120(この場合には引力)の大きさに応じて主ボーン301の拡縮率Pを変化させる。例えば外力2120が大きいほど拡縮率を小さくする。つまり、吸引口に強く引き込まれるほど、主ボーン301の大きさを小さくする。本図では、計算部202は、主ボーン301BをP倍に縮小し、且つ、副ボーン302B1,302B2,302B3の主座標系312における位置を上方に平行移動させている。その結果、ヘビ型オブジェクト2100は、吸引口に近づくほど大きくすぼむ(引っ張られる)ように変形する。
【0145】
ただし、主ボーン301に対する副ボーン302の相対的な位置関係は不変とし、計算部202は、主座標系312全体のスケールを拡縮させる。また、副ボーン302に対する制御点303の相対的な位置関係は不変とし、計算部202は、副座標系313全体のスケールを同じ量だけ拡縮させる。計算部202は、上述のステップS703において、主座標系312と副座標系313のスケールを変えるとともに、各制御点303の副座標系313における位置を親座標系311に座標変換すればよい。
【0146】
勿論、外力2120の向き、大きさ、種類は任意に変えることができる。また、オブジェクトにかかる力の大きさに応じて拡縮率を変える代わりに、オブジェクト等の移動する速度、加速度に応じて拡縮率を変えてもよい。
【0147】
本実施形態では、主座標系312全体、あるいは副座標系313全体のスケールを変えているが、座標系全体ではなく一部のスケールを変えるようにしてもよい。例えば、デカルト座標系を用いる場合、X軸方向とY軸方向のスケールは不変とする一方、Z軸方向のスケールのみ拡縮させてもよい。
【0148】
本実施形態によれば、副ボーン302の主座標系312における位置を変化させるだけでなく主ボーン301の大きさや形状を変えることができるので、オブジェクトの変形のさせ方に様々なバリエーションを作ることができる。
【0149】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【0150】
画像生成装置200を装置の全部又は一部として動作させるためのプログラムを、メモリカード、CD−ROM、DVD、MO(Magneto Optical disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【0151】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【0152】
以上説明したように、本発明によれば、仮想空間内のオブジェクトを変形させた画像を容易に生成するために好適な画像生成装置、画像生成方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【0153】
【図1】本実施形態の画像生成装置が実現される典型的な情報処理装置の概要構成を示す図である。
【図2】画像生成装置の機能的な構成を説明するための図である。
【図3】実施形態1における仮想空間モデルの主ボーン、副ボーン、制御点、スキンを説明するための図である。
【図4】(a)更新部が副ボーンを移動させる前の様子を表す画像の例である。(b)更新部が副ボーンを平行移動させた後の様子を表す画像の例である。
【図5】(a)更新部が副ボーンを移動させる前の様子を表す画像の例である。(b)更新部が副ボーンを平行移動させ且つ軸回転移動させた後の様子を表す画像の例である。
【図6】(a)更新部が副ボーンを中心点回転移動させた後の様子を表す画像の例である。(b)副ボーンの形状を角柱とした場合の、更新部が副ボーンを中心点回転移動させた後の様子を表す画像の例である。
【図7】画像生成処理を説明するためのフローチャートである。
【図8】更新部による更新前の、主ボーン、副ボーン、制御点、スキンを表す図である。
【図9】更新部による更新後の、主ボーン、副ボーン、制御点、スキンを表す図である。
【図10】実施形態2における仮想空間モデル(その1)を説明するための図である。
【図11】実施形態2における仮想空間モデル(その2)を説明するための図である。
【図12】実施形態2における仮想空間モデル(その3)を説明するための図である。
【図13】実施形態2における仮想空間モデル(その4)を説明するための図である。
【図14】更新部が制御点の位置を更新する処理を説明するためのフローチャートである。
【図15】(a)地面に向かって落下中のキャラクタオブジェクトを表す図である。(b)地面に落下後のキャラクタオブジェクトを表す図である。
【図16】実施形態3の画像生成装置の機能的な構成を説明するための図である。
【図17】(a)と(b)は実施形態3における衝突前の仮想空間モデルを説明するための図である。
【図18】(a)と(b)は実施形態3における衝突後の仮想空間モデルを説明するための図である。
【図19】(a)と(b)は実施形態3において剛体の球体衝突モデルを採用した仮想空間モデルを説明するための図である。
【図20】(a)と(b)は従来の手法を用いた仮想空間モデルを説明するための図である。
【図21】実施形態4における通常状態の仮想空間モデルを説明するための図である。
【図22】実施形態4における接触状態の仮想空間モデルを説明するための図である。
【符号の説明】
【0154】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェース
105 コントローラ
106 外部メモリ
107 DVD−ROMドライブ
108 画像処理部
109 音声処理部
110 NIC
200 画像生成装置
201 記憶部
202 計算部
203 画像生成部
204 更新部
205 衝突判定部
251 主ボーン情報
252 副ボーン情報
253 制御点情報
254 障害物情報
255 バウンディングエリア情報
301 主ボーン
302 副ボーン
303 制御点
304 スキン
311 親座標系
312 主座標系
313 副座標系
314 移動座標系

【特許請求の範囲】
【請求項1】
仮想空間に配置される座標系(以下「親座標系」という。)における主ボーンの位置と、当該主ボーンに固定された座標系(以下「主座標系」という。)における副ボーンの位置と、当該副ボーンに固定された座標系(以下「副座標系」という。)における当該副ボーンに関連付けられた制御点の位置と、を記憶する記憶部と、
当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する計算部と、
前記計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する画像生成部と、
当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させる更新部と、
を備えることを特徴とする画像生成装置。
【請求項2】
請求項1に記載の画像生成装置であって、
当該副ボーンに関連付けられた当該制御点の当該副座標系における位置は一定である、
ことを特徴とする画像生成装置。
【請求項3】
請求項1に記載の画像生成装置であって、
当該主ボーンには複数の当該副ボーンが関連付けられ、
当該副ボーンのそれぞれに異なる制御点が関連付けられ、
前記記憶部は、当該副ボーンのそれぞれについて、当該副ボーンに固定された副座標系における当該副ボーンに関連付けられた制御点の位置を記憶し、
前記計算部は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系におけるそれぞれの位置と、当該副ボーンのそれぞれに関連付けられた当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系におけるそれぞれの位置を計算する、
ことを特徴とする画像生成装置。
【請求項4】
請求項3に記載の画像生成装置であって、
前記計算部は、当該副ボーンの移動方向を正とする軸をもつ1次元座標系(以下「移動座標系」という。)における座標値が最も大きい制御点(以下「先端制御点」という。)の移動量が、
(a)所定値より小さい場合、当該副ボーンに関連付けられた当該制御点の当該副座標系における位置が一定になるように、当該制御点のそれぞれを移動させた位置を計算し、
(b)所定値より大きい場合、当該先端制御点の当該副座標系における位置を一定にし、当該先端制御点以外の制御点の当該副座標系における位置を移動させた位置を計算する、
ことを特徴とする画像生成装置。
【請求項5】
請求項4に記載の画像生成装置であって、
前記計算部は、さらに、
(b1)当該先端制御点以外の制御点の当該移動座標系における位置が、当該先端制御点の当該移動座標系における位置と等しくなった場合、当該先端制御点以外の制御点の当該副座標系における位置も一定とする、
ことを特徴とする画像生成装置。
【請求項6】
請求項1乃至5のいずれか1項に記載の画像生成装置であって、
前記記憶部は、当該主ボーンの当該親座標系における向きと、当該副ボーンの当該主座標系における向きと、をさらに記憶し、
前記計算部は、当該主ボーンの当該親座標系における位置及び向きと、当該副ボーンの当該主座標系における位置及び向きと、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する、
ことを特徴とする画像生成装置。
【請求項7】
請求項6に記載の画像生成装置であって、
前記更新部は、当該副ボーンの当該主座標系における位置を、平行移動と回転移動とのうち少なくともいずれか一方により移動させて、当該位置を更新する、
ことを特徴とする画像生成装置。
【請求項8】
請求項1乃至5のいずれか1項に記載の画像生成装置であって、
前記記憶部は、当該副ボーンに関連付けて当該副座標系における位置が固定されたバウンディングエリアの位置と、障害物オブジェクトの当該親座標系における位置と、をさらに記憶し、
当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該バウンディングエリアが割り当てられた当該副座標系における当該バウンディングエリアの位置と、当該親座標系における当該障害物オブジェクトの位置と、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定する衝突判定部をさらに備え、
前記更新部は、当該障害物オブジェクトと衝突すると判定されたバウンディングエリアの位置を、当該バウンディングエリアと当該障害物オブジェクトが衝突しなくなるまで、当該障害物オブジェクトから遠ざけるように移動させる、
ことを特徴とする画像生成装置。
【請求項9】
請求項8に記載の画像生成装置であって、
前記記憶部は、当該主ボーンの当該親座標系における向きと、当該副ボーンの当該主座標系における向きと、当該バウンディングエリアの当該副座標系における向きと、当該障害物オブジェクトの当該親座標系における向きと、をさらに記憶し、
前記衝突判定部は、当該主ボーンの当該親座標系における位置及び向きと、当該副ボーンの当該主座標系における位置及び向きと、当該バウンディングエリアが割り当てられた当該副ボーンに固定された副座標系における当該バウンディングエリアの位置及び向きと、当該障害物オブジェクトの当該親座標系における位置及び向きと、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定する、
ことを特徴とする画像生成装置。
【請求項10】
請求項8又は9に記載の画像生成装置であって、
当該バウンディングエリアは、当該バウンディングエリアが割り当てられた副ボーンに関連付けられた複数の制御点と、当該副ボーンとの距離の平均値、もしくは、最大値を半径とし、当該副ボーンの位置を中心とする球である、
ことを特徴とする画像生成装置。
【請求項11】
請求項1乃至10のいずれか1項に記載の画像生成装置であって、
前記計算部は、当該主座標系と当該副座標系のスケールを変更し、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該スケールを変更した主座標系における位置と、当該制御点の当該スケールを変更した副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する、
ことを特徴とする画像生成装置。
【請求項12】
記憶部、計算部、画像生成部、更新部を有する画像生成装置にて実行される画像生成方法であって、
前記記憶部は、仮想空間に配置される座標系(以下「親座標系」という。)における主ボーンの位置と、当該主ボーンに固定された座標系(以下「主座標系」という。)における副ボーンの位置と、当該副ボーンに固定された座標系(以下「副座標系」という。)における当該副ボーンに関連付けられた制御点の位置と、を記憶し、
前記計算部が、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する計算ステップと、
前記画像生成部が、前記計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する画像生成ステップと、
前記更新部が、当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させる更新ステップと、
を備えることを特徴とする画像生成方法。
【請求項13】
コンピュータを、
仮想空間に配置される座標系(以下「親座標系」という。)における主ボーンの位置と、当該主ボーンに固定された座標系(以下「主座標系」という。)における副ボーンの位置と、当該副ボーンに固定された座標系(以下「副座標系」という。)における当該副ボーンに関連付けられた制御点の位置と、を記憶する記憶部、
当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する計算部、
前記計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する画像生成部、
当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させる更新部、
として機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2009−146103(P2009−146103A)
【公開日】平成21年7月2日(2009.7.2)
【国際特許分類】
【出願番号】特願2007−321757(P2007−321757)
【出願日】平成19年12月13日(2007.12.13)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】