(57)【特許請求の範囲】
【請求項１】
コンピュータを、
外観形態を決定するための外観決定情報を有し、この外観決定情報の変化に基づいて外観形態を変化させる第１のオブジェクト、および、予め設定された移動経路であるパス上を移動する第２のオブジェクトを３次元の仮想空間内に形成するオブジェクト形成手段、
前記パスを前記第１のオブジェクトの表面に沿わせて設定するパス設定手段、
前記第２のオブジェクトを前記パスに沿って移動させるオブジェクト移動手段、
として機能させるプログラムであって、
前記パス設定手段は、前記第１のオブジェクトの外観決定情報の変化に基づいて前記パスの形状を変化させることを特徴とするゲームプログラム。
【請求項２】
前記オブジェクト形成手段は、前記第１のオブジェクトを、１または複数の関節からなる関節構造を有し、前記１または複数の関節の位置を決定する情報を前記外観決定情報として有するオブジェクトとして形成する手段であり、
前記パス設定手段は、
複数の制御点を接続した折れ線または曲線としてパスを設定する手段、
前記各制御点を、それぞれ前記第１のオブジェクトの１または複数の関節に関連づけるとともに、該関連づけられた関節の移動に追従して移動させる手段、
を含むことを特徴とする請求項１に記載のゲームプログラム。
【請求項３】
前記オブジェクト形成手段は、前記外観決定情報として、前記１または複数の関節の向きを決定する情報をさらに有し、
前記パス設定手段は、各制御点の向きを、該制御点に関連づけられた関節の向きの変化に追従して変化させる手段を含むことを特徴とする請求項２に記載のゲームプログラム。
【請求項４】
前記パス設定手段は、前記パスの曲線を演算によって算出する手段であり、前記パスを各制御点を区切りとする区間パスに分割し、前記第２のオブジェクトが存在する区間パスのみその曲線を演算する請求項２または請求項３に記載のゲームプログラム。
【請求項５】
前記オブジェクト形成手段は、
前記第１のオブジェクトを、遊技者によって操作され、その操作に応じて姿勢の変化を含む活動をする主キャラクタとして形成するとともに、
前記第２のオブジェクトを、前記主キャラクタとは異なる宿主キャラクタの表面に存在する寄生キャラクタとして形成し、
さらに、前記主キャラクタが前記宿主キャラクタに接近または接触したとき、前記主キャラクタのパス上に、前記宿主キャラクタ上の寄生キャラクタを乗り移らせる、または、新たな寄生キャラクタを発生させる手段である
請求項１乃至請求項４のいずれかに記載のゲームプログラム。
【請求項６】
前記オブジェクト移動手段は、前記第１のオブジェクトが、特定の動作をしたとき、前記第２のオブジェクトを前記パスから外して落下させる請求項１乃至請求項４のいずれかに記載のゲームプログラム。
【請求項７】
請求項１乃至請求項５のいずれかに記載のゲームプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【請求項８】
請求項１乃至請求項５のいずれかに記載のゲームプログラムを読み込んで実行するコンピュータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、遊技者が操作するキャラクタが敵キャラクタを倒していくアクションゲーム等のゲームを実行するゲームプログラム、記憶媒体およびコンピュータ装置に関する。
【背景技術】
【０００２】
アクションゲーム等では、三次元のゲーム空間でオブジェクトの移動を制御する方法として、パス（経路、軌道）に沿ってオブジェクトを移動させるパスアニメーション等が用いられている。また、楕円軌道のパスをゲーム空間内のキャラクタを囲むように設定し、このパスに沿って光源オブジェクトを移動（周回）させる構成のゲームがある。（特許文献１、段落００１８、図２）。このゲームでは、キャラクタを囲むパスがキャラクタの移動に伴って移動する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許３６８６９７８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述の特許文献１に記載の構成では、キャラクタ等のように動作することによって表面形状が変化するオブジェクト（パス設定オブジェクト）にパスを設定する場合、その表面形状の変化に合わせてパスの形状を変化させることができないため、パスに沿って移動するオブジェクト（移動オブジェクト）をパス設定オブジェクトの表面形状に沿って移動させることができない。例えば、パス設定オブジェクトの腕の表面上にパスを設定した場合、腕は曲げ伸ばし等によって変形するが、パスはその変形に追従できないので一部が腕の表面から外れてしまう。
【０００５】
このように、上記従来の技術では、キャラクタのように表面形状が変化するオブジェクトをパス設定オブジェクトとした場合、パス設定オブジェクトの表面形状がどのように変化しても移動オブジェクトがパス設定オブジェクトの体の表面を這っているようなゲーム表現を実現できないという問題があった。
【０００６】
この発明は、パス設定オブジェクト（第１のオブジェクト）の表面形状の変化に追従させてパスを変形させることにより、パス設定オブジェクトの表面形状が変化しても、移動オブジェクト（第２のオブジェクト）の移動経路をパス設定オブジェクトの表面に沿わせることのできるプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
請求項１の発明は、コンピュータを、外観形態を決定するための外観決定情報を有し、この外観決定情報の変化に基づいて外観形態を変化させる第１のオブジェクト、および、予め設定された移動経路であるパス上を移動する第２のオブジェクトを３次元の仮想空間内に形成するオブジェクト形成手段、前記パスを前記第１のオブジェクトの表面に沿わせて設定するパス設定手段、前記第２のオブジェクトを前記パスに沿って移動させるオブジェクト移動手段、として機能させるプログラムであって、前記パス設定手段は、前記第１のオブジェクトの外観決定情報の変化に基づいて前記パスの形状を変化させることを特徴とする。
【０００８】
請求項２の発明は、請求項１の発明において、前記オブジェクト形成手段は、前記第１のオブジェクトを、または複数の関節からなる関節構造を有し、前記１または複数の関節の位置を決定する情報を前記外観決定情報として有するオブジェクトとして形成する手段であり、前記パス設定手段は、複数の制御点を接続した折れ線または曲線としてパスを設定する手段、前記各制御点を、それぞれ前記第１のオブジェクトの１または複数の関節に関連づけるとともに、該関連づけられた関節の移動に追従して移動させる手段、を含むことを特徴とする。
【０００９】
請求項３の発明は、請求項２の発明において、前記オブジェクト形成手段は、前記外観決定情報として、前記１または複数の関節の向きを決定する情報をさらに有し、前記パス設定手段は、各制御点の向きを、該制御点に関連づけられた関節の向きの変化に追従して変化させる手段を含むことを特徴とする。
【００１０】
請求項４の発明は、請求項２、３の発明において、前記パス設定手段は、前記パスの曲線を演算によって算出する手段であり、前記パスを各制御点を区切りとする区間パスに分割し、前記第２のオブジェクトが存在する区間パスのみその曲線を演算することを特徴とする。
【００１１】
請求項５の発明は、請求項１〜４の発明において、前記オブジェクト形成手段は、前記第１のオブジェクトを、遊技者によって操作され、その操作に応じて姿勢の変化を含む活動をする主キャラクタとして形成するとともに、前記第２のオブジェクトを、前記主キャラクタとは異なる宿主キャラクタの表面に存在する寄生キャラクタとして形成し、さらに、前記主キャラクタが前記宿主キャラクタに接近または接触したとき、前記主キャラクタのパス上に、前記宿主キャラクタ上の寄生キャラクタを乗り移らせる、または、新たな寄生キャラクタを発生させる手段であることを特徴とする。
【００１２】
請求項６の発明は、請求項１〜５の発明において、前記オブジェクト移動手段は、第１のオブジェクトが、（飛び上がる、走る等の）特定の動作をしたとき、前記第２のオブジェクトを前記パスから外して落下させることを特徴とする。
【００１３】
請求項７の発明は、請求項１乃至請求項６のいずれかに記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体である。
【００１４】
請求項８の発明は、請求項１乃至請求項６のいずれかに記載のプログラムを読み込んで実行するコンピュータ装置である。
【発明の効果】
【００１５】
この発明によれば、パスが設定される第１のオブジェクトの表面形状の変化に追従させてパスを変形させることにより、第１のオブジェクトの表面形状が変化しても、パス上を移動する第２のオブジェクトを常に第１のオブジェクトの表面に沿わせて移動させることができる。
【図面の簡単な説明】
【００１６】
【図１】この発明が適用されるゲーム装置の外観図
【図２】同ゲーム装置のブロック図
【図３】この発明の実施形態であるアクションゲームプログラムのゲーム画面を示す図
【図４】同ゲームプログラムと前記ゲーム装置で構成されるゲームシステムの構成を示す図
【図５】ゲームに登場する主キャラクタのスケルトンモデルと主キャラクタの体表面に設定されるパスを示す図
【図６】前記主キャラクタの腕の屈伸とパスの形状変化を説明する図
【図７】前記パスの制御点を規定するデータを示す図
【図８】前記制御点の位置を主キャラクタの姿勢変化に追従させて算出する演算処理を示すフローチャート
【図９】前記パス上を移動するキャラクタである寄生キャラクタのスケルトンモデルと寄生キャラクタを規定するデータを示す図
【図１０】前記ゲームシステムの寄生キャラクタの制御動作を示すフローチャート
【図１１】前記ゲームシステムの寄生キャラクタの制御動作を示すフローチャート
【発明を実施するための形態】
【００１７】
図面を参照してこの発明の実施形態であるゲームプログラムおよびゲーム装置（コンピュータ）について説明する。
【００１８】
≪ゲーム装置の構成≫
まず、ゲームプログラムが実行されるゲーム装置について説明する。
図１は、この発明のゲームプログラムが実行されるゲーム装置（コンピュータ）の外観図である。
【００１９】
このゲーム装置は、ゲーム装置本体１０にコントローラ２０が無線または有線で接続されて構成されている。コントローラ２０は、遊技者によって操作される。遊技者は、このコントローラ２０を用いて、ゲーム中に登場する主キャラクタ等を操作する。なお、ゲームは、遊技者の操作およびゲームプログラム、ゲーム装置で構成されるゲームシステムの処理動作で進行するが、以下の説明では、動作の内容に応じて、主キャラクタを主語とし、主キャラクタの動作として説明する場合がある。
【００２０】
ゲーム装置本体１０は、ゲームプログラムが記録された記録媒体（記憶媒体）１５がセットされるトレイ１１を有している。記録媒体１５は、たとえばＤＶＤ（digital versatile disc）である。ゲーム装置本体１０は、この記録媒体１５からゲームプログラムを読み取って、このプログラムを実行する。なお、記録媒体１５は、ＤＶＤ以外であってもよく、例えばＣＤ、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ、または、内蔵のハードディスクなどを用いることができる。
【００２１】
また、装置前面には、コントローラ２０が接続されるコネクタ１２、フラッシュメモリからなるカード型の外部メモリ４５（図２参照）がセットされるメモリスロット１３が、それぞれ設けられている。
【００２２】
コントローラ２０は、略コ字形をしており、遊技者が両翼部のハンドルを左右両手で把持して操作する。コントローラ２０の左右上面には操作ボタン群およびアナログスティックが設けられている。遊技者は、これら操作ボタン群、アナログスティックを操作して主キャラクタやカメラ位置を制御する。この遊技者の操作に応じてゲーム中の主キャラクタは、たとえば、歩く、走る、飛び上がる、腕を曲げ伸ばしする等の動作を行う。
【００２３】
図２は、ゲーム装置本体１０およびコントローラ２０の内部構成を示すブロック図である。  
ゲーム装置本体１０は、装置全体の動作を制御するＣＰＵ３１を有している。このＣＰＵ３１に対してＲＡＭ３２およびバス３３が接続される。ＲＡＭ３２には、ゲームの進行に応じて各種のデータが記憶される。
【００２４】
バス３３には、グラフィック・プロセッサ・ユニット（ＧＰＵ）３４、インプット・アウトプット(Ｉ／Ｏ)ポート３９が接続される。ＧＰＵ３４には、デジタル映像信号をＮＴＳＣテレビジョン方式やＰＡＬテレビジョン方式に変換するためのデコーダ３７を介して、外部機器であるモニタ（テレビジョン装置：ＴＶ）３８が接続される。
【００２５】
Ｉ／Ｏポート３９には、光ディスク等の記録媒体１５に記録されているデータを再生し、デコードするためのドライバ（ＤＲＶ）４０，サウンド・プロセッサ（Ｓ．Ｐ）４２、外部メモリ４５、コントローラ２０およびＲＯＭ４６が接続される。
コントローラ２０は、Ｉ／Ｏポート２１を介して各種操作子群２２をゲーム装置本体１０のＩ／Ｏポート３９に接続する。
【００２６】
ＲＯＭ４６には、このゲーム装置本体１０を起動するとともに基本的な機能を実現するためのシステムプログラムが記憶されている。外部メモリ４５には、遊技者の情報や実行しているゲームの途中経過等が記憶される。遊技者は、ゲームプログラムを記憶した記録媒体１５と自己の外部メモリ４５をセットすることにより、途中で中断したゲームを、その中断したタイミングから再開することができる。
サウンド・プロセッサ４２は、増幅器４３を介して、外部機器であるスピーカ４４に接続される。このスピーカ４４は、一般的には、テレビジョン装置に内蔵されている上記モニタ３８と一体のスピーカである。
【００２７】
《ゲームプログラムの構成》
次に、図３を参照してこのゲーム装置で実行されるゲームについて説明する。このゲームは、遊技者がコントロールする主キャラクタが敵キャラクタを倒すことによってゲームが進行するサードパーソンシューティングゲームである。
【００２８】
ゲーム中には多くの敵キャラクタが登場する。図３（Ａ）は、宿主キャラクタ２００を示す図である。この宿主キャラクタ２００は丸い胴体と両腕・両脚を有するキャラクタ（モンスター）であり、その体表面に寄生キャラクタ２０１を多数（２００匹程度）宿している。寄生キャラクタ２０１は、ミミズのような外観の小さい敵キャラクタであり、主として宿主キャラクタ２００の表面に生息しているが、同図（Ｂ）の主キャラクタ１００や地表でも生息可能である。
【００２９】
同図（Ｂ）に示す主キャラクタ１００がこの宿主キャラクタ２００に一定以上接近すると（または接触すると）、寄生キャラクタ２０１が、主キャラクタ１００の体表面に現れて主キャラクタ１００の体を這って移動する。このとき主キャラクタ１００に現れる寄生キャラクタ２０１は、宿主キャラクタ２００から乗り移らせてもよく、主キャラクタ１００上で新たに発生させてもよい。なお、寄生キャラクタ２０１を主キャラクタ１００上で新たに発生させる場合でも、ゲーム上の演出として、宿主キャラクタ２００から寄生キャラクタ２０１が乗り移ったようにしてもよい。また、主キャラクタ１００は、飛び上がったり走ったりすることにより、自分の体に乗り移った寄生キャラクタ２０１を振り落とすことができる。
【００３０】
このようなゲームを実行するゲームプログラムを上述したゲーム装置に読み込ませることにより、図４に示すようなゲームシステムを機能的に実現することができる。ゲームシステムは、操作検出部５０、ゲーム進行制御部５１、描画処理部５６からなっている。ゲーム進行制御部５１は、ゲーム空間生成部５２、主キャラクタ制御部５３、敵キャラクタ制御部５４を含んでいる。また、主キャラクタ制御部５３、敵キャラクタ制御部５４は、主キャラクタ１００または宿主キャラクタ２００上に発生する寄生キャラクタ２０１を制御する寄生キャラクタ制御部５５を含んでいる。この寄生キャラクタ制御部５５は、寄生キャラクタ２０１の移動経路であるパスを設定するパス制御部を含んでいる。
【００３１】
操作検出部５０は、ＣＰＵ３１、ＲＡＭ３２等のデータ処理部およびコントローラ２０を含み、遊技者の各種操作を検出して、ゲーム進行制御部５１に伝達する。ゲーム進行制御部５１は、ＣＰＵ３１、ＲＡＭ３２等のデータ処理部を含み、仮想のゲーム空間やキャラクタを生成するとともに、遊技者の操作や時間の経過等に応じて、上述のゲーム空間を変化させたりキャラクタを活動させたりする等の処理を行ってゲームを進行させる。
【００３２】
ゲーム空間生成部５２は、操作検出部５０から入力された操作情報に基づいて選択されたゲームステージのゲーム空間を生成するとともに、そのゲーム空間の天候などの環境を制御する。主キャラクタ制御部５３は、操作検出部５０から入力される操作情報に基づいて主キャラクタを生成するとともに、その活動を制御する。敵キャラクタ制御部５４は、生成されたゲーム空間内に生息する宿主キャラクタ２００を含む敵キャラクタを生成するとともに、主キャラクタの活動に対応した活動（戦闘）を行わせる。寄生キャラクタ制御部５５は、主キャラクタ１００または宿主キャラクタ２００の体の表面を這う寄生キャラクタ２０１を生成し、主キャラクタ１００および宿主キャラクタ２００の活動に対応した活動を行わせる。また、寄生キャラクタ制御部５５はパス制御部を含んでおり、パス制御部は、宿主キャラクタ２００または主キャラクタ１００の体表面に寄生キャラクタ２０１が移動する経路であるパスを設定する。描画処理部５６は、ゲーム進行制御部５１が生成したゲーム空間、キャラクタを二次元のスクリーンに投影したゲーム画像を生成してモニタに出力する。
【００３３】
図５は、主キャラクタ１００の形状と、その体表面に形成されるパスを説明する図である。主キャラクタ１００は、頭１０１、首１０２、胸１０３、腰１０４、腕１０５、脚１０６等の各部を有し、人間とほぼ同様の外観・構造のキャラクタとして生成される。主キャラクタ制御部５３は、主キャラクタに人間とほぼ同様の骨（２５１等）および関節（１５１等）を設定し、各関節の角度を決定することにより、主キャラクタの姿勢や動作を制御する。各関節は曲げ伸ばしの回転が可能であるとともに、一部の関節は捩じりの回転が可能である。ある関節が曲げ伸ばしの回転をすると、その先の関節（子関節）の位置が移動する。また、ある関節が捩じりの回転をすると、その子関節の位置が移動し、または子関節の向きが変化する。この関節の回転、関節の位置の移動、関節の向きの変化を総称して関節の運動と呼ぶ。このように、各関節は、主動−従動の関係（親子関係）で関係づけられており、親関節が運動したときその子関節もそれに連動して運動する。
【００３４】
主キャラクタの体表面は多数のポリゴンの組み合わせで構成されており、各ポリゴンの頂点は１または複数の関節に関連づけられている。主キャラクタの動作は、関節を曲げ伸ばしの回転または捩じりの回転をさせることで行われるが、このように関節が動かされたとき、その関節に関連づけられているポリゴンが連動して変形し、これにより、主キャラクタの様々な姿勢の姿が表現される。
【００３５】
なお、この図は、主キャラクタ１００を正面から見た図である。したがって、図面左側の１０５Ｒが主キャラクタ１００の右腕であり、図面右側の１０５Ｌが主キャラクタ１００の左腕である。
【００３６】
主キャラクタ１００の姿勢は、上述したように、各関節の位置や回転角度によって決定されるが、この各関節の位置はモデルローカル座標系の座標値で規定され、各関節の向きはモデルローカル座標系のベクトルで規定される。
【００３７】
ここで、モデルローカル座標系について説明する。肩幅に足を開いて直立し、両腕を左右に伸ばした状態（図５の姿勢で両腕を水平にあげた状態）を主キャラクタ１００の標準姿勢とする。この標準姿勢における主キャラクタ１００の体軸をｙ軸とし、左足踵１０８から右足踵１０７へ向かう直線をｘ軸とする。このｘ軸とｙ軸との交点を原点とする。そして原点から主キャラクタの正面方向へ伸びる直線をｚ軸とする。このような主キャラクタの足元を原点とした座標系をモデルローカル座標系とする。
【００３８】
以下、関節の座標値を関節座標と呼び、主キャラクタ１００の標準姿勢における関節座標を標準関節座標と呼ぶ。また、関節の向き（法線ベクトル）を関節法線と呼び、主キャラクタ１００の標準姿勢における関節の向きを標準関節法線と呼ぶ。
【００３９】
また、寄生キャラクタ２０１の移動経路であるパスは、複数の制御点を通過する滑らかな曲線として設定される。各制御点は、主キャラクタ１００の１または複数の関節に関連づけられている。各制御点が主キャラクタ１００の関節に関連づけられていることにより、主キャラクタの姿勢がどのように変化しても、パスが主キャラクタ１００の体表面に沿った曲線になるように制御される。
【００４０】
このパスの制御点も関節と同様に、モデルローカル座標系における座標値およびベクトルで規定される。制御点の座標値を制御点座標と呼ぶ。パスの制御点のベクトル（向き）は、パス上に配置されるキャラクタ（寄生キャラクタ２０１）の上向きを決定するための情報であり、制御点におけるＹ軸方向（上方向）を規定する情報である。この法線ベクトルを制御点法線と呼ぶ。
【００４１】
上述の制御点が関節に関連づけられているとは、主キャラクタ１００の姿勢を変化させるために関節を運動させることにより、その関節に関連づけられている制御点もそれに連動して運動することをいう。ここで、制御点の運動とは、上述した関節の場合と同様に、位置が移動することおよび同じ位置で回転すること（法線方向が変化すること）を含む。制御点の位置の移動は制御点座標の変化として現れる。また、制御点の回転は制御点法線の変化として現れる。
【００４２】
たとえば、主キャラクタの手首付近に設定されている制御点であれば、主キャラクタが肘の関節を曲げ伸ばしして手首の関節の位置が移動することに追従して制御点座標が移動し、主キャラクタが手首の関節を回転させる（たとえば掌を下向きから上向きにする）ことにより、制御点法線が変化する。
【００４３】
なお、上述のシューティングゲームが展開されるゲーム空間は、単一の座標系（ワールド座標系）を有し、ゲーム空間内では、キャラクタを含む全てのオブジェクトはこのワールド座標系で位置や姿勢が規定されている。主キャラクタ制御部５３は、モデルローカル座標系で各部位の座標点を規定して主キャラクタ１００を生成する。ゲーム進行制御部５１は、この主キャラクタ１００を決定されたワールド座標系の座標・向きに従ってゲーム空間に配置し、主キャラクタ１００の体（パスを含む）の各部位の座標をワールド座標系に変換する。敵キャラクタ制御部５４が生成する敵キャラクタ、寄生キャラクタ制御部５５が生成する寄生キャラクタ２０１についても同様である。
【００４４】
図５では、２種類のパスを例示している。パス３００は首から右腕へ伸びる両端を有するパスである。また、パス４００は、左脚をらせん状に巡回するループ状のパスである。パスは複数の制御点を通過する滑らかな曲線状に規定される。パス３００は９個の制御点３２０〜３２８によって規定され、パス４００は２１個の制御点によって規定されている。
【００４５】
このようにパスには、パス３００のようにスタート地点およびエンド地点があるものと、パス４００のようにエンド地点がなくループ状のものとがある。スタート地点およびエンド地点があるパスでは、寄生キャラクタ２０１は一方の端部の制御点であるスタート地点から他方の端部の制御点であるエンド地点に向かってパス上を移動し、エンド地点を過ぎると地面に落下する。エンド地点がないループ状のパスでは、寄生キャラクタ２０１は予め定められたスタート地点から移動を開始し、パスによる移動経路制御が行われている限り、永久にループ状のパス上を移動する。なお、本実施形態のパスのスタート地点は、脇の下等の目立たない場所に設定される。また、本実施形態では、スタート地点／エンド地点を、パスを構成する何れかの制御点に設定している。
【００４６】
また、各パスにおいて、各制御点で区切られる区間を区間パスと呼ぶ。すなわち、パス３００は、８個の区間パス３０１〜３０８からなり、パス４００は、２１個の区間パスからなる。
【００４７】
上述したように、パスの通過点である制御点は、主キャラクタ１００の関節に関連づけられている。たとえば、制御点３２４は、右肘の関節１５８、および、右手首の関節１５９に関連づけられている。制御点は、関連づけられている関節が運動すると、それに応じて運動する。これにより、パスの各制御点は、主キャラクタの関節の三次元空間内における運動に基づく主キャラクタの姿勢の変化に追従して運動し、常に主キャラクタの体表面に沿った形状になる。
【００４８】
たとえば、図６（Ａ）に示すように、右肘が伸ばされているとき、パス３００は、その伸ばされている形状に合わせた形状になっているが、図６（Ｂ）に示すように、右肘が曲げられると、パス３００（特に区間パス３０５）は、その曲げられた形状に合わせた形状になり、肘が曲げられた主キャラクタの体表面に沿う形状に変化する。
【００４９】
なお、主キャラクタ１００には予め複数のパスが設定されており、解除条件が成立すると複数のパス上で寄生キャラクタ２０１の移動制御が開始される。詳細は後述する。
なお、パスは、敵キャラクタである寄生キャラクタ２０１が移動する経路として設定されるものであり、ゲーム画面には表示されない。
【００５０】
複数のパスのそれぞれには、パスの形状を規定する各制御点のデータ、スタート地点／エンド地点の情報、パスが設定されるオブジェクト（主キャラクタ１００、宿主キャラクタ２００）を特定する情報等を含むパスデータがある。パスデータは、予めゲームプログラムのゲームデータとして記録媒体１５に記録されている。
【００５１】
図７は上記パスの形状を規定する各制御点のデータである制御点データを説明する図である。図７はあるパスの１つの制御点データを示している。パス３００の制御点３２０〜３２８、パス４００の２１個の制御点は、全てこの構成の制御点データで定義づけられている。
【００５２】
制御点データは、スタート地点からの距離Ｓ、標準制御点座標、標準制御点法線、関連づけ関節数ｍ（ｍ≧１）、関連づけられた関節の関節番号Ｊ（１），・・・，Ｊ（ｍ）およびそのウェイト値Ｗ（１），・・・，Ｗ（ｍ）からなっている。
【００５３】
スタート地点からの距離Ｓは、主キャラクタが標準姿勢のときに形成されるパスにおける当該パスのスタート地点からこの制御点までのパス長である。この実施形態では、パス長は、スタート地点の制御点からこの制御点までの各制御点間を直線でつないだ場合の距離で表されている。標準制御点座標は、主キャラクタ１００が標準姿勢のときの制御点の主キャラクタ１００のモデルローカル座標系における座標である。
また、標準制御点法線は、主キャラクタ１００が標準姿勢のときにおける制御点のＹ軸方向（上方向）を規定するベクトルである。
【００５４】
関連づけられている各関節に対して設定されているウェイト値Ｗ（パーセント）は、その関節の運動にこの制御点がどれだけ追従するかの追従の度合いを示す値である。図７に示すように各制御点は関連づけられたｍ個の関節の運動に追従する。たとえば前腕の途中に設定されている制御点であれば肘の関節および手首の関節の両方に追従する。制御点は、関連づけられている複数の関節のそれぞれにそのウェイト値の大きさに合わせた度合いで追従する。この制御点が追従する全ての関節に対するウェイト値を全て加算すると１００パーセントになるように値が設定されている。
【００５５】
図８は、パスの制御点の位置を、主キャラクタ１００のそのときの姿勢に合わせて算出するための演算処理を示すフローチャートである。まず、パスの位置座標が積算される座標レジスタＰ３＝（ｘ，ｙ，ｚ）をクリア（０，０，０）する（Ｓ１０）。次に、図７に示す制御点データに基づいて、制御点Ｐに関連づけられた関節Ｊ（ｉ）；（ｉ＝１，・・・，ｍ）を１つ選択する。Ｓ１１では、ｉに１をセットして最初の関節（Ｊ（１））を選択する（Ｓ１１）。
【００５６】
制御点Ｐの標準制御点座標から選択された関節Ｊ（ｉ）の標準関節座標を引いて、標準姿勢での関節Ｊ（ｉ）の位置を基準とした制御点Ｐの相対的な位置（関節Ｊ（ｉ）から制御点Ｐを見たときの位置ベクトル）Ｌを計算する（Ｓ１２）。
【００５７】
そして、Ｓ１２で計算した位置ベクトルＬに、現在の姿勢における関節Ｊ（ｉ）の４行４列のモデルローカル行列をかけて、制御点Ｐの現在の関節Ｊ（ｉ）に対応したモデルローカル座標Ｐ２を求める（Ｓ１３）。モデルローカル行列は、主キャラクタ１００における標準姿勢での関節Ｊ（ｉ）の位置および向きを、平行移動、拡大・縮小、回転等して現在の姿勢での位置および向きに変換するための行列（物体の姿勢の変換行列）である。標準姿勢での関節Ｊ（ｉ）の位置および向きは行列で表現されていて、この行列にモデルローカル行列を掛けることで現在の姿勢での関節Ｊ（ｉ）の位置および向きに変換される。モデルローカル行列は、主キャラクタ１００のモーションデータ等によって決定されるものである。この座標変換は、一般的な技術であるので詳細な説明は省略する。それから、Ｓ１３で求めたモデルローカル座標Ｐ２に関節Ｊ（ｉ）に対するウェイト値Ｗ（ｉ）をかけ（Ｓ１４）、その座標値Ｐ２を座標レジスタＰ３（最初は０）に積算する（Ｓ１５）。
【００５８】
以上の処理の後、Ｓ１２以下の処理を制御点Ｐに関連づけられた全ての関節について終了したか、すなわちｉ＝ｍであるかを判定する（Ｓ１６）。制御点Ｐに関連づけられた全ての関節についてＳ１２以下の処理を終了していない場合（Ｓ１６でＮＯ）、ｉに１を加算して制御点Ｐに関連づけられた関節のうち次に関節番号の小さい関節Ｊ（ｉ）を指定する（Ｓ１７）。そして、この関節Ｊ（ｉ）についてＳ１２からＳ１６までの処理を行う。Ｓ１２〜Ｓ１６の処理を、制御点Ｐに関連づけられた関節数であるｍ回繰り返すことで、主キャラクタ１００の姿勢に応じた制御点Ｐのモデルローカル座標系の座標を求めることができる。
【００５９】
Ｓ１６において、Ｓ１２以下の処理を制御点Ｐに関連づけられた全ての関節について終了したと判断した場合（Ｓ１６でＹＥＳ）、この制御点座標決定処理を終了する。このときの座標レジスタＰ３の値が、そのときの主キャラクタ１００の姿勢に応じた制御点Ｐの座標である。
【００６０】
以上は制御点Ｐの位置のみについて説明しているが、制御点Ｐの向きについても並行して同様の処理を行う。すなわち、モデルローカル法線に対してモデルローカル行列を掛けてベクトル方向を変換する。モデルローカル法線を位置ベクトルと考えれば座標値と同様に変換することができる。算出された値にウェイト値Ｗ（ｉ）を掛けてその値を積算レジスタに積算する。
【００６１】
なお、この処理は、主キャラクタ１００の姿勢が変化する毎に全ての制御点について演算する必要はなく、その寄生キャラクタ２０１が存在する区間パスの形状を決定するために必要な制御点についてのみ演算すればよい。
【００６２】
図９は、寄生キャラクタ２０１の概略と寄生キャラクタ２０１の形状を規定するデータとを説明する図である。同図（Ａ）に示すように、寄生キャラクタ２０１は複数の関節２１０を有するミミズ（環形動物）の様な外観形状を有するキャラクタである。各関節がパス（たとえばパス３００）上に位置するように形をくねらせて移動する。
【００６３】
同図（Ｂ）は、寄生キャラクタ２０１を形成するためのデータを示す図である。このデータは、寄生キャラクタ２０１の外観形状を描画するためのテクスチャデータや関節情報（関節番号含む）等の外観データ、および、各節の節番号ｉと先頭からの距離とが関連付けられた関節距離データｈ（ｉ）等からなる。このデータは、ゲームデータとして予め記録媒体１５に記憶されている。先頭からの距離は、寄生キャラクタ２０１が標準姿勢の状態において、先頭の関節から関節番号ｉで特定される関節までの距離を示す。なお、寄生キャラクタ２０１の標準姿勢は、図９（Ａ）のように曲がった状態ではなく、直線状に伸びた姿勢である。また、先頭の関節は、寄生キャラクタ２０１の進行方向における先端の関節を意味する。したがって、先端の関節（ｉ＝１）の距離ｈ（１）は０となる。
【００６４】
図１０（Ａ）は、主キャラクタ１００に対する寄生キャラクタ２０１の発生処理を示す図である。ゲーム空間に宿主キャラクタ２００が存在し、主キャラクタ１００と宿主キャラクタ２００の関係が特定の解除条件を満たすと、寄生キャラクタ２０１を主キャラクタ１００の体表面に出現させる処理を行う。この出現処理は、主キャラクタ１００上に新たな寄生キャラクタ２０１を発生させる処理であるが、ゲーム上の演出としては、寄生キャラクタ２０１が宿主キャラクタ２００から主キャラクタ１００に乗り移ったような演出で行われる。
【００６５】
まず、主キャラクタ１００が解除条件を満たしたか否かを判定する（Ｓ２０）。解除条件は、主キャラクタ１００が宿主キャラクタ２００に接触している（掴まれている）または所定距離以内に接近しているという距離的条件である。Ｓ２０では、例えば主キャラクタ１００のステータス情報に基づいて判定が行われる。ステータス情報は、オブジェクト同士の接触・接近を判定する所謂アタリ判定処理等で主キャラクタ制御部５３によって更新される。ステータス情報は、主キャラクタ１００の現在の状態（掴まれている、走っている等）を示すものであり、主キャラクタ１００の状態の変化に応じて更新される。主キャラクタ１００が解除条件を満たしていない場合（Ｓ２０でＮＯ）、寄生キャラクタ２０１の出現処理を行わずに終了する。
【００６６】
主キャラクタ１００が解除条件を満たしている場合（Ｓ２０でＹＥＳ）、寄生フラグがリセットされているかを判断する（Ｓ２１）。寄生フラグは、寄生キャラクタ２０１が主キャラクタ１００のパス上に出現している旨を示すフラグであり、寄生フラグがセットされている場合（Ｓ２１でＹＥＳ）には、既に寄生キャラクタ２０１が主キャラクタのパス上に出現しているため、新たな寄生キャラクタ２０１の出現処理を行わないで処理を終了する。寄生フラグがリセットされている場合（Ｓ２１でＮＯ）には、寄生フラグをセットして（Ｓ２２）寄生キャラクタ２０１の出現処理を行う（Ｓ２３、Ｓ２４）。
【００６７】
すなわち、主キャラクタ１００に設定されている全てのパスについてのパスデータを読み出すとともに（Ｓ２３）、寄生キャラクタ２０１の移動速度ｄを読み出す（Ｓ２４）。その後、全パス上の寄生キャラクタ２０１のそれぞれについてスタート地点Ｄｓからの移動制御処理（図１０（Ｂ）参照）を開始する。
【００６８】
なお、寄生フラグは、主キャラクタ１００に付随するフラグであり、Ｓ２２でセットされる。また、寄生フラグは、上述したように主キャラクタ１００が走る、飛び上がる等の特定の動作を行ったときに、主キャラクタ制御部５３によってリセットされる。
【００６９】
また、移動速度ｄはゲーム画面の表示更新間隔である１フレーム（１／６０）当たりの移動距離で表され、全ての寄生キャラクタ２０１の共通の値であるゲームデータとして予め記録媒体１５に記録されている。
【００７０】
なお、１回の解除条件成立に応じて１つのパスに１匹の寄生キャラクタ２０１を出現させ、複数回の解除条件成立に応じて複数の寄生キャラクタ２０１を出現させるようにしてもよい。この場合、寄生フラグを各パス毎に別々に設け、上記Ｓ２０で主キャラクタ１００の解除条件が成立した場合、Ｓ２１で寄生フラグがリセットされているパスを選択して、そのパス上に寄生キャラクタ２０１を出現させるようにすればよい。
【００７１】
図１０（Ｂ）は、寄生キャラクタ２０１の移動制御処理を示す図である。Ｓ３０〜Ｓ３３では寄生キャラクタ２０１がパス上を移動しているか否かを判定する。  
【００７２】
まず、Ｓ３０では寄生キャラクタ２０１がパスから地上に落下中であるかを判定する。この判定は、寄生キャラクタ２０１の状態情報が落下中であるか否かに基づいて行われる。寄生キャラクタ２０１が落下中である場合（Ｓ３０でＹＥＳ）には、落下のモーションデータに基づいて寄生キャラクタ２０１の落下動作を再生する落下制御処理を実行する（Ｓ３５）。この落下制御処理により、寄生キャラクタ２０１が地上まで落下すると、寄生キャラクタ２０１の状態情報は地上活動中に書き換えられる。
【００７３】
Ｓ３１では寄生キャラクタ２０１が地上で活動中であるかを判定する。この判定は、寄生キャラクタ２０１の状態情報が地上活動中であるか否かに基づいて行われる。寄生キャラクタ２０１が地上で活動中である場合（Ｓ３１でＹＥＳ）には、寄生キャラクタ２０１が地上を這って進む動作または落下した位置で体を折り曲げてもがく動作をモーションデータに基づいて再生する。
【００７４】
Ｓ３２では寄生キャラクタ２０１がパスのエンド地点に到達したかを判定する。なお、ループ状のパスについては、エンド地点はないので常に到達しない判定となる。また、Ｓ３３では寄生キャラクタ２０１がパスから落下する条件（落下条件）が成立したかを判定する（Ｓ３３）。寄生キャラクタ２０１の先端（関節ｈ（１））がパスのエンド地点に到達したとき、寄生キャラクタ２０１がパスのエンド地点に到達したと判定される。また、寄生キャラクタ２０１がパスから落下するための落下条件の成否は、たとえば、主キャラクタ１００が走る、飛び上がる等の特定の動作を行ったか否かで判定される。この判定は、寄生フラグに基づいて行われる。寄生フラグは、上述のように、主キャラクタ１００が走る、飛び上がる等の落下条件成立のための特定の動作を行ったときに、主キャラクタ制御部５３によってリセットされる。
【００７５】
寄生キャラクタ２０１がパスのエンド地点に到達した場合（Ｓ３２でＹＥＳ）、または、落下条件が成立した場合（Ｓ３３でＹＥＳ）には、寄生キャラクタ２０１の状態情報に落下中をセットし（Ｓ３７）、寄生キャラクタ２０１の位置と姿勢を落下スタートの状態にセットする（Ｓ３８）。寄生キャラクタ２０１の落下スタート位置は、パスから少し離れた空中の位置に設定される。
【００７６】
上記Ｓ３０〜Ｓ３３の判定が全て否定的であった場合、寄生キャラクタ２０１はパス上を移動していることになる。この場合には、Ｓ３４に進んで、そのときの寄生キャラクタ２０１の位置と形態を決定する形態決定処理（図１１参照）を行う（Ｓ３４）。
【００７７】
なお、図１０（Ａ）、（Ｂ）の処理は毎フレーム（１／６０秒）実行され、モニタに表示されるゲーム画面ではフレームごとに寄生キャラクタ２０１の位置が変化する。
【００７８】
図１１は、図１０（Ｂ）のＳ３４で実行される寄生キャラクタ２０１の形態決定処理を示す図である。まず、寄生キャラクタ２０１の現在位置Ｄを決定する（Ｓ４０）。この寄生キャラクタ２０１の現在位置Ｄは、寄生キャラクタ２０１の先端の関節の位置を示す情報であり、スタート地点Ｄｓからの移動距離である。現在位置Ｄは、寄生キャラクタ２０１の移動速度ｄを毎フレーム積算した値であり、前回の現在位置Ｄにｄを加算する処理で求めることができる。
【００７９】
寄生キャラクタ２０１は、全ての関節をパス上に乗せて移動するため、各関節の位置をパス上に乗るように決定する。最初に寄生キャラクタ２０１の先端から１つ目の節ｉ＝１を指定する（Ｓ４１）。
【００８０】
寄生キャラクタ２０１の現在位置Ｄに、Ｄからｉ番目の関節までの距離ｈ（ｉ）を加えて、パスのスタート地点Ｄｓからｉ番目の関節までの距離を算出する（Ｓ４２）。なお、寄生キャラクタ２０１の関節位置は、ｈ（１）を除いて先端位置よりも後ろであるため、ｈ（ｉ）（ｉ≧２）は負値となる。そして、このＤ＋ｈ（ｉ）と各制御点のスタート地点からの距離情報Ｓとを対比することにより、ｉ番目の関節がどの区間パスにあるかを特定する（Ｓ４３）。すなわち、関節位置Ｄ＋ｈ（ｉ）の値が、Ｓ（ｎ）＜Ｄ＋ｈ（ｉ）＜Ｓ（ｎ＋１）；（但しｎは制御点番号）であったとき、この関節ｉは、制御点ｎとｎ＋１との間の区間パス上に存在することになる。
【００８１】
関節が存在する区間パスが特定されると、この区間パスの曲線を求める処理を行う。まず、この区間パスの両側の制御点およびさらにその隣の２つ制御点、すなわち、区間パスを挟む４点の制御点Ｐの制御点座標を求め（Ｓ４６）、補間演算で区間パスの曲線を求める（Ｓ４７）。補間演算はエルミート補間法等の演算を用いればよい。この求めた区間パスの曲線上でこのｉ番目の関節のローカル座標系における位置を求める（Ｓ４８）。
例えば、ｉ番目の関節を内分点とした区間パスの内分比率から、区間パスの曲線上のｉ番目の関節の位置を取得する。内分比率は、以下の式を用いる。
内分比率＝｛（関節位置Ｄ＋ｈ（ｉ）−制御点の距離情報Ｓ（ｎ））
÷（制御点の距離情報Ｓ（ｎ＋１）−Ｓ（ｎ））｝
【００８２】
この内分比率およびＳ４７で求めた曲線から、区間パスにおけるｉ番目の関節の曲線上の位置を演算する。なお、内分比率に基づいて線上の位置座標を取得する手法は一般的なものなので詳細な説明は省略する。また、同時にその位置におけるパスの法線方向を求める。法線方向は、この区間パスの両端の制御点の制御点法線を線形補間して求める。  
【００８３】
この実施形態では、演算処理の負荷を軽減するため、各制御点の距離情報Ｓ（ｎ）および寄生キャラクタ２０１の現在位置Ｄを直線距離として求めて比較しているが、Ｓ（ｎ）、Ｄを、曲線として設定されるパス上での位置で求めて比較することにより、より正確な位置関係を求めるようにしてもよい。
【００８４】
また、本実施形態では、制御点の距離情報Ｓ（ｎ）としてゲームデータの固定値が設定されているが、毎フレーム計算によって取得してもよい。例えば、パスにおける全ての区間パスのそれぞれの曲線を求め、全ての区間パスの距離情報を取得する。次に、１つの制御点について、スタート地点Ｄｓからこの制御点に到達するまでに経由する全ての区間パスの距離情報を積算する処理を行って距離情報を取得する。上記処理を全ての制御点について行うことで、各制御点の距離情報を取得できる。
【００８５】
以上のＳ４２〜Ｓ４８の処理をＳ４９、Ｓ５０のループ処理によって関節について繰り返し行うが、２番目以後の関節の演算において（Ｓ４４がＮＯの場合）、今回の演算対象となっている関節（ｉ）が１つ前の関節（ｉ−１）と同じ区間パスに存在するか否か判定し（Ｓ４５）、今回の関節が１つ前の関節と異なる区間パスに存在する場合（Ｓ４５でＮＯ）のみ、Ｓ４６、Ｓ４７の処理を行い、今回の関節が１つ前の関節と同じ区間パスに存在する場合（Ｓ４５でＹＥＳ）には、Ｓ４６、Ｓ４７の処理をスキップして前回求めた曲線を利用することにより、演算量を省略することができる。
【００８６】
Ｓ４９では、位置を算出した節が最終の節か否か判定する。位置を算出した節が最終の節ではない場合（Ｓ４９でＮＯ）、頭の先端Ｄの位置から次に遠い節（ｉ＋１）を指定し、その節についてＳ４２〜Ｓ４８の処理を行う。そして、寄生キャラクタ２０１の全ての節についてＳ４２〜Ｓ４８の処理を行ったのち（Ｓ４９でＹＥＳ）、以上の処理で求められた制御点座標および制御点法線をワールド座標系の座標、法線に変換して（Ｓ５１）、寄生キャラクタの形態決定処理を終了する。その後、一般的な描画処理において、Ｓ５１で設定された座標位置等の情報に基づいて寄生キャラクタ２０１が描画される。
【００８７】
以上は、主キャラクタ１００に寄生キャラクタ２０１が出現した（乗り移った）場合について説明したが、宿主キャラクタ２００を含む敵キャラクタに寄生キャラクタ２０１のパスを設定する場合も処理は同じである。また、パスが設定されるオブジェクト（パス設定オブジェクト）は、キャラクタに限定されず、非生物の物体でもよい。また、移動オブジェクトも敵キャラクタ（寄生キャラクタ２０１）に限定されない。
【００８８】
なお、図１０（Ｂ）の処理では、地面に落下した寄生キャラクタ２０１は、そのまま地面上で活動するよう制御しているが、特定の条件が満たされたとき、地面上の寄生キャラクタ２０１を宿主キャラクタ２００の体表面のパスに戻すようにしてもよい。特定の条件は、たとえば、地面上の寄生キャラクタ２０１と宿主キャラクタ２００との距離が所定距離以内になったときとすればよい。寄生キャラクタ２０１と宿主キャラクタ２００との距離は、宿主キャラクタ２００の基準位置から所定半径の円を設定し、寄生キャラクタ２０１がこの円内に入ったとき相互の距離が所定距離以内になったと判定すればよい。この条件が満たされたとき、地面上の寄生キャラクタ２０１を宿主キャラクタ２００の足元付近を通過し、且つ空いている（寄生キャラクタ２０１が乗っていない）パスに移動させる。空きパスであるか否かは、パスに空きを判定するフラグを設定すればよい。
【００８９】
なお、本発明において、宿主キャラクタ２００上のパスは必須ではない。すなわち、寄生キャラクタ２０１が宿主キャラクタ２００の体表面上を（パス無しで）自由に移動しており、主キャラクタ１００が宿主キャラクタ２００に接近したとき、この自由に移動している寄生キャラクタ２０１を主キャラクタ１００上のパスへ乗り移らせる、または、新たな寄生キャラクタ２０１を主キャラクタ１００上のパスに発生させるようにしてもよい。逆に、主キャラクタ１００のパス上を移動する寄生キャラクタ２０１をパス設定なしの宿主キャラクタ２００へ乗り移らせる、または、新たな寄生キャラクタ２０１をパス設定なしの宿主キャラクタ２００の体表面上に発生させることもできる。
【００９０】
なお、上記実施形態では、パスを４点補間演算によって求められる曲線として設定しているが、必ずしも曲線でなくてもよい。例えば各制御点間を線分で接続した折れ線であってもよい。
【００９１】
また、上記実施形態では、パスの形状を関節の運動によって変化させているが、特にこれに限定するものではなく、ポリゴン頂点等のオブジェクトの外観形態を決定するための外観決定情報を用いてもよい。
【００９２】
さらに、この実施形態では、ゲーム装置として家庭用のテレビゲーム機を例示しているが、この発明は、家庭用のテレビゲーム機に限らず、携帯型ゲーム機、アーケードゲーム機等の他の種類のゲーム機、又はゲーム機以外の三次元映像を表示する装置、例えばゲームプログラムがローディングされたパーソナルコンピュータ等に適用することが可能である。
【符号の説明】
【００９３】
５０  操作検出部
５１  ゲーム進行制御部
５２  ゲーム空間生成部
５３  主キャラクタ制御部
５４  敵キャラクタ制御部
５５  寄生キャラクタ制御部
５６  描画処理部
１００  主キャラクタ（第１のオブジェクト）
１５８、１５９  関節
２００  宿主キャラクタ
２０１  寄生キャラクタ（第２のオブジェクト）
３００、４００  パス
３０１〜３０８  区間パス
３２０〜３２８  制御点
【図１】
0005378027.tif 000002
【図２】
0005378027.tif 000003
【図４】
0005378027.tif 000004
【図５】
0005378027.tif 000005
【図６】
0005378027.tif 000006
【図７】
0005378027.tif 000007
【図８】
0005378027.tif 000008
【図９】
0005378027.tif 000009
【図１０】
0005378027.tif 000010
【図１１】
0005378027.tif 000011
【図３】
0005378027.tif 000012