説明

ゲームプログラム、記憶媒体およびコンピュータ装置

【課題】遊技者が操作するキャラクタが敵キャラクタを倒していくアクションゲーム等において、パス設定オブジェクトの表面形状が変化しても、移動オブジェクトの移動経路をパス設定オブジェクトの表面に沿わせることができるプログラムを提供する。
【解決手段】パスを構成する複数の制御点を、関連付けられた関節の配置位置に応じて位置決めすることにより、パス設定オブジェクトの表面形状の変化に追従させてパスを変形させることができる。毎フレーム、パスの制御点の位置に基づいて移動オブジェクトの節の位置を算出することにより、移動オブジェクトの形態を決定し、移動制御する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、遊技者が操作するキャラクタが敵キャラクタを倒していくアクションゲーム等のゲームを実行するゲームプログラム、記憶媒体およびコンピュータ装置に関する。
【背景技術】
【0002】
アクションゲーム等では、三次元のゲーム空間でオブジェクトの移動を制御する方法として、パス(経路、軌道)に沿ってオブジェクトを移動させるパスアニメーション等が用いられている。また、楕円軌道のパスをゲーム空間内のキャラクタを囲むように設定し、このパスに沿って光源オブジェクトを移動(周回)させる構成のゲームがある。(特許文献1、段落0018、図2)。このゲームでは、キャラクタを囲むパスがキャラクタの移動に伴って移動する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許3686978号
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、上述の特許文献1に記載の構成では、キャラクタ等のように動作することによって表面形状が変化するオブジェクト(パス設定オブジェクト)にパスを設定する場合、その表面形状の変化に合わせてパスの形状を変化させることができないため、パスに沿って移動するオブジェクト(移動オブジェクト)をパス設定オブジェクトの表面形状に沿って移動させることができない。例えば、パス設定オブジェクトの腕の表面上にパスを設定した場合、腕は曲げ伸ばし等によって変形するが、パスはその変形に追従できないので一部が腕の表面から外れてしまう。
【0005】
このように、上記従来の技術では、キャラクタのように表面形状が変化するオブジェクトをパス設定オブジェクトとした場合、パス設定オブジェクトの表面形状がどのように変化しても移動オブジェクトがパス設定オブジェクトの体の表面を這っているようなゲーム表現を実現できないという問題があった。
【0006】
この発明は、パス設定オブジェクト(第1のオブジェクト)の表面形状の変化に追従させてパスを変形させることにより、パス設定オブジェクトの表面形状が変化しても、移動オブジェクト(第2のオブジェクト)の移動経路をパス設定オブジェクトの表面に沿わせることのできるプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
請求項1の発明は、コンピュータを、外観形態を決定するための外観決定情報を有し、この外観決定情報の変化に基づいて外観形態を変化させる第1のオブジェクト、および、予め設定された移動経路であるパス上を移動する第2のオブジェクトを3次元の仮想空間内に形成するオブジェクト形成手段、前記パスを前記第1のオブジェクトの表面に沿わせて設定するパス設定手段、前記第2のオブジェクトを前記パスに沿って移動させるオブジェクト移動手段、として機能させるプログラムであって、前記パス設定手段は、前記第1のオブジェクトの外観決定情報の変化に基づいて前記パスの形状を変化させることを特徴とする。
【0008】
請求項2の発明は、請求項1の発明において、前記オブジェクト形成手段は、前記第1のオブジェクトを、または複数の関節からなる関節構造を有し、前記1または複数の関節の位置を決定する情報を前記外観決定情報として有するオブジェクトとして形成する手段であり、前記パス設定手段は、複数の制御点を接続した折れ線または曲線としてパスを設定する手段、前記各制御点を、それぞれ前記第1のオブジェクトの1または複数の関節に関連づけるとともに、該関連づけられた関節の移動に追従して移動させる手段、を含むことを特徴とする。
【0009】
請求項3の発明は、請求項2の発明において、前記オブジェクト形成手段は、前記外観決定情報として、前記1または複数の関節の向きを決定する情報をさらに有し、前記パス設定手段は、各制御点の向きを、該制御点に関連づけられた関節の向きの変化に追従して変化させる手段を含むことを特徴とする。
【0010】
請求項4の発明は、請求項2、3の発明において、前記パス設定手段は、前記パスの曲線を演算によって算出する手段であり、前記パスを各制御点を区切りとする区間パスに分割し、前記第2のオブジェクトが存在する区間パスのみその曲線を演算することを特徴とする。
【0011】
請求項5の発明は、請求項1〜4の発明において、前記オブジェクト形成手段は、前記第1のオブジェクトを、遊技者によって操作され、その操作に応じて姿勢の変化を含む活動をする主キャラクタとして形成するとともに、前記第2のオブジェクトを、前記主キャラクタとは異なる宿主キャラクタの表面に存在する寄生キャラクタとして形成し、さらに、前記主キャラクタが前記宿主キャラクタに接近または接触したとき、前記主キャラクタのパス上に、前記宿主キャラクタ上の寄生キャラクタを乗り移らせる、または、新たな寄生キャラクタを発生させる手段であることを特徴とする。
【0012】
請求項6の発明は、請求項1〜5の発明において、前記オブジェクト移動手段は、第1のオブジェクトが、(飛び上がる、走る等の)特定の動作をしたとき、前記第2のオブジェクトを前記パスから外して落下させることを特徴とする。
【0013】
請求項7の発明は、請求項1乃至請求項6のいずれかに記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体である。
【0014】
請求項8の発明は、請求項1乃至請求項6のいずれかに記載のプログラムを読み込んで実行するコンピュータ装置である。
【発明の効果】
【0015】
この発明によれば、パスが設定される第1のオブジェクトの表面形状の変化に追従させてパスを変形させることにより、第1のオブジェクトの表面形状が変化しても、パス上を移動する第2のオブジェクトを常に第1のオブジェクトの表面に沿わせて移動させることができる。
【図面の簡単な説明】
【0016】
【図1】この発明が適用されるゲーム装置の外観図
【図2】同ゲーム装置のブロック図
【図3】この発明の実施形態であるアクションゲームプログラムのゲーム画面を示す図
【図4】同ゲームプログラムと前記ゲーム装置で構成されるゲームシステムの構成を示す図
【図5】ゲームに登場する主キャラクタのスケルトンモデルと主キャラクタの体表面に設定されるパスを示す図
【図6】前記主キャラクタの腕の屈伸とパスの形状変化を説明する図
【図7】前記パスの制御点を規定するデータを示す図
【図8】前記制御点の位置を主キャラクタの姿勢変化に追従させて算出する演算処理を示すフローチャート
【図9】前記パス上を移動するキャラクタである寄生キャラクタのスケルトンモデルと寄生キャラクタを規定するデータを示す図
【図10】前記ゲームシステムの寄生キャラクタの制御動作を示すフローチャート
【図11】前記ゲームシステムの寄生キャラクタの制御動作を示すフローチャート
【発明を実施するための形態】
【0017】
図面を参照してこの発明の実施形態であるゲームプログラムおよびゲーム装置(コンピュータ)について説明する。
【0018】
≪ゲーム装置の構成≫
まず、ゲームプログラムが実行されるゲーム装置について説明する。
図1は、この発明のゲームプログラムが実行されるゲーム装置(コンピュータ)の外観図である。
【0019】
このゲーム装置は、ゲーム装置本体10にコントローラ20が無線または有線で接続されて構成されている。コントローラ20は、遊技者によって操作される。遊技者は、このコントローラ20を用いて、ゲーム中に登場する主キャラクタ等を操作する。なお、ゲームは、遊技者の操作およびゲームプログラム、ゲーム装置で構成されるゲームシステムの処理動作で進行するが、以下の説明では、動作の内容に応じて、主キャラクタを主語とし、主キャラクタの動作として説明する場合がある。
【0020】
ゲーム装置本体10は、ゲームプログラムが記録された記録媒体(記憶媒体)15がセットされるトレイ11を有している。記録媒体15は、たとえばDVD(digital versatile disc)である。ゲーム装置本体10は、この記録媒体15からゲームプログラムを読み取って、このプログラムを実行する。なお、記録媒体15は、DVD以外であってもよく、例えばCD、Blu−ray Disc、または、内蔵のハードディスクなどを用いることができる。
【0021】
また、装置前面には、コントローラ20が接続されるコネクタ12、フラッシュメモリからなるカード型の外部メモリ45(図2参照)がセットされるメモリスロット13が、それぞれ設けられている。
【0022】
コントローラ20は、略コ字形をしており、遊技者が両翼部のハンドルを左右両手で把持して操作する。コントローラ20の左右上面には操作ボタン群およびアナログスティックが設けられている。遊技者は、これら操作ボタン群、アナログスティックを操作して主キャラクタやカメラ位置を制御する。この遊技者の操作に応じてゲーム中の主キャラクタは、たとえば、歩く、走る、飛び上がる、腕を曲げ伸ばしする等の動作を行う。
【0023】
図2は、ゲーム装置本体10およびコントローラ20の内部構成を示すブロック図である。
ゲーム装置本体10は、装置全体の動作を制御するCPU31を有している。このCPU31に対してRAM32およびバス33が接続される。RAM32には、ゲームの進行に応じて各種のデータが記憶される。
【0024】
バス33には、グラフィック・プロセッサ・ユニット(GPU)34、インプット・アウトプット(I/O)ポート39が接続される。GPU34には、デジタル映像信号をNTSCテレビジョン方式やPALテレビジョン方式に変換するためのデコーダ37を介して、外部機器であるモニタ(テレビジョン装置:TV)38が接続される。
【0025】
I/Oポート39には、光ディスク等の記録媒体15に記録されているデータを再生し、デコードするためのドライバ(DRV)40,サウンド・プロセッサ(S.P)42、外部メモリ45、コントローラ20およびROM46が接続される。
コントローラ20は、I/Oポート21を介して各種操作子群22をゲーム装置本体10のI/Oポート39に接続する。
【0026】
ROM46には、このゲーム装置本体10を起動するとともに基本的な機能を実現するためのシステムプログラムが記憶されている。外部メモリ45には、遊技者の情報や実行しているゲームの途中経過等が記憶される。遊技者は、ゲームプログラムを記憶した記録媒体15と自己の外部メモリ45をセットすることにより、途中で中断したゲームを、その中断したタイミングから再開することができる。
サウンド・プロセッサ42は、増幅器43を介して、外部機器であるスピーカ44に接続される。このスピーカ44は、一般的には、テレビジョン装置に内蔵されている上記モニタ38と一体のスピーカである。
【0027】
《ゲームプログラムの構成》
次に、図3を参照してこのゲーム装置で実行されるゲームについて説明する。このゲームは、遊技者がコントロールする主キャラクタが敵キャラクタを倒すことによってゲームが進行するサードパーソンシューティングゲームである。
【0028】
ゲーム中には多くの敵キャラクタが登場する。図3(A)は、宿主キャラクタ200を示す図である。この宿主キャラクタ200は丸い胴体と両腕・両脚を有するキャラクタ(モンスター)であり、その体表面に寄生キャラクタ201を多数(200匹程度)宿している。寄生キャラクタ201は、ミミズのような外観の小さい敵キャラクタであり、主として宿主キャラクタ200の表面に生息しているが、同図(B)の主キャラクタ100や地表でも生息可能である。
【0029】
同図(B)に示す主キャラクタ100がこの宿主キャラクタ200に一定以上接近すると(または接触すると)、寄生キャラクタ201が、主キャラクタ100の体表面に現れて主キャラクタ100の体を這って移動する。このとき主キャラクタ100に現れる寄生キャラクタ201は、宿主キャラクタ200から乗り移らせてもよく、主キャラクタ100上で新たに発生させてもよい。なお、寄生キャラクタ201を主キャラクタ100上で新たに発生させる場合でも、ゲーム上の演出として、宿主キャラクタ200から寄生キャラクタ201が乗り移ったようにしてもよい。また、主キャラクタ100は、飛び上がったり走ったりすることにより、自分の体に乗り移った寄生キャラクタ201を振り落とすことができる。
【0030】
このようなゲームを実行するゲームプログラムを上述したゲーム装置に読み込ませることにより、図4に示すようなゲームシステムを機能的に実現することができる。ゲームシステムは、操作検出部50、ゲーム進行制御部51、描画処理部56からなっている。ゲーム進行制御部51は、ゲーム空間生成部52、主キャラクタ制御部53、敵キャラクタ制御部54を含んでいる。また、主キャラクタ制御部53、敵キャラクタ制御部54は、主キャラクタ100または宿主キャラクタ200上に発生する寄生キャラクタ201を制御する寄生キャラクタ制御部55を含んでいる。この寄生キャラクタ制御部55は、寄生キャラクタ201の移動経路であるパスを設定するパス制御部を含んでいる。
【0031】
操作検出部50は、CPU31、RAM32等のデータ処理部およびコントローラ20を含み、遊技者の各種操作を検出して、ゲーム進行制御部51に伝達する。ゲーム進行制御部51は、CPU31、RAM32等のデータ処理部を含み、仮想のゲーム空間やキャラクタを生成するとともに、遊技者の操作や時間の経過等に応じて、上述のゲーム空間を変化させたりキャラクタを活動させたりする等の処理を行ってゲームを進行させる。
【0032】
ゲーム空間生成部52は、操作検出部50から入力された操作情報に基づいて選択されたゲームステージのゲーム空間を生成するとともに、そのゲーム空間の天候などの環境を制御する。主キャラクタ制御部53は、操作検出部50から入力される操作情報に基づいて主キャラクタを生成するとともに、その活動を制御する。敵キャラクタ制御部54は、生成されたゲーム空間内に生息する宿主キャラクタ200を含む敵キャラクタを生成するとともに、主キャラクタの活動に対応した活動(戦闘)を行わせる。寄生キャラクタ制御部55は、主キャラクタ100または宿主キャラクタ200の体の表面を這う寄生キャラクタ201を生成し、主キャラクタ100および宿主キャラクタ200の活動に対応した活動を行わせる。また、寄生キャラクタ制御部55はパス制御部を含んでおり、パス制御部は、宿主キャラクタ200または主キャラクタ100の体表面に寄生キャラクタ201が移動する経路であるパスを設定する。描画処理部56は、ゲーム進行制御部51が生成したゲーム空間、キャラクタを二次元のスクリーンに投影したゲーム画像を生成してモニタに出力する。
【0033】
図5は、主キャラクタ100の形状と、その体表面に形成されるパスを説明する図である。主キャラクタ100は、頭101、首102、胸103、腰104、腕105、脚106等の各部を有し、人間とほぼ同様の外観・構造のキャラクタとして生成される。主キャラクタ制御部53は、主キャラクタに人間とほぼ同様の骨(251等)および関節(151等)を設定し、各関節の角度を決定することにより、主キャラクタの姿勢や動作を制御する。各関節は曲げ伸ばしの回転が可能であるとともに、一部の関節は捩じりの回転が可能である。ある関節が曲げ伸ばしの回転をすると、その先の関節(子関節)の位置が移動する。また、ある関節が捩じりの回転をすると、その子関節の位置が移動し、または子関節の向きが変化する。この関節の回転、関節の位置の移動、関節の向きの変化を総称して関節の運動と呼ぶ。このように、各関節は、主動−従動の関係(親子関係)で関係づけられており、親関節が運動したときその子関節もそれに連動して運動する。
【0034】
主キャラクタの体表面は多数のポリゴンの組み合わせで構成されており、各ポリゴンの頂点は1または複数の関節に関連づけられている。主キャラクタの動作は、関節を曲げ伸ばしの回転または捩じりの回転をさせることで行われるが、このように関節が動かされたとき、その関節に関連づけられているポリゴンが連動して変形し、これにより、主キャラクタの様々な姿勢の姿が表現される。
【0035】
なお、この図は、主キャラクタ100を正面から見た図である。したがって、図面左側の105Rが主キャラクタ100の右腕であり、図面右側の105Lが主キャラクタ100の左腕である。
【0036】
主キャラクタ100の姿勢は、上述したように、各関節の位置や回転角度によって決定されるが、この各関節の位置はモデルローカル座標系の座標値で規定され、各関節の向きはモデルローカル座標系のベクトルで規定される。
【0037】
ここで、モデルローカル座標系について説明する。肩幅に足を開いて直立し、両腕を左右に伸ばした状態(図5の姿勢で両腕を水平にあげた状態)を主キャラクタ100の標準姿勢とする。この標準姿勢における主キャラクタ100の体軸をy軸とし、左足踵108から右足踵107へ向かう直線をx軸とする。このx軸とy軸との交点を原点とする。そして原点から主キャラクタの正面方向へ伸びる直線をz軸とする。このような主キャラクタの足元を原点とした座標系をモデルローカル座標系とする。
【0038】
以下、関節の座標値を関節座標と呼び、主キャラクタ100の標準姿勢における関節座標を標準関節座標と呼ぶ。また、関節の向き(法線ベクトル)を関節法線と呼び、主キャラクタ100の標準姿勢における関節の向きを標準関節法線と呼ぶ。
【0039】
また、寄生キャラクタ201の移動経路であるパスは、複数の制御点を通過する滑らかな曲線として設定される。各制御点は、主キャラクタ100の1または複数の関節に関連づけられている。各制御点が主キャラクタ100の関節に関連づけられていることにより、主キャラクタの姿勢がどのように変化しても、パスが主キャラクタ100の体表面に沿った曲線になるように制御される。
【0040】
このパスの制御点も関節と同様に、モデルローカル座標系における座標値およびベクトルで規定される。制御点の座標値を制御点座標と呼ぶ。パスの制御点のベクトル(向き)は、パス上に配置されるキャラクタ(寄生キャラクタ201)の上向きを決定するための情報であり、制御点におけるY軸方向(上方向)を規定する情報である。この法線ベクトルを制御点法線と呼ぶ。
【0041】
上述の制御点が関節に関連づけられているとは、主キャラクタ100の姿勢を変化させるために関節を運動させることにより、その関節に関連づけられている制御点もそれに連動して運動することをいう。ここで、制御点の運動とは、上述した関節の場合と同様に、位置が移動することおよび同じ位置で回転すること(法線方向が変化すること)を含む。制御点の位置の移動は制御点座標の変化として現れる。また、制御点の回転は制御点法線の変化として現れる。
【0042】
たとえば、主キャラクタの手首付近に設定されている制御点であれば、主キャラクタが肘の関節を曲げ伸ばしして手首の関節の位置が移動することに追従して制御点座標が移動し、主キャラクタが手首の関節を回転させる(たとえば掌を下向きから上向きにする)ことにより、制御点法線が変化する。
【0043】
なお、上述のシューティングゲームが展開されるゲーム空間は、単一の座標系(ワールド座標系)を有し、ゲーム空間内では、キャラクタを含む全てのオブジェクトはこのワールド座標系で位置や姿勢が規定されている。主キャラクタ制御部53は、モデルローカル座標系で各部位の座標点を規定して主キャラクタ100を生成する。ゲーム進行制御部51は、この主キャラクタ100を決定されたワールド座標系の座標・向きに従ってゲーム空間に配置し、主キャラクタ100の体(パスを含む)の各部位の座標をワールド座標系に変換する。敵キャラクタ制御部54が生成する敵キャラクタ、寄生キャラクタ制御部55が生成する寄生キャラクタ201についても同様である。
【0044】
図5では、2種類のパスを例示している。パス300は首から右腕へ伸びる両端を有するパスである。また、パス400は、左脚をらせん状に巡回するループ状のパスである。パスは複数の制御点を通過する滑らかな曲線状に規定される。パス300は9個の制御点320〜328によって規定され、パス400は21個の制御点によって規定されている。
【0045】
このようにパスには、パス300のようにスタート地点およびエンド地点があるものと、パス400のようにエンド地点がなくループ状のものとがある。スタート地点およびエンド地点があるパスでは、寄生キャラクタ201は一方の端部の制御点であるスタート地点から他方の端部の制御点であるエンド地点に向かってパス上を移動し、エンド地点を過ぎると地面に落下する。エンド地点がないループ状のパスでは、寄生キャラクタ201は予め定められたスタート地点から移動を開始し、パスによる移動経路制御が行われている限り、永久にループ状のパス上を移動する。なお、本実施形態のパスのスタート地点は、脇の下等の目立たない場所に設定される。また、本実施形態では、スタート地点/エンド地点を、パスを構成する何れかの制御点に設定している。
【0046】
また、各パスにおいて、各制御点で区切られる区間を区間パスと呼ぶ。すなわち、パス300は、8個の区間パス301〜308からなり、パス400は、21個の区間パスからなる。
【0047】
上述したように、パスの通過点である制御点は、主キャラクタ100の関節に関連づけられている。たとえば、制御点324は、右肘の関節158、および、右手首の関節159に関連づけられている。制御点は、関連づけられている関節が運動すると、それに応じて運動する。これにより、パスの各制御点は、主キャラクタの関節の三次元空間内における運動に基づく主キャラクタの姿勢の変化に追従して運動し、常に主キャラクタの体表面に沿った形状になる。
【0048】
たとえば、図6(A)に示すように、右肘が伸ばされているとき、パス300は、その伸ばされている形状に合わせた形状になっているが、図6(B)に示すように、右肘が曲げられると、パス300(特に区間パス305)は、その曲げられた形状に合わせた形状になり、肘が曲げられた主キャラクタの体表面に沿う形状に変化する。
【0049】
なお、主キャラクタ100には予め複数のパスが設定されており、解除条件が成立すると複数のパス上で寄生キャラクタ201の移動制御が開始される。詳細は後述する。
なお、パスは、敵キャラクタである寄生キャラクタ201が移動する経路として設定されるものであり、ゲーム画面には表示されない。
【0050】
複数のパスのそれぞれには、パスの形状を規定する各制御点のデータ、スタート地点/エンド地点の情報、パスが設定されるオブジェクト(主キャラクタ100、宿主キャラクタ200)を特定する情報等を含むパスデータがある。パスデータは、予めゲームプログラムのゲームデータとして記録媒体15に記録されている。
【0051】
図7は上記パスの形状を規定する各制御点のデータである制御点データを説明する図である。図7はあるパスの1つの制御点データを示している。パス300の制御点320〜328、パス400の21個の制御点は、全てこの構成の制御点データで定義づけられている。
【0052】
制御点データは、スタート地点からの距離S、標準制御点座標、標準制御点法線、関連づけ関節数m(m≧1)、関連づけられた関節の関節番号J(1),・・・,J(m)およびそのウェイト値W(1),・・・,W(m)からなっている。
【0053】
スタート地点からの距離Sは、主キャラクタが標準姿勢のときに形成されるパスにおける当該パスのスタート地点からこの制御点までのパス長である。この実施形態では、パス長は、スタート地点の制御点からこの制御点までの各制御点間を直線でつないだ場合の距離で表されている。標準制御点座標は、主キャラクタ100が標準姿勢のときの制御点の主キャラクタ100のモデルローカル座標系における座標である。
また、標準制御点法線は、主キャラクタ100が標準姿勢のときにおける制御点のY軸方向(上方向)を規定するベクトルである。
【0054】
関連づけられている各関節に対して設定されているウェイト値W(パーセント)は、その関節の運動にこの制御点がどれだけ追従するかの追従の度合いを示す値である。図7に示すように各制御点は関連づけられたm個の関節の運動に追従する。たとえば前腕の途中に設定されている制御点であれば肘の関節および手首の関節の両方に追従する。制御点は、関連づけられている複数の関節のそれぞれにそのウェイト値の大きさに合わせた度合いで追従する。この制御点が追従する全ての関節に対するウェイト値を全て加算すると100パーセントになるように値が設定されている。
【0055】
図8は、パスの制御点の位置を、主キャラクタ100のそのときの姿勢に合わせて算出するための演算処理を示すフローチャートである。まず、パスの位置座標が積算される座標レジスタP3=(x,y,z)をクリア(0,0,0)する(S10)。次に、図7に示す制御点データに基づいて、制御点Pに関連づけられた関節J(i);(i=1,・・・,m)を1つ選択する。S11では、iに1をセットして最初の関節(J(1))を選択する(S11)。
【0056】
制御点Pの標準制御点座標から選択された関節J(i)の標準関節座標を引いて、標準姿勢での関節J(i)の位置を基準とした制御点Pの相対的な位置(関節J(i)から制御点Pを見たときの位置ベクトル)Lを計算する(S12)。
【0057】
そして、S12で計算した位置ベクトルLに、現在の姿勢における関節J(i)の4行4列のモデルローカル行列をかけて、制御点Pの現在の関節J(i)に対応したモデルローカル座標P2を求める(S13)。モデルローカル行列は、主キャラクタ100における標準姿勢での関節J(i)の位置および向きを、平行移動、拡大・縮小、回転等して現在の姿勢での位置および向きに変換するための行列(物体の姿勢の変換行列)である。標準姿勢での関節J(i)の位置および向きは行列で表現されていて、この行列にモデルローカル行列を掛けることで現在の姿勢での関節J(i)の位置および向きに変換される。モデルローカル行列は、主キャラクタ100のモーションデータ等によって決定されるものである。この座標変換は、一般的な技術であるので詳細な説明は省略する。それから、S13で求めたモデルローカル座標P2に関節J(i)に対するウェイト値W(i)をかけ(S14)、その座標値P2を座標レジスタP3(最初は0)に積算する(S15)。
【0058】
以上の処理の後、S12以下の処理を制御点Pに関連づけられた全ての関節について終了したか、すなわちi=mであるかを判定する(S16)。制御点Pに関連づけられた全ての関節についてS12以下の処理を終了していない場合(S16でNO)、iに1を加算して制御点Pに関連づけられた関節のうち次に関節番号の小さい関節J(i)を指定する(S17)。そして、この関節J(i)についてS12からS16までの処理を行う。S12〜S16の処理を、制御点Pに関連づけられた関節数であるm回繰り返すことで、主キャラクタ100の姿勢に応じた制御点Pのモデルローカル座標系の座標を求めることができる。
【0059】
S16において、S12以下の処理を制御点Pに関連づけられた全ての関節について終了したと判断した場合(S16でYES)、この制御点座標決定処理を終了する。このときの座標レジスタP3の値が、そのときの主キャラクタ100の姿勢に応じた制御点Pの座標である。
【0060】
以上は制御点Pの位置のみについて説明しているが、制御点Pの向きについても並行して同様の処理を行う。すなわち、モデルローカル法線に対してモデルローカル行列を掛けてベクトル方向を変換する。モデルローカル法線を位置ベクトルと考えれば座標値と同様に変換することができる。算出された値にウェイト値W(i)を掛けてその値を積算レジスタに積算する。
【0061】
なお、この処理は、主キャラクタ100の姿勢が変化する毎に全ての制御点について演算する必要はなく、その寄生キャラクタ201が存在する区間パスの形状を決定するために必要な制御点についてのみ演算すればよい。
【0062】
図9は、寄生キャラクタ201の概略と寄生キャラクタ201の形状を規定するデータとを説明する図である。同図(A)に示すように、寄生キャラクタ201は複数の関節210を有するミミズ(環形動物)の様な外観形状を有するキャラクタである。各関節がパス(たとえばパス300)上に位置するように形をくねらせて移動する。
【0063】
同図(B)は、寄生キャラクタ201を形成するためのデータを示す図である。このデータは、寄生キャラクタ201の外観形状を描画するためのテクスチャデータや関節情報(関節番号含む)等の外観データ、および、各節の節番号iと先頭からの距離とが関連付けられた関節距離データh(i)等からなる。このデータは、ゲームデータとして予め記録媒体15に記憶されている。先頭からの距離は、寄生キャラクタ201が標準姿勢の状態において、先頭の関節から関節番号iで特定される関節までの距離を示す。なお、寄生キャラクタ201の標準姿勢は、図9(A)のように曲がった状態ではなく、直線状に伸びた姿勢である。また、先頭の関節は、寄生キャラクタ201の進行方向における先端の関節を意味する。したがって、先端の関節(i=1)の距離h(1)は0となる。
【0064】
図10(A)は、主キャラクタ100に対する寄生キャラクタ201の発生処理を示す図である。ゲーム空間に宿主キャラクタ200が存在し、主キャラクタ100と宿主キャラクタ200の関係が特定の解除条件を満たすと、寄生キャラクタ201を主キャラクタ100の体表面に出現させる処理を行う。この出現処理は、主キャラクタ100上に新たな寄生キャラクタ201を発生させる処理であるが、ゲーム上の演出としては、寄生キャラクタ201が宿主キャラクタ200から主キャラクタ100に乗り移ったような演出で行われる。
【0065】
まず、主キャラクタ100が解除条件を満たしたか否かを判定する(S20)。解除条件は、主キャラクタ100が宿主キャラクタ200に接触している(掴まれている)または所定距離以内に接近しているという距離的条件である。S20では、例えば主キャラクタ100のステータス情報に基づいて判定が行われる。ステータス情報は、オブジェクト同士の接触・接近を判定する所謂アタリ判定処理等で主キャラクタ制御部53によって更新される。ステータス情報は、主キャラクタ100の現在の状態(掴まれている、走っている等)を示すものであり、主キャラクタ100の状態の変化に応じて更新される。主キャラクタ100が解除条件を満たしていない場合(S20でNO)、寄生キャラクタ201の出現処理を行わずに終了する。
【0066】
主キャラクタ100が解除条件を満たしている場合(S20でYES)、寄生フラグがリセットされているかを判断する(S21)。寄生フラグは、寄生キャラクタ201が主キャラクタ100のパス上に出現している旨を示すフラグであり、寄生フラグがセットされている場合(S21でYES)には、既に寄生キャラクタ201が主キャラクタのパス上に出現しているため、新たな寄生キャラクタ201の出現処理を行わないで処理を終了する。寄生フラグがリセットされている場合(S21でNO)には、寄生フラグをセットして(S22)寄生キャラクタ201の出現処理を行う(S23、S24)。
【0067】
すなわち、主キャラクタ100に設定されている全てのパスについてのパスデータを読み出すとともに(S23)、寄生キャラクタ201の移動速度dを読み出す(S24)。その後、全パス上の寄生キャラクタ201のそれぞれについてスタート地点Dsからの移動制御処理(図10(B)参照)を開始する。
【0068】
なお、寄生フラグは、主キャラクタ100に付随するフラグであり、S22でセットされる。また、寄生フラグは、上述したように主キャラクタ100が走る、飛び上がる等の特定の動作を行ったときに、主キャラクタ制御部53によってリセットされる。
【0069】
また、移動速度dはゲーム画面の表示更新間隔である1フレーム(1/60)当たりの移動距離で表され、全ての寄生キャラクタ201の共通の値であるゲームデータとして予め記録媒体15に記録されている。
【0070】
なお、1回の解除条件成立に応じて1つのパスに1匹の寄生キャラクタ201を出現させ、複数回の解除条件成立に応じて複数の寄生キャラクタ201を出現させるようにしてもよい。この場合、寄生フラグを各パス毎に別々に設け、上記S20で主キャラクタ100の解除条件が成立した場合、S21で寄生フラグがリセットされているパスを選択して、そのパス上に寄生キャラクタ201を出現させるようにすればよい。
【0071】
図10(B)は、寄生キャラクタ201の移動制御処理を示す図である。S30〜S33では寄生キャラクタ201がパス上を移動しているか否かを判定する。
【0072】
まず、S30では寄生キャラクタ201がパスから地上に落下中であるかを判定する。この判定は、寄生キャラクタ201の状態情報が落下中であるか否かに基づいて行われる。寄生キャラクタ201が落下中である場合(S30でYES)には、落下のモーションデータに基づいて寄生キャラクタ201の落下動作を再生する落下制御処理を実行する(S35)。この落下制御処理により、寄生キャラクタ201が地上まで落下すると、寄生キャラクタ201の状態情報は地上活動中に書き換えられる。
【0073】
S31では寄生キャラクタ201が地上で活動中であるかを判定する。この判定は、寄生キャラクタ201の状態情報が地上活動中であるか否かに基づいて行われる。寄生キャラクタ201が地上で活動中である場合(S31でYES)には、寄生キャラクタ201が地上を這って進む動作または落下した位置で体を折り曲げてもがく動作をモーションデータに基づいて再生する。
【0074】
S32では寄生キャラクタ201がパスのエンド地点に到達したかを判定する。なお、ループ状のパスについては、エンド地点はないので常に到達しない判定となる。また、S33では寄生キャラクタ201がパスから落下する条件(落下条件)が成立したかを判定する(S33)。寄生キャラクタ201の先端(関節h(1))がパスのエンド地点に到達したとき、寄生キャラクタ201がパスのエンド地点に到達したと判定される。また、寄生キャラクタ201がパスから落下するための落下条件の成否は、たとえば、主キャラクタ100が走る、飛び上がる等の特定の動作を行ったか否かで判定される。この判定は、寄生フラグに基づいて行われる。寄生フラグは、上述のように、主キャラクタ100が走る、飛び上がる等の落下条件成立のための特定の動作を行ったときに、主キャラクタ制御部53によってリセットされる。
【0075】
寄生キャラクタ201がパスのエンド地点に到達した場合(S32でYES)、または、落下条件が成立した場合(S33でYES)には、寄生キャラクタ201の状態情報に落下中をセットし(S37)、寄生キャラクタ201の位置と姿勢を落下スタートの状態にセットする(S38)。寄生キャラクタ201の落下スタート位置は、パスから少し離れた空中の位置に設定される。
【0076】
上記S30〜S33の判定が全て否定的であった場合、寄生キャラクタ201はパス上を移動していることになる。この場合には、S34に進んで、そのときの寄生キャラクタ201の位置と形態を決定する形態決定処理(図11参照)を行う(S34)。
【0077】
なお、図10(A)、(B)の処理は毎フレーム(1/60秒)実行され、モニタに表示されるゲーム画面ではフレームごとに寄生キャラクタ201の位置が変化する。
【0078】
図11は、図10(B)のS34で実行される寄生キャラクタ201の形態決定処理を示す図である。まず、寄生キャラクタ201の現在位置Dを決定する(S40)。この寄生キャラクタ201の現在位置Dは、寄生キャラクタ201の先端の関節の位置を示す情報であり、スタート地点Dsからの移動距離である。現在位置Dは、寄生キャラクタ201の移動速度dを毎フレーム積算した値であり、前回の現在位置Dにdを加算する処理で求めることができる。
【0079】
寄生キャラクタ201は、全ての関節をパス上に乗せて移動するため、各関節の位置をパス上に乗るように決定する。最初に寄生キャラクタ201の先端から1つ目の節i=1を指定する(S41)。
【0080】
寄生キャラクタ201の現在位置Dに、Dからi番目の関節までの距離h(i)を加えて、パスのスタート地点Dsからi番目の関節までの距離を算出する(S42)。なお、寄生キャラクタ201の関節位置は、h(1)を除いて先端位置よりも後ろであるため、h(i)(i≧2)は負値となる。そして、このD+h(i)と各制御点のスタート地点からの距離情報Sとを対比することにより、i番目の関節がどの区間パスにあるかを特定する(S43)。すなわち、関節位置D+h(i)の値が、S(n)<D+h(i)<S(n+1);(但しnは制御点番号)であったとき、この関節iは、制御点nとn+1との間の区間パス上に存在することになる。
【0081】
関節が存在する区間パスが特定されると、この区間パスの曲線を求める処理を行う。まず、この区間パスの両側の制御点およびさらにその隣の2つ制御点、すなわち、区間パスを挟む4点の制御点Pの制御点座標を求め(S46)、補間演算で区間パスの曲線を求める(S47)。補間演算はエルミート補間法等の演算を用いればよい。この求めた区間パスの曲線上でこのi番目の関節のローカル座標系における位置を求める(S48)。
例えば、i番目の関節を内分点とした区間パスの内分比率から、区間パスの曲線上のi番目の関節の位置を取得する。内分比率は、以下の式を用いる。

