(57)【特許請求の範囲】
【請求項１】
仮想空間に配置される座標系（以下「親座標系」という。）における主ボーンの位置と、当該主ボーンに固定された座標系（以下「主座標系」という。）における副ボーンの位置と、当該副ボーンに固定された座標系（以下「副座標系」という。）における当該副ボーンに関連付けられた制御点の位置と、当該副ボーンに関連付けて当該副座標系における位置が固定されたバウンディングエリアの位置と、障害物オブジェクトの当該親座標系における位置と、を記憶する記憶部と、
当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該バウンディングエリアが割り当てられた当該副座標系における当該バウンディングエリアの位置と、当該親座標系における当該障害物オブジェクトの位置と、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定する衝突判定部と、
当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する計算部と、
前記計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する画像生成部と、
当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させ、当該障害物オブジェクトと衝突すると判定されたバウンディングエリアの位置を、当該障害物オブジェクトが衝突しなくなるまで、当該障害物オブジェクトから遠ざけるように、当該副ボーンとともに移動する更新部と、
を備えることを特徴とする画像生成装置。
【請求項２】
請求項１に記載の画像生成装置であって、
当該副ボーンに関連付けられた当該制御点の当該副座標系における位置は一定である、
ことを特徴とする画像生成装置。
【請求項３】
請求項１に記載の画像生成装置であって、
当該主ボーンには複数の当該副ボーンが関連付けられ、
当該副ボーンのそれぞれに異なる制御点が関連付けられ、
前記記憶部は、当該副ボーンのそれぞれについて、当該副ボーンに固定された副座標系における当該副ボーンに関連付けられた制御点の位置を記憶し、
前記計算部は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系におけるそれぞれの位置と、当該副ボーンのそれぞれに関連付けられた当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系におけるそれぞれの位置を計算する、
ことを特徴とする画像生成装置。
【請求項４】
請求項３に記載の画像生成装置であって、
前記計算部は、当該副ボーンの移動方向を正とする軸をもつ１次元座標系（以下「移動座標系」という。）における座標値が最も大きい制御点（以下「先端制御点」という。）の移動量が、
（ａ）所定値より小さい場合、当該副ボーンに関連付けられた当該制御点の当該副座標系における位置が一定になるように、当該制御点のそれぞれを移動させた位置を計算し、
（ｂ）所定値より大きい場合、当該先端制御点の当該副座標系における位置を一定にし、当該先端制御点以外の制御点の当該副座標系における位置を移動させた位置を計算する、
ことを特徴とする画像生成装置。
【請求項５】
請求項４に記載の画像生成装置であって、
前記計算部は、さらに、
（ｂ１）当該先端制御点以外の制御点の当該移動座標系における位置が、当該先端制御点の当該移動座標系における位置と等しくなった場合、当該先端制御点以外の制御点の当該副座標系における位置も一定とする、
ことを特徴とする画像生成装置。
【請求項６】
請求項１乃至５のいずれか１項に記載の画像生成装置であって、
前記記憶部は、当該主ボーンの当該親座標系における向きと、当該副ボーンの当該主座標系における向きと、をさらに記憶し、
前記計算部は、当該主ボーンの当該親座標系における位置及び向きと、当該副ボーンの当該主座標系における位置及び向きと、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する、
ことを特徴とする画像生成装置。
【請求項７】
請求項６に記載の画像生成装置であって、
前記更新部は、当該副ボーンの当該主座標系における位置を、平行移動と回転移動とのうち少なくともいずれか一方により移動させて、当該位置を更新する、
ことを特徴とする画像生成装置。
【請求項８】
請求項１に記載の画像生成装置であって、
前記記憶部は、当該主ボーンの当該親座標系における向きと、当該副ボーンの当該主座標系における向きと、当該バウンディングエリアの当該副座標系における向きと、当該障害物オブジェクトの当該親座標系における向きと、をさらに記憶し、
前記衝突判定部は、当該主ボーンの当該親座標系における位置及び向きと、当該副ボーンの当該主座標系における位置及び向きと、当該バウンディングエリアが割り当てられた当該副ボーンに固定された副座標系における当該バウンディングエリアの位置及び向きと、当該障害物オブジェクトの当該親座標系における位置及び向きと、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定する、
ことを特徴とする画像生成装置。
【請求項９】
請求項１又は８に記載の画像生成装置であって、
当該バウンディングエリアは、当該バウンディングエリアが割り当てられた副ボーンに関連付けられた複数の制御点と、当該副ボーンとの距離の平均値、もしくは、最大値を半径とし、当該副ボーンの位置を中心とする球である、
ことを特徴とする画像生成装置。
【請求項１０】
請求項１乃至９のいずれか１項に記載の画像生成装置であって、
前記計算部は、当該主座標系と当該副座標系のスケールを変更し、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該スケールを変更した主座標系における位置と、当該制御点の当該スケールを変更した副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する、
ことを特徴とする画像生成装置。
【請求項１１】
請求項１乃至１０のいずれか１項に記載の画像生成装置であって、
前記記憶部は、当該主ボーンの拡縮率を示す情報を更に記憶し、
前記計算部は、当該バウンディングエリアと当該障害物オブジェクトとが衝突すると判定された場合に、前記記憶される拡縮率を変化させることにより、当該主ボーンを拡縮するとともに、当該副ボーンを当該変化した拡縮率を用いて拡縮させる、
ことを特徴とする画像生成装置。
【請求項１２】
請求項１乃至１０のいずれか１項に記載の画像生成装置であって、
前記記憶部は、当該主ボーンの拡縮率を示す情報を更に記憶し、
前記計算部は、当該バウンディングエリアが設定されるオブジェクトに作用する外力の大きさに応じて、前記記憶される拡縮率を変化させることにより、当該主ボーンを拡縮するとともに、当該副ボーンを当該変化した拡縮率を用いて拡縮させる、
ことを特徴とする画像生成装置。
【請求項１３】
記憶部、衝突判定部、計算部、画像生成部、更新部を有する画像生成装置にて実行される画像生成方法であって、
前記記憶部には、仮想空間に配置される座標系（以下「親座標系」という。）における主ボーンの位置と、当該主ボーンに固定された座標系（以下「主座標系」という。）における副ボーンの位置と、当該副ボーンに固定された座標系（以下「副座標系」という。）における当該副ボーンに関連付けられた制御点の位置と、当該副ボーンに関連付けて当該副座標系における位置が固定されたバウンディングエリアの位置と、障害物オブジェクトの当該親座標系における位置と、が記憶され、
前記衝突判定部が、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該バウンディングエリアが割り当てられた当該副座標系における当該バウンディングエリアの位置と、当該親座標系における当該障害物オブジェクトの位置と、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定する衝突判定ステップと、
前記計算部が、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する計算ステップと、
前記画像生成部が、前記計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する画像生成ステップと、
前記更新部が、当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させ、当該障害物オブジェクトと衝突すると判定されたバウンディングエリアの位置を、当該障害物オブジェクトが衝突しなくなるまで、当該障害物オブジェクトから遠ざけるように、当該副ボーンとともに移動する更新ステップと、
を備えることを特徴とする画像生成方法。
【請求項１４】
コンピュータを、
仮想空間に配置される座標系（以下「親座標系」という。）における主ボーンの位置と、当該主ボーンに固定された座標系（以下「主座標系」という。）における副ボーンの位置と、当該副ボーンに固定された座標系（以下「副座標系」という。）における当該副ボーンに関連付けられた制御点の位置と、当該副ボーンに関連付けて当該副座標系における位置が固定されたバウンディングエリアの位置と、障害物オブジェクトの当該親座標系における位置と、を記憶する記憶部、
当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該バウンディングエリアが割り当てられた当該副座標系における当該バウンディングエリアの位置と、当該親座標系における当該障害物オブジェクトの位置と、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定する衝突判定部と、
当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する計算部、
前記計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する画像生成部、
当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させ、当該障害物オブジェクトと衝突すると判定されたバウンディングエリアの位置を、当該障害物オブジェクトが衝突しなくなるまで、当該障害物オブジェクトから遠ざけるように、当該副ボーンとともに移動する更新部、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間内のオブジェクトを変形させた画像を容易に生成するために好適な画像生成装置、画像生成方法、ならびに、プログラムに関する。
【背景技術】
【０００２】
従来から、コンピュータグラフィックスにおいて人物や動物などのキャラクターを表現する際に、その骨格をボーン（あるいはスケルトンとも呼ばれる）という線分状オブジェクトで抽象化し、各ボーンの回りにボーンに対して位置が固定される点の位置によって、皮膚の形状を抽象化したスキンという面形状を求める技術が提案されている。
【０００３】
ここで、ボーンやスキンは、３次元グラフィックスのモデリング技法で用いられる概念である。ボーンは、位置と姿勢が定まるリンク（線分状オブジェクト）であって、手足の関節のような部分で回転移動できる回転軸や回転角に制限を設けたものをいう。このように、回転移動に制限を設けた線分状オブジェクトは、「リンク」とも呼ばれる。
【０００４】
また、３次元空間内に配置される面形状の断面図（リブ）を並べ、これらをつなぎ合わせて複雑な曲面からなる形状が作られるが、この面形状をスキンと呼ぶ。
【０００５】
一般に、リブはボーンに固定されているので、ボーンが位置や姿勢を変更すると、これとともにリブの位置や姿勢も変更される。したがって、リブの形状を決める頂点（リブが多角形の場合）や、各種の制御点（リブが曲線による形状の場合）も、ボーンに固定されている。
【０００６】
ボーンやスキンを用いたモデリング技法において、モデルをより自然に表現するために様々な工夫がなされている。例えば特許文献１には、連結される２つのボーンの連結点付近のスキンの形状をできるだけ自然に変化させることができる装置が開示されている。これによれば、人間や動物の骨格における肘や膝などを捻ったとき、肘や膝付近のスキンが不自然に細くなってしまうことはない。
【０００７】
また、例えば特許文献２には、ポリゴンの頂点に複数のボーンを関連付け、このポリゴンの頂点に、関連付けられたボーンに対する関連度合いに相当する比重値を持たせて、キャラクターを高速に表示できる手法が開示されている。
【特許文献１】特開２００７−１４８８５６号公報
【特許文献２】特開２００２−９２６４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
オブジェクトの外形となるスキンを変形させるためには、ボーンの位置や姿勢を変化させ、そしてボーンに対して固定された制御点の位置を、ボーンの位置や姿勢の変化に合わせて変化させる。しかしながら、部分的にスキンの形状を変化させたい場合、従来の技術をそのまま適用しようとすると、変化させたいスキンを構成する制御点が関連付けられたボーン全体の位置や姿勢を変えなければならず、変形させたくない部分のスキンまでも変形してしまうという問題があった。
【０００９】
また、現実の粘土などを用いたいわゆるクレイアニメーションにおいて、キャラクタを部分的にもしくは全体的にぺしゃんこに変形させてコミカルに表現する手法があるが、これを従来の技術によって仮想空間内で表現しようとすると、ボーンを細かく分けて繋げたり逆に少なくしたりしなければならず、変形させたいオブジェクトの基本骨格を変える必要が出てくる。一方で、クレイアニメーションでも変形させるときと変形させないときがあり、変形させないときには従来の３次元（３Ｄ）アニメーションと同様の構成としてデザイナーの設計上の負担を低減したいという要望もある。また、ボーン同士を繋げる関節部分は、曲がることが想定されるところにのみ配置したいのが実情であるため、オブジェクトの基本骨格は変えたくないという要望もある。そのため、デザイナーへの負担を軽減しつつも、オブジェクトの形状を簡単に変えることができる技術が望まれている。
【００１０】
本発明はこのような課題を解決するものであり、仮想空間内のオブジェクトを変形させた画像を容易に生成するために好適な画像生成装置、画像生成方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１２】
本発明の第１の観点に係る画像生成装置は、記憶部、計算部、画像生成部、更新部を有する。
記憶部は、仮想空間に配置される座標系（以下「親座標系」という。）における主ボーンの位置と、当該主ボーンに固定された座標系（以下「主座標系」という。）における副ボーンの位置と、当該副ボーンに固定された座標系（以下「副座標系」という。）における当該副ボーンに関連付けられた制御点の位置と、を記憶する。
計算部は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する。
画像生成部は、計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する。
更新部は、当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させる。
【００１３】
ここで、仮想空間内に配置されるキャラクタオブジェクトの画像は、主ボーン、副ボーン、制御点、スキンを用いて表現される。
ボーンは、キャラクタオブジェクトの骨格となる線分状オブジェクトであり、ボーンの位置や向きが変化することによってキャラクタオブジェクトの基本的な位置や姿勢が変化する。本発明では、主ボーンと副ボーンの２種類のボーンを定義する。主ボーンはキャラクタオブジェクトの骨格であり、主ボーンが結合する際の主ボーン同士の対応関係と、主ボーンの形状は不変であるが、主ボーンの親座標系（仮想空間に固定された座標系）における位置は可変である。
主ボーンには、主ボーン上の所定位置を初期位置として副ボーンが配置される。主ボーンと副ボーンとの対応関係と、副ボーンの形状は不変であるが、副ボーンの主座標系（主ボーンに固定された座標系）における位置は可変である。
副ボーンには１つ以上の制御点が関連付けられる。例えば主座標系における制御点の位置を不変とすると、副ボーンの位置が変化したとき、制御点の位置も同じ変化量だけ位置が変化する。
各制御点を頂点としたポリゴンの集合によって表される面がスキンである。キャラクタオブジェクトの表面はスキンによって覆われる。制御点の位置が変化すればスキンの形状も変化する。つまり、キャラクタオブジェクトの形状を変化させる場合、画像生成装置は、まず主座標系における副ボーンの位置を移動させる。次に副ボーンの位置の変化量に基づいて制御点の位置も移動させる。このとき、移動後の制御点の位置は、副座標系から主座標系に、更に主座標系から親座標系に座標変換を施すことにより、親座標系における位置として計算される。すなわち、主座標系における副ボーンの位置を移動させれば、親座標系における制御点の位置が移動し、その結果スキンの形状が変化することになる。
【００１４】
本発明によれば、キャラクタオブジェクト全体のうち変化させたい部分のスキンを構成する制御点が関連付けられた副ボーンのみについて位置を変化させれば、変化させたい部分のスキンだけが変化し、キャラクタオブジェクトが変形する。すなわち、キャラクタオブジェクトの所望の部分だけを容易に変形させることができ、変形させたくない部分には影響しない（変形しない）。
例えば、いわゆるクレイアニメーション等でキャラクタの一部分（例えば手のひらなど）もしくは全部が押し潰されてぺしゃんこになってしまうようなコミカルな表現手法があるが、３次元仮想空間においても容易に同じような表現が可能になる。つまり、キャラクタオブジェクトを構成する主ボーンに複数の副ボーンを予め関連付け、さらに各副ボーンに制御点を関連付けておくと、変形させたい部分付近の副ボーンの位置を変化させるだけで、キャラクタオブジェクトの所望の部分だけを変形させることができる。
【００１５】
例えば、当該副ボーンに関連付けられた当該制御点の当該副座標系における位置は一定としてもよい。
本発明によれば、常に副ボーンの移動量と同じ量だけ制御点の位置を移動させることになるので、より簡単にスキンを変形させることができるようになる。例えば、ある移動対象の副ボーンに複数の制御点が予め関連付けられているとき、その副ボーンに関連付けられた制御点はすべて同じ移動量だけ移動させればよい。そして、その副ボーンに関連付けられた制御点のみから構成されるポリゴンについては、形状を変化させずに位置を移動させるだけで済み、より簡単にキャラクタオブジェクトを変形させることができる。
【００１６】
例えば、当該主ボーンには複数の当該副ボーンが関連付けられ、当該副ボーンのそれぞれに異なる制御点が関連付けられる。
また、記憶部は、当該副ボーンのそれぞれについて、当該副ボーンに固定された副座標系における当該副ボーンに関連付けられた制御点の位置を記憶する。
そして、計算部は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系におけるそれぞれの位置と、当該副ボーンのそれぞれに関連付けられた当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系におけるそれぞれの位置を計算してもよい。
本発明によれば、１つの副ボーンには複数の制御点が関連付けられるので、一度に多くの制御点の位置を変えることができる。すなわち、複数のポリゴンの集合をまとめて移動することができ、より広いスキンを一度に変形できる。
【００１７】
計算部は、当該副ボーンの移動方向を正とする軸をもつ１次元座標系（以下「移動座標系」という。）における座標値が最も大きい制御点（以下「先端制御点」という。）の移動量が、
（ａ）所定値より小さい場合、当該副ボーンに関連付けられた当該制御点の当該副座標系における位置が一定になるように、当該制御点のそれぞれを移動させた位置を計算し、
（ｂ）所定値より大きい場合、当該先端制御点の当該副座標系における位置を一定にし、当該先端制御点以外の制御点の当該副座標系における位置を移動させた位置を計算する、
ようにしてもよい。
例えば、変形させるキャラクタオブジェクトが立体的な形状をもっていて、その形状が可変であり、そのキャラクタオブジェクトが固い壁や床などの面に押し潰されてぺしゃんこになる様子を表す画像を生成するとする。この例では、所定値とは、キャラクタオブジェクトから面までの最短距離のことである。制御点の中には、最も面に近いもの（つまり先端制御点）、次に面に近いもの、…、最も面に遠いものがある。
キャラクタオブジェクトが面のある向きに移動するとき、キャラクタオブジェクトが面に接するまでの間（つまり上記（ａ）の場合）、制御点の位置の変化量は、副ボーンの位置の変化量と同じである。例えば副ボーンが平行移動すれば、制御点も同じ変位だけ平行移動する。例えば副ボーンが回転移動すれば、制御点も同じ角度だけ回転移動する。
さらにキャラクタオブジェクトが面のある向きに移動し続けると、やがてキャラクタオブジェクトは面と衝突する。言い換えれば、先端制御点が面と接触する。キャラクタオブジェクトが面と衝突すると（つまり上記（ｂ）の場合）、副座標系における先端制御点の位置はそれ以上変化せず固定される。他の制御点は引き続き同じ移動方向に移動する。やがて２番目に面に近い制御点が面と接触すると、２番目の制御点の位置はそれ以上変化せず固定される。同様にして３番目、４番目…に近い制御点の位置もやがて固定され、最終的には移動対象の副ボーンに関連付けられた制御点の位置はすべて固定される。キャラクタオブジェクトが面より奥にめり込んでしまうことはない。したがって、立体的な形状をもったキャラクタオブジェクトを、クレイアニメーションでぺしゃんこになるような表現手法と同じように変化させることが可能になる。
【００１８】
計算部は、さらに、
（ｂ１）当該先端制御点以外の制御点の当該移動座標系における位置が、当該先端制御点の当該移動座標系における位置と等しくなった場合、当該先端制御点以外の制御点の当該副座標系における位置も一定としてもよい。
本発明によれば、面に最も近い制御点（先端制御点）、２番目に面に近い制御点など、各制御点が固定される位置は、面と接する位置である。すなわち、移動対象の副ボーンに関連付けられた制御点は面に沿って平らに変形する。したがって、立体的な形状をもったキャラクタオブジェクトは面に沿って平らに変形することになり、クレイアニメーションでぺしゃんこになるような表現手法と同じような形状変化が可能になる。
【００１９】
記憶部は、当該主ボーンの当該親座標系における向きと、当該副ボーンの当該主座標系における向きと、をさらに記憶してもよい。
そして、計算部は、当該主ボーンの当該親座標系における位置及び向きと、当該副ボーンの当該主座標系における位置及び向きと、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算してもよい。
本発明によれば、副ボーンは任意に姿勢を変えられるボーンとして定義できるようになる。例えば、副ボーンの形状は、点や、任意の長さをもった線分や曲線などとすることができる。また、平面、曲面などのような２次元の形状でもよいし、円柱、角柱、円錐、角錐、球形、多面体などのような３次元の形状でもよい。したがって、副ボーンを平行移動させるだけでなく、回転移動させることもできるようになり、スキンを様々な形状に変化させることが可能になる。
【００２０】
更新部は、当該副ボーンの当該主座標系における位置を、平行移動と回転移動とのうち少なくともいずれか一方により移動させて、当該位置を更新してもよい。
本発明によれば、画像生成装置は、副ボーンを平行移動させたり回転移動させたりすることができる。例えば副座標系における制御点の位置を固定にすると、副ボーンの平行移動又は回転移動による移動量と同じ量だけ制御点の位置も移動する。したがって、キャラクタオブジェクトを部分的にもしくは全体的に平らにすることができるほか、所望の部分に窪みをつけたり捻ったりすることもできる。なお、回転移動には、ある点を中心に回転させる中心点回転移動（腕をぐるぐる回すような回転移動）だけでなく、ある軸を中心に回転させる軸回転移動（筒をころころ転がすような回転移動）も含まれる。
【００２１】
記憶部は、当該副ボーンに関連付けて当該副座標系における位置が固定されたバウンディングエリアの位置と、障害物オブジェクトの当該親座標系における位置と、をさらに記憶してもよい。
また、画像生成装置は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該バウンディングエリアが割り当てられた当該副座標系における当該バウンディングエリアの位置と、当該親座標系における当該障害物オブジェクトの位置と、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定する衝突判定部をさらに備えることができる。
そして、更新部は、当該障害物オブジェクトと衝突すると判定されたバウンディングエリアの位置を、当該バウンディングエリアと当該障害物オブジェクトが衝突しなくなるまで、当該障害物オブジェクトから遠ざけるように移動させてもよい。
ここで、バウンディングエリアは、キャラクタオブジェクトと障害物オブジェクトとの衝突判定に用いられ、予め設定された位置に配置される。副ボーンに固定された副座標系におけるバウンディングエリアの位置は不変である。典型的には、バウンディングエリアは、キャラクタオブジェクトの表面と同じか、もしくは表面より外側に覆うように、配置される。例えばバウンディングエリアの形状をキャラクタオブジェクトの表面と同じ形状にすると、スキンをそのままバウンディングエリアとして扱うことができる。障害物オブジェクトがバウンディングエリアに接したとき、もしくはバウンディングエリア内に入ったとき、キャラクタオブジェクトは障害物オブジェクトと衝突したものと判定される。
キャラクタオブジェクトが障害物オブジェクトと衝突したと判定されると、バウンディングエリアの位置は障害物オブジェクトから遠ざかるように移動する。副座標系におけるバウンディングエリアの位置は不変であるから、副ボーンも障害物オブジェクトから遠ざかるように移動する。つまり、副ボーンの移動に合わせて、関連付けられた制御点の位置も移動し、スキンの形状が変化する。
本発明によれば、画像生成装置は、キャラクタオブジェクトを変形させるとき、変形する側のキャラクタオブジェクトを、変形させる側の（相手の）キャラクタオブジェクトの形状に合わせるように、変形させることができる。バウンディングエリアの形状をスキンの形状に合わせるようにすれば、よりリアリティのある変形のさせ方が可能になる。また、バウンディングエリアの形状を簡略化すれば、デフォルメされた変形のさせ方が可能になる。
【００２２】
記憶部は、当該主ボーンの当該親座標系における向きと、当該副ボーンの当該主座標系における向きと、当該バウンディングエリアの当該副座標系における向きと、当該障害物オブジェクトの当該親座標系における向きと、をさらに記憶してもよい。
そして、衝突判定部は、当該主ボーンの当該親座標系における位置及び向きと、当該副ボーンの当該主座標系における位置及び向きと、当該バウンディングエリアが割り当てられた当該副ボーンに固定された副座標系における当該バウンディングエリアの位置及び向きと、当該障害物オブジェクトの当該親座標系における位置及び向きと、に基づいて、当該バウンディングエリアと当該障害物オブジェクトとが衝突するか否かを判定してもよい。
本発明によれば、バウンディングエリアは任意に姿勢を変えられるエリアとして定義できるようになる。バウンディングエリアは、平行移動、回転移動、もしくはこれらの移動の組み合わせを用いて移動することができる。つまり、副ボーンが様々な移動方法で移動し、スキンは様々な形状に変化する。例えば、障害物オブジェクトの形状に合わせて、スキンの一部もしくは全部を押したり引っ張ったりして変形することもできるし、回転させたり捻ったりして変形することもできる。
【００２３】
当該バウンディングエリアは、当該バウンディングエリアが割り当てられた副ボーンに関連付けられた複数の制御点と、当該副ボーンとの距離の平均値、もしくは、最大値を半径とし、当該副ボーンの位置を中心とする球であってもよい。
バウンディングエリアとして球の形状を採用すると、キャラクタオブジェクトと障害物オブジェクトとの衝突判定が簡略化される。また、衝突後のスキンの変形のさせ方も簡略化される。例えば、バウンディングエリアと障害物オブジェクトが衝突するとき、障害物オブジェクトの形状も部分的に球体として近似すると、衝突判定と衝突前後の形状変化は、剛体の球体同士の衝突モデルに置き換えることが可能になる。また、衝突モデルとして扱う際、古典力学における完全弾性衝突に仮定したり、これらの球体の質量を同じに、もしくはどちらか片方の質量を圧倒的に大きいものと仮定したりすれば、衝突後の球体の位置の計算は容易になる。すなわち、衝突後の制御点の位置計算は簡略化され、スキンを簡単に変形させることができるようになる。
【００２４】
計算部は、当該主座標系と当該副座標系のスケールを変更し、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該スケールを変更した主座標系における位置と、当該制御点の当該スケールを変更した副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算してもよい。
例えば、主座標系と副座標系のスケールをそれぞれ同じ量だけ変えると、主ボーンは形状を変えずに大きさが拡大又は縮小する。座標系として、一般的には３次元座標系が用いられるが、いずれの１つ又は２つの次元についてスケールを変えることとしてもよく、この場合、主ボーンの大きさだけでなく、あるいは主ボーンの大きさに変えて、主ボーンの形状も変化する。
本発明によれば、副ボーンの位置を移動させるだけでなく主ボーンの大きさや形状を変えることによってスキンを変化させることができる。すなわち、キャラクタオブジェクトの変化の仕方にバリエーションを持たせることができる。例えば、キャラクタオブジェクトの一部分もしくは全部が拡大・縮小するように変形させることができる。
【００２５】
本発明のその他の観点に係る画像生成方法は、記憶部、計算部、画像生成部、更新部を有する画像生成装置にて実行される画像生成方法であって、計算ステップ、画像生成ステップ、更新ステップを備える。
記憶部には、仮想空間に配置される座標系（以下「親座標系」という。）における主ボーンの位置と、当該主ボーンに固定された座標系（以下「主座標系」という。）における副ボーンの位置と、当該副ボーンに固定された座標系（以下「副座標系」という。）における当該副ボーンに関連付けられた制御点の位置と、が記憶される。
計算ステップは、計算部が、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する。
画像生成ステップは、画像生成部が、計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する。
更新ステップは、更新部が、当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させる。
本発明によれば、オブジェクトの変形させたくない部分は変形させず、所望の部分だけを変形させた画像を、容易に生成することができる。
【００２６】
本発明のその他の観点に係るプログラムは、コンピュータを、記憶部、計算部、画像生成部、更新部として機能させる。
記憶部は、仮想空間に配置される座標系（以下「親座標系」という。）における主ボーンの位置と、当該主ボーンに固定された座標系（以下「主座標系」という。）における副ボーンの位置と、当該副ボーンに固定された座標系（以下「副座標系」という。）における当該副ボーンに関連付けられた制御点の位置と、を記憶する。
計算部は、当該主ボーンの当該親座標系における位置と、当該副ボーンの当該主座標系における位置と、当該制御点の当該副座標系における位置とに基づいて、当該制御点の当該親座標系における位置を計算する。
画像生成部は、計算された制御点の位置により、スキンの形状を定め、当該仮想空間に配置される当該スキンの形状を表す画像を生成する。
更新部は、当該副ボーンの当該主座標系における位置を更新して、当該スキンの形状を変化させる。
本発明によれば、オブジェクトの変形させたくない部分は変形させず、所望の部分だけを変形させた画像を、容易に生成することができる。
【００２７】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００２８】
本発明によれば、仮想空間内のオブジェクトを変形させた画像を容易に生成することができる。
【発明を実施するための最良の形態】
【００２９】
本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【００３０】
図１は、プログラムを実行することにより、本発明の画像生成装置の機能を果たす典型的な情報処理装置１００の概要構成を示す模式図である。以下、本図を参照して説明する。
【００３１】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory）１０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェース１０４と、コントローラ１０５と、外部メモリ１０６と、ＤＶＤ−ＲＯＭ（Digital Versatile Disk - Read Only Memory）ドライブ１０７と、画像処理部１０８と、音声処理部１０９と、ＮＩＣ（Network Interface Card）１１０と、を備える。
【００３２】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０７に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の画像生成装置が実現される。
【００３３】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００３４】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００３５】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００３６】
インターフェース１０４を介して接続されたコントローラ１０５は、ユーザがダンスゲームやサッカーゲームなどのゲームの実行の際に行う操作入力を受け付ける。
【００３７】
インターフェース１０４を介して着脱自在に接続された外部メモリ１０６には、ゲームのプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、ネットワークを用いたゲームのチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００３８】
ＤＶＤ−ＲＯＭドライブ１０７に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０７は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００３９】
画像処理部１０８は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０８が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０８が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０８に接続されるモニター（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００４０】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やアルファブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００４１】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００４２】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００４３】
また、ゲームの画像などの情報をＤＶＤ−ＲＯＭに用意しておき、これをフレームメモリに展開することによって、ゲームの様子などを画面に表示することができるようになる。
【００４４】
音声処理部１０９は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【００４５】
音声処理部１０９では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ＡＤＰＣＭ（Adaptive Differential Pulse Code Modulation）形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００４６】
ＮＩＣ  １１０は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００４７】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０７に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００４８】
次に、本実施形態の画像生成装置２００の機能的な構成について説明する。
図２は、画像生成装置２００の機能的な構成を示す図である。本図に示すように、画像生成装置２００は、記憶部２０１、計算部２０２、画像生成部２０３、更新部２０４を備える。
【００４９】
図３は、ボーン、制御点、スキンを用いたオブジェクトの仮想空間モデルの一例を表す図である。仮想空間にはグローバルな座標系３１１が定義され、以下、この座標系３１１を「親座標系」３１１と呼ぶことにする。例えば親座標系３１１にはデカルト座標系が用いられる。
【００５０】
この仮想空間には、主ボーン３０１（本図中では３０１Ａ、３０１Ｂの２つ）が配置されている。主ボーン３０１の長さと形状は一定である。主ボーン３０１の位置と向きは可変である。つまり主ボーン３０１の姿勢は変化する。主ボーン３０１Ａの端点３０５Ａ２は、主ボーン３０１Ｂの端点３０５Ｂ１に連結されている。例えば、主ボーン３０１Ｂは、端点３０５Ｂ１を回転中心にして、主ボーン３０１Ａに対して回転することができる。
【００５１】
主ボーン３０１の位置は、親座標系３１１における座標値として表すことができる。また、主ボーン３０１の向きも、親座標系３１１における方向ベクトルとして表すことができる。主ボーン３０１の形状は任意である。
【００５２】
主ボーン３０１Ａは、図示しない他の主ボーンと端点３０５Ａ１で連結されていてもよい。同様に、主ボーン３０１Ｂは、図示しない他の主ボーンと端点３０５Ｂ２で連結されていてもよい。本発明をより理解しやすくするため、２つの主ボーン３０１Ａ，３０１Ｂから構成されるモデルを用いて説明する。
【００５３】
主ボーン３０１Ａには、主ボーン３０１Ａに固定された座標系３１２が定義され、以下、この座標系３１２を「主座標系」３１２と呼ぶ。主座標系３１２の原点の位置は、主ボーン３０１Ａの端点３０５Ａ１の位置と一致する。同様に、主ボーン３０１Ｂにも別の主座標系（図示せず）を定義することができる。例えば主座標系３１２には極座標系が用いられる。
【００５４】
例えば、主ボーン３０１Ａに固定された主座標系３１２における回転量を与えることにより、一方の主ボーン３０１Ａに対する他方の主ボーン３０１Ｂの相対的な姿勢が一意に定まることになる。主ボーン３０１Ｂの運動は、主座標系３１２から親座標系３１１に座標変換することにより、親座標系３１１における運動として記述できる。なお、ここで言う回転には、「ある１つの軸を中心に回転する」の意味だけでなく、「ある１つの点を中心に回転する」の意味も含まれる。
【００５５】
主ボーン３０１には、副ボーン３０２（本図中では３０２Ａ、３０２Ｂ、３０２Ｃの３つ）が関連付けられている。副ボーン３０２の初期位置（オブジェクトを変形させる前の位置）は、主ボーン３０１上の所定の位置である。それぞれの副ボーン３０２には、１つ以上の制御点３０３が関連付けられている。本図中では、副ボーン３０２Ａには制御点３０３Ａ１〜３０３Ａ６が、副ボーン３０２Ｂには制御点３０３Ｂ１〜３０３Ｂ６が、副ボーン３０２Ｃには制御点３０３Ｃ１〜３０３Ｃ６が、それぞれ関連付けられている。以下、図中では、この関連付けを点線で表現している。
【００５６】
つまり、制御点３０３は、従来のように主ボーン３０１に関連付けられるのではなく、副ボーン３０２に関連付けられる。１つの制御点３０３は、いずれか１つの副ボーン３０２に関連付けられる。１つの副ボーン３０２に複数の制御点３０３を関連付けてもよい。
【００５７】
副ボーン３０２の位置と向きは、主座標系３１２を用いて、それぞれ主ボーンに対する相対座標と相対ベクトルとして表すことができる。主座標系３１２から親座標系３１１に座標変換することにより、主座標系３１２を用いた副ボーン３０２の位置と向きは、それぞれ親座標系３１１を用いた座標とベクトルとして表すことができる。
【００５８】
副ボーン３０２Ａには、副ボーン３０２Ａに固定された座標系３１３が定義され、以下、この座標系３１３を「副座標系」３１３と呼ぶ。副座標系３１３の原点の位置は、副ボーン３０２の位置と一致する。同様に、副ボーン３０２Ｂ，３０２Ｃにもそれぞれ副座標系（図示せず）を定義することができる。例えば副座標系３１３には極座標系が用いられる。
【００５９】
親座標系３１１又は主座標系３１２における制御点３０３の位置は可変であるが、副座標系３１３における制御点３０３の位置（言い換えれば、制御点３０３の副ボーン３０２に対する相対的位置）は不変である。
【００６０】
副ボーン３０２の形状は任意である。本図では、副ボーン３０２Ａ，３０２Ｂ，３０２Ｃはいずれも角柱の形状をしているが、これは本発明を理解しやすいように便宜的に記したものである。典型的には、副ボーン３０２は長さも太さもゼロの架空のボーンとすることができる。副ボーン３０２は制御点３０３の位置の制御のために用いるものであって、画像生成装置２００が生成する画像には副ボーン３０２は描かれない。
【００６１】
座標変換により制御点３０３の親座標系３１１における位置が決まると、制御点３０３の位置に基づいてスキン３０４の形状を決めることができる。本実施形態では、スキン３０４は、微小な多角形（典型的には三角形や四角形など）のポリゴン（プリミティブ）の集合体であり、予め決められた対応付けで制御点３０３をポリゴンの頂点としている。スキン３０４の形状は、ポリゴンに分割され数値データ化されて表される。
【００６２】
制御点３０３をポリゴンの頂点としてスキン３０４の形状を定める手法のほか、各制御点３０３に重みを割り振ることによって定義されるＮＵＲＢＳ（Non Uniform Rational B Spline）曲面をスキンとする手法を用いてもよい。この手法では、制御点３０３の数をさらに増やすことも可能である。この場合には、２つのパラメータｕ，ｖの有理多項式によりスキン３０４内の点の座標値が定められ、スキン３０４の形状が定まることとなる。
【００６３】
図２に戻り、記憶部２０１は、主ボーン情報２５１、副ボーン情報２５２、制御点情報２５３を記憶する。ＲＡＭ  １０３とＣＰＵ  １０１が協働して記憶部２０１として機能する。
【００６４】
主ボーン情報２５１は、仮想空間に配置される親座標系３１１における主ボーン３０１の位置と向きを示す情報である。複数の主ボーン３０１が存在する場合には、それぞれの主ボーン３０１の位置と向きを示す主ボーン情報２５１が記憶部２０１に記憶される。位置は、親座標系３１１を用いた座標値として表される。向きは、親座標系３１１を用いた方向ベクトルとして表される。ただし、主ボーン３０１の向きが不変である（もしくは不変を見なせる）モデルの場合、主ボーン情報２５１は、主ボーン３０１の向きを示す情報を含まなくてもよい。
【００６５】
副ボーン情報２５２は、主ボーン３０１に固定された主座標系３１２における副ボーン３０２の位置と向きを示す情報である。複数の副ボーン３０２が存在する場合には、それぞれの副ボーン３０２の位置と向きを示す副ボーン情報２５２が記憶部２０１に記憶される。位置と向きは、それぞれ主座標系３１２を用いた座標値と方向ベクトルとして表される。また、位置と向きは、主座標系３１２から親座標系３１１に座標変換することにより、それぞれ親座標系３１１を用いた座標値と方向ベクトルとして表すことができる。ただし、副ボーン３０２の向きが不変である（もしくは不変を見なせる）モデルの場合、副ボーン情報２５２は、副ボーン３０２の向きを示す情報を含まなくてもよい。
【００６６】
制御点情報２５３は、副ボーン３０２のそれぞれについて、副ボーン３０２に固定された副座標系３１３における、副ボーン３０２に予め割り当てられた制御点３０３の位置を示す情報である。複数の制御点３０３が存在する場合には、それぞれの制御点３０３の位置を示す制御点情報２５３が記憶部２０１に記憶される。ある副ボーン３０２に固定された副座標系３１３における、その副ボーン３０２に関連付けられた制御点３０３の位置は、一定である。制御点３０３の位置は、副座標系３１３から主座標系３１２に座標変換することにより、主座標系３１２を用いた座標値として表される。さらに制御点３０３の位置は、主座標系３１２から親座標系３１１に座標変換することによって、親座標系３１１を用いた座標値として表わされる。
【００６７】
計算部２０２は、記憶部２０１に記憶された主ボーン情報２５１と副ボーン情報２５２と制御点情報２５３とに基づいて、各制御点３０３の親座標系３１１における位置を計算する。つまり、計算部２０２は、副座標系３１３における制御点３０３の位置を、副座標系３１３から主座標系３１２に座標変換し、更に主座標系３１２から親座標系３１１に座標変換することによって、副座標系３１３における位置を親座標系３１１における位置に変換する。ＣＰＵ  １０１と画像処理部１０８が協働して計算部２０２として機能する。
【００６８】
画像生成部２０３は、計算部２０２により計算された制御点３０３の親座標系３１１における位置に基づいて、スキン３０４の形状を求め、仮想空間に配置されるスキン３０４の形状を表す画像を生成する。画像生成部２０３は、予め決められた対応付けで各制御点３０３を頂点としたポリゴンを配置することによって、スキン３０４を配置した画像を生成する。例えば、後述する更新部２０４により副ボーン３０２の主座標系における位置又は向きが更新されると、画像生成部２０３は、計算部２０２によって計算された更新後の制御点３０３の位置に基づいて新たなスキン３０４を配置した画像を生成する。ＣＰＵ  １０１と画像処理部１０８が協働して画像生成部２０３として機能する。
【００６９】
更新部２０４は、記憶部２０１に記憶された、副ボーン３０２の主座標系３１２における位置と向きを更新することによって、スキン３０４の形状を変化させる。ＣＰＵ  １０１と画像処理部１０８とＲＡＭ  １０３が協働して、画像生成部２０３として機能する。
【００７０】
図４（ａ）と（ｂ）は、仮想空間に配置された主ボーン３０１、副ボーン３０２、制御点３０３、スキン３０４を簡略化して表した図である。図４（ａ）は更新部２０４による更新前であり、図４（ｂ）は更新部２０４による更新後である。副ボーン３０２は、長さも太さもゼロのボーン、すなわち形状が「点」のボーンとすることができる。
【００７１】
デカルト座標系を用いて説明すると、更新部２０４は、例えば副ボーン３０２Ｂの位置をＸ軸方向にΔＬＸ、Ｙ軸方向にΔＬＹ、Ｚ軸方向にΔＬＺだけ平行移動させる。このとき、それぞれの制御点３０３の位置は、予め関連付けられた副ボーン３０２に対して所定の位置に固定されているため、更新部２０４は、副ボーン３０２Ｂに関連付けられた制御点３０３Ｂ１，３０３Ｂ２，３０３Ｂ３の位置も、Ｘ軸方向にΔＬＸ、Ｙ軸方向にΔＬＹ、Ｚ軸方向にΔＬＺだけ平行移動させる。各座標値の変化量ΔＬＸ，ΔＬＹ，ΔＬＺの大きさは任意である。
【００７２】
この平行移動の結果、図４（ａ）に示される各制御点３０３を頂点とするポリゴンで表現されるスキン３０４の形状は、図４（ｂ）に示すように、副ボーン３０２に関連付けられた制御点３０３Ｂ１，３０３Ｂ２，３０３Ｂ３が主ボーン３０１側にへこんだ形状になる。例えば、皮膚を指で押してへこむ様子を表す画像を生成することができる。
【００７３】
なお、更新部２０４は、複数の副ボーン３０２についてそれぞれ別個に、任意の位置に移動させることができる。
【００７４】
副ボーン３０２の移動は、平行移動に限られない。
図５（ａ）と（ｂ）は、仮想空間に配置された主ボーン３０１、副ボーン３０２、制御点３０３、スキン３０４を簡略化して表した図である。図５（ａ）は更新部２０４による更新前を表し、図５（ｂ）は更新部２０４による更新後を表している。副ボーン３０２は、長さも太さもゼロのボーンである。この例では、更新部２０４は、副ボーン３０２Ｂに固定された副座標系において副ボーン３０２Ｂの位置と向きの両方を変化させることによって、制御点３０３Ｂ１〜３０３Ｂ３をＸ軸方向にΔＬＸ、Ｙ軸方向にΔＬＹ、Ｚ軸方向にΔＬＺだけ平行移動させ、且つ、１つの軸を中心に角度Δθだけ回転移動（軸回転移動）させている。勿論、更新部２０４は、回転移動のみ行ってもよい。角度Δθ（回転量）の大きさは任意である。
【００７５】
この軸回転移動の結果、図５（ａ）に示すスキン３０４の形状は、図５（ｂ）に示すような副ボーン３０２Ｂ付近が盛り上がって且つねじれた形状に変化する。例えば、皮膚を指でつまみつつ、ねじったときの様子を表す画像を生成することができる。
【００７６】
回転移動は、１つの軸を中心に回転させる移動だけに限らず、１つの点（典型的には副ボーン３０２の位置）を中心に回転させる移動（中心点回転移動）でもよい。図６（ａ）は、図５（ａ）の状態から更新部２０４によって更新された後の状態を示す図である。副ボーン３０２は、長さも太さもゼロのボーンである。この例では、更新部２０４は、副ボーン３０２Ｂに固定された副座標系において、副ボーン３０２Ｂの位置を固定し、副ボーン３０２Ｂの向きを変化させることによって、制御点３０３Ｂ１〜３０３Ｂ３を、１つの点（副ボーン３０２Ｂの位置）を中心に角度Δφだけ回転移動させている。勿論、更新部２０４は、平行移動と軸回転移動の少なくともいずれか一方と共に、中心点回転させてもよい。角度Δφ（回転量）の大きさは任意である。
【００７７】
この中心点回転移動の結果、図５（ａ）に示すスキン３０４の形状は、図６（ａ）に示すような副ボーン３０２Ｂ付近がねじれた形状に変化する。例えば、雑巾を絞ったときの様子を表す画像を生成することができる。
【００７８】
副ボーン３０２の長さと太さは、いずれもゼロでない値であってもよい。言い換えれば、副ボーン３０２の形状は「点」に限られず、任意の長さをもった線分や曲線などでもよい。また、平面、曲面などのような任意の２次元の形状でもよいし、円柱、角柱、円錐、角錐、球形、多面体などのような任意の３次元の形状でもよい。
【００７９】
例えば、図６（ｂ）では、副ボーン３０２Ａ，３０２Ｂ，３０２Ｃはいずれも角柱の形状をしている。そして、副ボーン３０２Ａに関連付けられた制御点３０３Ａ１〜３０３Ａ３は、副ボーン３０２Ａの異なる部分で関連付けられて（結ばれて）いる。本図では、制御点３０３Ａ１は副ボーン３０２Ａの中央部分と、制御点３０３Ａ２は副ボーン３０２Ａの上端部分と、制御点３０３Ａ３は副ボーン３０２Ａの下端部分と、それぞれ結ばれている。副ボーン３０２Ｂ，３０２Ｃについても同様である。ただし、制御点３０３を副ボーン３０２のどの場所と結ぶかは自由である。
【００８０】
副ボーン３０２に点ではない形状をもたせたとしても、各制御点３０３が副ボーン３０２の同一部分で関連付けて（結んで）平行移動・軸回転移動・中心点回転移動させる場合には、更新後のスキン３０４の形状は、上述のように副ボーン３０２を点の形状としたときと実質的に同じになる。
【００８１】
なお、更新部２０４は、上記のように副ボーン３０２を移動させることによって制御点３０３の位置を変える制御ができるほか、主座標系３１２における副ボーン３０２の位置を変えずに親座標系３１１における主ボーン３０１の位置を変える制御や、主座標系３１２における副ボーン３０２の位置を変えずに直接制御点３０３の位置を変える制御といった、従来と同じ制御もできる。更新部２０４は、ゲーム毎に、あるいはゲームのシーン毎に、これらの制御を使い分ける。
【００８２】
次に、画像生成装置２００の上記各部が実行する画像生成処理について、図７のフローチャートを用いて説明する。この画像生成処理によって、スキン３０４の形状が変化した画像が生成される。例えば、画像生成装置２００の各部は、垂直同期（ＶＳｙｎｃ）などの所定のタイミングで画像生成処理を繰り返し実行する。
【００８３】
以下の説明では、例えば図８に示すように、ヘビ型のキャラクタオブジェクト８００が配置される仮想空間モデルを考える。キャラクタオブジェクト８００の表面は、複数の制御点３０３によって決まるポリゴンの集合から構成されるスキン３０４で覆われている。主ボーン３０１（例えば背骨）の形状に沿って、副ボーン３０２（本図中では３０２Ａ，３０２Ｂ，３０２Ｃの３つ）を配置する。それぞれの副ボーン３０２には、１個以上の制御点３０３（本図中では、副ボーン３０２Ａに関連付けられた制御点３０３Ａ（○印で表現），副ボーン３０２Ｂに関連付けられた制御点３０３Ｂ（×印で表現），副ボーン３０２Ｃに関連付けられた制御点３０３Ｃ（□印で表現）、の３種類）が関連付けられる。
【００８４】
まず、画像生成部２０３は、記憶部２０１に記憶されている主ボーン情報２５１と副ボーン情報２５２と制御点情報２５３とを読み出す（ステップＳ７０１）。上述のように、主ボーン情報２５１は、親座標系３１１における主ボーン３０１の位置を示す情報である。副ボーン情報２５２は、主座標系３１２における副ボーン３０２の位置を示す情報である。制御点情報２５３は、副座標系３１３における副ボーン３０２に割り当てられた制御点３０３の位置を示す情報である。なお、主ボーン３０１の向きと副ボーン３０２の向きを一定としている。
【００８５】
計算部２０２は、副座標系３１３における各制御点３０３の位置を計算する（ステップＳ７０２）。例えば、計算部２０２は、キャラクタオブジェクト８００が移動したり姿勢を変えたりするとき、変化後の各制御点３０３の位置を計算する。なお、計算部２０２は、親座標系３１１における主ボーン３０１の位置と、主座標系３１２における副ボーン３０２の位置も計算するが、主ボーン３０１と副ボーン３０２の位置が変わらないのであれば、これらの計算を省略してもよい。
【００８６】
例えば図９に示すように、キャラクタオブジェクト８００が車オブジェクト（図示せず）のタイヤに轢かれたとき、画像生成部２０３は地面８２０にタイヤ痕９００を配置し、更新部２０４はキャラクタオブジェクト８００を構成する制御点３０３のうち、タイヤに轢かれた部分に含まれる制御点３０３Ｂに関連付けられた副ボーン３０２Ｂの副座標系３１３における位置を、地面８２０に向かって垂直な方向に平行移動させる。
【００８７】
すると、各制御点３０３Ｂの副座標系３１３における位置を一定としているため、各制御点３０３Ｂの主座標系３１２における位置も、副ボーン３０２と同じ方向に平行移動することになる。
【００８８】
計算部２０２は、副座標系３１３における各制御点３０３の位置を、親座標系３１１に座標変換する（ステップＳ７０３）。
【００８９】
画像生成部２０３は、ポリゴンの頂点と制御点３０３との間に予め決定された対応関係に基づいて、ステップＳ７０３で計算された各制御点３０３の位置から、スキン３０４の形状を計算する（ステップＳ７０４）。この対応関係は、例えば制御点３０３の識別番号とポリゴンの識別番号とを対応付けるデータとしてテーブル形式等で記述され、予め記憶部２０１に記憶されている。
【００９０】
更新部２０４は、主ボーン情報２５１と副ボーン情報２５２と制御点情報２５３とを更新する（ステップＳ７０５）。つまり、更新部２０４は、計算部２０２がステップＳ７０２で計算した主ボーン３０１の位置と、副ボーン３０２の位置と、制御点３０３の位置とを新たな位置とした、主ボーン情報２５１と副ボーン情報２５２と制御点情報２５３とを生成して、記憶部２０１を更新する。
【００９１】
そして、画像生成部２０３は、更新された各制御点３０３の位置を各ポリゴンの頂点として、スキン３０４の形状を決定し、スキン３０４の形状を表す画像を生成する（ステップＳ７０６）。画像生成部２０３は、移動させる副ボーン３０２Ｂに対応付けられた制御点３０３Ｂのみから構成されるポリゴン（タイヤに轢かれた部分のポリゴン）を平行移動させ、頂点の一部に制御点３０３Ｂが含まれるポリゴン（タイヤ痕８１０の両際の部分）の形状を変化させるだけでよい。
【００９２】
本実施形態によれば、画像生成装置２００は、すべてのスキン３０４の位置と形状を計算し直す必要はなく、移動させる制御点３０３のみから構成されるポリゴンについては形状を変化させずに移動させるだけでよいので、より簡単にオブジェクトを変形させた画像を生成できるようになる。
【００９３】
例えば、被写体が粘土で作成されているクレイアニメーションでは、キャラクタが何かにぶつかったときや落ちたときなどに、キャラクタをぺしゃんこにするコミカルな表現手法が用いられるが、本発明によれば、直接制御点３０３の位置を制御する代わりに副ボーン３０２の位置が向きを変化させることにより、３次元仮想空間においてまるでクレイアニメーションであるかのようにキャラクタを変形させた画像を簡単に生成することができる。例えば図８のように地面を這っているキャラクタオブジェクト８００が車に轢かれて、図９に示すようにぺしゃんこになってしまった様子を表す画像を簡単に生成できる。
【００９４】
（実施形態２）
次に、本発明のその他の実施形態について説明する。上述の実施形態では、副ボーン３０２に固定された副座標系３１３における制御点３０３の位置は一定としているが、本実施形態は、制御点３０３の位置の移動量がしきい値より小さければ不変とし、大きければ可変としている点で異なる。
【００９５】
図１０〜１３は、本実施形態で扱う仮想空間モデルの主ボーン３０１、副ボーン３０２、制御点３０３、スキン３０４を表す図である。スキン３０４が表す面と、衝突面（典型的には地面や壁など）１０２０とは、ゼロでない角度Δψをなす。更新部２０４は、衝突面１０２０への向きを移動方向として、副ボーン３０２を移動させる。なお、本発明をより理解しやすくするために、移動開始前の各制御点３０３が等間隔αのマス目状に配置されているものとする。
【００９６】
本実施形態では、一例として副ボーン３０２Ａ〜３０２Ｃのうち副ボーン３０２Ｂのみを平行移動させる。副ボーン３０２Ｂには、衝突面１０２０に近い順に、制御点３０３Ｂ１，３０３Ｂ２，３０３Ｂ３の３種類がある。言い換えれば、副ボーン３０２の移動方向を正の向きとする軸を持つ１次元座標系（以下「移動座標系」と言う。）３１４において、座標値が大きい順に、制御点３０３Ｂ１，３０３Ｂ２，３０３Ｂ３が配置される。移動座標系３１４において「衝突面１０２０に最も近い」とは、移動座標系３１４における位置の座標値が最も大きいということである。
【００９７】
図１４は、上述のステップＳ７０２の処理の詳細を説明するためのフローチャートである。
【００９８】
上述のステップＳ７０２において、計算部２０２は、移動座標系３１４における副ボーン３０２Ｂの移動量と同じ量だけ移動させた、各制御点３０３Ｂ１〜Ｂ３の位置を計算する。そして、移動座標系３１４から副座標系３１３に座標変換して、副座標系３１３における各制御点３０３の位置を計算する（ステップＳ１４０１）。
【００９９】
なお、副座標系３１３の１つの軸と、移動座標系３１４の軸とを一致させれば、この移動座標系３１４から副座標系３１３への座標変換を省略することができる。
【０１００】
次に更新部２０４は、衝突面１０２０に最も近い制御点３０３Ｂ１（先端制御点）の移動量が所定のしきい値Δλより小さいか否かを判別する（ステップＳ１４０２）。
【０１０１】
ここで、図１１は、制御点３０３Ｂ１をしきい値Δλだけ移動させたときの仮想空間モデルを表す図である。所定のしきい値Δλは、典型的には、移動開始前のスキン３０４と衝突面１０２０との距離の最小値である。例えば、あるキャラクタオブジェクトが地面の上に落ちていくとき、衝突面１０２０は地面であり、落ちていくキャラクタオブジェクトの表面と地面との最短距離がΔλになる。
【０１０２】
制御点３０３Ｂ１の移動量（あるいは副ボーン３０２Ｂの移動量）がしきい値Δλより小さい場合（ステップＳ１４０２；ＹＥＳ）、更新部２０４は、ステップＳ１４０１に戻り引き続き副ボーン３０２Ｂを移動方向１０５０に移動させる。計算部２０２は、副ボーン３０２の移動量と同じ量だけ、移動する副ボーン３０２に関連付けられた制御点３０３も移動させる。
【０１０３】
制御点３０３Ｂ１の移動量（あるいは副ボーン３０２Ｂの移動量）がしきい値Δλより小さくない場合（ステップＳ１４０２；ＮＯ）、計算部２０２は、衝突面１０２０に最も近い制御点３０３Ｂ１を現在の位置に固定させる（ステップＳ１４０３）。すなわち、制御点３０３Ｂ１をそれ以上移動させない。例えば、あるキャラクタオブジェクトが地面の上に落ちていくとき、キャラクタオブジェクトの衝突面１０２０に最も近い部分が地面に接すると、地面に接した部分はその位置で固定され、地面にめり込むことはない。
【０１０４】
そして更新部２０４は副ボーン３０２Ｂを移動させ、計算部２０２は固定していない他の制御点３０３Ｂ２，３０３Ｂ３を移動方向１０５０に移動させる（ステップＳ１４０４）。計算部２０２は、移動座標系３１４における副ボーン３０２Ｂの移動量と同じ量だけ移動させた、制御点３０３Ｂ２，３０３Ｂ３の位置を計算する。そして、移動座標系３１４から副座標系３１３に座標変換して、副座標系３１３における各制御点３０３の位置を計算する。
【０１０５】
図１２は、制御点３０３Ｂ１を固定し、他の制御点３０３Ｂ２，３０３Ｂ３をさらに移動させたときの仮想空間モデルを表す図である。この時点で制御点３０３Ｂ１はΔλだけ移動しているが、３０３Ｂ２，３０３Ｂ３は、次の［数１］で表す量だけ移動することになる。
【０１０６】
移動量  ＝  Δλ＋Δα×ｓｉｎΔψ      ・・・［数１］
【０１０７】
さらに計算部２０２は、次に衝突面１０２０に近い制御点３０３Ｂ２の位置が、固定した制御点３０３Ｂ１（先端制御点）の移動座標系３１４における位置と同じか否かを判別する（ステップＳ１４０５）。つまり、制御点３０３Ｂ２が衝突面１０２０に接したか否かを判別する。
【０１０８】
移動座標系３１４における制御点３０３Ｂ２の位置が制御点３０３Ｂ１の位置と同じでない場合、すなわち制御点３０３Ｂ２が衝突面と接していない場合（ステップＳ１４０５；ＮＯ）、更新部２０４は、ステップＳ１４０４に戻り引き続き副ボーン３０２Ｂを移動方向１０５０に移動させる。計算部２０２は、固定されていない各制御点３０３も副ボーン３０２と同じ移動量だけ移動させる。つまり、副ボーン３０２Ｂに関連付けられた制御点３０３Ｂ１，３０３Ｂ２，３０３Ｂ３のうち、既にステップＳ１４０３で固定した制御点３０３Ｂ１は移動させない。
【０１０９】
一方、同じである場合（ステップＳ１４０５；ＹＥＳ）、計算部２０２は、移動対象の副ボーン３０２Ｂに関連付けられたすべての制御点３０３Ｂ１，３０３Ｂ２，３０３Ｂ３を固定したか否かを判別する（ステップＳ１４０６）。図１２では制御点３０３Ｂ２，３０３Ｂ３がまだ固定されていない。
【０１１０】
すべての制御点３０３がまだ固定されていない場合（ステップＳ１４０６；ＮＯ）、計算部２０２は、次に衝突面１０２０に近い制御点３０３Ｂ２の移動座標系３１４における位置を、現在の位置に固定する（ステップＳ１４０７）。
【０１１１】
そして、更新部２０４は、ステップＳ１４０４に戻り、副ボーン３０２Ｂをさらに移動させ、計算部２０２は、固定していない他の制御点３０３Ｂ３を移動方向１０５０に同じ量だけ移動させる。すなわち、計算部２０２は、移動座標系３１４における副ボーン３０２Ｂの移動量と同じ量だけ移動させた、制御点３０３Ｂ３の位置を計算する。そして、移動座標系３１４から副座標系３１３に座標変換して、副座標系３１３における各制御点３０３の位置を計算する。
【０１１２】
すべての制御点３０３の位置を固定するまでステップＳ１４０４〜Ｓ１４０７の処理を繰り返す結果、各制御点３０３の移動座標系３１４における移動量は、次の［数２］〜［数４］で表される。
【０１１３】
制御点３０３Ｂ１（先端制御点）の移動量＝  Δλ      ・・・［数２］
制御点３０３Ｂ２の移動量＝  Δλ＋Δα×ｓｉｎΔψ      ・・・［数３］
制御点３０３Ｂ３の移動量＝  Δλ＋２×Δα×ｓｉｎΔψ      ・・・［数４］
【０１１４】
図１３は、副ボーン３０２Ｂに関連付けられたすべての制御点３０３Ｂを移動した後の仮想空間モデルを表す図である。移動開始前に衝突面１０２０に対して角度Δψだけ傾いていたスキン３０４の形状のうち、副ボーン３０２Ｂに関連付けられた制御点３０３Ｂのみから構成されるポリゴンで表される部分は、移動終了後には衝突面１０２０に対して平行に重なっている。
【０１１５】
衝突面１０２０は平面に限られず、任意の形状の曲面などでもよい。更新後のスキン３０４は、任意の形状の曲面に沿った（曲面の形に合うように変形した）形状になる。また、衝突面１０２０は、任意の形状をもったキャラクタオブジェクトの一部分を構成する面でもよい。
【０１１６】
なお、変形させたキャラクタオブジェクトを元の形状に戻す場合には、更新部２０４は、副ボーン３０２の位置と向きを主ボーン３０１上の所定の初期位置に戻せばよい。例えば、上述の各ステップを逆の順番に実行すれば、まるで現実世界の立体絵本（飛び出す絵本、しかけ絵本）を開くように、ぺしゃんこになったキャラクタオブジェクトを逆モーションで元に戻すことができる。
【０１１７】
本実施形態によれば、画像生成装置２００は、複雑な計算を要することなく、立体的な形状をもった任意のキャラクタオブジェクトを、まるでクレイアニメーションで表現しているかのように容易に変形させることができる。
【０１１８】
例えば、図１５（ａ）に示すように３次元仮想空間内に配置された立体的なキャラクタオブジェクト１５１０が地面１５２０に向かう移動方向１５３０に落下しているとする。キャラクタオブジェクト１５１０の表面は、複数の制御点３０３によって定義される複数のポリゴンから構成されるスキン３０４で覆われている。キャラクタオブジェクト１５１０が地面１５２０にぶつかるまでの落下中、主ボーン３０１、副ボーン３０２、制御点３０３、スキン３０４は移動方向１５２０に平行移動する。キャラクタオブジェクト１５１０が地面１５２０にぶつかると、更新部２０４は副ボーン３０３を移動方向１５３０に少しずつ移動させ、計算部２０２は副ボーン３０２に関連付けられた制御点３０３を［数２］〜［数４］のように異なる移動量だけそれぞれ移動させる。その結果、スキン３０４の形状は地面１５２０に沿って平らな形状になり、キャラクタオブジェクト１５１０は図１５（ｂ）に示すように地面１５２０の上でぺしゃんこになる。
【０１１９】
（実施形態３）
次に、本発明のその他の実施形態について説明する。上述の実施形態ではキャラクタオブジェクトと面との衝突を考えているが、本実施形態では、あるキャラクタオブジェクトと、他のキャラクタオブジェクト（以下「障害物オブジェクト」という。）との衝突を考える。
【０１２０】
図１６は、本実施形態の画像生成装置２００の機能的な構成を示す図である。画像生成装置２００は、衝突判定部２０５をさらに備える。
【０１２１】
図１７（ａ）は、本実施形態において扱われる仮想空間モデルを表す図である。仮想空間には、例えばボクシングのサンドバッグの形をしたキャラクタオブジェクト１７１０と、ボクサーのグローブの形をした障害物オブジェクト１７２０とが配置される。障害物オブジェクト１７２０が移動方向１７３０に移動すると、やがてキャラクタオブジェクト１７１０と障害物オブジェクト１７２０は衝突することになる。
【０１２２】
キャラクタオブジェクト１７１０は、主ボーン３０１に沿って配置される副ボーン３０２に関連付けられた複数の制御点３０３を頂点とするポリゴンから構成されるスキン３０４で覆われている。
【０１２３】
図１７（ｂ）は、図１７（ａ）の円内を拡大した図である。バウンディングエリア１７５０は、キャラクタオブジェクト１７１０と障害物オブジェクト１７２０が衝突するか否かを判別するために予め設定される領域である。典型的には、バウンディングエリア１７５０の形状は、キャラクタオブジェクト１７１０の形状の一部又は全部と一致する。ただし、バウンディングエリア１７５０は、キャラクタオブジェクト１７１０の外形よりやや大きく、スキン３０４を外側から覆うような概略的な形状でもよいし、キャラクタオブジェクト１７１０のおおよその形状を表すデフォルメした形状でもよい。バウンディングエリア１７５０の副座標系３１３における位置は一定である。本図では、バウンディングエリア１７５０の形状は、スキン３０４の形状の一部分と一致している。
【０１２４】
記憶部２０１は、障害物情報２５４とバウンディングエリア情報２５５をさらに記憶する。
【０１２５】
障害物情報２５４は、仮想空間に配置される親座標系３１１における障害物オブジェクト１７２０の位置と向きを示す情報である。位置は、親座標系３１１を用いた座標値として表される。向きは、親座標系３１１を用いた方向ベクトルとして表される。ただし、障害物オブジェクト１７２０の向きが不変である（もしくは不変を見なせる）モデルの場合、障害物情報２５４は、障害物オブジェクト１７２０の向きを示す情報を含まなくてもよい。
【０１２６】
バウンディングエリア情報２５５は、副ボーン３０２に関連付けて副座標系３１３における位置が固定されたバウンディングエリア１７５０の位置と向きを示す情報である。ただし、バウンディングエリア１７５０の向きが不変である（もしくは不変を見なせる）モデルの場合、バウンディングエリア情報２５５は、バウンディングエリア１７５０の向きを示す情報を含まなくてもよい。
【０１２７】
衝突判定部２０５は、主ボーン情報２５１と、副ボーン情報２５２と、障害物情報２５４と、バウンディングエリア情報２５５とに基づいて、バウンディングエリア１７５０と障害物オブジェクト１７２０が衝突するか否かを判定する。例えば、障害判定部２０５は、バウンディングエリア１７５０内に含まれる所定の代表点（図示せず）のいずれかの座標値が障害物オブジェクト１７５０内（障害物オブジェクト１７２０の表面を構成するスキンによって囲まれる領域内）にあるか否かによって判別する。図１７（ｂ）のように、バウンディングエリア１７５０の形状をスキン３０４の形状の一部分と一致させる場合には、所定の代表点として制御点３０３を用いればよい。
【０１２８】
更新部２０４は、障害物オブジェクト１７２０と衝突すると判定されたバウンディングエリア１７５０の位置を、バウンディングエリア１７５０と障害物オブジェクト１７２０が衝突しなくなるまで、障害物オブジェクト１７２０から遠ざけるように移動させる。つまり、更新部２０４は、障害物オブジェクト１７２０が占める空間とバウンディングエリア１７５０が占める空間とに重なりがないように、バウンディングエリア１７５０を移動させる。副座標系３１３におけるバウンディングエリア１７５０の位置は一定であるので、更新部２０４は副ボーン３０２も同じ移動量だけ移動させることになる。
【０１２９】
図１８（ａ）は、衝突判定部２０５によってバウンディングエリア１７５０と障害物オブジェクト１７２０が衝突すると判別されたときに、更新部２０４が図１７（ａ）に示す状態から副ボーン３０２を移動させた様子を表す図である。図１８（ｂ）は、図１８（ａ）の円内を拡大した図である。更新部２０４は、バウンディングエリア１７５０と障害物オブジェクト１７２０が衝突しなくなるまで、副ボーン３０２を移動させる。図１８（ａ）では、更新部２０４は、副ボーン３０２Ｂ，３０２Ｃ，３０２Ｄを、移動座標系３１４の正の向きにΔξだけ、それぞれ平行移動させている。制御点３０３の副座標系３１３における位置は一定であるので、制御点３０３Ｂ，３０３Ｃ，３０３ＤもΔξだけ平行移動される。
【０１３０】
ただし、更新部２０４は、副ボーン３０２を障害物オブジェクト１７２０の進行方向に平行移動させるのではなく、他の方向に平行移動させてもよい。
【０１３１】
例えば図１９（ａ）と（ｂ）に示すように、副ボーン３０２Ｄの位置を中心とする球形のバウンディングエリア１７５０と、障害物オブジェクト１７２０を部分的に球形で近似してできる近似障害物１７２５とを定義し、バウンディングエリア１７５０と近似障害物１７２５との球体衝突モデルを考える。ここで、更新部２０４は、バウンディングエリア１７５０と近似障害物１７２５を共に剛体として扱う。バウンディングエリア１７５０を表す球の半径は、例えばバウンディングエリア１７５０が割り当てられた副ボーン３０２Ｄに関連付けられた制御点３０３Ｄと、副ボーン３０２Ｄとの距離の平均値もしくは最大値である。近似障害物１７２５を表す球の半径は、例えば予め決められた値、もしくは、バウンディングエリア１７５０を表す球の半径と同じ値にする。
【０１３２】
剛体の球体衝突モデルを考えるにあたり、衝突前後のバウンディングエリア１７５０と近似障害物１７２５のそれぞれの位置の計算を簡単にするために、バウンディングエリア１７５０を表す球の質量μＡを近似障害物１７２５を表す球の質量μＢと同じにし（μＡ＝μＢ）、且つ、近似障害物１７２５を表す球の半径γＢをバウンディングエリア１７５０を表す球の半径γＡと同じ値にする（γＡ＝γＢ）と良い。
【０１３３】
あるいは、近似障害物１７２５を表す球の質量μＢを、バウンディングエリア１７５０を表す球の質量μＡより十分に（圧倒的に）大きくし（μＡ＜＜μＢ）、且つ、近似障害物１７２５を表す球の半径γＢをバウンディングエリア１７５０を表す球の半径γＡと同じ値にする（γＡ＝γＢ）と良い。この場合、衝突後も障害物オブジェクト１７２０の移動方向１７３０は不変であるとみなすことができる。
【０１３４】
バウンディングエリア１７５０と近似障害物１７２５が衝突すると、計算部２０２は、副ボーン３０２Ｄの主座標系３１２における位置を、一般に古典力学で扱う剛体の球体衝突モデルを用いて計算する。そして、計算部２０２は、副座標系３１３から親座標系３１１に座標変換することにより、制御点３０３の親座標系３１１における位置を計算する。例えば、衝突後の副ボーン３０２Ｄの位置は、図面の横方向にΔξ１、縦方向にΔξ２だけ移動する。同様に、副ボーン３０２Ｄに関連付けられた各制御点３０２Ｄの位置も、図面の横方向にΔξ１、縦方向にΔξ２だけ移動する。
【０１３５】
計算部２０２は、すべての副ボーン３０２について剛体の球体衝突モデルを適用し、同様にしてすべての制御点３０３の位置を計算する。
【０１３６】
なお、更新部２０４は、平行移動の代わりに、もしくは平行移動に加えて、副ボーン３０２を軸回転移動や中心点回転移動で移動させてもよい。
【０１３７】
衝突前の近似障害物１７２５を表す球の占める全領域は、障害物オブジェクト１７２０の表面に対してバウンディングエリア１７５０の反対側にあることが望ましい。
【０１３８】
本実施形態によれば、画像生成装置２００は、任意の形状をもったオブジェクト同士の衝突前後を表す画像、特に衝突後にオブジェクトが変形した画像を容易に生成できるようになる。従来のように主ボーン３０１に制御点を関連付けて主ボーン３０１の位置を移動させると、オブジェクトの変形させたくない部分までも変形してしまうが、本発明のように副ボーン３０２に制御点を関連付けて副ボーン３０２の位置を移動させると、オブジェクトの変形させたい部分のみを変形させ、変形させたくない部分はそのまま変形させないようにすることができる。
【０１３９】
図２０（ａ）は、従来技術をそのまま適用し、主ボーン３０１を１本から５本に変えて骨格を構成した場合の仮想空間モデルを表す図である。例えばオブジェクトの真ん中付近がへこむように変形させると、図２０（ｂ）のように、パンチした所だけでなくオブジェクト全体がしなるように変形する。これは、より現実世界の現象に近い表現手法と言える。しかし、クレイアニメーションなどのように、現実世界ではあり得ないようにわざとキャラクタを平らにして表現することによって、変形した部分をより強調できるケースや、大げさにおもしろおかしく表現できるケースもある。本発明はこのようなケースで用いると特に効果的である。
【０１４０】
（実施形態４）
次に、本発明のその他の実施形態について説明する。上述の各実施形態では、主ボーン３０１を一定の形状としている。しかし、主ボーン３０１の大きさ、長さ、形状などを可変にしてもよい。以下詳述する。
【０１４１】
本実施形態の記憶部２０１は、主ボーン情報２５１として、仮想空間に配置される親座標系３１１における主ボーン３０１の位置と向きを示す情報に加えて、主ボーン３０１の拡縮率Ｐを示す情報を更に記憶する。
【０１４２】
例えば、オブジェクトが他のオブジェクトに接触したり衝突したりしていない状態（通常状態）では、主ボーン３０１の拡縮率Ｐを１とする。一方、オブジェクトが他のオブジェクトに接触したり衝突したりした状態（接触状態・衝突状態）では、計算部２０２は、拡縮率Ｐを変化させる。ただし、Ｐ＞０とする。
【０１４３】
図２１は、通常状態にある仮想空間モデルを表す図である。ヘビ型オブジェクト２１００は、領域２１１０内に３つの主ボーン３０１Ａ，３０１Ｂ，３０１Ｃを含み、それぞれの主ボーン３０１には１つ以上の副ボーン３０２が対応付けられている。例えば主ボーン３０１Ｂには３つの副ボーン３０２Ｂ１，３０２Ｂ２，３０２Ｂ３が対応付けられている。さらにそれぞれの副ボーン３０２には１つ以上の制御点３０３が割り当てられている。例えば副ボーン３０２Ｂには３つの制御点３０３Ｂ１，３０３Ｂ２，３０３Ｂ３が割り当てられている。
【０１４４】
図２２は、掃除機のような吸引口と接触状態にある仮想空間モデルを表す図である。ヘビ型オブジェクト２１００は、吸引口に吸い込まれるように変形する。このとき、計算部２０２は、外力２１２０（この場合には引力）の大きさに応じて主ボーン３０１の拡縮率Ｐを変化させる。例えば外力２１２０が大きいほど拡縮率を小さくする。つまり、吸引口に強く引き込まれるほど、主ボーン３０１の大きさを小さくする。本図では、計算部２０２は、主ボーン３０１ＢをＰ倍に縮小し、且つ、副ボーン３０２Ｂ１，３０２Ｂ２，３０２Ｂ３の主座標系３１２における位置を上方に平行移動させている。その結果、ヘビ型オブジェクト２１００は、吸引口に近づくほど大きくすぼむ（引っ張られる）ように変形する。
【０１４５】
ただし、主ボーン３０１に対する副ボーン３０２の相対的な位置関係は不変とし、計算部２０２は、主座標系３１２全体のスケールを拡縮させる。また、副ボーン３０２に対する制御点３０３の相対的な位置関係は不変とし、計算部２０２は、副座標系３１３全体のスケールを同じ量だけ拡縮させる。計算部２０２は、上述のステップＳ７０３において、主座標系３１２と副座標系３１３のスケールを変えるとともに、各制御点３０３の副座標系３１３における位置を親座標系３１１に座標変換すればよい。
【０１４６】
勿論、外力２１２０の向き、大きさ、種類は任意に変えることができる。また、オブジェクトにかかる力の大きさに応じて拡縮率を変える代わりに、オブジェクト等の移動する速度、加速度に応じて拡縮率を変えてもよい。
【０１４７】
本実施形態では、主座標系３１２全体、あるいは副座標系３１３全体のスケールを変えているが、座標系全体ではなく一部のスケールを変えるようにしてもよい。例えば、デカルト座標系を用いる場合、Ｘ軸方向とＹ軸方向のスケールは不変とする一方、Ｚ軸方向のスケールのみ拡縮させてもよい。
【０１４８】
本実施形態によれば、副ボーン３０２の主座標系３１２における位置を変化させるだけでなく主ボーン３０１の大きさや形状を変えることができるので、オブジェクトの変形のさせ方に様々なバリエーションを作ることができる。
【０１４９】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【０１５０】
画像生成装置２００を装置の全部又は一部として動作させるためのプログラムを、メモリカード、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ（Magneto Optical disk）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【０１５１】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【０１５２】
以上説明したように、本発明によれば、仮想空間内のオブジェクトを変形させた画像を容易に生成するために好適な画像生成装置、画像生成方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【０１５３】
【図１】本実施形態の画像生成装置が実現される典型的な情報処理装置の概要構成を示す図である。
【図２】画像生成装置の機能的な構成を説明するための図である。
【図３】実施形態１における仮想空間モデルの主ボーン、副ボーン、制御点、スキンを説明するための図である。
【図４】（ａ）更新部が副ボーンを移動させる前の様子を表す画像の例である。（ｂ）更新部が副ボーンを平行移動させた後の様子を表す画像の例である。
【図５】（ａ）更新部が副ボーンを移動させる前の様子を表す画像の例である。（ｂ）更新部が副ボーンを平行移動させ且つ軸回転移動させた後の様子を表す画像の例である。
【図６】（ａ）更新部が副ボーンを中心点回転移動させた後の様子を表す画像の例である。（ｂ）副ボーンの形状を角柱とした場合の、更新部が副ボーンを中心点回転移動させた後の様子を表す画像の例である。
【図７】画像生成処理を説明するためのフローチャートである。
【図８】更新部による更新前の、主ボーン、副ボーン、制御点、スキンを表す図である。
【図９】更新部による更新後の、主ボーン、副ボーン、制御点、スキンを表す図である。
【図１０】実施形態２における仮想空間モデル（その１）を説明するための図である。
【図１１】実施形態２における仮想空間モデル（その２）を説明するための図である。
【図１２】実施形態２における仮想空間モデル（その３）を説明するための図である。
【図１３】実施形態２における仮想空間モデル（その４）を説明するための図である。
【図１４】更新部が制御点の位置を更新する処理を説明するためのフローチャートである。
【図１５】（ａ）地面に向かって落下中のキャラクタオブジェクトを表す図である。（ｂ）地面に落下後のキャラクタオブジェクトを表す図である。
【図１６】実施形態３の画像生成装置の機能的な構成を説明するための図である。
【図１７】（ａ）と（ｂ）は実施形態３における衝突前の仮想空間モデルを説明するための図である。
【図１８】（ａ）と（ｂ）は実施形態３における衝突後の仮想空間モデルを説明するための図である。
【図１９】（ａ）と（ｂ）は実施形態３において剛体の球体衝突モデルを採用した仮想空間モデルを説明するための図である。
【図２０】（ａ）と（ｂ）は従来の手法を用いた仮想空間モデルを説明するための図である。
【図２１】実施形態４における通常状態の仮想空間モデルを説明するための図である。
【図２２】実施形態４における接触状態の仮想空間モデルを説明するための図である。
【符号の説明】
【０１５４】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェース
１０５  コントローラ
１０６  外部メモリ
１０７  ＤＶＤ−ＲＯＭドライブ
１０８  画像処理部
１０９  音声処理部
１１０  ＮＩＣ
２００  画像生成装置
２０１  記憶部
２０２  計算部
２０３  画像生成部
２０４  更新部
２０５  衝突判定部
２５１  主ボーン情報
２５２  副ボーン情報
２５３  制御点情報
２５４  障害物情報
２５５  バウンディングエリア情報
３０１  主ボーン
３０２  副ボーン
３０３  制御点
３０４  スキン
３１１  親座標系
３１２  主座標系
３１３  副座標系
３１４  移動座標系
【図１】
0004579964.tif 000002
【図２】
0004579964.tif 000003
【図３】
0004579964.tif 000004
【図４】
0004579964.tif 000005
【図５】
0004579964.tif 000006
【図６】
0004579964.tif 000007
【図７】
0004579964.tif 000008
【図８】
0004579964.tif 000009
【図９】
0004579964.tif 000010
【図１０】
0004579964.tif 000011
【図１１】
0004579964.tif 000012
【図１２】
0004579964.tif 000013
【図１３】
0004579964.tif 000014
【図１４】
0004579964.tif 000015
【図１５】
0004579964.tif 000016
【図１６】
0004579964.tif 000017
【図１７】
0004579964.tif 000018
【図１８】
0004579964.tif 000019
【図１９】
0004579964.tif 000020
【図２０】
0004579964.tif 000021
【図２１】
0004579964.tif 000022
【図２２】
0004579964.tif 000023