(57)【要約】【課題】三次元モデルの変形を簡略な処理且つ少ないメモリで実現できる三次元モデルの変形方法を提供する。【解決手段】複数の制御点によって規定される面を有する三次元モデルを変形させる方法であって、一次元または二次元の関数を予め設けておき、複数の制御点の一部または全部の各々に、面に含まれない変位軸を設定し、関数に、変位軸が設定された制御点の位置情報を適用して制御点の変位軸に沿った変位量を算出し、制御点を変位軸に沿って変位量だけ移動させて面を描画する。【選択図】図６
2014071793.tif 000002
【特許請求の範囲】
【請求項１】
複数の制御点によって規定される面を有する三次元モデルを変形させる方法であって、
一次元または二次元の関数を予め設けておき、
前記複数の制御点の一部または全部の各々に、前記面に含まれない変位軸を設定し、
前記関数に、前記変位軸が設定された制御点の位置情報を適用して、前記制御点の前記変位軸に沿った変位量を算出し、
前記制御点を前記変位軸に沿って前記変位量だけ移動させて前記面を描画する
三次元モデルの変形方法。
【請求項２】
前記関数として、一次元または二次元の関数値テーブルを設けた請求項１に記載の三次元モデルの変形方法。
【請求項３】
前記変位量を時間的に変化させ、この変位量の変化に応じて前記面の描画を繰り返し行う請求項１または請求項２に記載の三次元モデルの変形方法。
【請求項４】
時間を変数とする関数を用いて係数を算出し、この関数を前記変位量に乗算することで前記変位量を時間的に変化させる請求項３に記載の三次元モデルの変形方法。
【請求項５】
前記時間を変数とする関数として、所定時間ごとの係数を記憶した関数値テーブルを設けた請求項４に記載の三次元モデルの変形方法。
【請求項６】
前記変位軸は、前記制御点における前記面に対する法線方向に設定される請求項１乃至請求項５に記載の三次元モデルの変形方法。
【請求項７】
前記変位軸は、各制御点ごとに独立した方向に設定される請求項１乃至請求項５に記載の三次元モデルの変形方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ビデオゲームに登場するモンスターなどの三次元モデルを変形する方法に関する。
【背景技術】
【０００２】
仮想の三次元空間を映像で表示するビデオゲームにおいて、モンスター等のオブジェクトの姿勢を変えたり変形させる場合、オブジェクト（モデル）に関節を設け、この関節の角度や位置を制御することでキャラクタの姿勢や形状を変えていた（たとえば特許文献１）。
【０００３】
しかし、モンスターなどの複雑な形状のオブジェクトは、動作も複雑であり、全ての動作を表現するためにオブジェクトに関節を設けたのでは、関節の数が極めて多数になってしまい、モデルの作成が面倒であるうえに、関節を動かして動作を表現するアニメーターの作業も増加するという問題点がある。
【０００４】
一方、オブジェクトを変形させる手法として、オブジェクトを直接変形させる手法も存在する。ビデオゲームのオブジェクトは、一般的にポリゴンの集合体で形成されているため、このポリゴンを変形させることで、具体的にはポリゴンの頂点を上下に変位させることでオブジェクトの形状を変化させることができる。
【０００５】
この場合、複数のポリゴンの頂点の変位量を一括して記憶するためにはディスプレイスメントマップというテーブルが必要である。ビデオゲームの場合、３０ｆｐｓまたは６０ｆｐｓでフレームが更新されるため、オブジェクトを時系列に滑らかに変形させるためには、フレーム毎にディスプレイスメントマップが必要になり、大量のメモリが必要になるという問題点がある。
【０００６】
また、特許文献２のように演算によってポリゴンの頂点の変位量を算出することも提案されているが、ゲームの進行中に多数のポリゴンの頂点の変位量をリアルタイムに計算するためには大きい演算パワーが必要になり、ゲームの進行に支障を来す可能性があった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−０２１８６６号公報
【０００８】
【特許文献２】特開２００８−２１７３５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
そこで、この発明は、三次元モデルの変形、特に時間軸に沿った変形を容易に且つ少ないメモリで実現することができる三次元モデルの変形方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、複数の制御点によって規定される面を有する三次元モデルを変形させる方法であって、一次元または二次元の関数を予め設けておき、前記複数の制御点の一部または全部の各々に、前記面に含まれない変位軸を設定し、前記関数に、前記変位軸が設定された制御点の位置情報を適用して、前記制御点の前記変位軸に沿った変位量を算出し、前記制御点を前記変位軸に沿って前記変位量だけ移動させて前記面を描画することを特徴とする。なお、前記関数として、一次元または二次元の関数値テーブルを設けてもよい。
【００１１】
前記変位量を時間的に変化させ、この変位量の変化に応じて前記面の描画を繰り返し行ってもよい。この場合、時間を変数とする関数を用いて係数を算出し、この関数を前記変位量に乗算することで前記変位量を時間的に変化させてもよい。また、時間を変数とする関数として、所定時間ごとの係数を記憶した関数値テーブルを設けてもよい。
【００１２】
前記変位軸は、前記制御点における前記面に対する法線方向に設定されるものであってもよい。また、前記変位軸は、各制御点ごとに独立した方向に設定されるものであってもよい。
【発明の効果】
【００１３】
この発明によれば、三次元モデルの変形を簡略な処理且つ少ないメモリで実現することが可能になる。
【図面の簡単な説明】
【００１４】
【図１】この発明が適用されるオブジェクトの例を示す図である。
【図２】簡略な三次元モデルの例を示す図である。
【図３】モデルの頂点に設定されるｙ軸（変位軸）の例を示す図である。
【図４】モデルの変形に用いられる変形用関数と時間関数の例を示す図である。
【図５】本発明の方法によって変形されたモデルの一例を示す図である。
【図６】本発明の方法によって変形されたモデルの一例を示す図である。
【図７】この発明が適用されるビデオゲーム機のブロック図である。
【発明を実施するための形態】
【００１５】
図１は、ビデオゲームに登場するオブジェクト（モンスター）のワイヤフレームモデルを示す図である。モンスター等のオブジェクトは、簡略な平面図形（素体：主として三角形）であるポリゴンを配列して作成されたモデルで形状が構成される。より詳細には、図２に示すような二次元または三次元の簡略なモデルであるパーツを複数組み合わせることによって、図１に示すような複雑な形状が作成される。
【００１６】
なお、図１に示したモデルは、ポリゴンの辺と頂点のみが描かれたワイヤフレームモデルである。このワイヤフレームモデルの上に、表面の色彩模様を表すテクスチャを被せることにより、実際に表示されるオブジェクトの外観が構成される。
【００１７】
モンスター等のオブジェクトは、歩く、飛ぶ、呼吸するなどの動作をし、その動作は、オブジェクトの外観形状を変形させることで表現される。この外観形状の変形は、一般的には、複数のパーツを相互に関節で接続し、関節の角度を変化させることでパーツの位置関係を変化させ、これによりオブジェクトの外観形状を変化させる。
【００１８】
そして、この発明では、たとえば、モンスターが呼吸するときの体の動きや心臓のビートなどの比較的単純な動き表現する場合、関節を用いずに、モデル（パーツ）自体の形状を時間経過に沿って滑らかに変形させることでこれらの動きを表現する。
【００１９】
以下、図２〜図６を参照してモデルの形状を変形させる手法について説明する。
【００２０】
図２において、図２（Ａ）は、略正方形の二次元モデル（パーツ）の例を示している。また、図２（Ｂ）は略円筒形の三次元モデル（パーツ）の例を示している。いずれのモデルも複数のポリゴン（三角形）の組み合わせで構成されている。なお、これらのモデルの例では、モデルを構成する全てのポリゴンが同じ形状をしているが、モデルを構成する全てのポリゴンがそれぞれ異なる形状であってもよい。このモデルを構成するポリゴンの頂点（以下、モデルの頂点と呼ぶ）を、モデルの表面である基準座標面から外れた位置に移動させることでモデルの形状を変化させる。頂点が本発明の制御点に対応する。
【００２１】
モデルの頂点（モデルを構成するポリゴンの頂点）の位置を特定するために、モデル表面をテクスチャ適用の基準座標面であるｕ−ｖ座標にマッピングする。図２（Ａ）の二次元モデルの場合には、略正方形のモデル表面の横方向にｕ軸が設定され、縦方向にｖ軸が設定される。図２（Ｂ）の三次元モデルの場合、円筒の側面に円筒の軸に沿ってｕ軸が設定され、円筒の側面の周に沿ってｖ軸が設定される。この図の例では、モデルのオリジナル形状どおりの座標（寸法）でｕ−ｖ座標にマッピングされた例を示しているが、オリジナル形状と異なる座標でｕ−ｖ座標にマッピングされてもよい。このｕ−ｖ座標により、モデルを構成するポリゴンの各頂点の位置が座標（ｕ，ｖ）で表される。
【００２２】
モデルの頂点を基準座標面から外れた位置に移動させるため、各頂点Ｐにおいて、その頂点における基準座標面に対する法線方向にｙ軸を設定し、頂点Ｐのｙ座標であるＰ（ｙ）を定める。図２（Ａ）の平面のモデルの場合、図３（Ａ）に示すように、Ｐ（ｙ）は、基準座標面を０とし、上方向が＋、下方向が−である。図２（Ｂ）の円筒形のモデルの場合、図３（Ｂ）に示すように、基準座標面を０とし、円筒の外方向が＋、内方向が−である。Ｐ（ｙ）として０以外の値が設定されると、モデルの描画（レンダリング）時に、頂点Ｐが基準座標面からｙ軸方向にＰ（ｙ）だけ移動した位置に描画される。これにより、モデルが変形される。
【００２３】
このように、頂点をｙ軸に沿って移動させることでモデルを変形することが可能であるが、モデルの全ての頂点について、そのｙ座標値Ｐ（ｙ）を個別に設定するためには、モデルの全頂点のＰ（ｙ）が書き込まれたディスプレイスメントマップを設ける必要がある。このようなディスプレイスメントマップは大きなデータ量のものになる。また、モデルを時間軸に沿って滑らかに動かそうとすると、このディスプレイスメントマップが映像フレーム毎に必要になり膨大なデータ量が必要になる。そこで、図４（Ａ）に示すようなモデル変形用の関数ｆ（ｘ）を設け、この関数を用いてモデルの各頂点の変位量を決定する。図４（Ａ）は、変数ｘに対する関数値ｙ＝ｆ（ｘ）を表すグラフであり、一例としてｆ（ｘ）＝−１／２ｃｏｓ（２πｘ）を図示している。すなわち、モデル変形用の一次関数は、変域であるｘ軸、値域であるｙ軸とも０〜１に正規化されている。
【００２４】
この関数ｆ（ｘ）を、ｘ軸方向、ｙ軸方向ともに適切に伸縮させてモデルのｕ軸方向（行方向）に対応づけ、各頂点のｕ座標値に対応する関数値をその頂点のｙ座標値とする。
【００２５】
ｖ軸方向（列方向）は、全て同じ値としてもよい、すなわち、全ての行に同じように一次関数ｆ（ｘ）を適用してもよい。そうすると、図２（Ａ）のモデルは図５に示すような形状に変形される。
【００２６】
また、別の方式として、ｖ軸方向にもｕ軸と同じように関数ｆ（ｘ）を対応づけて各頂点のｖ座標値に対応する関数値を求め、上記の処理で求められたｕ座標値に対応する関数値と加算してその頂点のｙ座標値としてもよい。すなわち、各頂点Ｐｎのｙ座標値は、たとえば、Ｐ（ｙ）＝ｆ（ｕ）＋ｆ（ｖ）と計算される。そうすると、図２（Ａ）のモデルは、図６に示すような形状に変形される。
モデル変形用の関数ｆ（ｘ）は、図４（Ａ）に示したものに限定されない。さらに、関数は、任意の係数を乗算する、任意の定数を加算するなど自由に変形して使用することが可能である。また、一次関数の全区間（全変域）を用いなくてもよく、また、全区間または一部区間を繰り返し用いてもよい。
【００２７】
そして、モデルの変形量を時間的に滑らかに増減させることにより、モンスターが呼吸している動きや、心臓の鼓動などの動きを表現することができる。たとえば、各頂点のｙ座標値に乗算する重み係数ａを時間的に変化させることによって、モデルの変形量を時間的に変化させればよい。重み係数ａを時間的に変化させるために、時間関数ｇ（ｔ）を用いればよい。図４（Ｂ）に時間関数ｇ（ｔ）の一例を示す。この関数は単調増加の一次関数である。時間ｔの経過に応じてａ＝ｇ（ｔ）を演算して、各頂点のｙに乗算することにより、モデルの変形量が徐々に滑らかに大きくなってゆく動きを表現することができる。この動きの例を図６（Ａ）〜（Ｄ）に示す。
【００２８】
なお、時間関数ｇ（ｔ）もモデル変化用関数ｆ（ｘ）と同様に、図４（Ｂ）に示したものに限定されない。さらに、関数は、任意の係数を乗算する、任意の定数を加算するなど自由に変形して使用することが可能である。また、一次関数の全区間（全変域）を用いなくてもよく、また、全区間または一部区間を繰り返し用いてもよい。また、関数を逆方向に読み出してもよい。
【００２９】
なお、図４に示した関数ｆ（ｘ）、ｇ（ｔ）は、関数式として記憶されていてもよく、適当な間隔でプロットされた関数値テーブルとして記憶されていてもよい。また、ｆ（ｘ）、ｇ（ｘ）として数値テーブルを用いた場合、そのテーブルの内容は、数学的に表現できる関数の値である必要はなく、ランダムに設定された値であってもよい。また、テーブルの作成をユーザに開放し、ユーザが自由に入力した値がテーブルに書き込まれていてもよい。
【００３０】
図６において、図６（Ａ）は、図４（Ｂ）の時間関数ｇ（ｔ）において、ｇ（Ｔ１）＝ａ１を係数としてｙ座標値に乗算した場合のモデルの形状を示す図である。同様に、図６（Ｂ）、（Ｃ）、（Ｄ）は、それぞれ、図４（Ｂ）の時間関数ｇ（ｔ）において、ｇ（Ｔ２）＝ａ２、ｇ（Ｔ３）＝ａ３、ｇ（Ｔ４）＝ａ４を係数としてｙ座標値に乗算した場合のモデルの形状を示している。このように、単調増加の時間関数を係数として掛けると、中央部が徐々に高くなるように図２（Ａ）のモデルを変形させることができる。
【００３１】
また、時間関数をｇ（−ｔ）として、図４（Ｂ）のグラフを逆から読み出すようにすれば、中央部が徐々に低くなるように図２（Ａ）のモデルを変形させることができる。さらに、時間関数としてｇ（ｔ）およびｇ（−ｔ）を用い、ａを０から１の間を往復させると、モデルを、たとえば心臓の鼓動のように往復運動させることができる。
【００３２】
以上は、ｙ軸を基準座標面に対する法線方向に設定する場合について説明した。しかし、ｙ軸は基準座標面に対する法線方向以外の方向に設定してもよい。この場合、モデルの全ての頂点に対して同じ方向にｙ軸を設定してもよく、各頂点毎に、または、全頂点をいくつかのグループにまとめて各グループ毎に、ｙ軸の方向を指定してもよい。これにより、モデルの変形の自由度をさらに高めることが可能になる。
【００３３】
なお、以上の説明では、モデルの全ての頂点を変形（ｙ軸方向への変位）の対象にしていたが、一部の頂点のみ変形の対象としてもよい。
【００３４】
また、モデル変形用の関数ｆ（ｘ）として一次元の関数を用いたが、これ以外の関数、たとえば二次元の関数ｆ（ｘ，ｙ）を用いてもよい。
【００３５】
以上説明したモデルの頂点の変位を、関節の角度変化・変位と組み合わせることにより、オブジェクトの複雑な動作を比較的容易に表現することが可能になる。
【００３６】
図７は、上述したモデルを描画するゲームシステムの構成例を示す図である。ゲームシステム１０は、演算部１１、記憶部１２、入力部１３、描画部１４、および、表示部１５を有している。入力部１３はプレイヤによって操作される複数の操作部材を有し、これら操作部材の操作状態に対応した操作信号を発生する。記憶部１２には、上述のモデル情報、モデル変形用関数、時間関数を含むゲームの実行に必要な種々のデータが記録される。
【００３７】
演算部１１は、入力部１３から入力される操作信号に応じてゲームの進行状況を決定するための演算を実行する。この演算により、モンスターなどのオブジェクトの動作や姿勢が決定される。描画部１４は、ゲーム画像を描画する機能部であり、演算部１１によって演算されたオブジェクトの動作や姿勢に基づいてポリゴンモデルからなるオブジェクトを描画する。描画部１４によって描画されたオブジェクト画像を含むゲーム画像は表示部１５に入力され、表示部１５がこのゲーム画像を表示する。
【００３８】
以上の構成のゲームシステム１０は、家庭用据置型ビデオゲーム機、携帯ゲーム機、アーケードゲーム機、パーソナルコンピュータなどのハードウェアとゲームプログラムとの協働によって実現される。
【００３９】
この実施形態では、複数の（モデル）パーツを関節で接続する形態を例にあげて説明したが、１つのモデルの内部に関節を設け、関節の位置や角度を変えることでモデル自体の形状を変化させる形態でも、本発明を適用可能である。すなわち、その関節の補助または代用としてポリゴンの頂点の変位を用いることができる。
【００４０】
以上の説明では、ビデオゲームに登場するモンスターの外観形状を変化させることを例にあげて説明したが、本発明はモンスターの形状の変化以外にも適用可能である。また、適用分野はビデオゲームに限定されない。
【符号の説明】
【００４１】
１０  ゲームシステム
１４  描画部
【図１】
2014071793.tif 000003
【図２】
2014071793.tif 000004
【図３】
2014071793.tif 000005
【図４】
2014071793.tif 000006
【図５】
2014071793.tif 000007
【図６】
2014071793.tif 000008
【図７】
2014071793.tif 000009