内分比率={(関節位置D+h(i)−制御点の距離情報S(n))
÷(制御点の距離情報S(n+1)−S(n))}
【0082】
この内分比率およびS47で求めた曲線から、区間パスにおけるi番目の関節の曲線上の位置を演算する。なお、内分比率に基づいて線上の位置座標を取得する手法は一般的なものなので詳細な説明は省略する。また、同時にその位置におけるパスの法線方向を求める。法線方向は、この区間パスの両端の制御点の制御点法線を線形補間して求める。
【0083】
この実施形態では、演算処理の負荷を軽減するため、各制御点の距離情報S(n)および寄生キャラクタ201の現在位置Dを直線距離として求めて比較しているが、S(n)、Dを、曲線として設定されるパス上での位置で求めて比較することにより、より正確な位置関係を求めるようにしてもよい。
【0084】
また、本実施形態では、制御点の距離情報S(n)としてゲームデータの固定値が設定されているが、毎フレーム計算によって取得してもよい。例えば、パスにおける全ての区間パスのそれぞれの曲線を求め、全ての区間パスの距離情報を取得する。次に、1つの制御点について、スタート地点Dsからこの制御点に到達するまでに経由する全ての区間パスの距離情報を積算する処理を行って距離情報を取得する。上記処理を全ての制御点について行うことで、各制御点の距離情報を取得できる。
【0085】
以上のS42〜S48の処理をS49、S50のループ処理によって関節について繰り返し行うが、2番目以後の関節の演算において(S44がNOの場合)、今回の演算対象となっている関節(i)が1つ前の関節(i−1)と同じ区間パスに存在するか否か判定し(S45)、今回の関節が1つ前の関節と異なる区間パスに存在する場合(S45でNO)のみ、S46、S47の処理を行い、今回の関節が1つ前の関節と同じ区間パスに存在する場合(S45でYES)には、S46、S47の処理をスキップして前回求めた曲線を利用することにより、演算量を省略することができる。
【0086】
S49では、位置を算出した節が最終の節か否か判定する。位置を算出した節が最終の節ではない場合(S49でNO)、頭の先端Dの位置から次に遠い節(i+1)を指定し、その節についてS42〜S48の処理を行う。そして、寄生キャラクタ201の全ての節についてS42〜S48の処理を行ったのち(S49でYES)、以上の処理で求められた制御点座標および制御点法線をワールド座標系の座標、法線に変換して(S51)、寄生キャラクタの形態決定処理を終了する。その後、一般的な描画処理において、S51で設定された座標位置等の情報に基づいて寄生キャラクタ201が描画される。
【0087】
以上は、主キャラクタ100に寄生キャラクタ201が出現した(乗り移った)場合について説明したが、宿主キャラクタ200を含む敵キャラクタに寄生キャラクタ201のパスを設定する場合も処理は同じである。また、パスが設定されるオブジェクト(パス設定オブジェクト)は、キャラクタに限定されず、非生物の物体でもよい。また、移動オブジェクトも敵キャラクタ(寄生キャラクタ201)に限定されない。
【0088】
なお、図10(B)の処理では、地面に落下した寄生キャラクタ201は、そのまま地面上で活動するよう制御しているが、特定の条件が満たされたとき、地面上の寄生キャラクタ201を宿主キャラクタ200の体表面のパスに戻すようにしてもよい。特定の条件は、たとえば、地面上の寄生キャラクタ201と宿主キャラクタ200との距離が所定距離以内になったときとすればよい。寄生キャラクタ201と宿主キャラクタ200との距離は、宿主キャラクタ200の基準位置から所定半径の円を設定し、寄生キャラクタ201がこの円内に入ったとき相互の距離が所定距離以内になったと判定すればよい。この条件が満たされたとき、地面上の寄生キャラクタ201を宿主キャラクタ200の足元付近を通過し、且つ空いている(寄生キャラクタ201が乗っていない)パスに移動させる。空きパスであるか否かは、パスに空きを判定するフラグを設定すればよい。
【0089】
なお、本発明において、宿主キャラクタ200上のパスは必須ではない。すなわち、寄生キャラクタ201が宿主キャラクタ200の体表面上を(パス無しで)自由に移動しており、主キャラクタ100が宿主キャラクタ200に接近したとき、この自由に移動している寄生キャラクタ201を主キャラクタ100上のパスへ乗り移らせる、または、新たな寄生キャラクタ201を主キャラクタ100上のパスに発生させるようにしてもよい。逆に、主キャラクタ100のパス上を移動する寄生キャラクタ201をパス設定なしの宿主キャラクタ200へ乗り移らせる、または、新たな寄生キャラクタ201をパス設定なしの宿主キャラクタ200の体表面上に発生させることもできる。
【0090】
なお、上記実施形態では、パスを4点補間演算によって求められる曲線として設定しているが、必ずしも曲線でなくてもよい。例えば各制御点間を線分で接続した折れ線であってもよい。
【0091】
また、上記実施形態では、パスの形状を関節の運動によって変化させているが、特にこれに限定するものではなく、ポリゴン頂点等のオブジェクトの外観形態を決定するための外観決定情報を用いてもよい。
【0092】
さらに、この実施形態では、ゲーム装置として家庭用のテレビゲーム機を例示しているが、この発明は、家庭用のテレビゲーム機に限らず、携帯型ゲーム機、アーケードゲーム機等の他の種類のゲーム機、又はゲーム機以外の三次元映像を表示する装置、例えばゲームプログラムがローディングされたパーソナルコンピュータ等に適用することが可能である。
【符号の説明】
【0093】
50 操作検出部
51 ゲーム進行制御部
52 ゲーム空間生成部
53 主キャラクタ制御部
54 敵キャラクタ制御部
55 寄生キャラクタ制御部
56 描画処理部
100 主キャラクタ(第1のオブジェクト)
158、159 関節
200 宿主キャラクタ
201 寄生キャラクタ(第2のオブジェクト)
300、400 パス
301〜308 区間パス
320〜328 制御点

