(57)【要約】【課題】  伸縮自在なキャラクタをより少ない処理負荷で制御すること。また、望ましくは更に、伸縮自在なキャラクタをプレーヤキャラクタとして操作する場合に都合の良い、高い操作性を実現すること。【解決手段】伸縮自在なプレーヤキャラクタＣＰに、ノード２が所定長さＬの連結子４で、相対角度が規制されて直列状に連結されて形成された関節構造を成す骨格モデルＢＭを設定し、骨格モデルＢＭに外皮を形成してキャラクタのオブジェクトを配置する。ゲームコントローラ１２３０の右アナログレバー１２３６と左アナログレバー１２３８から同時に相反する方向入力が為された場合、前端ノード２ｄと次に連結するノード２ｅとの間、並びに後端ノード２ｈと一つ前に連結するノード２ｊとの間に、新たなノード２ｆおよび２ｋをそれぞれ追加して骨格モデルＢＭを伸ばす。【選択図】図１１
2008186325.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、所与の仮想カメラから見たゲーム空間の画像を生成させてゲームを進行制御させるためのプログラムであって、
前記ゲーム空間に、キャラクタの全体又は一部である直列状の関節構造を有するオブジェクトを配置する配置手段、
前記オブジェクトに新たな関節部位を追加形成して前記オブジェクトを伸長させた形状とする伸長手段、
として前記コンピュータを機能させるためのプログラム。
【請求項２】
請求項１に記載のプログラムであって、
前記伸長手段が、前記オブジェクトの直列状の関節構造を成す関節部位のうち、所定位置に新たな関節部位を追加形成することで、前記オブジェクトを伸長させるように前記コンピュータを機能させることを特徴とするプログラム。
【請求項３】
請求項１又は２に記載のプログラムであって、
前記コンピュータを更に、
前記オブジェクトと他オブジェクトとの接触を検出する接触検出手段として機能させるとともに、
前記伸張手段が、前記接触検出手段により検出された接触位置に基づいて、追加形成する関節部位の位置を決定する接触位置基準追加位置決定手段を有するように機能させる、
ためのプログラム。
【請求項４】
請求項１〜３の何れか一項に記載のプログラムであって、
前記コンピュータを更に、
前記オブジェクトに対して所与の外力を付与する外力付与手段、
前記外力付与手段により付与された外力に基づいて、前記各関節部位それぞれに与えるべき外力を算出する関節部位別外力算出手段、
として機能させるとともに、
前記伸長手段が、前記関節部位別外力算出手段の算出結果に基づいて、新たな関節部位を追加形成する位置を決定し、該決定した位置に新たな関節部位を追加形成して前記オブジェクトを伸長させる外力伸長手段を有するように機能させるためのプログラム。
【請求項５】
請求項４に記載のプログラムであって、
前記外力伸長手段が、前記関節部位別外力算出手段による算出の結果、複数の外力が与えられる関節部位であり、該複数の外力の方向が離反方向で且つ離反力の大きさが所定の超過力条件を満たす関節部位の隣接位置を、新たな関節部位を追加形成する位置として決定するように前記コンピュータを機能させるためのプログラム。
【請求項６】
請求項１〜５の何れか一項に記載のプログラムであって、
前記関節構造を成す複数の関節部位のうちの所定の２つの関節部位を、方向入力可能な２つの入力手段に為されるそれぞれの方向操作入力に従って移動制御することで前記オブジェクトを制御するオブジェクト移動制御手段として前記コンピュータを機能させるためのプログラム。
【請求項７】
請求項６に記載のプログラムであって、
前記オブジェクト移動制御手段が、前記直列状の関節構造を成す複数の関節部位のうち、両端の関節部位を、前記２つの入力手段に為されるそれぞれの方向操作入力に従って移動制御するように前記コンピュータを機能させるためのプログラム。
【請求項８】
請求項６又は７に記載のプログラムであって、
前記コンピュータを更に、
前記オブジェクトの関節部位のうち、所定の超過湾曲条件を満たす湾曲部分の関節部位を検出する湾曲関節部位検出手段として機能させるとともに、
前記オブジェクト移動制御手段が、前記湾曲関節部位検出手段によって検出された関節部位の移動方向を湾曲弧内側に向けて補正して移動制御する湾曲関節部位移動制御手段を有するように機能させるためのプログラム。
【請求項９】
請求項１〜８の何れか一項に記載のプログラムであって、
前記コンピュータを更に、
プレーヤによる所定の伸長指示操作の入力を検出する伸長指示操作検出手段として機能させるとともに、
前記伸長手段が、前記伸長指示操作検出手段の検出に応じて、新たな関節部位を追加形成して前記オブジェクトを伸長させるように機能させるためのプログラム。
【請求項１０】
請求項６〜８の何れか一項に記載のプログラムであって、
前記コンピュータを更に、
前記オブジェクト移動制御手段による前記２つの関節部位の移動制御によって、前記オブジェクトが伸身状態になり、さらに伸長する方向に当該２つの関節部位が移動制御される状態にあることを検出する伸長状態検出手段として機能させるとともに、
前記伸長手段が、前記伸長状態検出手段の検出に応じて、新たな関節部位を追加形成して前記オブジェクトを伸長させるように機能させるためのプログラム。
【請求項１１】
請求項１〜１０の何れか一項に記載のプログラムであって、
前記コンピュータを更に、
前記オブジェクトを立位姿勢に変化させるための立位姿勢指示操作の入力を検出する立位指示操作検出手段、
前記立位指示操作検出手段の検出に応じて、前記ゲームキャラクタの一端側の関節部位の位置を固定し、他の関節部位を変位させて前記オブジェクトの姿勢を立位姿勢に変化させる立位姿勢制御手段、
として機能させるためのプログラム。
【請求項１２】
請求項６〜８及び１０のうちの何れか一項に記載のプログラムであって、
前記２つの入力手段は、それぞれ方向入力操作及び押し込み操作が可能であり、
前記２つの入力手段のうち一方の入力手段に対する押し込み操作入力と他方の入力手段に対する所定の方向操作入力とを、前記オブジェクトを立位姿勢に変化させるための立位姿勢指示操作の入力として検出する立位指示操作検出手段、
前記立位指示操作検出手段の検出に応じて、前記２つの入力手段それぞれに対応する前記移動制御の対象の関節部位のうち、前記押し込み操作入力が為された入力手段に対応する関節部位及び／又は該関節部位の隣接関節部位の位置を固定し、他の関節部位を変位させて前記オブジェクトの姿勢を立位姿勢に変化させる立位姿勢制御手段、
として前記コンピュータを更に機能させるためのプログラム。
【請求項１３】
請求項１１又は１２に記載のプログラムであって、
前記コンピュータを更に、
前記立位姿勢制御手段が、位置を固定した関節部位に近接する関節部位から順番に立位姿勢となった場合の所定位置に変位させることで、徐々に立位姿勢に変化させていくように前記コンピュータを機能させるためのプログラム。
【請求項１４】
請求項１〜１３の何れか一項に記載のプログラムであって、
前記コンピュータを更に、
プレーヤによる所定の短縮指示操作の入力を検出する短縮指示操作検出手段、
前記短縮指示操作検出手段の検出に応じて、関節部位を削減して前記オブジェクトを短縮させた形状とする短縮手段、
として機能させるためのプログラム。
【請求項１５】
請求項６，７，８，１０又は１２に記載のプログラムであって、
前記コンピュータを更に、
前記オブジェクト移動制御手段による前記２つの関節部位の移動制御によって、前記オブジェクトが伸身状態であり、且つ、当該２つの関節部位が当該伸身方向に沿って互いに近寄る方向に移動制御される状態にあることを検出する短縮状態検出手段、
前記短縮状態検出手段の検出に応じて、関節部位を削減して前記オブジェクトを短縮させた形状とする短縮手段、
として機能させるためのプログラム。
【請求項１６】
請求項１４又は１５に記載のプログラムであって、
前記短縮手段が、前記直列状の関節構造をなす複数の関節部位のうち、両端の関節部位以外の関節部位を削除して前記オブジェクトを短縮させるように前記コンピュータを機能させるためのプログラム。
【請求項１７】
請求項１４〜１６の何れか一項に記載のプログラムであって、
前記短縮手段が、新たな関節部位を連続的に削除する場合の削除速度を可変するように前記コンピュータを機能させるためのプログラム。
【請求項１８】
請求項１〜１７の何れか一項に記載のプログラムであって、
前記伸長手段が、新たな関節部位を連続的に追加形成する場合の追加速度を可変するように前記コンピュータを機能させるためのプログラム。
【請求項１９】
コンピュータに、所与の仮想カメラから見たゲーム空間の画像を生成させてゲームを進行制御させるためのプログラムであって、
前記ゲーム空間に配置された所定のオブジェクトの予め定められた２つの部位を、方向入力可能な２つの入力手段に為されるそれぞれの方向操作入力に従って移動制御することで前記オブジェクトを制御するオブジェクト移動制御手段、
前記オブジェクト移動制御手段による前記２つの部位の移動制御によって、前記オブジェクトが伸身状態になり、さらに伸長する方向に当該２つの部位が移動制御される状態にあることを検出する伸長状態検出手段、
前記伸長状態検出手段の検出に応じて、前記伸張する方向に前記オブジェクトを伸長させる伸長手段、
として前記コンピュータを機能させるためのプログラム。
【請求項２０】
請求項１〜１９の何れか一項に記載のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体。
【請求項２１】
所与の仮想カメラから見たゲーム空間の画像を生成させてゲームを進行制御するゲーム装置であって、
前記ゲーム空間に、キャラクタの全体又は一部である直列状の関節構造を有するオブジェクトを配置する配置手段と、
前記オブジェクトに新たな関節部位を追加形成して前記オブジェクトを伸長させた形状とする伸長手段と、
を備えたゲーム装置。
【請求項２２】
所与の仮想カメラから見たゲーム空間の画像を生成させてゲームを進行制御するゲーム装置であって、
前記ゲーム空間に配置された所定のオブジェクトの予め定められた２つの部位を、方向入力可能な２つの入力手段に為されるそれぞれの方向操作入力に従って移動制御することで前記オブジェクトを制御するオブジェクト移動制御手段と、
前記オブジェクト移動制御手段による前記２つの部位の移動制御によって、前記オブジェクトが伸身状態になり、さらに伸長する方向に当該２つの部位が移動制御される状態にあることを検出する伸長状態検出手段と、
前記伸長状態検出手段の検出に応じて、前記伸張する方向に前記オブジェクトを伸長させる伸長手段と、
を備えたゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータに、所与の仮想カメラから見たゲーム空間の画像を生成させてゲームを進行制御させるためのプログラム等に関する。
【背景技術】
【０００２】
近年のビデオゲームでは、ゲーム中に登場するキャラクタに、骨格モデルとその外観容姿を表す表示モデルとを予め用意しておき、骨格モデルを所定のモーションデータに従って動作制御し、動作制御された骨格モデルに基づいて表示モデルとしてポリゴンモデルをゲーム空間中に形成することによって動作制御するケースが多々見られる。
【０００３】
例えば、人型のキャラクタをゲームに登場させるならば、所定数の関節を有する人骨構造を簡略化したような骨格モデルが用意されるとともに例えば、騎士、ロボットなどその人型なりのキャラクタの外観容姿を形成する表示モデルが用意される。そして、例えば騎士が剣を振り上げる動作制御を実現する場合、剣を持つ手を挙げるモーションデータに従って、ゲーム画面の次の描画タイミングにおける該手の位置を算出して移動制御し、インバースキネマティクスによって腕の各関節部分の位置を求めて骨格モデルを移動制御する。そして、移動された骨格モデルに従って表示モデルのポリゴンをゲーム空間中に配置することになる。
【０００４】
しかし、ゲームに登場するキャラクタは、例えば騎士やロボットのように関節が可動するが基本的な大きさが変化しないものだけとは限らない。例えば、ロールプレイングゲーム等に登場するモンスターキャラクタに見られるように、粘土やゴム、流体金属のように変形自在で、基本的な大きさが単なる拡大縮小の範疇を超えて変化するものもある。
【０００５】
そうした変形自在なキャラクタの形状を変形制御する方法としては、例えば特許文献１の技術が知られている。特許文献１の技術では、キャラクタの表示モデルにあたる３次元形状モデルをゲーム空間に配置するとともに、これを取り囲むように３次元表面格子を配置する。そして、３次元表面格子点を制御点として、これに対する３次元形状モデルの相対的位置を導出する。その後、制御点の位置を移動させてから、移動後の制御点群に対して既に導出した相対的位置に基づいて３次元形状モデルを再配置する。こうして、３次元形状モデルの自由な形状変形を実現している。
【特許文献１】特許第３４２０８８４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、変形自在なキャラクタをゲームに登場させる場合といっても、必ずしもそのキャラクタの全身がアメーバのように不定形で変形自在性を有するものばかりではなく、伸長或いは短縮自在である程度にとどまるケースも多々ある。伸縮自在なキャラクタの変形制御に前述の従来技術を適用することもできるが、制御点の形成とその相対位置の導出などの処理負荷をいたずらに増やしてしまうなど適当とはいえないケースが見られる。
【０００７】
ビデオゲームでは、プレーヤの操作入力に対する高い応答性を要求されるので、如何に処理負荷を軽減して変形制御するかが重要な技術課題であるのは良く知られるところである。その観点からすれば、伸縮自在なキャラクタを変形するにあたって過不足無く、且つ適当な処理負荷で済むような制御手法が望まれるところである。
【０００８】
また、プレーヤがキャラクタを操作する上で、その操作が感覚的に分かり易いこと、その操作を習熟し易いこと、といった高い操作性も重要な技術課題として知られるころであり、特に伸縮自在なキャラクタをプレーヤキャラクタ（プレーヤが操作するゲームの主人公に相当するキャラクタ）に設定した場合はその重要性が増す。しかし、前述の従来技術はオブジェクトを変形させる点では効果的であるが、実際にキャラクタをどのように制御するのかが明らかではなく、高い操作性を得ることが難しかった。
【０００９】
本発明はこうした事情を鑑みてなされたものであり、その目的とするところは、伸縮自在なキャラクタをより少ない処理負荷で制御することである。また、望ましくは、伸縮自在なキャラクタをプレーヤキャラクタとして操作する場合に都合の良い、高い操作性を実現することである。
【課題を解決するための手段】
【００１０】
上記の課題を解決するために、第１の発明は、コンピュータに、所与の仮想カメラから見たゲーム空間の画像を生成させてゲームを進行制御させるためのプログラムであって、
前記ゲーム空間に、キャラクタの全体又は一部である直列状の関節構造（例えば、図２の骨格モデルＢＭ）を有するオブジェクト（例えば、図２のプレーヤキャラクタＣＰ）を配置する配置手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ２、Ｓ１４）、前記オブジェクトに新たな関節部位を追加形成して前記オブジェクトを伸長させた形状とする伸長手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ６、Ｓ１０）、として前記コンピュータを機能させるためのプログラムである。
【００１１】
または、所与の仮想カメラから見たゲーム空間の画像を生成させてゲームを進行制御するゲーム装置であって、前記ゲーム空間に、キャラクタの全体又は一部である直列状の関節構造を有するオブジェクトを配置する配置手段と、前記オブジェクトに新たな関節部位を追加形成して前記オブジェクトを伸長させた形状とする伸長手段と、を備えたゲーム装置として実現しても良い。
【００１２】
第１の発明によれば、キャラクタを、全体又は一部の関節が直列状に連結された関節構造を有するオブジェクトとし、オブジェクトに新たな関節部位を追加形成するといった簡単な制御によって、キャラクタの伸長制御を実現できる。
つまり、従来技術のようにキャラクタのオブジェクトの周囲に３次元表面格子の配置を配置したり、格子点を制御点として制御点に対するオブジェクトを構成するモデルの相対位置関係に基づいて変形を制御するといった間接的な処理をせずに、直接的に骨格モデルに相当する関節構造を変更する処理のみで伸長自在なキャラクタを実現することができる。
【００１３】
第２の発明は第１の発明のプログラムであって、前記伸長手段が、前記オブジェクトの直列状の関節構造を成す関節部位のうち、所定位置に新たな関節部位を追加形成することで、前記オブジェクトを伸長させるように前記コンピュータを機能させるためのプログラムである。
【００１４】
第２の発明によれば、第１の発明と同様の効果を奏するとともに、直列に連結された複数の関節部位のうち、所定位置に関節部位を追加することで伸長することができる。このことは、例えばキャラクタを操作する上で、操作入力に応じて仮想の力を特定の関節部位に作用させる場合には、操作系と特定の関節部位との対応関係をそのまま維持してキャラクタを伸長できることになり、操作系の対応関係を変更する処理を省略するといった効果を奏することになる。更には、例えば関節構造に基づいてキャラクタの表示モデルを制御する場合には、特定の関節部位と表示モデルにおける比較的複雑な形状を有する部位との対応関係を変える処理を行わずに済むことにもなり、処理負荷の増加を回避し、処理負荷適正化をより高いレベルで実現することができる。
【００１５】
第３の発明は、第１又は第２の発明のプログラムであって、前記コンピュータを更に、前記オブジェクトと他オブジェクトとの接触を検出する接触検出手段（例えば、図３の処理部２００、ゲーム演算部２１０、図１３のステップＳ８２）として機能させるとともに、前記伸張手段が、前記接触検出手段により検出された接触位置に基づいて、追加形成する関節部位の位置を決定する接触位置基準追加位置決定手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ９、図１３のステップＳ８４）を有するように機能させる、ためのプログラムである。
【００１６】
第３の発明によれば、第１又は第２の発明と同様の効果を奏するとともに、キャラクタのオブジェクトと他オブジェクトとの接触位置に基づいて伸長する位置を決定することができる。例えば、キャラクタのオブジェクトの一部が他オブジェクトに接触・係合して固定状態にある状況において、キャラクタのオブジェクトについて接触位置から一方側を伸長させ他方側をそのままの状態とするといったことができる。これによって、あたかもゴム紐の中間を指でつまんで引っ張るとつまんだ箇所から一方側は伸びるが他方側は伸びずにそのままとされる様に部分的な伸長を実現することができる。
【００１７】
第４の発明は、第１〜第３の何れかの発明のプログラムであって、前記コンピュータを更に、前記オブジェクトに対して所与の外力を付与する外力付与手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ８、図１４のステップＳ１００、図２０のステップＳ１８６）、前記外力付与手段により付与された外力に基づいて、前記各関節部位それぞれに与えるべき外力を算出する関節部位別外力算出手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ８、図１４のステップＳ１０２、図２０のステップＳ１８８）、として機能させるとともに、前記伸長手段が、前記関節部位別外力算出手段の算出結果に基づいて、新たな関節部位を追加形成する位置を決定し、該決定した位置に新たな関節部位を追加して前記オブジェクトを伸長させる外力伸長手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ１０）を有するように機能させるためのプログラムである。
【００１８】
ここでいう「外力」とは、キャラクタを移動操作、変形操作するために設定される仮想の力（＝操作力）や、ゲーム空間に設定された力場の影響でうける力（＝重力、電磁気力、流体力）、他のオブジェクトとの接触や衝突によって生じる力（＝衝突力、摩擦力）を含む意味である。
【００１９】
第４の発明によれば、第１〜第３の何れかの発明と同様の効果を奏するとともに、外力がどこに作用しているかに応じて新たな関節部位を追加する位置を決定することができる。つまり、力の作用状態に応じて伸長させるべき場所を決定し、そこに新たな関節部位を追加形成制御して、外的環境に即したキャラクタの伸長を実現する事ができる。
【００２０】
第５の発明は、第４の発明のプログラムであって、前記外力伸長手段が、前記関節部位別外力算出手段による算出の結果、複数の外力が与えられる関節部位であり、該複数の外力の方向が離反方向で且つ離反力の大きさが所定の超過力条件を満たす関節部位の隣接位置を、新たな関節部位を追加形成する位置として決定するように前記コンピュータを機能させるためのプログラムである。
【００２１】
第５の発明によれば、第４の発明と同様の効果を奏するとともに、キャラクタを引き伸ばそうとする離反方向で且つ離反力の大きさが所定の超過力条件を満たす複数の外力が掛かっている関節部位の隣接位置に新たな関節部位を追加することができる。したがって、見かけ上、ある基準以上の外力で引っ張られた位置で伸びが生じたかのような表示制御が可能となり、少ない処理負荷でリアリティのある伸び表現を実現できる。
【００２２】
第６の発明は、第１〜第５の何れか一つの発明のプログラムであって、前記関節構造を成す複数の関節部位のうちの所定の２つの関節部位を、方向入力可能な２つの入力手段に為されるそれぞれの方向操作入力に従って移動制御することで前記オブジェクトを制御するオブジェクト移動制御手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ１２）として前記コンピュータを機能させるためのプログラムである。
【００２３】
第６の発明は、第１〜第５の何れか一つの発明と同様の効果を奏するとともに、２つの方向入力操作によって伸長可能なキャラクタの移動を制御することができる。伸長可能なキャラクタは、その性質上ゲーム中にどんどん長くなることが予想される。この場合、所定の２点の関節部位を移動制御することで、あたかも実物の紐を両手で動かす場合のように、長くなったキャラクタを移動することができるようになり、伸長自在なキャラクタの伸長操作をより感覚的で分かり易いものにできる。
【００２４】
このことは、第７の発明のように、第５６発明のプログラムであって、前記オブジェクト移動制御手段が、前記直列状の関節構造を成す複数の関節部位のうち、両端の関節部位を、前記２つの入力手段に為されるそれぞれの方向操作入力に従って移動制御するように前記コンピュータを機能させるならばより効果的であり、当該キャラクタをプレーヤキャラクタとして用いる場合に特に効果的に作用する。
【００２５】
第８の発明は、第６又は第７の発明のプログラムであって、前記コンピュータを更に、前記オブジェクトの関節部位のうち、所定の超過湾曲条件を満たす湾曲部分の関節部位を検出する湾曲関節部位検出手段（例えば、図３の処理部２００、ゲーム演算部２１０、図１３のステップＳ７４、図１５のステップＳ１２２〜Ｓ１２４）として機能させるとともに、前記オブジェクト移動制御手段が、前記湾曲関節部位検出手段によって検出された関節部位の移動方向を湾曲弧内側に向けて補正して移動制御する湾曲関節部位移動制御手段（例えば、図３の処理部２００、ゲーム演算部２１０、図１３のステップＳ７４、図１５のステップＳ１２６）を有するように機能させるためのプログラムである。
【００２６】
第８の発明によれば、第６又は第７の発明のプログラムであって、キャラクタの関節構造に、所定の基準以上に湾曲している部分がある場合に、該当部分の関節部位を移動制御するときに湾曲弧の内側に移動先を補正して移動制御することができる。例えば、キャラクタが旋回しようとして関節構造が湾曲するような場合、湾曲部分は連結方向に従って移動しつつも湾曲弧の内側にやや向かう格好となり、できるだけ少ない距離で旋回するように制御されることになる。従って、見かけ上はキャラクタができるだけ楽な姿勢、少ない運動量で旋回しようとしているかのように表現され、あたかも生物としての意志がそこにあるかのような印象を見る者に与えることができる。そして、当該キャラクタをプレーヤキャラクタとして用いる場合には、プレーヤのキャラクタへの親近感を抱かせるといった効果的も奏する。
【００２７】
第９の発明は、第１〜第８の何れか一つの発明のプログラムであって、前記コンピュータを更に、プレーヤによる所定の伸長指示操作の入力を検出する伸長指示操作検出手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ６、図１０のステップＳ３４）として機能させるとともに、前記伸長手段が、前記伸長指示操作検出手段の検出に応じて、新たな関節部位を追加形成して前記オブジェクトを伸長させるように機能させるためのプログラムである。
【００２８】
第９の発明は、第１〜第８の何れか一つの発明と同様の効果を奏するとともに、プレーヤによって所定の伸長指示操作が入力された場合に、キャラクタを伸長させることができる。つまり、プレーヤが当該キャラクタを任意に伸長させることが可能になる。例えば、当該キャラクタをプレーヤキャラクタとすれば、プレーヤが思うがままに伸ばすことができるキャラクタを主人公にして遊ぶといった、従来に見られない新たなジャンルのゲームを実現することになる。
【００２９】
第１０の発明は、第６〜第８の何れか一つの発明のプログラムであって、前記コンピュータを更に、前記オブジェクト移動制御手段による前記２つの関節部位の移動制御によって、前記オブジェクトが伸身状態になり、さらに伸長する方向に当該２つの関節部位が移動制御される状態にあることを検出する伸長状態検出手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ１０、図２１のステップＳ２０２〜Ｓ２０６）として機能させるとともに、前記伸長手段が、前記伸長状態検出手段の検出に応じて、新たな関節部位を追加形成して前記オブジェクトを伸長させるように機能させるためのプログラム。
【００３０】
第１０の発明によれば、第６〜第８の何れか一つの発明と同様の効果を奏するとともに、２つの方向入力に基づく２つの関節部位の移動制御によって、オブジェクトが伸びきった状態になり、更に伸長する方向にこれら２つの関節部位が移動制御される場合に、新たな関節部位を追加してキャラクタを伸長させることができるようになる。つまり、プレーヤがキャラクタを、あたかもゴム紐を伸ばす要領で２方向の操作入力をすると、キャラクタの関節構造が直線状に伸ばされ、更に続けて該２方向の操作入力が成されていれば、キャラクタの全長が伸びるといったように制御される。よって、伸長自在なキャラクタをより直感的で理解しやすい操作方法で任意に伸ばすといった高い操作性を実現することができる。
また、一旦オブジェクトが伸びきった状態から更に２つの関節部位が移動制御されることを条件とすることで、たわみが伸びきってから初めてオブジェクトが伸びる感じを表現することができる。つまり、少ない演算負荷でよりリアルな伸長表現ができる。
【００３１】
第１１の発明は、第１〜第１０の何れか一つの発明のプログラムであって、前記コンピュータを更に、前記オブジェクトを立位姿勢に変化させるための立位姿勢指示操作の入力を検出する立位指示操作検出手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ８、図１７のステップＳ１４２）、前記立位指示操作検出手段の検出に応じて、前記ゲームキャラクタの一端側の関節部位の位置を固定し、他の関節部位を変位させて前記オブジェクトの姿勢を立位姿勢に変化させる立位姿勢制御手段（例えば、図３の処理部２００、ゲーム演算部２１０、図１３のステップＳ７６）、として機能させるためのプログラムである。
【００３２】
第１１の発明によれば、第１〜第１０の何れか一つの発明と同様の効果を奏するとともに、立位姿勢指示操作が入力された場合に、長く伸びたキャラクタの一端側の関節部位の位置を固定する一方で他端側の関節部位の位置を変位させるといった簡単な制御で、キャラクタに一端側を接地点とした立位姿勢をとらせることができる。
【００３３】
第１２の発明は、第６〜第８及び第１０のうちの何れか一つの発明のプログラムであって、前記２つの入力手段は、それぞれ方向入力操作及び押し込み操作が可能であり、前記２つの入力手段のうち一方の入力手段に対する押し込み操作入力と他方の入力手段に対する所定の方向操作入力とを、前記オブジェクトを立位姿勢に変化させるための立位姿勢指示操作の入力として検出する立位指示操作検出手段、前記立位指示操作検出手段の検出に応じて、前記２つの入力手段それぞれに対応する前記移動制御の対象の関節部位のうち、前記押し込み操作入力が為された入力手段に対応する関節部位及び／又は該関節部位の隣接関節部位の位置を固定し、他の関節部位を変位させて前記オブジェクトの姿勢を立位姿勢に変化させる立位姿勢制御手段、として前記コンピュータを更に機能させるためのプログラムである。
【００３４】
第１２の発明によれば、第６〜第８及び第１０の何れか一つの発明と同様の効果を奏するとともに、２つの方向入力手段の一方の押し込み操作入力で立位姿勢時接地側となる方を決定し、他方の方向入力手段からの所定の方向操作で立位姿勢に変化させるための関節部位の変位を実行することができる。一方の方向入力手段の押し込み操作は、制御対処となる部分を釘付けにする印象をあたえ、他方の方向操作入力はキャラクタの引き起こしをする印象を与える。したがって、あたかも長く伸びた紐の両端の一方を押えて固定し、他方を持ち上げて紐を上下に立たせるかの様な、直感的でわかり易い高い操作性を実現することができる。
【００３５】
第１３の発明は、第１１又は第１２の発明のプログラムであって、前記コンピュータを更に、前記立位姿勢制御手段が、位置を固定した関節部位に近接する関節部位から順番に立位姿勢となった場合の所定位置に変位させることで、徐々に立位姿勢に変化させていくように前記コンピュータを機能させるためのプログラムである。
【００３６】
第１３の発明によれば、第１１又は第１２の発明と同様の効果を奏するとともに、キャラクタが立位時に着地点となる部位から体を引き起こして立位姿勢になるかのような表現を実現することができるようになる。よって、キャラクタの動作をいかにも意志のある生物であるかのように表現することで、該キャラクタをプレーヤキャラクタとした場合に、プレーヤがよりキャラクタに親近感を持つのを助ける効果が得られる。また、簡単な処理で、生物としてのリアルな姿勢変化を表現することができる。
【００３７】
第１４の発明は、第１〜第１３の何れか一つの発明のプログラムであって、前記コンピュータを更に、プレーヤによる所定の短縮指示操作の入力を検出する短縮指示操作検出手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ６、図１０のステップＳ５０）、前記短縮指示操作検出手段の検出に応じて、関節部位を削減して前記オブジェクトを短縮させた形状とする短縮手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ６、図１０のステップＳ５２）、として機能させるためのプログラムである。
【００３８】
第１４の発明によれば、第１〜第１３の何れか一つの発明と同様の効果を奏するとともに関節部位を削減するといった簡単な制御で、キャラクタの長さを縮めることができる。
【００３９】
第１５の発明は、第６，第７，第８，第１０又は第１２のうちの何れか一つの発明のプログラムであって、前記コンピュータを更に、前記オブジェクト移動制御手段による前記２つの関節部位の移動制御によって、前記オブジェクトが伸身状態であり、且つ、当該２つの関節部位が当該伸身方向に沿って互いに近寄る方向に移動制御される状態にあることを検出する短縮状態検出手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ６、図１０のステップＳ５０）、前記短縮状態検出手段の検出に応じて、関節部位を削減して前記オブジェクトを短縮させた形状とする短縮手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ６、図１０のステップＳ５２）、として機能させるためのプログラムである。
【００４０】
第１５の発明によれば、第６，第７，第８，第１０又は第１２のうちの何れか一つの発明と同様の効果を奏するとともに、２種類の方向入力操作によって２つの関節部位を当該伸身方向に沿って互いに近寄る方向に移動させるように操作すると、関節部位を削減してキャラクタを短縮させた形状とすることができる。つまり、プレーヤにとってみれば、伸びたモノの両端を持ってこれを近寄る方向に押し縮めるイメージで操作すればキャラクタの長さを縮めることが可能になり、より直感的で容易な高い操作性が実現されたことになる。
【００４１】
第１６の発明は、第１４又は第１５の発明のプログラムであって、前記短縮手段が、前記直列状の関節構造をなす複数の関節部位のうち、両端の関節部位以外の関節部位を削除して前記オブジェクトを短縮させるように前記コンピュータを機能させるためのプログラムである。
【００４２】
第１６の発明によれば、第１４又は第１５の発明と同様の効果を奏するとともに、関節構造の両端の関節部位をキャラクタの短縮制御の如何に係らずそのまま残すことができる。したがって、関節構造に基づいてキャラクタの表示用のモデルを配置する場合には、キャラクタの伸身方向の前端部と後端部の表示用モデルと関節部位との対応関係を短縮制御にともなって変更する必要がないので、処理負荷の増加を回避し、より高いレベルで処理負荷の適正化・軽減を図ることができる。このことは、特にキャラクタをプレーヤキャラクタとして用いる場合、その前端部と後端部にはキャラクタの外観容姿を特徴づける比較的複雑なモデルが存在するので、表示用モデルのそうした部分と関節部位との対応関係を変えずに済む効果はより高くなる。
【００４３】
第１７の発明は、第１４〜第１６の何れか一つの発明のプログラムであって、前記短縮手段が、新たな関節部位を連続的に削除する場合の削除速度を可変するように前記コンピュータを機能させるためのプログラムである。
【００４４】
第１７の発明によれば、第１４〜第１６の何れか一つの発明と同様の効果を奏するともに、キャラクタの長さを短縮させる制御を実行するにあたり、連続的に関節部位を削除する場合にその削除速度を可変することができる。したがって、所望するキャラクタの性質設定に合わせて削除速度を適当に設定することによって、短縮の抵抗感を表現することができる。したがって、キャラクタが物質的な身を備えているように表現し、プレーヤがより親密感を持てるようにするとともに、簡単な処理でよりリアルな表現が可能になる。
【００４５】
第１８の発明は、第１〜第１７の何れか一つの発明のプログラムであって、前記伸長手段が、新たな関節部位を連続的に追加する場合の追加速度を可変するように前記コンピュータを機能させるためのプログラムである。
【００４６】
第１８の発明によれば、第１〜第１７の何れか一つの発明と同様の効果を奏するとともに、キャラクタの長さを伸長させる制御を実行するにあたり、連続的に関節部位を追加する場合にその追加速度、つまり追加される時間間隔を可変することができる。したがって、所望するキャラクタの性質設定に合わせて追加速度を適当に設定することによって、伸長への抵抗感を表現することができる。したがって、キャラクタが物質的な身を備え、ある程度の張力に耐えるがやがて耐え切れなくなって伸びているように表現し、或いは一所懸命に体を伸ばしているかのように表現して、プレーヤがより親密感をもてるようにすることができるとともに、簡単な処理でよりリアルな表現が可能になる。
【００４７】
第１９の発明は、コンピュータに、所与の仮想カメラから見たゲーム空間の画像を生成させてゲームを進行制御させるためのプログラムであって、前記ゲーム空間に配置された所定のオブジェクトの予め定められた２つの部位（例えば、図２の頭ＣＰｈ、尾ＣＰｔ）を、方向入力可能な２つの入力手段（例えば、図１の右アナログレバー１２３６、左アナログレバー１２３８、図３０のゲームコントローラ１２３０Ｒ，１２３０Ｌ）に為されるそれぞれの方向操作入力に従って移動制御することで前記オブジェクトを制御するオブジェクト移動制御手段（例えば、図３の処理部２００、ゲーム演算部２１０、図９のステップＳ１２）、前記オブジェクト移動制御手段による前記２つの部位の移動制御によって、前記オブジェクトが伸身状態になり、さらに伸長する方向に当該２つの部位が移動制御される状態にあることを検出する伸長状態検出手段（例えば、図３の処理部２００、ゲーム演算部２１０、図２１のステップＳ２０２〜Ｓ２０８、図３５のステップＳ４２２〜Ｓ４２８）、前記伸長状態検出手段の検出に応じて、前記伸張する方向に前記オブジェクトを伸長させる伸長手段（例えば、図３の処理部２００、ゲーム演算部２１０、図２１のステップＳ２１０〜Ｓ２１６、図３５のステップＳ４３０〜Ｓ４３６）として前記コンピュータを機能させるためのプログラムである。
【００４８】
または、所与の仮想カメラから見たゲーム空間の画像を生成させてゲームを進行制御するゲーム装置であって、前記ゲーム空間に配置された所定のオブジェクトの予め定められた２つの部位を、方向入力可能な２つの入力手段に為されるそれぞれの方向操作入力に従って移動制御することで前記オブジェクトを制御するオブジェクト移動制御手段（例えば、図１のゲーム装置本体１２０１、制御ユニット１２１０、図９のステップＳ１２）と、前記オブジェクト移動制御手段による前記２つの部位の移動制御によって、前記オブジェクトが伸身状態になり、さらに伸長する方向に当該２つの部位が移動制御される状態にあることを検出する伸長状態検出手段（例えば、図１のゲーム装置本体１２０１、制御ユニット１２１０、図２１のステップＳ２０２〜Ｓ２０８、図３５のステップＳ４２２〜Ｓ４２８）と、前記伸長状態検出手段の検出に応じて、前記伸張する方向に前記オブジェクトを伸長させる伸長手段例えば、図１のゲーム装置本体１２０１、制御ユニット１２１０、図２１のステップＳ２１０〜Ｓ２１６、図３５のステップＳ４３０〜Ｓ４３６）と、を備えたゲーム装置として実現しても良い。
【００４９】
通常、人は、所定の長さの紐状や棒状の物を移動させようとした場合、対象物の２箇所（より具体的には両端近傍）を左右の手でそれぞれ持ち、２箇所の位置を適当に調整することで対象物を様々な姿勢で自在に移動させる。また、紐状や棒状の物を伸ばそうとする場合、両手で２箇所をもって相反方向に引っ張るといった２方向へ力をかける行為をする。
【００５０】
第１９の発明によれば、ゲーム空間に配置された所定のオブジェクトの予め定められた２つの部位を、方向入力可能な２つの入力手段に為されるそれぞれの方向操作入力に従って移動制御することができる。そして、キャラクタのオブジェクトが伸身状態になり、さらに伸長する方向に当該２つの部位が移動制御される状態にある場合に、オブジェクトを伸長させることができる。つまり、あたかも目の前にある紐状や棒状の物を移動し、伸長するかのように簡素で直感的な操作で、伸縮自在なキャラクタをプレーヤキャラクタとして操作することができる。
【００５１】
第２０の発明は、第１〜第１９の何れか一つの発明のプログラムを記憶したコンピュータ読み取り可能な情報記憶媒体である。
ここで言う「情報記憶媒体」とは、例えば磁気ディスクや光学ディスク、ＩＣメモリなどを含む。第２０の発明によれば、第１〜第１９の何れか一つの発明のプログラムをコンピュータに読み取らせて実行させることによって、コンピュータに第１〜第１９の何れか一つの発明と同様の効果を発揮させることができる。
【発明を実施するための最良の形態】
【００５２】
〔第１実施形態〕
以下、図面を参照しながら、本発明を適用した第１実施形態として、伸縮自在なキャラクタが登場するビデオゲームを例に挙げて説明する。
【００５３】
［ゲーム装置の構成］
図１は、本実施形態における家庭用ゲーム装置の構成例を説明するシステム構成図である。家庭用ゲーム装置１２００のゲーム装置本体１２０１は、例えばＣＰＵや画像処理用ＬＳＩ、ＩＣメモリ等が実装された制御ユニット１２１０と、光学ディスク１２０２やメモリカード１２０４といった情報記憶媒体の読み取り装置１２０６，１２０８を備える。そして、家庭用ゲーム装置１２００は、光学ディスク１２０２やメモリカード１２０４からゲームプログラムおよび各種設定データを読み出し、ゲームコントローラに為される操作入力に基づいて各種のゲーム演算を実行し、所与のビデオゲームを実行する。
【００５４】
家庭用ゲーム装置１２００の制御ユニット１２１０で生成されたゲーム画像やゲーム音は、信号ケーブル１２０９で接続されたビデオモニタ１２２０に出力される。プレーヤは、ビデオモニタ１２２０のディスプレイ１２２２に表示されるゲーム画像を見つつ、スピーカ１２２４から出力されるＢＧＭや効果音といったゲーム音を聞きながら、ゲームコントローラ１２３０から各種操作を入力してゲームを楽しむ。
【００５５】
ゲームコントローラ１２３０は、選択の決定やキャンセル、タイミングの入力などに用いられるプッシュボタン１２３２と、図で言うところの上下左右の各方向を単独入力するための方向入力キー１２３４と、右アナログレバー１２３６と、左アナログレバー１２３８とを備える。
【００５６】
右アナログレバー１２３６および左アナログレバー１２３８は、図で言うところの上下左右の２軸を有する方向入力デバイスであり、レバー１２３６ａ，１２３８ａを倒すことによって２軸成分を含む任意の方向入力と、レバーの傾倒量に応じた任意操作量を入力することができる。また、いずれのアナログレバーも、操作入力していない中立状態からレバーの軸方向に押し込むことで、プッシュスイッチとしても機能する。そして、本実施形態では、右アナログレバー１２３６および左アナログレバー１２３８からの操作入力によって、プレーヤキャラクタの移動並びに伸縮の操作をする。
【００５７】
尚、ゲーム実行に必要なゲームプログラムおよび各種設定データは、通信装置１２１２を介して通信回線１に接続し、外部装置からダウンロードして取得する構成であっても良い。ここで言う、通信回線とは、データ授受が可能な通信路を意味する。すなわち、通信回線とは、直接接続のための専用線（専用ケーブル）やイーサネット（登録商標）等によるＬＡＮ（Local Area Network）の他、電話通信網やケーブル網、インターネット等の通信網を含む意味であり、また、通信方法については有線／無線を問わない。
【００５８】
［プレーヤキャラクタの説明］
図２は、本実施形態におけるプレーヤキャラクタのモデル構成を説明するための図である。同図に示すように、本実施形態におけるビデオゲームでプレーヤがゲームの主人公として操作するプレーヤキャラクタＣＰは、一頭一尾の想像上のワーム（worm：細長く足のない動物。）としてデザインされており、紐のように柔軟であるとともに伸縮自在な胴ＣＰｂを有する。つまり、プレーヤキャラクタＣＰは、頭ＣＰｈおよび尾ＣＰｔ方向を伸身前後方向として胴ＣＰｂの太さをそのままに伸縮自在なキャラクタとして設定されている。尚、本実施形態では同ＣＰｂが伸び縮みする形態として説明するが、頭ＣＰｈおよび尾ＣＰｔを含む全身が自在に伸び縮みする設定としても良いのは勿論である。
【００５９】
プレーヤキャラクタＣＰは、図２（ａ）に示すように、複数のノード２が、互いに前後の距離Ｌを一定にした直列状の関節構造を成す骨格モデルＢＭを有する。別の言い方をするならば、関節部位に相当するノード２（＝制御点）が連結子４によって関節構造として連結されており、連結子４は全て同じ固定長Ｌを有している。また、ノード２と連結子４との結合角度は、全て所定角度範囲θ内となるように限定されている。したがって、ノード２を関節部位と見なすと、骨格モデルＢＭは、複数の関節が直列状に連結されており、しかも各関節では一定角度以上曲がらないことになる。
【００６０】
図２（ｂ）に示すように、プレーヤキャラクタＣＰにはヒット判定モデルＨＭが設定されている。本実施形態におけるヒット判定モデルＨＭでは、各ノードにヒット判定領域６が設定されている。本実施形態におけるヒット判定領域６は、対応するノード２の位置座標を中心にして、半径Ｒ（＝連結子４の長さＬ）の球状領域として設定されている。
【００６１】
そして図２（ｃ）に示すように、プレーヤキャラクタＣＰの表示モデルはポリゴンによって形成される。具体的には、各ノード２には、隣接するノードに向かうそれぞれのベクトルの和のベクトルを面に含む表示基準円１０が設定されている。そして、頭ＣＰｈおよび尾ＣＰｔは、骨格モデルＢＭの先頭および末尾のノードを基準点として予め設定された頭部或いは尾部のモデルを配置する。そして、胴ＣＰｂについては、各ノードに設定されている表示基準円１０で定義される円周の外縁を滑らかに結ぶように複数のポリゴンを生成・変形・再配置する。胴部ＣＰｂにおけるポリゴンモデルの形成は、例えばスケルトンモデルへの外皮形成処理などの公知のモデリング技術を適宜用いることによって実現できる。
【００６２】
尚、本実施形態では、表示基準円１０の半径はヒット判定領域６の半径Ｒと同じに設定されているので、プレーヤキャラクタＣＰの外皮に何らかのオブジェクトが接触すると、ヒット判定される様に設定されているが、これに限るものではなくヒット判定領域６の半径Ｒよりやや大きく設定することによって、ヒットしたオブジェクトがプレーヤキャラクタＣＰに刺さって見えないように整合を図ったりしても良い。
【００６３】
また、以下の説明では複数あるノード２のうち、キャラクタの前方側端のノードを「前端ノード２ｆｒ」、後方側端のノードを「後端ノード２ｒｒ」と呼称することがある。
【００６４】
［機能ブロックの説明］
図３は、本実施形態における機能構成の一例を示す機能ブロック図である。同図に示すように本実施形態では、操作入力部１００と、処理部２００と、音出力部３５０と、画像表示部３６０と、通信部３７０と、記憶部５００とを備える。
【００６５】
操作入力部１００は、プレーヤによって為された各種の操作入力に応じて操作入力信号を処理部２００に出力する。図１では、コントローラ１２３０が操作入力部１００に該当する。そして、本実施形態における操作入力部１００は、一つの入力操作で少なくとも２軸の方向入力を可能にする第１方向入力部１０２および第２方向入力部１０４を備える。
【００６６】
第１方向入力部１０２および第２方向入力部１０４は、例えばアナログレバーやトラックパッド、マウス、トラックボール、少なくとも２軸以上の検出軸を有する多軸検出型加速度センサまたは検出軸方向を違えて組み合わされた単軸検出型加速度センサの集合、少なくとも２方向以上の検出方向を可能にする多方向検出型傾斜センサまたは検出方向を違えて組み合わされた単方向検出型傾斜センサの集合、タッチパネルなどによって実現され、本実施形態ではプレーヤキャラクタＣＰの頭ＣＰｈおよび尾ＣＰｔそれぞれの移動方向と移動量の入力に用いられる。図１では、右アナログレバー１２３６、左アナログレバー１２３８が該当する。
【００６７】
処理部２００は、例えばマイクロプロセッサやＡＳＩＣ（特定用途向け集積回路）、ＩＣメモリなどの電子部品によって実現され、操作入力部１００や記憶部５００をはじめゲーム装置１２００の各機能部との間でデータの入出力を行うとともに、所定のプログラムやデータ、操作入力部１００からの操作入力信号に基づいて各種の演算処理を実行して、ゲーム装置１２００の動作を制御する。図１では、ゲーム装置本体１２０１に内蔵された制御ユニット１２１０が処理部２００に該当する。
そして本実施形態における処理部２００は、ゲーム演算部２１０と、音生成部２５０と、画像生成部２６０と、通信制御部２７０とを備える。
【００６８】
ゲーム演算部２１０は、ゲームの進行に係る処理を実行する。例えば、ゲーム空間を仮想空間中に形成する処理や、仮想空間中に配置されたプレーヤキャラクタＰＣ以外のキャラクタの動作制御処理、ヒット判定処理、物理演算処理、ゲーム結果の算出処理などを実行する。そして、本実施形態のゲーム演算部２１０は、伸縮キャラクタ制御部２１２を含んでいる。
【００６９】
伸縮キャラクタ制御部２１２は、オブジェクトの伸縮制御に関する処理を実行する。具体的には、例えば骨格モデルＢＭに新たな関節部位として新たなノードを追加形成する処理、ノードの移動処理、プレーヤキャラクタＣＰに作用する力を各ノードについて算出して設定する処理を含む各種処理を実行する。
【００７０】
音生成部２５０は、例えばデジタルシグナルプロセッサ（ＤＳＰ）などのプロセッサやその制御プログラムによって実現され、ゲーム演算部２１０による処理結果に基づいてゲームに係る効果音やＢＧＭ、各種操作音の音信号を生成し、音出力部３５０に出力する。
【００７１】
音出力部３５０は、音生成部２５０から入力される音信号に基づいて効果音やＢＧＭ等を音出力するための装置である。図１ではビデオモニタ１２２０のスピーカ１２２４がこれに該当する。
【００７２】
画像生成部２６０は、例えば、デジタルシグナルプロセッサ（ＤＳＰ）などのプロセッサ、その制御プログラム、フレームバッファ等の描画フレーム用ＩＣメモリ等によって実現される。画像生成部２６０は、ゲーム演算部２１０による処理結果に基づいて１フレーム時間（１／６０秒）で１枚のゲーム画像を生成し、生成したゲーム画像の画像信号を画像表示部３６０に出力する。
【００７３】
画像表示部３６０は、画像生成部２６０から入力される画像信号に基づいて各種ゲーム画像を表示する。例えば、フラットパネルディスプレイ、ブラウン管（ＣＲＴ）、プロジェクター、ヘッドマウントディスプレイといった画像表示装置によって実現できる。図１ではビデオモニタ１２２０のディスプレイ１２２２が該当する。
【００７４】
通信制御部２７０は、データ通信に係るデータ処理を実行し、通信部３７０を介して外部装置とのデータのやりとりを実現する。
【００７５】
通信部３７０は、通信回線２と物理レベルで接続して通信を実現する。例えば、無線通信機、モデム、ＴＡ（ターミナルアダプタ）、有線用の通信ケーブルのジャックや制御回路等によって実現され、図１では通信装置１２１２がこれに該当する。
【００７６】
記憶部５００は、処理部２００にゲーム装置１２００を統合的に制御させるための諸機能を実現するためのシステムプログラムや、ゲームを実行させるために必要なゲームプログラム、各種データ等を記憶する。また、処理部２００の作業領域として用いられ、処理部２００が各種プログラムに従って実行した演算結果や操作部１００から入力される入力データ等を一時的に記憶する。この機能は、例えばＲＡＭやＲＯＭなどのＩＣメモリ、ハードディスク等の磁気ディスク、ＣＤ−ＲＯＭやＤＶＤなどの光学ディスクなどによって実現される。
【００７７】
本実施形態では、記憶部５００はゲームプログラム５０２を記憶している。処理部２００がゲームプログラム５０２を読み出して実行することによって、処理部２００にゲーム演算部２１０としての機能を実現させることができる。
【００７８】
また、記憶部５００には、予め用意されるデータとしてゲーム空間設定データ５２０と、キャラクタ初期設定データ５２２とが記憶されている。また、ゲームの進行に伴って随時書き換えられるデータとして、キャラクタ制御データ５２４、作用力データ５３０、区間登録データ５３２、第１移動予定位置データ５３４、第２移動予定位置データ５３６を記憶する。また、ゲームの進行に係る処理を実行するにあたり適宜必要となるタイマー値なども記憶される。本実施形態では、ノード増減許可タイマー５５０を含む各種タイマーのタイマー値が一時的に記憶される。
【００７９】
ゲーム空間設定データ５２０は、仮想空間にゲーム空間を形成するための各種データが格納されている。例えば、プレーヤキャラクタＣＰが移動する地表や建物を含む配置物に関するモデルデータ、テクスチャデータおよびモーションデータが含まれる。また、ゲーム中にプレーヤキャラクタＣＰ以外にコンピュータによって自動制御されるノンプレーヤキャラクタ（ＮＰＣ）が登場する場合には、ＮＰＣのモデルデータやテクスチャデータおよびモーションデータなどが含まれる。
【００８０】
キャラクタ初期設定データ５２２は、プレーヤキャラクタＣＰの初期設定データが格納されている。本実施形態では、ゲームスタート時におけるプレーヤキャラクタＣＰはある一定の長さの胴ＣＰｂを有するように設定されている。すなわち、所定数のノード２が配列された骨格モデルＢＭおよびそのヒット判定モデルＨＭに関するデータが格納されている。また、プレーヤキャラクタＣＰの頭ＣＰｈや尾ＣＰｔのモデルデータ、胴ＣＰｂの部分に外皮を形成する際のテクスチャデータなどが格納されている。
【００８１】
そして、プレーヤキャラクタＣＰをゲーム実行中に制御するためのデータが、キャラクタ制御データ５２４に格納されている。
図４は、本実施形態におけるキャラクタ制御データ５２４のデータ構成例を示す図である。同図に示すように、キャラクタ制御データ５２４は、その時点におけるプレーヤキャラクタＣＰの骨格モデル制御データ５２５と、ヒット判定制御データ５２６と、表示モデル制御データ５２７とを含む。
【００８２】
骨格モデル制御データ５２５には、ノード識別情報５２５ａに対応づけて、該ノードのゲーム空間座標系における位置座標５２５ｂと、頭側連結ノード識別情報５２５ｃと、尾側連結ノード識別情報５２５ｄと、エフェクタ情報５２５ｅと格納されている。
【００８３】
頭側連結ノード識別情報５２５ｃおよび尾側連結ノード識別情報５２５ｄは、当該ノードの配列順前後（頭側／尾側）に連結されているノードの識別情報を格納している。すなわち、前者は当該ノードの頭側（前方側）に連結されているノードの識別情報を格納し、後者は当該ノードの尾側（後方側）に連結されているノードの識別情報を格納する。先端のノードである場合には、連結先が無いことになるので、例えば同図に示すように「ＮＵＬＬ」が格納される。
【００８４】
エフェクタ情報５２５ｅは、当該ノードが右アナログレバー１２３６又は左アナログレバー１２３８からの操作入力に応じた仮想力（操作力）を作用させるノードであるか否かを示している。例えば同図のように、右アナログレバー１２３６による操作入力に応じた仮想力が作用するノードには「１」、左アナログレバー１２３８による操作入力に応じた仮想力が作用するノードには「２」、それ以外には「０」が格納されている。
【００８５】
尚、本実施形態では、プレーヤキャラクタＣＰの頭ＣＰｈと尾ＣＰｔは初期設定状態の両端のノード（図４の「ＮＯＤＥ１」と「ＮＯＤＥ５」）に固定されているが、例えばゲームが始まって最初に入力があったレバーを前端のノードの操作に割り当て、他方のレバーを後端のノードの操作に割り当てるように、エフェクタ情報５２５ｅを自動的に変更する構成としても良い。また、本発明を、粘土を模したオブジェクトの制御に適用する場合には、右アナログレバー１２３６及び左アナログレバー１２３８がそれぞれ制御対象のオブジェクトに接触したことを判定して、各接触位置近傍のノードのエフェクタ情報５２５ｅを自動的に変更して操作の割り当てをすることで、仮想力（操作力）が作用する点が変化する例にも対応可能となる。
【００８６】
ヒット判定制御データ５２６には、ノード識別情報５２６ａと、ヒット判定領域情報５２６ｂと、ヒットフラグ５２６ｃとが対応付けて格納されている。
【００８７】
ヒット判定領域情報５２６ｂは、当該ノードに対応付けられるヒット判定領域６を定義するデータとして、例えばゲーム空間座標系における位置座標と判定領域の半径Ｒの値を格納する。本実施形態では、対応するノードを中心に半径Ｒの球形判定領域が設定されるので、同図のように各領域半径Ｒ（Ｒ１、Ｒ２・・・）が格納されている。また、本実施形態では半径Ｒは一定であるが、例えばゲーム中にプレーヤキャラクタＣＰが太ったり痩せたりする設定とするならば適宜半径Ｒを可変することによって、適切なヒット判定を維持することができる。
【００８８】
そして、当該ノードに対応付けられているヒット判定領域で、他のオブジェクトと衝突していると判定された場合には、対応づけられたヒットフラグ５２６ｃを「０（未ヒット）」から「１（ヒット）」に変更して、ヒット状態を記憶する。
【００８９】
表示モデル制御データ５２７には、ノード識別情報と対応づけて各ノードに設定される表示基準円１０を定義するデータを格納している。
【００９０】
作用力データ５３０は、各ノードに作用している力に関する情報を格納している。
図５は、本実施形態における作用力データ５３０のデータ構成例を示す図である。同図に示すように、例えば、ノード識別情報５３０ａに対応づけて、操作力ベクトル５３０ｂ、外力ベクトル５３０ｃ、特定力ベクトル５３０ｄ、およびこれらの力の合力に当る作用力ベクトル５３０ｅが格納されている。その他、慣性力ベクトルや重力ベクトルなどゲーム中にプレーヤキャラクタＣＰの動作制御に影響を与える力を適宜設定することができる。
【００９１】
操作力ベクトル５３０ｂは、右アナログレバー１２３６又は左アナログレバー１２３８による操作入力に応じて設定される仮想力（＝操作力）が、エフェクタ情報５２５ｅで設定されたノードに作用し、更に骨格モデルＢＭの連結構造に従って各ノードに作用している力のベクトルを格納する。つまり、エフェクタ情報５２５ｅで「１」が格納されている先端のノードには右アナログレバー１２３６への操作入力に応じた操作力が直接作用するので、該操作力がそのままの状態で格納される。
【００９２】
一方、胴部分にあたるノードには操作力が直接的には作用しないが、先端のノードから順次連結した設定であるので、連結子４を伝って作用した結果としての力が格納される。したがって、その時点における骨格モデルＢＭが一直線状であれば、先頭のノードに作用した操作力と同じ操作力が各ノードの操作力ベクトル５３０ｂに格納されるが、骨格モデルＢＭが湾曲している場合にはノード間の連結関係に従って先頭のノードに作用した操作力の連結子方向成分の分力が格納されることになる。
【００９３】
外力ベクトル５３０ｃは、ゲーム空間自体や、ゲーム空間に配置されている他のオブジェクトの影響によって作用する仮想力を格納する。例えば、重力、他のオブジェクトとの衝突や接触によって生じる力や、環境風を受けることによって生じる力がこれに含まれる。その他、電磁力や、好物に惹きつけられる様子を表す仮想力など適宜含めることができる。
【００９４】
特定力ベクトル５３０ｄは、プレーヤキャラクタＣＰを特定の姿勢に変化させる際に作用させる所定の力（特定力）が、作用している場合に当該所定力のベクトルを格納する。本実施形態では、プレーヤキャラクタＣＰに立位姿勢である立ち上がり姿勢や逆立ち姿勢をさせるときに作用させる力に係る情報を格納する。
【００９５】
区間登録データ５３２は、骨格モデルＢＭの特定範囲を登録する。本実施形態では、他のオブジェクトと接触している部分でプレーヤキャラクタＣＰの全身を区切り、その区切った各区間が登録される。区切りの単位はノードである。従って、前端（頭）のノード、後端（尾）のノード、並びに他のオブジェクトと接触しているノードで区切られた区間（範囲）が区間登録データ５３２に登録される。言い換えると、プレーヤキャラクタＣＰを区切った各区間の両端のノードが区間登録データ５３２に登録される。
【００９６】
図６は、本実施形態における区間登録データ５３２のデータ構成例を示す図である。同図に示すように、区間登録データ５３２には、区間識別情報５３２ａと対応づけて、当該区間の両端にあたる第１端ノード識別情報５３２ｂと、第２端ノード識別情報５３２ｃとを格納する。同図の例では、本実施形態における前端ノードに当る「ＮＯＤＥ１」から胴部分に含まれる「ＮＯＤＥ３」までの区間が、区間「ＳＣ１」として格納されている。つまり、プレーヤキャラクタＣＰは、胴部分のどこか（ＮＯＤＥ３）で他のオブジェクトと接触していることになる。
【００９７】
接触が発生すれば、他のオブジェクトから外力を受けるケースや、移動中に他のオブジェクトに引っかかって前進する力に対する反力を受けてしまうケースなどが起り得る。つまり、そうして受けた外力によってプレーヤキャラクタＣＰが強制的に伸長される（以下、「強制伸長」とも言う。）可能性が生じることになる。
【００９８】
したがって、本実施形態ではこの区間登録データ５３２に登録された区間毎に作用する力関係が伸長する条件を満たすか否かを判定し、伸長する条件を満たすと判定された場合には当該区間を伸ばすように制御する。具体的には、キャラクタ制御データ５２４の骨格モデル制御データ５２５に格納されている骨格モデルＢＭのデータを、当該区間の端部のノードと、そのノードの区間内側の隣接ノードとの間に新たなノードを追加するように変更することでプレーヤキャラクタＣＰの伸びを実現する。
【００９９】
第１移動予定位置データ５３４と第２移動予定位置データ５３６は、共にプレーヤキャラクタＣＰの移動に係る制御に必要なデータを格納する。
図７は、本実施形態における第１移動予定位置データ５３４のデータ構成の一例を示す図である。同図に示すように、第１移動予定位置データ５３４では、ノード識別情報５３４ａと対応づけて、前端ノードに操作力が作用し後端ノードに操作力が作用していないと仮定して求められた第１移動予定位置座標５３４ｂと、前端ノードから当該ノードまでの距離を表す値としての第１比例定数５３４ｃとが格納されている。
【０１００】
第２移動予定位置データ５３６についても、図８に示すように同様のデータ構成を有しており、ノード識別情報５３６ａと対応づけて、後端ノードに操作力が作用し前端ノードに操作力が作用していないと仮定して求められた第２移動予定位置座標５３６ｂと、後端ノードから当該ノードまでの距離を表す値としての第２比例定数５３６ｃとが格納されている。
【０１０１】
本実施形態では、プレーヤキャラクタＣＰの前端ノードに左アナログレバー１２３８へ為された操作入力に応じた第１の操作力が作用し、後端ノードに右アナログレバー１２３６に為された操作入力に応じた第２の操作力が作用する。つまり、プレーヤキャラクタＣＰは頭と尾のそれぞれを引っ張る力が作用し、双方の力が作用した結果として胴ＣＰＢの部分の位置が変化することになる。これを物理的に正確に算出しようとした場合、多くの演算負荷が必要になってしまう。そこで、第１の操作力が作用し第２の操作力が作用していないと仮定して、各ノードの移動予定位置を求めた情報を第１移動予定位置データ５３４ｂに格納し、第２の操作力が作用し第１の操作力が作用していないと仮定して、各ノードの移動予定位置を求めた情報を第２移動予定位置データ５３６ｂに格納する。そして、夫々のノードについて両端からの相対位置関係に応じてこれら二つの移動予定位置を元にその中間のどこかに実際に適用される移動予定位置を求める。具体的には、当該ノードから前端ノードまでの距離、および後端ノードまでの距離の比に応じた二つの移動予定位置の間の位置を求める。
【０１０２】
ノード増減許可タイマー５５０は、時間経過を計時するタイマーのカウント値を格納する。本実施形態では、プレーヤキャラクタＣＰの伸長或いは短縮の制御が行われていない状態の時間経過を計時する。計時された時間、すなわちカウント値が所定の基準に満たない間は、プレーヤキャラクタＣＰの伸縮制御が制限され実行されない。
【０１０３】
［動作の説明］
次に本実施形態における処理の流れについて説明する。ここで説明する処理は、処理部２００が、記憶部５００に記憶されているシステムプログラム（不図示）やゲームプログラム５０２を読み出して実行することによって実現され、所定サイクルで繰り返し実行される。
【０１０４】
図９は、本実施形態における処理の流れを説明するためのフローチャートである。
同図に示すように、先ずゲーム演算部２１０は、ゲーム空間設定データ５２０を参照して仮想空間中にプレーヤキャラクタＣＰの移動する地表や背景、ＮＰＣなどを配置してゲーム空間を形成し、形成したゲーム空間に、キャラクタ初期設定データ５２２を参照して初期状態のプレーヤキャラクタＣＰを初期位置に配置する（ステップＳ２）。
このとき、プレーヤキャラクタＣＰの配置にともなって、キャラクタ制御データ５２４の骨格モデル制御データ５２５に初期状態の骨格モデルＢＭが登録され、登録された骨格モデルに従って外皮を形成してプレーヤキャラクタＣＰの表示モデルをゲーム空間に配置する。
【０１０５】
次に、処理部２００は、予め動作が設定されているオブジェクト（例えば、ＮＰＣなど）の動作を制御する（ステップＳ４）。例えば、プレーヤキャラクタＣＰの移動を邪魔するおもちゃの自動車などを設定するならば、地表面を所定のルールに基づいて移動制御する。
【０１０６】
次に、処理部２００は、プレーヤの操作入力に従ってプレーヤキャラクタＣＰを伸長或いは短縮させる任意伸縮処理を実行する（ステップＳ６）。
図１０は、本実施形態における任意伸縮処理の流れを説明するためのフローチャートである。同図に示すように、任意伸縮処理では先ず、ゲーム演算部２１０がノード増減許可タイマー５５０のカウントを所定数加算し（ステップＳ３０）、加算した後のノード増減許可タイマー５５０のカウント値が基準値に達しているか否かを判定する（ステップＳ３２）。
【０１０７】
ノード増減許可タイマー５５０のカウント値が基準値に達していなければ（ステップＳ３２のＮＯ）、任意伸縮処理はそのまま終了する。
【０１０８】
一方、ノード増減許可タイマー５５０のカウント値が基準値に達している場合（ステップＳ３２のＹＥＳ）、処理部２００は更に所定の任意伸長操作が入力されているか否かを判定する（ステップＳ３４）。具体的には、右アナログレバー１２３６から右方向入力され、同時に左アナログレバー１２３８から左方向入力が入力されたか否かを判定する。すなわち、第１方向入力部１０２と第２方向入力部１０４から、同時入力と見なせる程度の時間差で、互いに相反する方向に方向入力されたか否かを判定する。したがって、左右に限らず両レバーで上下互い違いに入力された場合にも任意伸長操作が入力されたと判定する構成としても良い。
【０１０９】
そして、任意伸長操作が入力されたと判定された場合（ステップＳ３４のＹＥＳ）、ゲーム演算部２１０は、前端ノード（頭ＣＰｈのノード）を連結子４の長さＬだけ、前端ノードの次に連結された次連結ノードから前端ノードを向いた方向に移動させ（ステップＳ３６）、移動した先端ノードと次連結ノードとの間に新たなノードを追加する（ステップＳ３８）。
【０１１０】
具体的には、例えば図４の例ならば、「ＮＯＤＥ１」がプレーヤキャラクタＣＰの先端ノードに当るので、その次に連結されている「ＮＯＤＥ２」から「ＮＯＤＥ１」へ向かうベクトルの方向へ、「ＮＯＤＥ１」を連結子４の長さＬだけ移動させる。そして、新たに追加形成されるノードに適当なノード識別情報（例えば「ＮＯＤＥ６」）を付与して、骨格モデル制御データ５２５に登録する。このとき、位置座標５２５ｂは、「ＮＯＤＥ１」と「ＮＯＤＥ２」の中間位置とし、頭側連結ノード識別情報５２５ｃには「ＮＯＤＥ１」を格納し、尾側連結ノード識別情報５２５ｄには「ＮＯＤＥ２」を格納する。エフェクタ情報５２５ｅには「０」を格納する。そして、「ＮＯＤＥ１」の尾側連結ノード識別情報５２５ｄを「ＮＯＤＥ２」から「ＮＯＤＥ６」に更新し、「ＮＯＤＥ２」の頭側連結ノード識別情報５２５ｃを「ＮＯＤＥ１」から「ＮＯＤＥ６」に更新する。
【０１１１】
こうしてキャラクタ制御データ５２４に登録されている骨格モデルＢＭに新たなノードを追加形成したならば、ゲーム演算部２１０は更に同様にして、後端ノード（尾ＣＰｔのノード）を連結子４の長さＬだけ、後端ノードの前側に連結された連結ノードから後端ノードを向いた方向に移動させ（ステップＳ４０）、移動した後端ノードと連結ノードとの間に新たなノードを追加形成する（ステップＳ４２）。
そして、ノード増減許可タイマー５５０をリセットして「０」に戻してリスタートし（ステップＳ４４）、任意伸縮処理を終了する。
尚、ステップＳ３８及びステップＳ４２においては、追加形成するノードを端部のノードと次連結ノードとの間に追加形成する構成としているが、端部のノードの先に単純に追加形成する構成としても良いのは勿論である。この場合、骨格モデル制御データ５２５のエフェクタ情報５２５ｅを変更して、右アナログレバー１２３６或いは左アナログレバー１２３８の操作割り当てを新たに追加形成されたノードに変更する必要がある。
【０１１２】
ステップＳ３４において否定判定がされた場合（ステップＳ３４のＮＯ）、ゲーム演算部２１０は特定の任意短縮操作が入力されたか否かを判定する（ステップＳ５０）。具体的には、右アナログレバー１２３６から左方向入力され、同時に左アナログレバー１２３８から右方向入力がされたか否かを判定する。すなわち、第１方向入力部１０２と第２方向入力部１０４から、同時と見なせるほどの時間差で互いに近寄るように方向入力されたか否かを判定する。したがって、左右に限らず両レバーで上下から寄せるように入力された場合にも任意短縮操作が入力されたと判定する構成としても良い。
【０１１３】
任意短縮操作が入力されなかったと判定された場合には（ステップＳ５０のＮＯ）、ゲーム演算部２１０は、任意短縮処理を終了する。また、骨格モデルＢＭの全ノード数が２以下の場合にも、任意伸縮処理を終了する。
【０１１４】
一方、任意短縮操作が入力されたと判定された場合には（ステップＳ５０のＹＥＳ）、ゲーム演算部２１０は前端ノードの次に連結されている次連結ノードと、後端ノードの前連結ノードを削除し（ステップＳ５２）、前端ノードと後端ノードを夫々の削除された連結ノードの位置に移動させる（ステップＳ５４）。
【０１１５】
具体的には、例えば図４の例ならば、前端ノードに当る「ＮＯＤＥ１」と、後端ノードに当る「ＮＯＤＥ５」の隣接ノードに当たる「ＮＯＤＥ２」と「ＮＯＤＥ４」を削除する。そして、「ＮＯＤＥ１」の位置座標５２５ｂを「ＮＯＤＥ２」の値、「ＮＯＤＥ５」の位置座標５２５ｂを「ＮＯＤＥ４」の値に変更する。
【０１１６】
更に、「ＮＯＤＥ１」の尾側連結ノード識別情報５２５ｄを「ＮＯＤＥ３」に変更し、「ＮＯＤＥ３」の頭側連結ノード識別情報５２５ｃを「ＮＯＤＥ１」に変更する。また、「ＮＯＤＥ５」の頭側連結ノード識別情報５２５ｃを「ＮＯＤＥ３」に変更し、「ＮＯＤＥ３」の尾側連結ノード識別情報５２５ｄを「ＮＯＤＥ５」に変更する。
また、ヒット判定制御データ５２６も「ＮＯＤＥ２」と「ＮＯＤＥ４」の登録を抹消して更新する。
【０１１７】
以上の任意伸縮処理によってプレーヤは任意にプレーヤキャラクタＣＰを伸ばしたり縮めたりすることできるようになる。
【０１１８】
例えば図１１は、本実施形態におけるプレーヤキャラクタＣＰの任意伸長操作と制御の概念の関係を示す図である。同図（ａ）に示すように、プレーヤがゲームコントローラ１２３０の右アナログレバー１２３６を右方向、左アナログレバー１２３８を左方向に同時入力すると任意伸長操作の入力となる。すると、プレーヤキャラクタＣＰの骨格モデルＢＭは、同図（ｂ）の俯瞰図に示すように、左側の状態から右側の状態に変更される。すなわち、先端ノード２ｄと該先端ノードの次連結ノード２ｅとの間に新たなノード２ｆが追加形成され、更に後端ノード２ｈと該後端ノードの前の連結ノード２ｊとの間にも新たなノード２ｋが追加形成されて変更される。そして、プレーヤキャラクタＣＰの表示モデルは、変更された骨格モデルＢＭに基づいて外皮を形成することによって、同図（ｃ）の俯瞰図に示す様に、左側の全長が短い状態から右側の全長が伸びた状態に変化する。
【０１１９】
一方、同図（ｄ）の左側の状態のように、右アナログレバー１２３６から右方向入力、左アナログレバー１２３８から左方向入力がされているが、同時入力とは見なされない場合には、左アナログレバー１２３８への入力に応じた仮想力（＝第１の操作力。図中の左向き太黒矢印。）が、先端ノード２ｄに作用し、右アナログレバー１２３６への入力に応じた仮想力（＝第２の操作力。図中の右向き斜線太矢印。）が、先端ノード２ｈに作用していると見なされ、プレーヤキャラクタＣＰの頭ＣＰｈ、尾ＣＰｔをそれぞれ引っ張る様に作用する。したがって、骨格モデルＢＭが湾曲状態であれば、新たなノードの追加形成は行われずに先端ノード２ｄと後端ノード２ｈが反対方向に引っ張られる格好となり、右側の状態のように直線状態（伸身状態）に近づくことになる。
【０１２０】
また例えば図１２は、本実施形態におけるプレーヤキャラクタＣＰの任意短縮操作と制御の概念の関係を示す図である。同図（ａ）に示すように、プレーヤがゲームコントローラ１２３０の右アナログレバー１２３６を左方向、左アナログレバー１２３８を右方向に同時入力すると任意短縮操作の入力となる。
【０１２１】
任意短縮操作が入力されると、プレーヤキャラクタＣＰの骨格モデルＢＭは、同図（ｂ）の俯瞰図に示すように、左側の状態から右側の状態に変更される。すなわち、先端ノード２ｄの次の連結ノード２ｆが削除され、更に後端ノード２ｈの前の連結ノード２ｋが削除されて変更される。そして、プレーヤキャラクタＣＰの表示モデルは、変更された骨格モデルＢＭに基づいて外皮を形成することによって、同図（ｃ）の俯瞰図に示す様に、左側の状態から右側の全長が縮んだ状態に変化する。
【０１２２】
一方、右アナログレバー１２３６から左方向入力され、左アナログレバー１２３８から右方向入力がされたが、同時入力とは見なされない場合には、左アナログレバー１２３８への入力に応じた仮想力（＝第１の操作力。図中の右向き太黒矢印。）が、先端ノード２ｄに作用し、右アナログレバー１２３６への入力に応じた仮想力（＝第２の操作力。図中の左向き斜線太矢印。）が、先端ノード２ｈに作用していると見なされ、プレーヤキャラクタＣＰの頭ＣＰｈと尾ＣＰｔを近づける様に作用する。したがって、同図（ｄ）の左側の状態のように、骨格モデルＢＭが湾曲状態であれば、ノードの削除は行われずに先端ノード２ｄと後端ノード２ｈが近づく格好となり、右側の状態のように湾曲がより強い状態に近づくことになる。
【０１２３】
また、本実施形態では、ノード増減許可タイマー５５０が設けられ、カウント値が基準値に達していない場合、換言すればプレーヤキャラクタＣＰが伸長或いは短縮されない状態がある一定時間以上経過していない場合には、プレーヤが任意伸長操作や任意短縮操作を入力しても、伸長或いは短縮の制御は実行されない。これによって、伸長或いは短縮する動作にある種の時間的な「溜め」を作り、プレーヤキャラクタＣＰの胴が伸びたり縮んだりする際の抵抗感を表現し、あたかも胴ＣＰｂがある程度生き物らしく成長や変形によって伸び縮みしているかのように見せることができる。
【０１２４】
尚、任意短縮操作の定義は、適宜変更可能である。例えば、右アナログレバー１２３６及び左アナログレバー１２３８に押し込みスイッチの機能を設け、両レバーの同時押し込み操作を検出した場合に任意短縮操作が入力されたと判定する構成とすることもできる。
また、削除するノードは、端部のノードの次の連結ノードを削除する構成に限らず、端部のノードを削除し、骨格モデル制御データ５２５のエフェクタ情報５２５ｅを変更して右アナログレバー１２３６や左アナログレバー１２３８の操作割り当てを端部のノードの次の連結ノードへ変更する構成も可能である。
【０１２５】
図９に戻って、任意伸縮処理を終了したならば、ゲーム演算部２１０は次に作用力設定処理（ステップＳ８）、強制伸長処理（ステップＳ１０）を実行して、プレーヤキャラクタＣＰに作用する外力によって伸長させる。
【０１２６】
作用力設定処理は、プレーヤキャラクタＣＰに作用する力の設定と、その合力である作用力の算出に関する処理である。
図１３は、本実施形態における作用力設定処理の流れを説明するためのフローチャートである。同図に示すように、作用力設定処理では先ず、操作力設定処理を実行する（ステップＳ７２）。操作力設定処理とは、プレーヤによる２種類の方向入力に応じた仮想力をプレーヤキャラクタＣＰに設定する処理である。
【０１２７】
図１４は、本実施形態における操作力設定処理の流れを説明するためのフローチャートである。同図に示すように操作力設定処理では先ず、左アナログレバー１２３８に入力されている傾倒方向と傾倒量に応じた第１の操作力を決定し、プレーヤキャラクタＣＰの頭ＣＰｈの基準となる前端ノードに設定する（ステップＳ１００）。そして、前端ノードから各ノードに連結子４を介して伝わる操作力を先端からの連結順に算出して設定する（ステップＳ１０２）。
【０１２８】
図５の例で言うと、設定された第１の操作力のベクトルは、作用力ベクトルデータ５３０の「ＮＯＤＥ１」に対応する操作力ベクトル５３０ｂに格納され、同様に第１の操作力ベクトルが各ノードに作用する分力が求められて各々に対応する操作力ベクトル５３０ｂに格納される。
【０１２９】
次に、ゲーム演算部２１０は、右アナログレバー１２３６に入力されている傾倒方向と傾倒量に応じた第２の操作力を決定し、プレーヤキャラクタＣＰの尾ＣＰｔの基準となる後端ノードに設定する（ステップＳ１０４）。
【０１３０】
次いで、後端ノードから各ノードに連結子４を介して伝わる第２の操作力の分力を連結順後ろから順番に算出し（ステップＳ１０６）、算出した第２の操作力の分力と、ステップＳ１００並びにＳ１０２で算出されて各ノードの操作力ベクトル５３０ｂに格納されているベクトルとのベクトル和を求めて、操作力ベクトル５３０ｂを更新し（ステップＳ１０８）、操作力設定処理を終了する。
【０１３１】
操作力設定処理を終了したならば図１３のフローに戻り、ゲーム演算部２１０は次に操作力方向補正処理を実行する（ステップＳ７４）。
【０１３２】
操作力方向補正処理は、ステップＳ７２で設定された操作力の作用する方向を補正することによって、プレーヤキャラクタＣＰの胴が湾曲した状態から旋回を続ける場合に、わずかに旋回の内側をたどるようにして移動するように表現する処理である。
【０１３３】
図１５は、本実施形態における操作力方向補正処理の流れを説明するためのフローチャートである。操作力方向補正処理では先ず、ゲーム演算部２１０は、前端ノードから連結順に全ノードについてループＢの処理を実行する（ステップＳ１２０〜Ｓ１２８）。ループＢでは、処理対象のノードの連結順が、前端ノードから３番目以降であるか否かを判定する。（ステップＳ１２２）。具体的には、キャラクタ制御データ５２４の骨格モデル制御データ５２５から該当するノードを起点に頭側連結ノード識別情報５２５ｃを参照して「ＮＵＬＬ」が格納されているまでの回数をカウントするとしても良い。
【０１３４】
そして、連結順が１番目または２番目の場合には（ステップＳ１２２のＮＯ）、ループＢの処理を終了する。一方、連結順が３番目以降の場合には（ステップＳ１２２のＹＥＳ）、処理対象ノードに設定されている操作力のベクトルの方向を補正すべきか否かを判定する。具体的には、処理対象ノードから連結順一つ前のノードへ向かうベクトルＶＣ１と、処理対象ノードから連結順二つ前のノードへ向かうベクトルＶＣ２を求め、ベクトルＶＣ１とベクトルＶＣ２の相対角度が基準値以上であるか否かを判定する（ステップＳ１２４）。基準値としては、プレーヤキャラクタＣＰの初期設定の大きさや、キャラクタの胴ＣＰＢの柔らかさのイメージに応じて適宜設定できるが、例えば１０°程度とする。つまり、同ステップは、所定の超過湾曲条件を満たす湾曲部分のノードを検出する処理としての意味がある。
【０１３５】
そして、相対角度が基準値に満たない場合には（ステップＳ１２４のＮＯ）、ゲーム演算部２１０は、処理対象ノードの操作力を補正する必要が無いと判断して、ループＢの処理を終了する。一方、相対角度が基準値以上である場合には（ステップＳ１２４のＹＥＳ）、作用力データ５３０を参照して、処理対象ノードに設定されている操作力ベクトル５３０ｂを、ベクトルＶＣ１とベクトルＶＣ２との中間方向へ補正して（ステップＳ１２６）、ループＢを終了する。そして、全てのノードについてループＢが実行されたならば操作力方向補正処理を終了する。
【０１３６】
図１６は、本実施形態における操作力方向補正処理の概念を説明するための図であって、プレーヤキャラクタＣＰが左旋回しようとしている状態の骨格モデルＢＭの俯瞰図に相当する。骨格モデルＢＭは、ノードを節にして湾曲して弧を描いている。
【０１３７】
図１６（ａ）の上側の図では、矢印で示された各ノードに設定された操作力は操作力設定処理で設定されたままである。つまり、前端ノード２ｄに作用する操作力（黒太矢印で表示。）が連結子伝いに伝達されるので、各ノード２ｅ〜２ｈは連結子の方向に作用する力（ハッチングされた小さい矢印で表示。）で引っ張られる格好になる。したがって、設定されたままの操作力が各ノードに作用したと仮定した場合、図１６（ａ）の下側の図に示すよう、各ノードは連結順で一つ前のノードが元有った位置に向かう様に移動制御されることになる。こうした動作は、所謂蛇の移動と同じであり、プレーヤキャラクタＣＰが蛇である場合を除けば、プレーヤに好まれないケースが予想される。
【０１３８】
これに対して、操作力方向補正処理を実行すると、図１６（ｂ）の上側の図に示すように連結順３番目以降のノードで、ベクトルＶＣ１とベクトルＶＣ２の成す角度が基準値を超える場合、例えば、ベクトルＶＣ３のように、そもそも設定された操作力は骨格モデルＢＭの弧の内側に向けて補正される。この結果、図１６（ｂ）の下側の図に示すように、骨格モデルＢＭの湾曲度が基準値より大きい箇所では、各ノードが旋回方向わずかに内側に向かって移動する様に制御される。この結果、進行方向を変えつつ、できるだけ曲がった胴をできるだけまっすぐに戻せるように（つまり、より楽な姿勢で進行方向を変えるように）表現することができる。このように、蛇やムカデとは異なる旋回動作姿勢制御によって、プレーヤキャラクタＣＰが、蛇やムカデでもなく胴が自在に伸び縮みする能力を有する特異なキャラクタとしての存在感を表現することが可能となり、プレーヤに摩訶不思議な印象を与えゲームへの興味を惹くことができるようになる。
【０１３９】
さて、操作力方向補正処理を終了したならば図１３のフローに戻り、ゲーム演算部２１０は次に特定力設定処理を実行する（ステップＳ７６）。
【０１４０】
特定力設定処理は、プレーヤキャラクタＣＰに所定の姿勢変化をさせるための姿勢変化操作入力が有った場合に、当該姿勢変化に対応づけられた特定力を設定する処理である。本実施形態では、ゲームコントローラ１２３０から所定のボタンスイッチが押された場合に、プレーヤキャラクタＣＰを立ち上がらせる。また、別のボタンスイッチが押された場合に、プレーヤキャラクタＣＰを飛行可能に浮揚させる。
【０１４１】
図１７は、本実施形態における特定力設定処理の流れについて説明するためのフローチャートである。同図に示すように、特定力設定処理では先ず、ゲーム演算部２１０は「立ち上がり」又は「逆立ち」に対応する特定の操作入力（立位姿勢指示操作）がなされているか否かを判定する（ステップＳ１４０）。本実施形態では、ゲームコントローラ１２３０のプッシュボタン１２３２のうち、所定のプッシュボタンが押下されたら「立ち上がり」、別の所定のプッシュボタンが押下されたら「浮揚」の特定操作入力がなされたと判定する。
【０１４２】
「立ち上がり」の特定操作入力が有る場合には（ステップＳ１４０のＹＥＳ→ステップＳ１４２の「立ち上がり」）、作用力データ５３０を参照し、何れかのノードに対応して特定力ベクトル５３０ｄにマイナス重力（ゲーム空間の重力をキャンセルする上向きに作用する仮想力）が設定されているか否かを判定する（ステップＳ１４４）。
【０１４３】
何れのノードにもマイナス重力が設定されていなければ（ステップＳ１４４のＮＯ）、ゲーム演算部２１０は後端ノードの位置を固定してから（ステップＳ１４６）、後端ノードの一つ前のノードにマイナス重力を設定し（ステップＳ１４８）、特定力設定タイマーを起動させる（ステップＳ１５０）。マイナス重力は、作用させるノードから後端ノードの直上所定距離（例えば、全長の１．２倍離れた位置）の仮想点を向き、プレーヤキャラクタＣＰを吊下げできる適当な大きさを設定する。
【０１４４】
何れかのノードにすでにマイナス重力が設定されていた場合は（ステップＳ１４４のＹＥＳ）、特定力設定タイマーで所定時間（例えば、０．５秒程度）が計時されたか否かを判定し（ステップＳ１５２）、所定時間が計時されていれば（ステップＳ１５２のＹＥＳ）、更に、作用力データ５３０を参照して前端ノードより所定数後ろのノード（例えば１つ後ろのノード）にマイナス重力が設定されているか否かを判定する（ステップＳ１５４）。
【０１４５】
ここで、前端ノードより所定数後ろのノード（例えば、プレーヤキャラクタＣＰが立ち上がった時に首に相当する部分のノード。）にマイナス重力が設定されていない場合（ステップＳ１５４のＮＯ）、マイナス重力の設定を、現在設定されているノードから連結順一つ前のノードに移動させ（ステップＳ１５６）、特定力設定タイマーをリセットして再度所定時間の計時をやり直す（ステップＳ１５８）。
【０１４６】
「立ち上がり」の特定操作が入力され続けている間、制御サイクル毎に特定力設定タイマーがカウントされ、所定時間が計時されるごとにマイナス重力が連結順一つ前のノードに順次移動設定されることになる。そして、前端ノードより手前の所定のノードに達すると（ステップＳ１５２のＹＥＳ）、それ以降はマイナス重力の移動設定は行われることなく特定力処理を終了する。
【０１４７】
特定力設定タイマーをリセットしたならば、次いでゲーム演算部２１０は、立ち上がりの姿勢変化が完了したか否かを判定する（ステップＳ１６０）。例えば、前端ノードより所定数（例えば１つ）後ろのノードが、後端ノードの直上に位置しているか否かで判断することができる。そして、立位姿勢への変化が完了していない場合には（ステップＳ１６０のＮＯ）、そのまま特定設定処理を終了する。したがって、次の制御サイクルで、引き続き姿勢変化の制御が実行される。一方、立位姿勢への変化が完了したと判定された場合には（ステップＳ１６０のＹＥＳ）、後端ノードの位置固定を解除して（ステップＳ１６２）、特定力設定処理を終了する。
【０１４８】
この結果、例えば図１８に示すようにプレーヤキャラクタＣＰの姿勢変化制御が行われる。すなわち、先ず最初、図１８（ａ）に示すように後端ノードの一つ前のノードにマイナス重力（図中の上向き矢印）が設定される。そして、図１８（ｂ）に示すように、所定時間が計時されるごとにマイナス重力が連結順一つ前のノードに順次移動設定される。つまり、尾から頭にむけて順にノードが吊り上げられる格好となる。そして、前端ノードより手前の所定のノード（１つ手前のノード）に達すると、それ以降はマイナス重力の移動設定は行われなり、この段階では同図（ｃ）に示すように、プレーヤキャラクＣＰは尾ＣＰｔを起点にして立ち上がった格好となる。
【０１４９】
同図の例では「立ち上がり」の姿勢変化を実現しているが、マイナス重力の設定を変更することで「逆立ち」の姿勢変化などにも応用できる。例えば、図１９の「逆立ち」の例であれば、同図（ａ）に示すように最初にマイナス重力を設定し、同図（ｂ）のように前端ノードの所定数（例えば１つ）後ろから初めて徐々に後端ノードに向かってマイナス重力の移動設定を実行する。結果、同図（ｃ）のように、プレーヤキャラクＣＰは頭ＣＰｈを起点にして逆立ちする格好となる。
【０１５０】
同様の手法によってプレーヤキャラクタＣＰを浮揚させることもできる。
すなわち、図１７において「浮揚」の特定操作入力が有る場合には（ステップＳ１４０のＹＥＳ→ステップＳ１４２の「浮揚」）、ゲーム演算部２１０は全ノードにマイナス重力を設定する（ステップＳ１６４）。このとき設定されるマイナス重力は、各ノードの重量をキャンセルするのに十分な大きさの上向きの仮想力となる。すなわち、プレーヤキャラクタＣＰの全身に重力の影響がキャンセルされ、右アナログレバー１２３６や左アナログレバー１２３８による方向入力によって設定される操作力の方向に向けて空中を浮揚する様に移動することが可能になる。
【０１５１】
そして、設定されているマイナス重力は、次回以降のステップＳ１４０の演算処理において特定操作入力がされていないと判定された場合（ステップＳ１４０）に、解除されて（ステップＳ１６６）特定力処理を終了する。したがって、吊り上げられる力が失せることとなり、立ち上がり或いは浮揚していたプレーヤキャラクタＣＰは重力に従って自由落下し、再び地面を這う姿勢となる。
【０１５２】
尚、プレーヤキャラクタＣＰの「立ち上がり」姿勢変化にともなう特定力設定は、一つの仮想力の作用位置を変更する構成に限らず、「浮揚」の時の制御と同様にして、後端ノードの一つ前のノードから、前端ノードの所定数後ろのノードまで順に、各ノード毎にマイナス重力を次々に作用させる構成として実現しても良いのは勿論である。
【０１５３】
さて、特定力処理を終了したならば、図１３の作用力設定処理のフローに戻る。
ゲーム演算部２１０は次に、プレーヤキャラクタＣＰに接触する他のオブジェクトの有無を判定する（ステップＳ７８）。そして、接触する他のオブジェクトが有る場合（ステップＳ７８のＹＥＳ）、ゲーム演算部２１０は、他のオブジェクトと接触することに起因してプレーヤキャラクタＣＰに作用する外力を設定するために外力設定処理を実行する（ステップＳ８２）。
【０１５４】
図２０は、本実施形態における外力設定処理の流れを説明するためのフローチャートである。同図に示すように、ゲーム演算部２１０は、プレーヤキャラクタＣＰに接触する全ての他のオブジェクトについてループＤの処理を実行する（ステップＳ１８０〜Ｓ１９０）。ループＤでは、先ず処理対象となっている他のオブジェクトがヒットしている接触ノードを抽出し（ステップＳ１８２）、ヒット判定制御データ５２６を参照し、該当するノードに対応するヒットフラグ５２６ｃに「１（ヒット有り）」を格納する（ステップＳ１８４）。次いで、処理対象の他のオブジェクトから接触ノードへ作用する外力を設定する（ステップＳ１８６）。すなわち、処理対象の他のオブジェクトから接触ノードへ作用する外力を算出し、作用力データ５３０で接触ノードに対応する外力ベクトル５３０ｃに格納されているベクトルに、算出した外力を合成して更新する。尚、接触ノードが複数の場合には、他オブジェクトから受ける外力を複数のノードに分けて設定する。
【０１５５】
次に、ゲーム演算部２１０は、接触ノードから連結順前後の他のノードについて、処理対象の他オブジェクトから受ける外力が接触ノードから他のノードに伝達する分力を求め、当該ノードの外力ベクトル５３０ｃに格納されているベクトルに、算出した分力を合成して更新し（ステップＳ１８８）、ループＤの処理を終了する。
そして、プレーヤキャラクタＣＰに接触する全ての他のオブジェクトについてループＤの処理を実行したら外力設定処理を終了する。
【０１５６】
外力設定処理を終了したならば、図１３の作用力設定処理のフローに戻り、ゲーム演算部２１０は次に、前端ノード、後端ノードに加えて他のオブジェクトと接触する接触ノードを端とする登録区間を設定する（ステップＳ８４）。
【０１５７】
ここで登録される区間は、プレーヤキャラクタＣＰが、外力によって強制的に引き伸ばされる状態を制御する単位となる。したがって、区間の両端は上記３種類のノードに限られ、その間には他の接触ノードが含まれない。具体的には、例えば、プレーヤキャラクタＣＰの胴ＣＰｂの複数のノードが他のオブジェクトと接触している状態では、先ず前端ノードを一端とし、ヒット判定制御データ５２６を連結順に参照して次にヒットフラグ５２６ｃが「１（ヒット有り）」の接触ノードを他端とする第１の区間を区間登録データ５３２に登録する。次いで、第１の区間の他端となったノードを一端とし、連結順で次の接触ノードを他端とする第２の区間を登録するといった制御を繰り返し、最後の接触ノードを一端とし後端ノードを他端とする最後の区間を登録して終わる。尚、接触ノードが無い場合には、前端ノードを一端、後端ノードを他端とする唯一つの区間が登録されることになる。
【０１５８】
次に、ゲーム演算部２１０は、全ノードについて、操作力、外力および特定力の合力を求め、それぞれの作用力ベクトル５３０ｅとして作用力データ５３０に格納して（ステップＳ８６）、作用力設定処理を終了する。
【０１５９】
一方、ステップＳ７８において、プレーヤキャラクタＣＰに接触する他のオブジェクトが無い場合には（ステップＳ７８のＮＯ）、ゲーム演算部２１０は、キャラクタ制御データ５２４のヒット判定制御データ５２６を参照し、全ノードのヒットフラグ５２６ｃを「０（未ヒット）」に変更した後（ステップＳ８０）、登録区間の設定（ステップＳ８４）と、作用力の算出を行って（ステップＳ８６）、作用力設定処理を終了する。
【０１６０】
作用力設定処理によって各ノードに作用する力が求められたことになるので、図９のフローに戻って強制伸長処理を実行する（ステップＳ１０）。強制伸長処理は、プレーヤキャラクタＣＰに作用している力の合力が基準値以上に達している場合に、プレーヤの意志に関係なく強制的に伸長する制御である。
【０１６１】
図２１は、本実施形態における強制伸長処理の流れを説明するためのフローチャートである。同図に示すように、強制伸長処理では、ゲーム演算部２１０は、区間登録データ５３２に登録されている全ての登録区間についてループＥの処理を実行する（ステップＳ２００〜Ｓ２１８）。
【０１６２】
具体的には、先ず区間登録データ５３２を参照し、処理対象の登録区間における両端のノードの直線距離ＬＳを算出するとともに（ステップＳ２０２）、処理対象とされる登録区間の全ノード間の距離の総和に当る全長ΣＬｎを算出する（ステップＳ２０４）。そして、直線距離ＬＳが全長ΣＬｎに満たない場合には（ステップＳ２０６のＮＯ）、強制伸長はされずにループＥの処理を終了する。
【０１６３】
一方、直線距離ＬＳが全長ΣＬｎ以上の場合には（ステップＳ２０６のＹＥＳ）、当該登録区間が外力によって伸ばされる条件を満たしているか否かを判定する（ステップＳ２０８）。例えば、両端のノードに作用する作用力ベクトル５３０ｅを参照し、両端のノードを結ぶ線分方向成分を求める。そして、求めた線分方向成分が互いに相反し、且つ基準値を超える大きさである場合に、条件を満たしていると判定する。換言すると、新たなノードを追加挿入する位置として適当か否かを判定する。
【０１６４】
そしてゲーム演算部２１０は、条件を満たしていなければ（ステップＳ２０８のＮＯ）、ループＥの処理を終了する。一方、条件を満たしていれば（ステップＳ２０８のＹＥＳ）、ノード増減許可タイマー５５０を参照する（ステップＳ２１０）。そして、ノード増減許可タイマーの値が「０」になって前回強制伸長してからの経過時間が所定基準に達していれば（ステップＳ２１０のＹＥＳ）、両端のノードを各々に作用する力の方向に応じて連結子４の長さだけ移動制御する（ステップＳ２１２）。ここでいう移動には、作用力の関係によっては移動されずに動かない場合も含まれる。そして、両端ノードを移動させたならば、移動した両端ノードとそれらに対して区間内側で隣接するノードとの間に新しいノードを追加する（ステップＳ２１４）。つまり、任意伸長処理と同様に、骨格モデルＢＭに新たなノードが追加されることによって、プレーヤキャラクタＣＰが伸びることになる。
【０１６５】
次いで、ゲーム演算部２１０は、強制伸長がなされたのでノード増減許可タイマーをリセットしてリスタートし（ステップＳ２１６）、当該処理対象の登録区間に対するループＥの処理を終了する。
【０１６６】
以上の強制伸長処理によって、基準値以上の引き伸ばす力が作用している場合に伸長させることでプレーヤキャラクタＣＰを簡単な処理で伸ばすことができる。これを図示すると、例えば図２２および図２３のように表現できる。
【０１６７】
図２２および図２３は、本実施形態における強制伸長の概念を説明するための図であって、骨格モデルＢＭを俯瞰した図に相当する。
図２２は、他のオブジェクトとの接触が無い状態で、プレーヤキャラクタＣＰを伸長する力が作用している場合を示している。このケースの場合、他のオブジェクトとの接触が無いので、全体が一つの登録区間と見なされる。図２２（ａ）に示すように、骨格モデルＢＭの前端ノード２ｆｒと後端ノード２ｒｒ夫々に互いに反対方向に向いて働く操作力ｆ１，ｆ２が作用している。しかし、この段階では骨格モデルＢＭが湾曲した状態にあり、前端ノード２ｆｒから後端ノード２ｒｒまでの直線距離ＬＳは全長ΣＬｎに満たない。したがって、新たなノードは追加されない。しかし、両操作力によって骨格モデルＢＭが左右に引っ張られて、図２２（ｂ）〜（ｃ）に示すように変化して骨格モデルＢＭが直線状態に至ると、前端ノード２ｆｒから後端ノード２ｒｒまでの直線距離ＬＳは全長ΣＬｎ以上の条件を満たす。この状態で依然前端ノード２ｆｒと後端ノード２ｒｒに相反する基準値以上の大きさの力（図中、Ｆ１及びＦ３）が作用していれば、ノード２ｆｒとノード２ｒｒはそれぞれ図の左側及び右側に連結子４の長さだけ移動される。そして、これら両端ノードと隣接し連結するノード２ｍ或いはノード２ｎとの間に新たなノード２ａｄがそれぞれ追加されて、骨格モデルＢＭが伸ばされることとなる。
【０１６８】
図２３は、他のオブジェクトとの接触が有る状態で、プレーヤキャラクタＣＰを伸長する力が作用している場合を示している。図２３（ａ）に示すように、プレーヤキャラクタＣＰが車のおもちゃ１２を回避して左旋回しようとしたところ、おもちゃ１２にノード２ｍ、ノード２ｎおよび後端ノード２ｒｒで接触し、ノード２ｍで謂わば「引っかかってしまった」状態になっている。尚、破線の円がヒット判定領域６を示している。
【０１６９】
このケースでは、前端ノード２ｆｒとノード２ｍを端とする登録区間ＳＣ１と、ノード２ｍとノード２ｎを端とする登録区間ＳＣ２と、ノード２ｎと後端ノード２ｒｒを端とする登録区間ＳＣ３とが登録されることになる。そして、この状態で左旋回を続けようとすると、図２３（ｂ）に示すように、ノード２ｍには前端ノード２ｆｒに作用する操作力Ｆ１の反力として外力Ｆ３が作用し、この操作力Ｆ１と外力Ｆ３との登録区間ＳＣ１の線分方向成分が基準以上の大きさに達していれば登録区間ＳＣ１が伸ばされる。換言すると、登録区間ＳＣ１の両端のノードには、複数の外力が作用しており、それら複数の外力の方向が離反方向で且つ離反力の大きさが所定の超過力条件を満たしているので、両端のノードの隣接位置に新たなノードが追加挿入される。
【０１７０】
図２３（ａ）の状態では、登録区間ＳＣ１は湾曲状態にあるので新たなノードが追加されることなく、図２３（ｂ）のように直線状態になった後、図２３（ｃ）のように登録区間ＳＣ１において区間両端部にそれぞれ新たなノード２ａｄが追加される。この結果、プレーヤキャラクタＣＰはおもちゃ１２に引っかかったところから前方部分のみが伸びるといった、伸縮自在なキャラクタのそれらしい動きを実現し、しかも簡単な処理で実現することができる。尚、同図の例ではノード２ｍが作用する力の関係で所定の基準値以上に動かない状態の場合には、図の右方向には伸びないと判断して、ノード２ｆｒとノード２ｋとの間に新たなノード２ａｄを追加し、ノード２ｋとノード２ｍとの間には追加しない構成としても良い。
【０１７１】
また、本実施形態における強制伸長処理では、ノード増減許可タイマーを用いて、伸長制御の実行タイミングを制限する構成を有している。例えば、ステップＳ２１４でノード増減許可タイマーをリセット後にリスタートすることによって、次の制御サイクルでステップＳ２１０に処理が移行しても、タイマーが基準値に達していなければノードの追加は実行されないことになり、やがて十分に時間が経過した時点でステップＳ２１０に処理が移行するとノードの追加が実行されることになる。つまり強制伸長もまた、任意伸長と同様にある一定時間間隔で行われることとなり、見かけ上短期間の間にズルズルと伸びるのではなくゆっくりと時間的な溜めを作りながら伸びるように表現される。結果、強く引っ張られるのに抵抗しつつ止む無く伸びてしまっているといった印象をプレーヤに与え、いかにもプレーヤキャラクタＣＰが伸ばされている感じを与えることができる。
【０１７２】
さて、強制伸長処理を終了したならば、ゲーム演算部２１０は図９のフローに戻り、次いでノード移動処理を実行してプレーヤキャラクタＣＰを移動させる（ステップＳ１２）。
【０１７３】
図２４は、本実施形態におけるノード移動処理の流れを説明するためのフローチャートである。本実施形態では、直列状の関節構造を成す骨格モデルＢＭの各ノードの移動を制御することによって、プレーヤキャラクタＣＰの移動を制御する。そして、骨格モデルＢＭには、前端ノードおよび後端ノードそれぞれに、右アナログレバー１２３６、左アナログレバー１２３８からの操作入力に応じた操作力が設定される。つまり、基本的に骨格モデルＢＭは二つの力影響を考慮して移動制御される。移動制御を正確に行うには、骨格モデルＢＭの各ノードに作用する作用力ベクトル５３０ｅについて運動方程式を解けば良いことが容易に分かる。しかし、プレーヤキャラクタＣＰは伸縮自在なキャラクタであり、状況によっては多数のノードを有することとなり、運動方程式を解く手法では多大な処理負荷となりゲームとしての応答性を損なう恐れがある。
【０１７４】
そこで、本実施形態では、前端ノードを最初に動かし、それに引き続いて他のノードが移動した条件で求めた第１移動予定位置と、後端ノードを最初に動かし、それに引き続いて他のノードが移動した条件で求めた第２移動予定位置とに基づいて、真の移動予定位置を求めることで処理負荷の増加を軽減する。
【０１７５】
つまり、図２４に示すように、ゲーム演算部２１０は、先ず第１移動予定位置座標算出処理を実行して全ノードについての第１移動予定位置を求め（ステップＳ２３０）、次いで第２移動予定位置座標算出処理を実行して全ノードについての第２移動予定位置を求める（ステップＳ２３２）。
【０１７６】
図２５は、本実施形態における第１移動予定位置座標算出処理の流れを説明するためのフローチャートである。同図に示すように、第１移動予定位置座標算出処理では先ず、ゲーム演算部２１０は前端ノードから連結順に全てのノードについてループＦの処理を実行する（ステップＳ２５０〜２７８）。
【０１７７】
ループＦでは先ず、処理対象のノードの連結順を判定する（ステップＳ２７２）。
処理対象ノードの前端から数えた連結順が「１」の場合（ステップＳ２７２の「１」）、つまり処理対象が前端ノードである場合には、前端ノードに作用している作用力ベクトル５３０ｅをもとに運動方程式を解いて、ゲーム画面の次の描画タイミングにおける位置座標を算出し、これを第１移動予定位置座標として記憶部５００に第１移動予定位置データ５３４の移動予定位置座標５３４ｃに格納する（ステップＳ２５４）。
【０１７８】
次いでゲーム演算部２１０は、処理対象ノードの第１定数ｋ１を算出する（ステップＳ２７６）。第１定数ｋ１は、処理対象ノードから前端ノードまでの距離に相当する。本実施形態では、連結子４が固定長Ｌなので「連結順−１」の値を、第１移動予定位置データ５３４の第１定数値５３４ｄに格納する。そして、前端ノードに対するループＦの処理を終了する。
【０１７９】
次に、図２７（ａ）を参照しながら処理対象ノードの前端から数えた連結順が「２」の場合について説明する。尚、移動前の現在のノードをハッチング付きで表現している。
処理対象ノードの前端から数えた連結順が「２」の場合（ステップＳ２５２の「２」）、つまり処理対象が前端ノード２ｆｒの次に連結するノード２ｂである場合、ゲーム演算部２１０は、先に求めた前端ノード２ｆｒの第１移動予定位置座標Ｐ１を中心に、連結子４の固定長Ｌを半径とした当該処理対象ノードの移動先候補球面１４を算出する（ステップＳ２５６）。
【０１８０】
次いで、処理対象ノード２ｂに作用する作用力Ｆ４の作用方向直線と、算出した移動先候補球面との交点Ｐｃを算出する（ステップＳ２５８）。更に、前端ノードの作用力ベクトルＦ１の作用方向逆向きを中心として、ノード２ｆｒに対する連結子４が取りうる拘束角度範囲θｒを求める（ステップＳ２６０）。拘束角度範囲θｒの角度の幅は、ノード２と連結子４との結合角度に設定された角度範囲θと同じである。そして、先に求めた移動先候補球面１４から拘束角度範囲θｒに含まれる移動候補領域１６を算出する（ステップＳ２６８）。この移動候補領域１６が、ノードと連結子との拘束条件に従った結果、連結順「２」のノードが移動し得る範囲ということになる。
【０１８１】
そこで次に、ゲーム演算部２１０は、ステップＳ２５８で求めた交点Ｐｃがこの移動候補領域１６内に存在するか否かを判定する（ステップＳ２７０）。領域内に存在する場合には（ステップＳ２７０のＹＥＳ）、交点Ｐｃを処理対象ノードの第１移動予定位置座標とし（ステップＳ２７２）、連結順を第１定数ｋ１として（ステップＳ２７６）、ループＦの処理を終了する。図２７（ａ）のケースでは、交点Ｐｃは移動候補領域１６内に存在するので、同点が第１移動予定位置座標となる。
【０１８２】
一方、ステップＳ２５８で求めた交点Ｐｃがこの移動候補領域内に存在しない場合には（ステップＳ２７０のＮＯ）、交点Ｐｃの最近接傍点（移動候補領域１６の交点Ｐｃよりの端の点）を移動候補領域１６から算出して第１移動予定位置座標とし（ステップＳ２７４）、連結順を第１定数ｋ１として（ステップＳ２７６）、ループＦの処理を終了する。
【０１８３】
次に、図２７（ｂ）を参照しながら処理対象ノードの前端から数えた連結順が「３」以上の場合について説明する。
処理対象ノードの前端から数えた連結順が「３」以上の場合（ステップＳ２５２の「３以上」）、ゲーム演算部２１０は、処理対象ノード２ｃより連結順が一つ前のノード２ｂの第１移動予定位置座標Ｐ２を中心に移動先候補球面１４を算出し（ステップＳ２６２）、処理対象ノード２ｃに作用する作用力ベクトルＦ５の作用方向直線と移動先候補球面１４との交点Ｐｃを算出する（ステップＳ２６４）。次いで、連結順二つ前のノードの第１移動予定位置座標Ｐ１から連結順一つ前のノードの第１移動予定位置座標Ｐ２への方向を中心として拘束角度θｒを設定する（ステップＳ２６６）。以下、処理対象ノードの連結順が「２」の場合と同様に処理して（ステップＳ２６８〜Ｓ２７６）、ループＦの処理を終了する。
尚、図２７（ｂ）のケースでは、交点Ｐｃが移動候補領域１６内に存在しないので、移動候補領域１６の交点Ｐｃよりの端の点Ｐ３が、ノード２ｃの第１移動予定位置座標とされる。
【０１８４】
そして、全てのノードについてループＦの処理を実行したならば、ゲーム演算部２１０は、次いで第２移動予定位置座標算出処理を実行する。
図２６は、本実施形態における第２移動予定位置座標算出処理の流れを説明するためのフローチャートである。第２移動予定位置座標算出処理は、基本的に第１移動予定位置座標算出処理と同様の処理であり説明は省略する。尚、異なる点は、連結順を後端側から数え、算出した位置座標を第２移動予定位置座標とすること、そして後端からの「連結順−１」の値を第２定数ｋ２とする点である。
【０１８５】
さて、第１移動予定位置座標と、第２移動予定位置座標を求めたならば、図２４のノード移動処理のフローに戻り、ゲーム演算部２１０は次に実際に移動制御に適用される各ノードの移動先位置座標を算出し、各ノードの位置を更新して（ステップＳ２３４）、ノード移動処理を終了する。
【０１８６】
具体的には、第１予定位置座標データ５３４および第２予定位置座標データ５３６を参照し、算出対象のノード毎に求められた第１移動予定位置座標、第１係数ｋ１、第２移動予定位置座標ｋ２に基づき、次の式（１）に従って座標を求め、骨格モデル制御データ５２５の位置座標５２５ｂを変更する。
【０１８７】
移動先位置座標＝（ｋ２／（ｋ１＋ｋ２）×第１移動予定位置座標＋ｋ１／（ｋ１＋ｋ２）×第２移動予定位置座標）  ・・・・・・・・式（１）
【０１８８】
式（１）によれば、前端ノード２ｆｒに近いほど、第１移動予定位置座標に重みがおかれて移動先位置座標が求められ、後端ノード２ｒｒに近いほど第２移動予定位置座標に重みがおかれて移動先位置座標が求められる。したがって、厳密に運動方程式を解かずともある程度運動方程式に沿った動きに近い移動先位置座標を求めることができる。
【０１８９】
ノード移動処理を終了したならば、図９のフローに戻り、ゲーム演算部２１０はノード移動処理によって位置が更新された骨格モデルＢＭに基づいて外皮の形成処理を実行して、プレーヤキャラクタＰＣの表示モデルをゲーム空間内に形成する（ステップＳ１４）。
【０１９０】
次いで、ゲーム演算部２１０はゲームの終了条件を満たしているか否かを判定する（ステップＳ１６）。本実施形態では、ワーム型のプレーヤキャラクタＣＰが、さまざまな障害を越えて所定位置に辿り着いている場合、あるいは障害で体力が失われて行動不能になった場合にゲーム終了条件を満たしていると判定する。
【０１９１】
ゲーム終了条件を満たしていなければ（ステップＳ１６のＮＯ）、ステップＳ４に戻る。一方、終了条件を満たしていれば（ステップＳ１６のＹＥＳ）ゲーム終了となる。
以上の一連の処理によって、伸縮自在なプレーヤキャラクタを登場させるゲームを実現することができる。
【０１９２】
［ハードウェア構成］
次に図２８を参照して、本実施形態における家庭用ゲーム装置１２００を実現するためのハードウェア構成の一例について説明する図である。家庭用ゲーム装置１２００は、ＣＰＵ１０００、ＲＯＭ１００２、ＲＡＭ１００４、情報記憶媒体１００６、画像生成ＩＣ１００８、音生成ＩＣ１０１０、Ｉ／Ｏポート１０１２，１０１４がシステムバス１０１６により相互にデータ入出力可能に接続されている。Ｉ／Ｏポート１０１２にはコントロール装置１０２２が、Ｉ／Ｏポート１０１４には通信装置１０２４が、それぞれ接続されている。
【０１９３】
ＣＰＵ１０００は、情報記憶媒体１００６に格納されるプログラム、ＲＯＭ１００２に格納されるシステムプログラム（装置本体の初期化情報等）、コントロール装置１０２２によって入力される信号等に従って、装置全体の制御や各種データ処理を行う。
【０１９４】
ＲＡＭ１００４は、ＣＰＵ１０００の作業領域等として用いられる記憶手段であり、情報記憶媒体１００６やＲＯＭ１００２内の所与の内容、ＣＰＵ１０００の演算結果等が格納される。
【０１９５】
情報記憶媒体１００６は、プログラム、画像データ、音データ、プレーデータ等が主に格納されるものであり、情報記憶媒体として、ＲＯＭ等のメモリやハードディスクや、ＣＤ−ＲＯＭ、ＤＶＤ、ＩＣカード、磁気ディスク、光ディスク等が用いられる。尚、この情報記憶媒体１００６は、図３に示す記憶部５００に相当するものである。
【０１９６】
また、この装置に設けられている画像生成ＩＣ１００８と音生成ＩＣ１０１０により、音や画像の好適な出力が行えるようになっている。
【０１９７】
画像生成ＩＣ１００８は、ＣＰＵ１０００の命令によって、ＲＯＭ１００２、ＲＡＭ１００４、情報記憶媒体１００６等から送られる情報に基づいて画素情報を生成する集積回路であり、生成される画像信号は、表示装置１０１８に出力される。表示装置１０１８は、ＣＲＴやＬＣＤ、ＥＬＤ、プラズマディスプレイ、或いはプロジェクター等により実現され、図３に示す画像表示部３６０に相当する。
【０１９８】
また、音生成ＩＣ１０１０は、ＣＰＵ１０００の命令によって、情報記憶媒体１００６やＲＯＭ１００２に記憶される情報、ＲＡＭ１００４に格納される音データに応じた音信号を生成する集積回路であり、生成される音信号はスピーカ１０２０によって出力される。スピーカ１０２０は、図３に示す音出力部３５０に相当するものである。
【０１９９】
コントロール装置１０２２は、プレーヤがゲームに係る操作を入力するための装置であり、その機能は、レバー、ボタン、筐体等のハードウェアにより実現される。尚、このコントロール装置１０２２は、図３に示す操作入力部１００に相当するものである。
【０２００】
通信装置１０２４は装置内部で利用される情報を外部とやりとりするものであり、プログラムに応じた所与の情報を他の装置と送受すること等に利用される。尚、この通信装置１０２４は、図３に示す通信部３７０に相当するものである。
【０２０１】
そして、ゲーム処理等の上記した処理は、図３のゲームプログラム５０２等を格納した情報記憶媒体１００６と、これらプログラムに従って動作するＣＰＵ１０００、画像生成ＩＣ１００８、音生成ＩＣ１０１０等によって実現される。ＣＰＵ１０００、画像生成ＩＣ１００８、及び音生成ＩＣ１０１０は、図３に示す処理部２００に相当するものであり、主にＣＰＵ１０００がゲーム演算部２１０、画像生成ＩＣ１００８が画像生成部２６０に、音生成ＩＣ１０１０が音生成部２５０にそれぞれ相当する。
【０２０２】
尚、画像生成ＩＣ１００８、音生成ＩＣ１０１０等で行われる処理は、ＣＰＵ１０００或いは汎用のＤＳＰ等によりソフトウェア的に行ってもよい。この場合には、ＣＰＵ１０００が、図３に示す処理部２００に相当することとなる。
【０２０３】
以上、本発明を適用した第１実施形態について説明したが、本発明の適用可能な構成がこれらに限定されるものではなく、適宜構成要素の追加・削除・変更を行うことができる。
【０２０４】
例えば、本実施形態では、プレーヤキャラクタＣＰの全身を関節構造のモデルとしたが、下半身や上半身といった一部のみを関節構造のモデルとしても良い。例えば、プレーヤキャラクタＣＰをカタツムリとし、殻の部分は形状・大きさが変化せず、体の部分をプレーヤキャラクタＣＰのような関節構造を有した伸縮自在なモデルとして設定する。そして、体の部分の制御については上述の第１実施形態を適用するならば、殻から出た体部分が自在に伸び縮みするカタツムリらしい様子を表現する事ができる。
【０２０５】
また例えば、特定操作の入力方法は適宜設定することができる。
一例を挙げると、「立ち上がり」（又は「逆立ち」）姿勢の場合には、右アナログレバー１２３６又は左アナログレバー１２３８のうち、接地側に該当する一方のアナログレバーを中立状態から押し込み操作し、且つ他方のアナログレバーを上方向入力する（或いは他方のアナログレバーをゲームコントローラ１２３０外側から内側に向けて上向き半円を描くように操作入力する）としても良い。そして、「立ち上がり」姿勢の解除には、反対に一方のアナログレバーを中立状態から押し込み操作し、且つ他方のアナログレバーを下方向に入力する（或いは他方のアナログレバーをゲームコントローラ１２３０内側から外側に向けて上向き半円を描くように操作入力する）としても良い。
【０２０６】
こうした入力方法は、胴長なプレーヤキャラクタＣＰの一方の端を固定して、他方の端を持ち上げる動作を連想させるので、操作を覚え易い上にプレーヤにいかにも「立ち上がる」といった印象を与えてキャラクタの操作感を向上させることができる。また、主たる操作入力手段となる右アナログレバー１２３６又は左アナログレバー１２３８から他のプッシュボタン等に指を動かす必要がないので操作性が向上するといった効果も生む。
【０２０７】
また、本実施形態では、ノードの追加形成を前端ノードと連結順一つ後ろのノードとの間、および後端ノードと連結順一つ前のノードとの間の両方同時に行っているが、これを何れか一方ずつ交互に追加形成する構成としても良いし、何れか一方としても良い。
【０２０８】
また、第１移動予定位置座標と第２移動予定位置座標の中間点を求めるステップＳ２３４の処理は、上記実施形態の式（１）に限らず適宜他の式を設定しても良い。
【０２０９】
〔第２実施形態〕
次に、本発明を適用した第２実施形態について説明する。本実施形態は基本的に第１実施形態と同様の構成を有するが、操作入力部１００の第１方向入力部１０２および第２方向入力部１０４として加速度センサを用いる点が異なる。尚、第１実施形態と同様の構成要素については同じ符号を付与しその説明は省略する。また符合の付与如何に係らず第１実施形態と同様の構成についての説明は省略し、特徴点についてのみ説明するものとする。
【０２１０】
図２９は、本実施形態における家庭用ゲーム装置１２００Ｂの構成を示す図である。同図に示すように、本実施形態における家庭用ゲーム装置１２００Ｂは、スティック状の２本のゲームコントローラ１２３０Ｒおよび１２３０Ｌを有する。
【０２１１】
ゲームコントローラ１２３０Ｒおよび１２３０Ｌは、それぞれ第１実施形態における右アナログレバー１２３６および左アナログレバー１２３８に相当する方向入力デバイスとして十字方向キー１２３７を備え、親指を十字方向キー１２３７に添え、あたかも棒を持つ要領で左右両手に一本ずつ持って操作される。そして、内蔵する無線通信機１２３９によって制御ユニット１２１０に実装された無線通信機１２１４と無線通信を実現して、ゲーム装置本体１２０１に操作入力信号を出力する。また、ゲームコントローラ１２３０Ｒおよび１２３０Ｌは、それぞれ加速度センサ１２４０を内蔵しており、各コントローラの姿勢変化に伴う加速度を検出し操作入力信号として出力する。
【０２１２】
尚、加速度センサ１２４０の代わりに傾斜センサを用いる構成としても良い。また、十字方向キー１２３７に代えてアナログレバーやタッチパッドを設ける構成としても良いのは勿論である。電源は図示しない内蔵バッテリーから供給されるものとする。
【０２１３】
図３０は、本実施形態における任意伸長操作の入力方法について説明する図である。図３０（ａ）に示すように、本実施形態ではゲームコントローラ１２３０Ｒおよび１２３０Ｌから同時に、且つ互いに離反する方向に基準値以上の加速度が検出された場合に、任意伸長操作が入力されたと判定する。そして、任意伸長操作が入力されたと判定されたならば、図３０（ｂ）に示すように第１実施形態と同様にして骨格モデルＢＭに新たなノードが追加形成されてプレーヤキャラクタＣＰが伸ばされる。
【０２１４】
また、任意短縮操作の判定も、ゲームコントローラ１２３０Ｒおよび１２３０Ｌの姿勢変化の検出に基づいてなされる。
図３１は、本実施形態における任意短縮操作の入力方法について説明する図である。図３１（ａ）に示すように、本実施形態ではゲームコントローラ１２３０Ｒおよび１２３０Ｌから同時に、且つ互いに近接する方向に基準値以上の加速度が検出された場合に、任意短縮操作が入力されたと判定する。そして、任意短縮操作が入力されたと判定されたならば、図３１（ｂ）に示すように第１実施形態と同様にして骨格モデルＢＭからノードが削除されてプレーヤキャラクタＣＰが縮められる。
【０２１５】
本実施形態によれば、第１実施形態と同様の効果を奏するとともに、ゲームコントローラの姿勢変化によってプレーヤキャラクタＣＰの伸長・短縮を任意に操作できるようになる。したがって、プレーヤは十字方向キー１２３７等から指を離すことなく、任意伸長ならびに任意短縮の操作入力をする事が出来るので操作性が向上する。また、任意伸長操作および任意短縮操作の入力方法が、ゲームコントローラ１２３０Ｒおよび１２３０Ｌを引き離すような動作或いは縮めるような動作をイメージさせるので、幼年者でも操作を容易に覚える事が可能となる。
【０２１６】
〔第３実施形態〕
次に、本発明を適用した第３実施形態について説明する。本実施形態は、基本的に第１及び第２実施形態と同様の構成を有するが、プレーヤキャラクタの伸縮に係る制御が異なる。尚、伸縮に係る制御の他は第１及び第２実施形態と同様にして実現できるので、ここでの説明は省略し、伸縮制御方法の違いについてのみ述べることとする。
【０２１７】
図３２は、本実施形態におけるプレーヤキャラクタのモデル構成を説明するための図である。同図に示すように、本実施形態におけるプレーヤキャラクタＣＰは、第１及び第２実施形態と同様に頭ＣＰｈおよび尾ＣＰｔ方向を伸身前後方向として胴ＣＰｂの太さをそのままに伸縮自在なキャラクタとして設定されている。図３２（ａ）に示すように、本実施形態における骨格モデルＢＭ３は、基本的に第１実施形態における骨格モデルＢＭと同様であるが、連結子長さＬ３（Ｌ３ａ，Ｌ３ｂ，Ｌ３ｃ。＝ノード２相互の距離。）が固定値ではなく増減可能な値とされる。連結子長さＬ３の値は、骨格モデル制御データ５２５に格納され、連結子４毎（＝ノード間毎）に固有の値を持つように設定される
【０２１８】
次に具体的な処理の流れについて説明する。
図３３は、本実施形態における任意伸縮処理の流れを説明するためのフローチャートである。同図に示すように、任意伸縮処理Ｃでは先ず、ゲーム演算部２１０が第１実施形態におけるノード増減許可タイマー５５０に相当する伸縮許可カウントを所定数加算し（ステップＳ４００）、加算した後の伸縮許可タイマーのカウント値が基準値に達しているか否かを判定する（ステップＳ４０２）。
【０２１９】
伸縮許可タイマーのカウント値が基準値に達していなければ（ステップＳ４０２のＮＯ）、任意伸縮処理はそのまま終了する。
伸縮許可タイマーのカウント値が基準値に達している場合（ステップＳ４０２のＹＥＳ）、処理部２００は更に所定の任意伸長操作が入力されているか否かを判定する（ステップＳ４０４）。第１実施形態と同様の構成とするならば、右アナログレバー１２３６から右方向入力され、同時に左アナログレバー１２３８から同時入力と見なせる程度の時間差で、左方向入力されたか否かを判定する。
【０２２０】
そして、任意伸長操作が入力されたと判定された場合（ステップＳ４０４のＹＥＳ）、ゲーム演算部２１０は、骨格モデルＢＭ３の中心位置１３を求め、この中心位置１３から各ノードへの方向と相対距離を算出する（ステップＳ４０６）。中心位置１３は、例えば骨格モデルＢＭ３のノード２の総数が奇数ならば中間位置のノードの座標値とし、偶数の場合には中央の連結子４の中間位置とする。
【０２２１】
次に、ゲーム演算部２１０は、各ノードの位置を、中心位置１３を原点にして骨格モデルの中心位置１３からの方向をそのままに、相対距離を所定比だけ拡大した位置に変更し（ステップＳ４０８）、伸縮許可タイマーをリセットしてリスタートする（ステップＳ４１６）。すなわち、ステップＳ４０６〜Ｓ４０８の処理によって、骨格モデルＢＭ３の中心位置１３をそのままに、相似条件を維持して所定比だけ拡大する。
【０２２２】
この結果、図３４に示すように、ゲームコントローラ１２３０で右アナログレバー１２３６と左アナログレバー１２３８の両レバーから同時入力で相反方向への操作入力が為されると、骨格モデルＢＭ３は関節部位の数を維持したまま連結子４が伸ばされる。そして、この状態の骨格モデルＢＭ３に基づいて、プレーヤキャラクタＣＰの表示モデルはポリゴンを形成することで、プレーヤキャラクタＣＰを胴ＣＰｂが伸びるように表示制御することが可能となる。
【０２２３】
一方、任意伸長操作が入力されていない場合には（ステップＳ４０４のＮＯ）、ゲーム演算部２１０は、任意短縮操作が入力されたか否かを判定する（ステップＳ４１０）。
任意短縮操作が入力されなければ（ステップＳ４１０のＮＯ）、任意伸縮処理Ｃを終了する。任意短縮操作が入力されたと判定した場合には（ステップＳ４１０のＹＥＳ）、ゲーム演算部２１０は、骨格モデルＢＭ３の中心位置１３を求め、この中心位置１３から各ノードへの方向と相対距離を算出する（ステップＳ４１２）。そして、各ノードの位置を、骨格モデルの中心位置１３からの方向をそのままにして、中心位置１３を原点にして相対距離を所定比だけ縮小した位置に変更し（ステップＳ４１４）、伸縮許可タイマーをリセットしてリスタートする（ステップＳ４１６）。
【０２２４】
すなわち、ステップＳ４１２〜Ｓ４１４の処理によって、骨格モデルＢＭ３の中心位置１３をそのままに、相似条件を維持して所定比だけ縮小する。この結果、骨格モデルＢＭ３は関節部位の数は維持したまま全長が縮められ、この状態の骨格モデルＢＭ３に基づいて表示モデルが形成されることによって、プレーヤキャラクタＣＰ３が縮むように表示制御されることとなる。
【０２２５】
したがって、少ない演算負荷でキャラクタを自在に伸縮することができる。しかも、伸縮のための操作入力は、通常、人がモノ（特に、紐状や棒状のモノ）を伸ばす感覚に似せられており、従来にない簡潔で直感的な操作でキャラクタの伸長を操作できる。
【０２２６】
尚、ヒット判定モデルＨＭについては、第１実施形態のようにヒット判定領域６の大きさ（例えば、図２の半径Ｒ）を連結子長さＬ３に連動させるよりも、骨格モデルＢＭ３の各連結子長さＬ３の増減にかかわらず初期値（例えば、図２の半径Ｒ）を維持し、連結子長さＬ３が所定の基準を上回った箇所を抽出し、当該ノード間の中間位置に新たにヒット判定領域６を増設する構成とするのが望ましい。
【０２２７】
次に、本実施形態における強制伸長処理について説明する。
図３５は、本実施形態における強制伸長処理Ｃの流れについて説明するためのフローチャートである。同図に示すように、基本的には第１実施形態における強制伸長処理と同様の流れを有する。具体的には、ゲーム演算部２１０は全ての登録区間についてループＨを実行する（ステップＳ４２０〜Ｓ４３８）。
【０２２８】
ループＨでは、先ず区間登録データ５３２を参照し、処理対象の登録区間における両端のノードの直線距離ＬＳを算出し（ステップＳ４２２）、当該登録区間の全ノード間の距離の総和に当る全長ΣＬｎを算出する（ステップＳ４２４）。そして、直線距離ＬＳが全長ΣＬｎに満たない場合には（ステップＳ４２６のＮＯ）、強制伸長はされずにループＨの処理を終了する。
【０２２９】
一方、直線距離ＬＳが全長ΣＬｎ以上の場合には（ステップＳ４２６のＹＥＳ）、当該登録区間が外力によって伸ばされる条件を満たしているか否かを判定する（ステップＳ４２８）。
【０２３０】
条件を満たしていなければ（ステップＳ４２８のＮＯ）、現在の処理対象区間に関するループＨの処理を終了する。
一方、条件を満たしていれば（ステップＳ４２８のＹＥＳ）、第１実施形態のノード増減許可タイマー５５０に相当する伸縮許可タイマーの値が所定基準に達していれば（ステップＳ４３０のＹＥＳ）、処理対象区間の両端ノードを作用する力に応じて所定距離だけ移動させる（ステップＳ４３２）。そして、両端ノードを除いて処理対象区間に含まれる他のノードを等間隔な位置に移動して当該登録区間に含まれる連結子４の長さを更新し（ステップＳ４３４）、伸縮許可タイマーをリセットしてリスタートして（ステップＳ４３６）、ループＨを終了する。
【０２３１】
図３６は、本実施形態における他のオブジェクトとの接触が有る状態で、プレーヤキャラクタＣＰが伸長する例を示す概念図である。図３６（ａ）に示すように、プレーヤキャラクタＣＰが車のおもちゃ１２を回避して左旋回しようとしたところ、おもちゃ１２にノード２ｍ、ノード２ｎおよび後端ノード２ｒｒで接触し、ノード２ｍで謂わば「引っかかってしまった」状態になっている。
【０２３２】
このケースでは、前端ノード２ｆｒとノード２ｍを端とする登録区間ＳＣ１と、ノード２ｍとノード２ｎを端とする登録区間ＳＣ２と、ノード２ｎと後端ノード２ｒｒを端とする登録区間ＳＣ３とが登録されることになる。そして、この状態で左旋回を続けようとすると、図３６（ｂ）に示すように、ノード２ｍには前端ノード２ｆｒに作用する操作力Ｆ１の反力として外力Ｆ３が作用し、この操作力Ｆ１と外力Ｆ３との登録区間ＳＣ１の線分方向成分が基準以上の大きさに達していれば登録区間ＳＣ１が伸ばされることになる。
【０２３３】
図３６（ａ）の状態では、登録区間ＳＣ１は湾曲状態にあるので連結子４ａ及び４ｂの連結子長は変化しない。しかし、図３６（ｂ）のように直線状態になった後更に作用力Ｆ１とＦ３が作用し続けている場合には、図３６（ｃ）のように、先ず作用力Ｆ１及びＦ３に応じて前端ノード２ｆｒとノード２ｍが移動される。そして、該当登録区間内に含まれるノード２ｋを、前端ノード２ｆｒとノード２ｍとを結ぶ直線状に等距離に配置する。結果、連結子４ａ及び４ｂが伸ばされ、プレーヤキャラクタＣＰはおもちゃ１２に引っかかったところから前方部分（登録区間ＳＣ１）のみが伸びることとなる。よって、登録区間を単位にして、骨格モデルＢＭ３の関節部位の数をそのままにプレーヤキャラクタＣＰの部分をより少ない演算負荷で伸長させることが可能となる。
【０２３４】
尚、図３６に示したように、強制伸長処理によって結果として連結子４の長さがバラバラになることが想定される。あまり連結子の長さに大きな違いが生じるとプレーヤキャラクタＣＰの見かけを損なう恐れがある。そこで、登録区間が一つしかない場合には連結子長さを平均化するように、両端ノードを除く中間のノードの位置を補正する処理を行うと好適である。
【０２３５】
〔変形例〕
以上、本発明を適用した実施形態について説明したが、本発明の適用可能な構成がこれらに限定されるものではなく、適宜構成要素の追加・削除・変更を行うことができる。
【０２３６】
例えば、第２実施形態において、左右のゲームコントローラを同時に、且つ基準値以上の大きさで上方向に持ち上げる動作をすることで、これを加速度センサ１２４０で検出し、「浮揚」の操作入力とすることもできる。この場合、ゲームコントローラ１２３０Ｒおよび１２３０Ｌの姿勢変化が、いかにもキャラクタを持ち上げるイメージを与え、操作性をより一層向上させることができる。
【０２３７】
また、上記実施形態では、プレーヤキャラクタの伸長・短縮操作を例に挙げたがこれに限るものではない。例えば、プレーヤキャラクタが使用するアイテムの伸長・短縮制御に適用することもできる。また、固形のオブジェクトに限らず、シャボン玉などの不定形なオブジェクトの伸長・短縮制御にも適用できる。
【０２３８】
また、上記実施形態で示された伸縮操作入力の方法を適用する場合、伸縮対象となるオブジェクトには必ずしも関節構造を設けなくとも良い。例えば、オブジェクトを大径パイプの中空部内に小径パイプを引き出し可能に挿入した２段式伸縮自在ストローといった構造としても良い。
そして、例えば第１実施形態と同様にゲームコントローラ１２３０で右アナログレバー１２３６と左アナログレバー１２３８の両レバーから同時入力と見なせる程度の時間差で互いに相反方向へ操作入力が為された場合に、大径パイプと小径パイプとの相対位置を離反させるようにして増加させて伸長する。反対に、右アナログレバー１２３６と左アナログレバー１２３８の両レバーから同時入力と見なせる程度の時間差で、互いに近接する方向へ操作入力が為された場合に、両パイプの相対位置を近接させるようにして減少させて伸縮する。よって、伸縮対象となるオブジェクトには必ずしも関節構造を設けなくとも簡潔で直感的な伸縮操作を実現できる。
【図面の簡単な説明】
【０２３９】
【図１】第１実施形態における家庭用ゲーム装置の構成例を説明するための図。
【図２】プレーヤキャラクタのモデル構成を説明するための図。
【図３】機能構成の一例を示す機能ブロック図。
【図４】キャラクタ制御データのデータ構成例を示す図。
【図５】作用力データのデータ構成例を示す図。
【図６】区間登録データのデータ構成例を示す図。
【図７】第１移動予定位置データデータ構成の一例を示す図。
【図８】第２移動予定位置データデータ構成の一例を示す図。
【図９】第１実施形態における処理の流れを説明するためのフローチャート。
【図１０】任意伸縮処理の流れを説明するためのフローチャート。
【図１１】第１実施形態における任意伸長操作と制御の概念の関係を示す図。
【図１２】第１実施形態における任意短縮操作と制御の概念の関係を示す図。
【図１３】作用力設定処理の流れを説明するためのフローチャート。
【図１４】操作力設定処理の流れを説明するためのフローチャート。
【図１５】操作力方向補正処理の流れを説明するためのフローチャート。
【図１６】操作力方向補正処理の概念を説明するための図。
【図１７】特定力設定処理の流れについて説明するためのフローチャート。
【図１８】後端を接地させた立ち上がり姿勢へ変化させる過程を示す概念図。
【図１９】前端を接地させた逆立ち姿勢へ変化させる過程を示す概念図。
【図２０】外力設定処理の流れを説明するためのフローチャート。
【図２１】強制伸長処理の流れを説明するためのフローチャート。
【図２２】プレーヤキャラクタと他のオブジェクトとの接触が無い状態における強制伸長の概念を説明するための図。
【図２３】プレーヤキャラクタと他のオブジェクトとの接触が有る状態における強制伸長の概念を説明するための図。
【図２４】ノード移動処理の流れを説明するためのフローチャート。
【図２５】第１移動予定位置座標算出処理の流れを説明するためのフローチャート。
【図２６】第２移動予定位置座標算出処理の流れを説明するためのフローチャート。
【図２７】ノードの移動処理の概念を説明するための図。
【図２８】ハードウェア構成の一例について説明する図。
【図２９】第２実施形態における家庭用ゲーム装置の構成を示す図。
【図３０】第２実施形態における任意伸長操作の入力方法について説明する図。
【図３１】第２実施形態における任意短縮操作の入力方法について説明する図。
【図３２】第３実施形態におけるプレーヤキャラクタのモデル構成を説明するための図。
【図３３】第３実施形態における任意伸縮処理の流れを説明するためのフローチャート。
【図３４】第３実施形態における任意伸長操作と制御の概念の関係を示す図。
【図３５】第３実施形態における強制伸長処理の流れを説明するためのフローチャート。
【図３６】第３実施形態における他のオブジェクトとの接触が有る状態で、プレーヤキャラクタＣＰが伸長する例を示す概念図。
【符号の説明】
【０２４０】
２    ノード
２ｆｒ    前端ノード
２ｒｒ    後端ノード
４    連結子
１００    操作入力部
１０２    第１方向入力部
１０４    第２方向入力部
２００    処理部
２１０    ゲーム演算部
２１２    伸縮キャラクタ制御部
５００    処理部
５０２    ゲームプログラム
５２４    キャラクタ制御データ
５２５    骨格モデル制御データ
５３０    作用力データ
５３２    区間登録データ
ＢＭ    骨格モデル
ＣＰ    プレーヤキャラクタ
ＣＰｈ    頭
ＣＰｂ    胴
ＣＰｔ    尾
【図１】
2008186325.tif 000003
【図２】
2008186325.tif 000004
【図３】
2008186325.tif 000005
【図４】
2008186325.tif 000006
【図５】
2008186325.tif 000007
【図６】
2008186325.tif 000008
【図７】
2008186325.tif 000009
【図８】
2008186325.tif 000010
【図９】
2008186325.tif 000011
【図１０】
2008186325.tif 000012
【図１１】
2008186325.tif 000013
【図１２】
2008186325.tif 000014
【図１３】
2008186325.tif 000015
【図１４】
2008186325.tif 000016
【図１５】
2008186325.tif 000017
【図１６】
2008186325.tif 000018
【図１７】
2008186325.tif 000019
【図１８】
2008186325.tif 000020
【図１９】
2008186325.tif 000021
【図２０】
2008186325.tif 000022
【図２１】
2008186325.tif 000023
【図２２】
2008186325.tif 000024
【図２３】
2008186325.tif 000025
【図２４】
2008186325.tif 000026
【図２５】
2008186325.tif 000027
【図２６】
2008186325.tif 000028
【図２７】
2008186325.tif 000029
【図２８】
2008186325.tif 000030
【図２９】
2008186325.tif 000031
【図３０】
2008186325.tif 000032
【図３１】
2008186325.tif 000033
【図３２】
2008186325.tif 000034
【図３３】
2008186325.tif 000035
【図３４】
2008186325.tif 000036
【図３５】
2008186325.tif 000037
【図３６】
2008186325.tif 000038