【特許請求の範囲】
【請求項1】
コンピュータを、
外観形態を決定するための外観決定情報を有し、この外観決定情報の変化に基づいて外観形態を変化させる第1のオブジェクト、および、予め設定された移動経路であるパス上を移動する第2のオブジェクトを3次元の仮想空間内に形成するオブジェクト形成手段、
前記パスを前記第1のオブジェクトの表面に沿わせて設定するパス設定手段、
前記第2のオブジェクトを前記パスに沿って移動させるオブジェクト移動手段、
として機能させるプログラムであって、
前記パス設定手段は、前記第1のオブジェクトの外観決定情報の変化に基づいて前記パスの形状を変化させることを特徴とするゲームプログラム。
【請求項2】
前記オブジェクト形成手段は、前記第1のオブジェクトを、1または複数の関節からなる関節構造を有し、前記1または複数の関節の位置を決定する情報を前記外観決定情報として有するオブジェクトとして形成する手段であり、
前記パス設定手段は、
複数の制御点を接続した折れ線または曲線としてパスを設定する手段、
前記各制御点を、それぞれ前記第1のオブジェクトの1または複数の関節に関連づけるとともに、該関連づけられた関節の移動に追従して移動させる手段、
を含むことを特徴とする請求項1に記載のゲームプログラム。
【請求項3】
前記オブジェクト形成手段は、前記外観決定情報として、前記1または複数の関節の向きを決定する情報をさらに有し、
前記パス設定手段は、各制御点の向きを、該制御点に関連づけられた関節の向きの変化に追従して変化させる手段を含むことを特徴とする請求項2に記載のゲームプログラム。
【請求項4】
前記パス設定手段は、前記パスの曲線を演算によって算出する手段であり、前記パスを各制御点を区切りとする区間パスに分割し、前記第2のオブジェクトが存在する区間パスのみその曲線を演算する請求項2または請求項3に記載のゲームプログラム。
【請求項5】
前記オブジェクト形成手段は、
前記第1のオブジェクトを、遊技者によって操作され、その操作に応じて姿勢の変化を含む活動をする主キャラクタとして形成するとともに、
前記第2のオブジェクトを、前記主キャラクタとは異なる宿主キャラクタの表面に存在する寄生キャラクタとして形成し、
さらに、前記主キャラクタが前記宿主キャラクタに接近または接触したとき、前記主キャラクタのパス上に、前記宿主キャラクタ上の寄生キャラクタを乗り移らせる、または、新たな寄生キャラクタを発生させる手段である
請求項1乃至請求項4のいずれかに記載のゲームプログラム。
【請求項6】
前記オブジェクト移動手段は、前記第1のオブジェクトが、特定の動作をしたとき、前記第2のオブジェクトを前記パスから外して落下させる請求項1乃至請求項4のいずれかに記載のゲームプログラム。
【請求項7】
請求項1乃至請求項5のいずれかに記載のゲームプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項8】
請求項1乃至請求項5のいずれかに記載のゲームプログラムを読み込んで実行するコンピュータ装置。

【図1】
image rotate

【図2】
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

【図3】
image rotate


【公開番号】特開2009−261921(P2009−261921A)
【公開日】平成21年11月12日(2009.11.12)
【国際特許分類】
【出願番号】特願2009−79460(P2009−79460)
【出願日】平成21年3月27日(2009.3.27)
【出願人】(000129149)株式会社カプコン (192)
【Fターム(参考)】