(57)【要約】【課題】処理負荷の増大を招くことなく紐状キャラクタのおもしろみを生かしたアプリケーションを提供すること。紐状キャラクタを用いて接続表現を実現することができる。【解決手段】本プログラムは、関節部位を直列に連結した関節構造を有する紐状部分を含むキャラクタオブジェクトを設定する設定手段と、操作入力情報又は所与のイベントに基づき前記キャラクタオブジェクトの前記関節に仮想力を作用させて前記関節を移動させることで前記キャラクタオブジェクトを動かすキャラクタオブジェクト制御手段と、複数のキャラクタオブジェクトが所与の接続条件を満たす場合には、これらのキャラクタオブジェクトの接続を行う接続手段と、してコンピュータを機能させ、前記接続手段は、所与のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節と、他のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節との位置関係が所与の接続条件を満たす場合に接続を行う。【選択図】図２７
2011143123.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、キャラクタオブジェクトが移動動作する仮想空間の画像を生成させるためのプログラムであって、
関節部位を直列に連結した関節構造を有する紐状部分を含むキャラクタオブジェクトを設定する設定手段と、
操作入力情報又は所与のイベントに基づき前記キャラクタオブジェクトの前記関節に仮想力を作用させて前記関節を移動させることで前記キャラクタオブジェクトを動かすキャラクタオブジェクト制御手段と、
複数のキャラクタオブジェクトが所与の接続条件を満たす場合には、これらのキャラクタオブジェクトの接続を行う接続手段と、してコンピュータを機能させ、
前記接続手段は、
所与のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節と、他のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節との位置関係が所与の接続条件を満たす場合に接続を行うことを特徴とするプログラム。
【請求項２】
請求項１において、
前記接続手段は、
キャラクタオブジェクトの直列に連結された関節構造の端に位置する関節同士を連結して、キャラクタオブジェクトの接続を行うことを特徴とするプログラム。
【請求項３】
請求項１又は２において、
前記キャラクタオブジェクトの紐状部分を切断して複数の切断されたキャラクタオブジェクトに分割する切断処理を行う切断手段と、してコンピュータを機能させ、
前記切断手段は、
複数の切断されたキャラクタオブジェクトが存在する状態で切断処理を行う場合には、切断対象となるキャラクタオブジェクトを選択する処理をおこない、選択されたキャラクタオブジェクトに対して切断処理を施し、切断されたキャラクタオブジェクトをさらに複数の切断されたキャラクタオブジェクトに分割し、
前記接続手段は、
所与の切断されたキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節と、他の切断されたキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節との位置関係が所与の接続条件を満たす場合に接続を行うことを特徴とするプログラム。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記接続条件は、
前記切断処理が行われた後の所定時間内は切断されたキャラクタオブジェクト同士についての接続は行わないことを特徴とするプログラム。
【請求項５】
請求項１乃至４のいずれかにおいて、
前記接続手段は、
一括接続イベントが発生した場合には、１つのキャラクタオブジェクトから切断により分割されたすべてのキャラクタオブジェクトを接続することを特徴とするプログラム。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記仮想空間に前記キャラクタオブジェクトとは異なる他のオブジェクトを配置する処理又は移動させる処理を行う障害物設定手段と、
前記キャラクタオブジェクトと前記他のオブジェクトとの接触検出を行う接触検出手段と、してさらにコンピュータを機能させ、
前記キャラクタオブジェクト制御手段は、
前記キャラクタオブジェクトと前記他のオブジェクトとの接触検出結果に基づき、前記キャラクタオブジェクトの関節に仮想力を作用させて、前記関節部位を移動させることで前記キャラクタオブジェクトを動かすことを特徴とするプログラム。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記キャラクタオブジェクト制御手段は、
前記操作入力情報として、前記仮想空間の画像が表示された表示部における接触位置の移動履歴情報を含む操作入力情報を取得し、前記接触位置の移動履歴情報に基づき、関節部位に作用させる仮想力の方向を決定することを特徴とするプログラム。
【請求項８】
請求項１乃至７のいずれかにおいて、
前記キャラクタオブジェクト制御手段は、
前記キャラクタオブジェクトの関節に作用する仮想力に基づき、前記キャラクタオブジェクトの紐状部分を伸縮させることを特徴とするプログラム。
【請求項９】
請求項１乃至８のいずれかにおいて、
前記キャラクタオブジェクト制御手段は、
前記仮想力による関節の移動位置を演算して、演算結果に基づき隣り合う関節間の連結子の長さを可変に制御し、連結子の長さが所与の閾値を超えると、当該連結子で連結された関節間に新たな関節を追加することを特徴とするプログラム。
【請求項１０】
請求項１乃至９のいずれかにおいて、
前記キャラクタオブジェクト制御手段は、
前記仮想力による関節の移動位置を演算して、演算結果に基づき隣り合う関節間の連結子の長さを可変に制御し、連結子の長さが所与の閾値を下回ると、当該連結子で連結された関節のいずれかを削除して、削除された関節に接続されていた２つの関節を新たに連結させることを特徴とするプログラム。
【請求項１１】
請求項１乃至１０のいずれかにおいて、
前記キャラクタオブジェクト制御手段は、
前記仮想空間の画像が表示される表示部を含む装置に設けられた加速度センサからの加速度情報を取得し、取得した前記加速度情報に基づき、前記キャラクタオブジェクトの前記関節部位に仮想力を作用させて前記関節部位を移動させることで前記キャラクタオブジェクトを動かすことを特徴とするプログラム。
【請求項１２】
請求項１乃至１１のいずれかに記載のプログラムが記憶されたコンピュータ読み取り可能な情報記憶媒体。
【請求項１３】
キャラクタオブジェクトが移動動作する仮想空間の画像を生成する画像生成装置であって、
関節部位を直列に連結した関節構造を有する紐状部分を含むキャラクタオブジェクトを設定する設定手段と、
操作入力情報又は所与のイベントに基づき前記キャラクタオブジェクトの前記関節に仮想力を作用させて前記関節を移動させることで前記キャラクタオブジェクトを動かすキャラクタオブジェクト制御手段と、
複数のキャラクタオブジェクトが所与の接続条件を満たす場合には、これらのキャラクタオブジェクトの接続を行う接続手段と、を含み、
前記接続手段は、
所与のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節と、他のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節との位置関係が所与の接続条件を満たす場合に接続を行うことを特徴とする画像生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータに、キャラクタオブジェクトの登場する所与のアプリケーション画像やゲーム画像を生成させるためのプログラム、情報記憶媒体及び画像生成装置に関する。
【背景技術】
【０００２】
近年のビデオゲームでは、ゲーム中に登場するキャラクタに、骨格モデルとその外観容姿を表す表示モデルとを予め用意しておき、骨格モデルを所定のモーションデータに従って動作制御し、動作制御された骨格モデルに基づいて表示モデルとしてポリゴンモデルをゲーム空間中に形成することによって動作制御するケースが多々見られる。
【０００３】
しかし、ゲームに登場するキャラクタは、関節が可動するが基本的な大きさが変化しないものだけとは限らない。例えば、粘土やゴム、流体金属のように変形自在で、基本的な大きさが単なる拡大縮小の範疇を超えて変化するものもある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１８６３２５
【発明の概要】
【発明が解決しようとする課題】
【０００５】
最近では伸縮自在な紐状キャラクタをのばしたり縮めたりして遊ぶビデオゲーム等も存在する。紐状キャラクタをのばしたり縮めたりして遊ぶのは、片手間で楽しめるため、情報機器に付属する様々なツールやゲームやユーティリティ等のアプリケーションに紐状キャラクタを登場させることで、ユーザの遊び心を満たすアプリケーションを提供することができる。
【０００６】
しかし例えば携帯情報機器やゲーム装置等では処理能力の限られたハードウエアでユーザの操作入力に対して高い応答性を要求される。従って、処理負荷の増大を招くことなく、紐状キャラクタのおもしろみを生かしたアプリケーションの提供が望まれるところである。
【０００７】
本発明はこうした事情を鑑みてなされたものである。本発明のいくつかの態様によれば、処理負荷の増大を招くことなく、紐状キャラクタのおもしろみを生かしたアプリケーションを実行するプログラム、情報記憶媒体及び画像生成装置を提供することができる。また紐状キャラクタを接続する画像を実現することができるプログラム、情報記憶媒体及び画像生成装置を提供することができる。
【課題を解決するための手段】
【０００８】
（１）本発明は、
コンピュータに、キャラクタオブジェクトが移動動作する仮想空間の画像を生成させるためのプログラムであって、関節部位を直列に連結した関節構造を有する紐状部分を含むキャラクタオブジェクトを設定する設定手段と、操作入力情報又は所与のイベントに基づき前記キャラクタオブジェクトの前記関節に仮想力を作用させて前記関節を移動させることで前記キャラクタオブジェクトを動かすキャラクタオブジェクト制御手段と、複数のキャラクタオブジェクトが所与の接続条件を満たす場合には、これらのキャラクタオブジェクトの接続を行う接続手段と、してコンピュータを機能させ、前記接続手段は、所与のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節と、他のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節との位置関係が所与の接続条件を満たす場合に接続を行うプログラムに関する。
【０００９】
また本発明は上記各手段を含む画像生成装置に関する。また本発明はコンピュータ読み取り可能な情報記憶媒体であって、上記各手段としてコンピュータを機能させるプログラムを記憶した情報記憶媒体に関する。
【００１０】
所与の接続条件を満たすキャラクタオブジェクトの組み合わせを検索する処理をおこない、所与の接続条件を満たすキャラクタオブジェクトの組み合わせが存在する場合には、これらのキャラクタオブジェクトの接続を行うようにしてもよい。
【００１１】
例えば所与のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節と、他のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節との距離が所定の閾値以下であるものを接続対象として抽出してもよい。
【００１２】
このようにするとキャラクタオブジェクトの端同士が近づくと自動的に接続されるという自然な接続表現を実現することができる。
【００１３】
（２）このプログラム、画像生成装置、情報記憶媒体において、
前記接続手段は、
キャラクタオブジェクトの直列に連結された関節構造の端に位置する関節同士を連結して、キャラクタオブジェクトの接続を行ってもよい。
【００１４】
（３）このプログラム、画像生成装置、情報記憶媒体において、
前記キャラクタオブジェクトの紐状部分を切断して複数の切断されたキャラクタオブジェクトに分割する切断処理を行う切断手段と、してコンピュータを機能させ、前記切断手段は、複数の切断されたキャラクタオブジェクトが存在する状態で切断処理を行う場合には、切断対象となるキャラクタオブジェクトを選択する処理をおこない、選択されたキャラクタオブジェクトに対して切断処理を施し、切断されたキャラクタオブジェクトをさらに複数の切断されたキャラクタオブジェクトに分割し、前記接続手段は、所与の切断されたキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節と、他の切断されたキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節との位置関係が所与の接続条件を満たす場合に接続を行ってもよい。
【００１５】
切断処理により切断対象のキャラクタオブジェクトを２つのキャラクタオブジェクトに分割してもよい。なお切断されたキャラクタオブジェクトは、完全な形態のキャラクタオブジェクトではなく、１つのキャラクタオブジェクトの切断された部分を示すキャラクタオブジェクトでもよい。
【００１６】
例えばキャラクタオブジェクトの長さ基づき切断対象となるキャラクタオブジェクトを選択してもよい。例えば最も長いキャラクタオブジェクトを切断対象としてもよい。
【００１７】
また関節間の距離に応じて変化する仮想的なバネ力等が関節に設定されている場合には、キャラクタオブジェクトに作用するバネ力の大きさに基づき切断対象となるキャラクタオブジェクトを選択してもよい。例えば複数のキャラクタオブジェクトの中でバネ力が最も大きいキャラクタオブジェクトを切断対象として選択してもよい。
【００１８】
またキャラクタオブジェクト又はこれを構成する関節に優先順位を設定し、前記優先順位に基づきキャラクタオブジェクトを選択してもよい。例えば優先順位の高いキャラクタオブジェクトや優先順位の高い関節を含むキャラクタオブジェクトを切断対象として選択してもよい。
【００１９】
又例えば長さに基づき切断対象となるキャラクタオブジェクトを選択して、長さが同じキャラクタオブジェクトが複数ある場合には、優先順位に従って切断対象となるキャラクタオブジェクトを選択してもよい。
【００２０】
またキャラクタオブジェクトを構成する関節に設定されているパラメータ（例えば作用する力に関するパラメータ等）の値に基づき切断対象となるキャラクタオブジェクトを選択してもよい。例えば設定されているパラメータの値が最も大きいキャラクタオブジェクトを切断対象として選択してもよい。
【００２１】
この様にキャラクタオブジェクトを切断する処理を繰り返すことで、キャラクタオブジェクトを細かく裁断する画像を生成することができる。
【００２２】
（４）このプログラム、画像生成装置、情報記憶媒体において、
前記接続条件は、前記切断処理が行われた後の所定時間内は切断されたキャラクタオブジェクト同士についての接続は行わないようにしてもよい。
【００２３】
切断処理の直後には切断されたキャラクタオブジェクトの切断点の関節同士は近くに位置していることが多く、せっかく分割してもすぐに接続されしまう可能性が高い。しかしこのようにすることで、分割後すぐに接続されることを防止することができる。
【００２４】
（５）このプログラム、画像生成装置、情報記憶媒体において、
前記接続手段は、一括接続イベントが発生した場合には、１つのキャラクタオブジェクトから切断により分割されたすべてのキャラクタオブジェクトを接続してもよい。
【００２５】
一括接続イベントは例えばユーザの操作入力により発生させるようにしてもよい。分割により多数のキャラクタオブジェクトが発生すると、ユーザの操作入力で接続させるのは、手間がかかり面倒である。しかし一括接続イベントを発生させることにより、自動的に切断前に戻すことができるので、ユーザは簡単に繰り返し切断操作を楽しむことができる。
【００２６】
（６）このプログラム、画像生成装置、情報記憶媒体において、
前記仮想空間に前記キャラクタオブジェクトとは異なる他のオブジェクトを配置する処理又は移動させる処理を行う障害物設定手段と、
前記キャラクタオブジェクトと前記他のオブジェクトとの接触検出を行う接触検出手段と、してさらにコンピュータを機能させ、
前記キャラクタオブジェクト制御手段は、
前記キャラクタオブジェクトと前記他のオブジェクトとの接触検出結果に基づき、前記キャラクタオブジェクトの関節に仮想力を作用させて、前記関節部位を移動させることで前記キャラクタオブジェクトを動かしてもよい。
【００２７】
この様にすると障害物に移動を制限されながら、キャラクタオブジェクトが接続される画像を生成することができる。
【００２８】
（７）このプログラム、画像生成装置、情報記憶媒体において、
前記キャラクタオブジェクト制御手段は、前記操作入力情報として、前記仮想空間の画像が表示された表示部における接触位置の移動履歴情報を含む操作入力情報を取得し、前記接触位置の移動履歴情報に基づき、関節部位に作用させる仮想力の方向を決定してもよい。
【００２９】
前記仮想空間の画像を表示する表示部をタッチパネルディスプレイ等で構成することにより、接触位置の移動履歴情報を含む操作入力情報を取得してもよい。
【００３０】
この様にするとタッチ操作でダイレクトにキャラクタオブジェクトを動かす感覚が味わえるアプリケーションを提供することができる。
【００３１】
（８）このプログラム、画像生成装置、情報記憶媒体において、
前記キャラクタオブジェクト制御手段は、前記キャラクタオブジェクトの関節に作用する仮想力に基づき、前記キャラクタオブジェクトの紐状部分を伸縮させてもよい。
【００３２】
紐状部分の関節構造に新たな関節を追加することで伸長させてもよいし、関節間の距離を増大させることで伸長させてもよい。
【００３３】
（９）このプログラム、画像生成装置、情報記憶媒体において、
前記キャラクタオブジェクト制御手段は、前記仮想力による関節の移動位置を演算して、演算結果に基づき隣り合う関節間の連結子の長さを可変に制御し、連結子の長さが所与の閾値を超えると、当該連結子で連結された関節間に新たな関節を追加してもよい。
【００３４】
（１０）このプログラム、画像生成装置、情報記憶媒体において、
前記キャラクタオブジェクト制御手段は、前記仮想力による関節の移動位置を演算して、演算結果に基づき隣り合う関節間の連結子の長さを可変に制御し、連結子の長さが所与の閾値を下回ると、当該連結子で連結された関節のいずれかを削除して、削除された関節に接続されていた２つの関節を新たに連結させてもよい。
【００３５】
所与の閾値を下回った連結子で連結された関節のいずれを削除するかは、例えば関節に接続されている他方の連結子が短い方の関節を削除してもよい。また予め関節に割り付けられている所定の優先順に従って優先順位の低い方の関節を削除するようにしてもよい。
【００３６】
（１１）このプログラム、画像生成装置、情報記憶媒体において、
前記キャラクタオブジェクト制御手段は、前記仮想空間の画像が表示される表示部を含む装置に設けられた加速度センサからの加速度情報を取得し、取得した前記加速度情報に基づき、前記キャラクタオブジェクトの前記関節部位に仮想力を作用させて前記関節部位を移動させることで前記キャラクタオブジェクトを動かしてもよい。
【００３７】
加速度センサで装置に働く重力や加速度を検出し、検出された加速度情報に基づき作用ベクトルを生成することで装置に働く重力や加速度を表現することができる。
【図面の簡単な説明】
【００３８】
【図１】本実施形態における携帯情報機器の構成例を説明するための図。
【図２】本実施形態における機能構成の一例を示す機能ブロック図。
【図３】図３（Ａ）（Ｂ）は、本実施形態におけるキャラクタオブジェクトの概要を説明するための図。
【図４】図４（Ａ）（Ｂ）は、本実施形態におけるキャラクタオブジェクトのモデル構成を説明するための図。
【図５】キャラクタ制御データのデータ構成例を示す図。
【図６】作用力データのデータ構成例を示す図。
【図７】図７（Ａ）〜（Ｃ）はタッチ操作に基づく操作力ベクトルの設定例を説明するための図。
【図８】図８（Ａ）（Ｂ）は、キャラクタオブジェクトの各関節に作用する仮想力とキャラクタオブジェクトの動きについて説明するための図。
【図９】図９（Ａ）（Ｂ）は誘導ベクトルについて説明するための図。
【図１０】図１０は、誘導制御によりキャラクタオブジェクトが目標配置状態に誘導される様子を示した図である。
【図１１】アプリケーション画像の一例。
【図１２】アプリケーション画像の一例。
【図１３】図１３（Ａ）〜（Ｃ）は、キャラクタオブジェクトが切断されるアプリケーション画像。
【図１４】キャラクタオブジェクトが細かく裁断されたアプリケーション画像。
【図１５】図１５（Ａ）〜（Ｄ）は切断処理に伴う関節の連結制御処理について説明するための図。
【図１６】図１６（Ａ）〜（Ｃ）は、障害オブジェクトと遭遇した場合のキャラクタオブジェクトの動きについて説明するための図。
【図１７】図１７（Ａ）〜（Ｃ）は、障害オブジェクトと遭遇した場合のキャラクタオブジェクトの動きについて説明するための図。
【図１８】図１８（Ａ）〜（Ｄ）は、切断処理に伴う関節の連結制御処理について説明するための図。
【図１９】図１９（Ａ）、（Ｂ）は、本実施の形態の接続制御について説明するための図。
【図２０】図２０（Ａ）（Ｂ）は操作力ベクトルが隣り合う関節間の距離を広げる方向に加わる例を示す図。
【図２１】図２１（Ａ）（Ｂ）は操作力ベクトルが隣り合う関節間の距離を縮める方向に加わる例を示す図。
【図２２】図２２（Ａ）は、関節の追加処理、図２２（Ｂ）は、関節の削除処理について説明するための図である。
【図２３】図２３（Ａ）（Ｂ）は、接続処理に伴う関節の連結制御処理について説明するための図。
【図２４】タッチ操作に基づく操作力ベクトルの設定例を説明するための図。
【図２５】本実施の形態の全体処理の流れを示すフローチャート。
【図２６】本実施の形態の分割処理の流れを示すフローチャート。
【図２７】本実施の形態の接続処理の流れを示すフローチャート。
【図２８】本実施の形態の動作制御処理の流れを示すフローチャート。
【図２９】図２９（Ａ）（Ｂ）はキャラクタオブジェクトの接続されるアプリケーション画像の例。
【発明を実施するための形態】
【００３９】
以下、図面を参照しながら、本発明を適用した実施形態として、伸縮自在なキャラクタが登場するユーティリティが搭載された携帯情報機器を例に挙げて説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００４０】
１．  構成
図１は、本実施形態の画像生成装置の一例である携帯情報機器の構成例を説明するための図である。
【００４１】
本実施の形態の携帯情報機器１０は、表示部１２上でのタッチ操作により操作入力を行うことが可能なタッチパネルディスプレイ（タッチパネル、タッチディスプレイ、タッチスクリーンともいう）を備えた携帯電話である。なお表示部１２は複数の指による同時操作が検出可能なマルチタッチパネルディスプレイで構成されていてもよい。また携帯情報機器１０に加速度センサを内蔵していてもよい。また携帯情報機器１０は、携帯型デジタル音楽プレーヤとしての機能やカメラ機能やインターネット閲覧機能やメール機能を有していてもよい。
【００４２】
携帯情報機器１０の本体は、例えばＣＰＵや画像処理用ＬＳＩ、ＩＣメモリ等が実装された制御ユニット１４、通信装置１６を内蔵し、ＵＳＢケーブル用のコネクタ１８を備えていてもよい。
【００４３】
携帯情報機器１０は、内蔵されたメモリからシステムプログラムやアプリケーションプログラム及び各種設定データを読み出して、タッチパネルディスプレイから入力される操作入力に基づいて各種のアプリケーション演算を実行し、所与のアプリケーションを実行する。
【００４４】
携帯情報機器１０の制御ユニット１４で生成されたアプリケーション画像は、表示部（タッチパネルディスプレイ）１２上に出力される。ユーザは携帯情報機器１０の表示部１２に表示されるアプリケーション画像を見つつ、タッチパネルディスプレイで構成された表示部１２をタッチ操作することで各種操作入力を行いアプリケーション画像を楽しむことができる。
【００４５】
尚、アプリケーション実行に必要なアプリケーションプログラムおよび各種設定データは、通信装置１６を介して通信回線１に接続し、外部装置からダウンロードして取得する構成であっても良い。ここで言う、通信回線とは、データ授受が可能な通信路を意味する。すなわち、通信回線とは、直接接続のための専用線（専用ケーブル）やイーサネット（登録商標）等によるＬＡＮ（Local Area Network）の他、電話通信網やケーブル網、インターネット等の通信網を含む意味であり、また、通信方法については有線／無線を問わない。
【００４６】
図２は、本実施形態における機能構成の一例を示す機能ブロック図である。
【００４７】
なお同図において本実施形態は、少なくとも処理部１００を含めばよく（或いは処理部１００と記憶部１７０を含めばよく）、それ以外の各部（機能ブロック）については任意の構成要素とすることができる。
【００４８】
同図に示すように本実施形態では、操作入力部１６０と、処理部１００と、音出力部１３２と、画像表示部１２２と、通信部１４２と、記憶部１７０を含む。
【００４９】
操作入力部１６０は、プレーヤによってなされた各種の操作入力に応じて操作入力信号を生成し、処理部１００に出力する。操作入力部１６０の機能は、レバー、ボタン、ステアリング、シフトレバー、マイク、センサ、タッチパネル等のハードウエアにより実現できる。図１では、タッチパネルディスプレイ１２が操作入力部１００として機能する。
【００５０】
処理部１００は、操作入力部１６０からの操作入力情報やプログラムなどに基づいて、アプリケーション実行処理、画像生成処理、或いは音生成処理などの各種の処理を行うもので、例えば各種プロセッサ（マイクロプロセッサ、メインプロセッサ、描画プロセッサ、ＤＳＰ等）又はＡＳＩＣ（ゲートアレイ等）などのハードウエアや、プログラム（ゲームプログラム）により実現できる。図１では、ゲーム装置本体１０に内蔵された制御ユニット１４が処理部１００として機能する。
【００５１】
処理部１００は、アプリケーション演算部１１０と、音生成部１３０と、画像生成部１２０と、通信制御部１４０とを含む。
【００５２】
アプリケーション演算部１１０は、アプリケーションの実行処理を行う。例えば、アプリケーション空間を仮想空間中に形成する処理や、仮想空間中に配置されたキャラクタオブジェクトＷＣ以外のキャラクタの動作制御処理、ヒット判定処理、物理演算処理等を実行する。
【００５３】
また本実施形態のアプリケーション演算部１１０は、キャラクタオブジェクト制御部１１２、切断処理部１１４、接続処理部１１６を含む。
【００５４】
アプリケーション演算部１１０は、関節を直列に連結した関節構造を有する紐状部分を含むキャラクタオブジェクトを設定する設定手段として機能する。キャラクタオブジェクト制御部１１２は、操作入力情報又は所与のイベントに基づきキャラクタオブジェクトの前記関節に仮想力を作用させて前記関節を移動させることで前記キャラクタオブジェクトを動かす。
【００５５】
切断処理部１１４は、前記キャラクタオブジェクトの紐状部分を切断して複数の切断されたキャラクタオブジェクトに分割する切断処理を行うもので、複数の切断されたキャラクタオブジェクトが存在する状態で切断処理を行う場合には、切断対象となるキャラクタオブジェクトを選択する処理をおこない、選択されたキャラクタオブジェクトに対して切断処理を施し、切断されたキャラクタオブジェクトをさらに複数の切断されたキャラクタオブジェクトに分割する。
【００５６】
また切断処理部１１４は、切断指示入力が行われた場合に、前記切断処理を行ってもよい。また切断処理部１１４は、前記キャラクタオブジェクトの長さに基づき切断対象となるキャラクタオブジェクトを選択してもよい。また切断処理部１１４は、前記切断処理として、直列に連結された関節構造の隣り合わせた第１の関節と第２の関節の関節間の連結を解消し、第１の関節を含むキャラクタオブジェクトと第２の関節を含むキャラクタオブジェクトに分割してもよい。また切断処理部１１４は、キャラクタオブジェクトに含まれる関節の数に基づき当該キャラクタオブジェクトが切断可能状態にあるか否か判断し、切断可能状態にあるキャラクタオブジェクトを切断対象としてもよい。また切断処理部１１４は、切断指示入力が行われた場合に、切断可能状態にあるキャラクタオブジェクトが１つも存在しない場合には、切断を行わないようにしてもよい。
【００５７】
接続処理部１１６は、所与のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節と、他のキャラクタオブジェクトの直列に連結された関節構造の端に位置する関節との位置関係（距離を含む）が所与の接続条件を満たす場合にこれらのキャラクタオブジェクトの接続を行う。接続処理部１１６は、キャラクタオブジェクトの直列に連結された関節構造の端に位置する関節同士を連結して、キャラクタオブジェクトの接続を行ってもよい。接続処理部１１６は、前記切断処理が行われた後の所定時間内は切断されたキャラクタオブジェクト同士についての接続は行わないようにしてもよい。
【００５８】
接続処理部１１６は、接続イベントが発生した場合には、１つのキャラクタオブジェクトから切断により分割されたすべてのキャラクタオブジェクトを接続してもよい。
【００５９】
アプリケーション演算部１１０は前記仮想空間に前記キャラクタオブジェクトとは異なる他のオブジェクトを配置する処理又は移動させる処理を行う障害物設定手段と、前記キャラクタオブジェクトと前記他のオブジェクトとの接触検出を行う接触検出手段として機能させてもよい。
【００６０】
キャラクタオブジェクト制御部１１２は、前記キャラクタオブジェクトと前記他のオブジェクトとの接触検出結果に基づき、前記キャラクタオブジェクトの関節に仮想力を作用させて、前記関節を移動させることで前記キャラクタオブジェクトを動かしてもよい。またキャラクタオブジェクト制御部１１２は、前記キャラクタオブジェクトの関節に作用する仮想力に基づき、前記キャラクタオブジェクトの紐状部分を伸縮させてもよい。またキャラクタオブジェクト制御部１１２は、前記仮想力による関節の移動位置を演算して、演算結果に基づき隣り合う関節間の連結子の長さを可変に制御し、連結子の長さが所与の閾値を超えると、当該連結子で連結された関節間に新たな関節を追加してもよい。またキャラクタオブジェクト制御部１１２は、前記仮想力による関節の移動位置を演算して、演算結果に基づき隣り合う関節間の連結子の長さを可変に制御し、連結子の長さが所与の閾値を下回ると、当該連結子で連結された関節のいずれかを削除して、削除された関節に接続されていた２つの関節を新たに連結させてもよい。またキャラクタオブジェクト制御部１１２は、前記仮想空間の画像が表示される表示部を含む装置に設けられた加速度センサからの加速度情報を取得し、取得した前記加速度情報に基づき、前記キャラクタオブジェクトの前記関節に仮想力を作用させて前記関節を移動させることで前記キャラクタオブジェクトをうごかしてもよい。
【００６１】
音生成部１３０は、例えばデジタルシグナルプロセッサ（ＤＳＰ）などのプロセッサやその制御プログラムによって実現され、アプリケーション演算部１１０による処理結果に基づいてアプリケーションに係る効果音やＢＧＭ、各種操作音の音信号を生成し、音出力部１３２に出力する。
【００６２】
音出力部１３２は、音生成部１３０から入力される音信号に基づいて効果音やＢＧＭ等を音出力するための装置である。図１では携帯情報機器のスピーカ（図示せず）がこれに該当する。
【００６３】
画像生成部１２０は、例えば、デジタルシグナルプロセッサ（ＤＳＰ）などのプロセッサ、その制御プログラム、フレームバッファ等の描画フレーム用ＩＣメモリ等によって実現される。画像生成部１２０は、アプリケーション演算部１１０による演算結果に基づいて１フレーム時間（１／６０秒）で１枚のアプリケーション画像を生成し、生成したアプリケーション画像の画像信号を画像表示部１２２に出力する。
【００６４】
画像表示部１２２は、画像生成部１２０から入力される画像信号に基づいて各種アプリケーション画像を表示する。例えば、タッチパネルディスプレイ、フラットパネルディスプレイ、ブラウン管（ＣＲＴ）、プロジェクター、ヘッドマウントディスプレイといった画像表示装置によって実現できる。図１では携帯情報機器１０の表示部（タッチパネルディスプレイ）１２が該当する。
【００６５】
通信制御部１４０は、データ通信に係るデータ処理を実行し、通信部１４２を介して外部装置とのデータのやりとりを実現する。
【００６６】
通信制御部１４０は、通信回線と物理レベルで接続して通信を実現する。例えば、無線通信機、モデム、ＴＡ（ターミナルアダプタ）、有線用の通信ケーブルのジャックや制御回路等によって実現され、図１では通信装置１６がこれに該当する。
【００６７】
記憶部１７０は、処理部１００に携帯情報機器を統合的に制御させるための諸機能を実現するためのシステムプログラムや、アプリケーションを実行させるために必要なアプリケーションプログラム、各種データ等を記憶する。また、処理部１００の作業領域として用いられ、処理部１００が各種プログラムに従って実行した演算結果や操作入力部１６０から入力される入力データ等を一時的に記憶する。この機能は、例えばＲＡＭやＲＯＭなどのＩＣメモリ、ハードディスク等の磁気ディスク、ＣＤ−ＲＯＭやＤＶＤなどの光学ディスクなどによって実現される。
【００６８】
本実施形態では、記憶部１７０はアプリケーションプログラム１７４を記憶している。処理部１００がアプリケーションプログラムを読み出して実行することによって、処理部１００にアプリケーション演算部１１０としての機能を実現させることができる。
【００６９】
また、記憶部１７０には、予め用意されるデータとしてキャラクタ初期設定データ１７６やゲーム空間設定データ等が記憶されている。また、ゲームの進行に伴って随時書き換えられるデータとして、キャラクタ制御データ（図示せず）、作用力データ（図示せず）、アプリケーション空間設定データ（図示せず）等が記憶される。
【００７０】
アプリケーション空間設定データは、仮想空間にアプリケーション空間を形成するための各種データが格納されている。例えば、キャラクタオブジェクトＷＣが移動する地表や建物を含む配置物に関するモデルデータ、テクスチャデータおよびモーションデータが含まれる。また、アプリケーション実行中にキャラクタオブジェクトＷＣ以外にコンピュータによって自動制御されるノンプレーヤキャラクタ（ＮＰＣ）が登場する場合には、ＮＰＣのモデルデータやテクスチャデータおよびモーションデータなどが含まれる。
【００７１】
キャラクタ初期設定データ１７６は、キャラクタオブジェクトＷＣの初期設定データが格納されている。本実施形態では、ゲームスタート時におけるキャラクタオブジェクトＷＣはある一定の長さの胴ＷＣｂを有するように設定されている（図３（Ａ）参照）。すなわち、所定数のノード２０２が配列された骨格モデルＢＭおよびそのヒット判定モデルＨＭに関するデータが格納されている（図４（Ａ）（Ｂ）参照）。また、キャラクタオブジェクトＷＣの頭ＷＣｈや尾ＷＣｔのモデルデータ、胴ＷＣｂの部分に外皮を形成する際のテクスチャデータなどが格納されていてもよい。
【００７２】
そして、キャラクタオブジェクトＷＣをゲーム実行中に制御するためのデータが、キャラクタ制御データとして格納されている。
【００７３】
２．キャラクタオブジェクトの説明
図３（Ａ）（Ｂ）は、本実施形態におけるキャラクタオブジェクトの概要を説明するための図である。キャラクタオブジェクトＷＣは、一頭一尾の想像上のワーム（ｗｏｒｍ：細長く足のない動物。）としてデザインされており、紐のように柔軟であるとともに図３（Ａ）に示すように伸縮自在、また図３（Ｂ）に示すように湾曲自在な胴ＷＣｂを有する。キャラクタオブジェクトＷＣは、頭ＷＣｈおよび尾ＷＣｔ方向を前後方向として胴ＷＣｂの太さをそのままに伸縮自在なキャラクタオブジェクトとして設定されている。尚、本実施形態では胴ＷＣｂが伸び縮みする形態として説明するが、頭ＷＣｈおよび尾ＷＣｔを含む全身が自在に伸び縮みする設定としても良いのは勿論である。
【００７４】
この様に本実施の形態ではキャラクタオブジェクトの胴ＷＣｂ部分が関節を直列に連結した関節構造を有する紐状部分として構成されている。
【００７５】
図４（Ａ）（Ｂ）は、本実施形態におけるキャラクタオブジェクトのモデル構成を説明するための図である。
【００７６】
キャラクタオブジェクトＷＣは、基本状態（伸縮する前）においては、図４（Ａ）に示すように、複数のノード２０２が、互いに前後の距離ｌ１、ｌ２、ｌ３を一定にした直列状の関節構造を成す骨格モデルＢＭを有する。別の言い方をするならば、関節に相当するノード２０２（＝制御点）が連結子２０４によって関節構造として連結されており、伸長前の状態の連結子２０４は全て同じ初期値ｋｌ（ｌ１＝ｌ２＝ｌ３＝ｋｌ）を有している。従ってノード２０２を関節と見なすと、骨格モデルＢＭは、複数の関節が直列状に連結されていることになる。
【００７７】
図４（Ｂ）に示すように、基本状態（伸縮する前）においてはキャラクタオブジェクトＷＣにはヒット判定モデルＨＭが設定されている。ここではキャラクタオブジェクトＷＣが移動、動作する仮想空間が２次元平面である場合を例にとり説明する。本実施形態におけるヒット判定モデルＨＭでは、各ノードにヒット判定領域２０６が設定されている。本実施形態におけるヒット判定領域２０６は、対応するノード２０２の位置座標を中心にして、半径Ｒ（＝連結子２０４の長さｌ１、ｌ２、ｌ３）の円状領域として設定されている。
【００７８】
なお連結子２０４が伸縮後のヒット判定モデルＨＭについては、ヒット判定領域２０６の大きさ（例えば、図４の半径Ｒ）を連結子２０４の長さｌ１，ｌ２，ｌ３に連動させずに、骨格モデルＢＭの各連結子２０４の長さｌ１，ｌ２，ｌ３の増減にかかわらず初期値ｋｌを維持してもよい。また連結子２０４の長さｌ１，ｌ２，ｌ３がヒットチェック領域増設判定用の閾値ｈｓｌを上回った箇所を抽出し、当該ノード間の中間位置に新たにヒット判定領域２０６を増設する構成としてもよい。
【００７９】
なお本実施の形態では、後述するように各連結子長が関節増設判定用の閾値ｂｓｌを超えた場合には新たな関節（ノード）を増設するので、ヒットチェック領域増設判定用の閾値ｈｓｌを関節増設の判定用閾値ｂｓｌにあわせるようにすると、関節（ノード）とヒットチェック領域の中心点が常に１対１で対応することになり制御が複雑になるのを防ぐことができる。
【００８０】
３．キャラクタ制御データ
図５は、本実施形態におけるキャラクタ制御データ３００のデータ構成例を示す図である。同図に示すように、キャラクタ制御データ３００は、その時点におけるキャラクタオブジェクトＷＣの関節制御データ３１０と、ヒット判定制御データ３２０とを含む。
【００８１】
関節制御データ３１０は、キャラクタオブジェクトの関節（ノード）の位置座表と関節の連結状態に関するデータである。各関節に対応するノードのノード識別情報３１２に対応づけて、該ノードの仮想空間座標系における位置座標３１４（仮想空間が２次元平面である場合の座標例）と、頭側連結ノード識別情報３１６と、尾側連結ノード識別情報３１８が格納されている。
【００８２】
頭側連結ノード識別情報３１６および尾側連結ノード識別情報３１８は、当該ノードの配列順前後（頭側／尾側）に連結されているノードの識別情報を格納している。すなわち、前者は当該ノードの頭側（前方側）に連結されているノードの識別情報を格納し、後者は当該ノードの尾側（後方側）に連結されているノードの識別情報を格納する。先端のノードである場合には、連結先が無いことになるので、例えば同図に示すように「ＮＵＬＬ」が格納される。
【００８３】
ヒット判定制御データ３２０には、ヒットチェックに使用するデータである。各関節に対応するノードのノード識別情報３２２に対応づけて、ヒット判定領域情報３２４と、ヒットフラグ３２６とが格納されている。
【００８４】
ヒット判定領域情報３２６は、当該ノードに対応付けられるヒット判定領域２０６を定義するデータとして、例えば仮想空間座標系における位置座標と判定領域の半径Ｒの値を格納する。本実施形態では、対応するノードを中心に半径Ｒの円形判定領域が設定されるので、同図のように各領域半径Ｒ（Ｒ１、Ｒ２・・・）が格納されている。また、本実施形態では半径Ｒは一定であるが、例えばゲーム中にキャラクタオブジェクトＷＣが太ったり痩せたりする設定やノード間の距離が可変な設定とするならば適宜半径Ｒを可変することによって、適切なヒット判定を維持することができる。
【００８５】
そして、当該ノードに対応付けられているヒット判定領域で、他のオブジェクトと衝突していると判定された場合には、対応づけられたヒットフラグ３２６を「０（未ヒット）」から「１（ヒット）」に変更して、ヒット状態を記憶する。
【００８６】
本実施の形態では、キャラクタオブジェクトの前記関節に仮想力を作用させて前記関節を移動させることで前記キャラクタオブジェクトを動かす。作用力データ３３０は、各ノードに作用している仮想力に関する情報を格納している。
【００８７】
図６は、本実施形態における作用力データ（仮想力）３３０のデータ構成例を示す図である。同図に示すように、各関節に対応するノードのノード識別情報３３２に対応づけて、操作力ベクトル３３４、外力ベクトル３３６、誘導ベクトル３３８、およびこれらの力の合力に当る作用力ベクトル３４０が格納されている。その他、慣性力ベクトルや重力ベクトルなどゲーム中にキャラクタオブジェクトＷＣの動作制御に影響を与える力を適宜設定することができる。
【００８８】
操作力ベクトル３３４は、各関節（ノード）に作用するベクトルであり、操作入力に応じて設定される仮想力（＝操作力）である。
【００８９】
外力ベクトル３３６は、各関節（ノード）に作用するベクトルであり、仮想空間自体や、仮想空間に配置されている他のオブジェクトの影響によって作用する仮想力である。例えば、重力、他のオブジェクトとの衝突や接触によって生じる力や、環境風を受けることによって生じる力がこれに含まれる。その他、電磁力や、好物に惹きつけられる様子を表す仮想力など適宜含めることができる。
【００９０】
誘導ベクトル３３８は、各関節（ノード）に作用するベクトルであり、目標配置状態への誘導制御するための仮想力である。
【００９１】
キャラクタオブジェクトの動きは、操作力ベクトルや外力ベクトルや誘導ベクトルの合力である作用力ベクトルによって制御されることになる。
【００９２】
４．操作入力と操作力ベクトル
ユーザの操作入力（タッチ入力）により発生する操作力ベクトルについて説明する。  例えば本実施の形態では、図１に示すようなタッチパネルディスプレイに表示されたキャラクタオブジェクトにタッチして、タッチしたまま指を所与の方向に動かすことにより、キャラクタオブジェクトを動かすことができる。これはキャラクタオブジェクトにタッチした箇所と関節の位置、及び動かした方向に基づき演算される操作力ベクトル（仮想力）をキャラクタオブジェクトの各関節に作用させることで実現している。
【００９３】
図７（Ａ）〜（Ｃ）、図２４はタッチ操作に基づく操作力ベクトルの設定例を説明するための図である。
【００９４】
図７（Ａ）は、図７（Ｂ）に示すような関節Ｋ１〜Ｋ６が直列に接続されたキャラクタオブジェクトＷＣがタッチパネルディスプレイ１２に表示されている様子を示している。ここでユーザの指３５０がタッチパネルディスプレイ１２上の点Ｐ１をタッチして点Ｐ２まで指を移動させると、タッチパネルディスプレイ１２は点Ｐ１から点Ｐ２までユーザの指３５０が接触移動したことを検出し操作入力情報（例えば接触移動軌跡、始点と終点、移動時間、移動開始時刻と移動終了時刻、接触圧力等の少なくとも１つの情報）を出力する。
【００９５】
この様な操作入力が行われた場合、例えば図７（Ｃ）に示すように接触移動の始点Ｐ１と終点Ｐ２に基づき操作力ベクトル３６０の方向を決定してもよい。ここでタッチ操作により各関節に作用する操作力ベクトルの大きさは、タッチ位置と各関節の大きさによっても異なってくる。従って最も近い関節に作用させる操作力ベクトルの大きさ（最大値）をタッチ操作の接触圧力や移動時間に基づき求めて、当該最大値に基づき他の関節に作用させる操作ベクトルの大きさを求めてもよい。
【００９６】
図２４は、タッチ操作によりキャラクタオブジェクトの各関節に作用力ベクトルが作用している様子を示している。ここでタッチ操作に基づき演算した操作力ベクトル（大きさが最大値をとるもの）ｓｖを接触位置Ｐ１の近傍の関節（例えばＫ３やＫ４）に直接作用させてもよい。すなわち図２４において関節Ｋ３に作用する操作力ベクトルＳＶ３＝ｓｖ、関節Ｋ４に作用する操作力ベクトルＳＶ４＝ｓｖとしてもよい。また近傍以外の関節ＳＶ１，ＳＶ２，ＳＶ５，ＳＶ６には操作力ベクトルｓｖの大きさを減衰させた操作力ベクトルｓｖ’、ｓｖ”を作用させてもよい。すなわち図２４において関節Ｋ２に作用する操作力ベクトルＳＶ２＝ｓｖ’、関節Ｋ５に作用する操作力ベクトルＳＶ５＝ｓｖ’としてもよい。また図２４において関節Ｋ１に作用する操作力ベクトルＳＶ１＝ｓｖ”、関節Ｋ６に作用する操作力ベクトルＳＶ６＝ｓｖ”としてもよい。この様に操作入力情報に基づき各関節（ノード）に作用させる操作力ベクトルを演算する。演算された操作力ベクトルは、作用力データとして各関節（ノード）に対応するノード識別情報３３２に対応づけて記憶される（図６参照）。
【００９７】
５．キャラクタの移動制御
図８（Ａ）（Ｂ）は、キャラクタオブジェクトの各関節に作用する作用力ベクトルとキャラクタオブジェクトの動きについて説明するための図である。
【００９８】
図８（Ａ）は、キャラクタオブジェクトの各関節に作用力ベクトルが作用している様子を示しており、図８（Ｂ）は、キャラクタオブジェクトの各関節に作用する作用力ベクトルによってキャラクタオブジェクトが移動する様子を示している。
【００９９】
各関節に作用する作用力ベクトルは、作用力データのテーブル（図６参照）から読み出して設定してもよい。
【０１００】
そしてこれらの作用力ベクトルがキャラクタオブジェクトＷＣの各関節Ｋ１からＫ６に作用することにより、各関節Ｋ１〜Ｋ６の位置は、図８（Ｂ）に示すようにＫ１ｐ〜Ｋ６ｐ→Ｋ１ｐ’〜Ｋ６ｐ’に移動する。関節位置の移動により、キャラクタオブオブジェクトＷＣの位置と形状が変化する。
【０１０１】
なお関節位置の移動により各関節間の距離（連結子の長さ）が変化することになる。すなわちキャラクタオブジェクトＷＣが伸縮することになる。各関節間の距離が変化して、連結子の長さが所定の閾値を超えると、後述するように新たな関節が生成されるようにしてもよい。
【０１０２】
６．キャラクタオブジェクトの誘導制御
図９（Ａ）（Ｂ）は誘導ベクトルについて説明するための図である。図９（Ａ）に示すように時刻ｔ０（フレーム０）においてキャラクタオブジェクトＷＣが３８０のような状態にあるとする。ここでキャラクタオブジェクトＷＣを３９０に示すような配置状態に移動させたい場合、配置状態３９０に対応する目標配置状態情報を設定して、誘導制御を行う。
【０１０３】
キャラクタオブジェクトＷＣの各関節Ｋ１〜Ｋ６に対応する目標配置状態情報として、配置状態３９０にあるキャラクタオブジェクトＭＷＣの関節ＭＫ１〜ＭＫ６の位置座標を設定してもよい。そして目標配置状態情報に基づき、キャラクタオブジェクトＷＣの各関節Ｋ１〜Ｋ６を、関節ＭＫ１〜ＭＫ６の位置に移動させるための誘導ベクトルＵＶ１〜ＵＶ６を生成し、各関節Ｋ１〜Ｋ６に作用させる。
【０１０４】
ここで、誘導ベクトルＵＶ１〜ＵＶ６は、各フレームにおけるキャラクタオブジェクトの各関節Ｋ１〜Ｋ６の位置座標と目標配置状態にあるキャラクタオブジェクトＭＷＣの対応する関節ＭＫ１〜ＭＫ６の位置座標（目標配置状態情報）に基づき求めてもよい。
【０１０５】
例えば図９（Ａ）に示すように関節Ｋ１〜Ｋ６と対応する目標配置状態の関節ＭＫ１〜ＭＫ６を結ぶ方向に基づき誘導ベクトルＵＶ１〜ＵＶ６の方向を設定し、関節Ｋ１〜Ｋ６と対応する目標配置状態の関節ＭＫ１〜ＭＫ６との距離に基づき誘導ベクトルＵＶ１〜ＵＶ６の大きさを決定してもよい。
【０１０６】
この様にして時刻ｔ０において関節Ｋ１〜Ｋ６に作用させる誘導ベクトルＵＶ１〜ＵＶ６を求め、時刻ｔ０における関節Ｋ１〜Ｋ６に作用させると、キャラクタオブジェクトＷＣは時刻ｔ１において図９（Ｂ）に示すような配置状態３８２に変化する。
【０１０７】
そして図９（Ｂ）に示すように、時刻ｔ１において関節Ｋ１〜Ｋ６に作用させる誘導ベクトルＵＶ１〜ＵＶ６を求め、時刻ｔ１おける関節Ｋ１〜Ｋ６に作用させる。この様な処理をフレーム毎に行うことで、キャラクタオブジェクトＷＣを目標配置状態３９０に誘導することができる。
【０１０８】
図１０は、誘導制御によりキャラクタオブジェクトが目標配置状態に誘導させる様子を示した図である。図９（Ａ）（Ｂ）で説明したようにキャラクタオブジェクトの関節に誘導ベクトルを作用させることにより、キャラクタオブジェクトＷＣは目標配置状態ＭＷＣに近づいて行く。時刻ｔ０において配置状態３８０にあるキャラクタオブジェクトＷＣは、時刻ｔ１において配置状態３８２になり、時刻ｔ２において配置状態３８４になり、時刻ｔ３において配置状態３８６になり、時刻ｔ４において配置状態３８８になる。
【０１０９】
７．キャラクタオブジェクトの伸縮制御
本実施の形態では、前記キャラクタオブジェクトの関節に作用する仮想力に基づき、前記キャラクタオブジェクトの紐状部分を伸縮させる制御を行う。
【０１１０】
本実施の形態では画面上（表示部）に表示されたキャラクタオブジェクトへのタッチ操作によりキャラクタオブジェクトを伸ばしたり縮めたりすることができる。例えば画面上のキャラクタオブジェクトの１カ所を引っ張るタッチ操作（例えば画面上のキャラクタオブジェクトの１カ所をタッチしてタッチ箇所を移動させる操作）や２カ所を引き延ばす操作（例えば画面上のキャラクタオブジェクトの２カ所をタッチしてタッチ箇所間の距離を広げる操作）を行うと、操作力ベクトルが隣り合う関節間の距離を広げる方向に加わる。
【０１１１】
図２０（Ａ）（Ｂ）は操作力ベクトルが隣り合う関節間の距離を広げる方向に加わる例を示している。
【０１１２】
図２０（Ａ）では、隣り合う関節Ｋ１，Ｋ２に逆向きの作用力ベクトル５３０、５３２（いずれも外向き）が働いている。この様な場合作用ベクトル５３０と５３２により関節Ｋ１とＫ２は離れる方向に引っ張られ、関節Ｋ１の位置はＫ１ｐ→Ｋ１ｐ’に移動し、関節Ｋ２の位置はＫ２ｐ→Ｋ２ｐ’に移動する。これにより関節間の距離はｌ→ｌ’に変化する（離れる）。
【０１１３】
図２０（Ｂ）では、隣り合う関節Ｋ１，Ｋ２に同方向だが大きさの異なる作用力ベクトル５４０、５４２（外向きの作用ベクトル５４０＞内向きの作用ベクトル５４２）が働いている。この様な場合作用ベクトル５４０と５４２により関節Ｋ１Ｋ２は離れる方向に引っ張られ、関節Ｋ１の位置はＫ１ｐ→Ｋ１ｐ”に移動し、関節Ｋ２の位置はＫ２ｐ→Ｋ２ｐ”に移動する。これにより関節間の距離はｌ→ｌ”に変化する。
【０１１４】
また例えば画面上のキャラクタオブジェクトの２カ所を縮める操作（例えば画面上のキャラクタオブジェクトの２カ所をタッチしてタッチ箇所間の距離を縮める操作）を行うと、操作力ベクトルが隣り合う関節間の距離を縮める方向に加わる。
【０１１５】
図２１（Ａ）（Ｂ）は操作力ベクトルが隣り合う関節間の距離を縮める方向に加わる例を示している。
【０１１６】
図２１（Ａ）では、隣り合う関節Ｋ１，Ｋ２に逆向きの作用力ベクトル５５０、５５２（いずれも内向き）が働いている。この様な場合作用ベクトル５５０と５５２により関節Ｋ１、Ｋ２は近づく方向に引っ張られ、関節Ｋ１の位置はＫ１ｐ→Ｋ１ｐ’に移動し、関節Ｋ２の位置はＫ２ｐ→Ｋ２ｐ’に移動する。これにより関節間の距離はｌ→ｌ’に変化する（近づく）。
【０１１７】
図２１（Ｂ）では、隣り合う関節Ｋ１，Ｋ２に同方向だが大きさの異なる作用力ベクトル５６０、５６２（外向きの作用ベクトル５６０＜内向きの作用ベクトル５６２）が働いている。この様な場合作用ベクトル５６０と５６２により関節Ｋ１Ｋ２は近づく方向に引っ張られ、関節Ｋ１の位置はＫ１ｐ→Ｋ１ｐ”に移動し、関節Ｋ２の位置はＫ２ｐ→Ｋ２ｐ”に移動する。これにより関節間の距離はｌ→ｌ”に変化する（近づく）。
【０１１８】
このように本実施の形態では関節の位置の変化により隣り合う関節間の連結子の長さを可変に制御する。そして連結子の長さが所与の閾値を超えると、当該連結子で連結された関節間に新たな関節を追加する処理を行う。また連結子の長さが所与の閾値を下回ると、当該連結子で連結された関節のいずれかを削除して、削除された関節に接続されていた２つの関節を新たに連結させる処理を行う。
【０１１９】
図２２（Ａ）は、関節の追加処理、図２２（Ｂ）は、関節の削除処理について説明するための図である。
【０１２０】
図２２（Ａ）は、関節Ｋ１、Ｋ２、Ｋ３、Ｋ４が直列に連結された連結構造を有するキャラクタオブジェクトの紐状部分が伸長して新たな関節が追加される様子を示している。Ｌ１，Ｌ２、Ｌ３は関節間を接続する連結子である。５１０は関節間の距離（連結子の長さ）が初期状態（Ｌ１＝Ｌ２＝Ｌ３＝ｌ）にある状態を示している。
【０１２１】
ここで関節Ｋ２、Ｋ３を引き離す力が加わり、関節Ｋ１〜Ｋ４の位置が変化し、５１２に示すように関節Ｋ２と関節Ｋ３の距離が増大すると、連結子Ｌ２の長さも増大し、結果としてキャラクタオブジェクトの紐状部分は伸長することになる。
【０１２２】
しかし５１４に示すように関節Ｋ２と関節Ｋ３の距離がさらに増大して連結子Ｌ２の長さが第１の閾値を超えると、５１６に示すように、関節Ｋ２と関節Ｋ３の間に新たな関節Ｋ２．５を追加し、関節Ｋ２と新たな関節Ｋ２．５を連結子Ｌ２で接続し、新たな関節Ｋ２．５と関節Ｋ３とを新たに追加した連結子Ｌ２．５で接続する。
【０１２３】
ここで関節を追加するか否か判定する際の第１の閾値は、例えば初期状態の関節間の距離（連結子の長さ）ｌに基づき設定してもよい。例えば２ｌとしてもよい。この様にすると関節追加時に追加している関節の連結子が初期状態と同じ長さｌに設定することができる。
【０１２４】
図２２（Ｂ）は、関節Ｋ１、Ｋ２、Ｋ３、Ｋ４、Ｋ５が直列に連結された連結構造を有するキャラクタオブジェクトの紐状部分が減縮して関節が削除される様子を示している。Ｌ１，Ｌ２、Ｌ３、Ｌ４は関節間を接続する連結子である。５２０は関節間の距離（連結子の長さ）が初期状態（Ｌ１＝Ｌ２＝Ｌ３＝Ｌ４＝ｌ）にある状態を示している。
【０１２５】
ここで関節Ｋ２、Ｋ３を近づける力が加わり、関節Ｋ１〜Ｋ５の位置が変化し、５２２に示すように関節Ｋ２と関節Ｋ３の距離が減少すると、連結子Ｌ２の長さも減少し、結果としてキャラクタオブジェクトの紐状部分は減縮することになる。
【０１２６】
しかし５２４に示すように関節Ｋ２と関節Ｋ３の距離がさらに減少して連結子Ｌ２の長さが第２の閾値を下回ると、５２６に示すように、関節Ｋ３を削除し、関節Ｋ２と関節Ｋ４を連結子Ｌ４で接続する。
【０１２７】
ここで関節を削除するか否か判定する際の第２の閾値は、例えば初期状態の関節間の距離（連結子の長さ）ｌに基づき設定してもよい。例えば０．５ｌとしてもよい。この様にすると関節削除時に削除された関節に隣り合う関節をつなぐ連結子が初期状態より短くなることはないようにすることができる。
【０１２８】
ここでは第２の閾値を下回った連結子Ｌ２で接続されている関節Ｋ２、Ｋ３関節のいずれを削除するかについては、関節Ｋ２と関節Ｋ３に接続されている他方の連結子が短い方の関節としているが、例えば予め関節に割り付けられている所定の優先順に従って優先順位の低い方の関節を削除するようにしてもよいし、ランダムにいずれかを選択して削除してもよい。
【０１２９】
この様にして関節の追加や削除が行われるとキャラクタ制御データの関節制御データ（図５の３１２）が更新される。そして更新された関節制御データを用いて以降の演算が行われる。
【０１３０】
８．障害物オブジェクト
本実施の形態では、キャラクタオブジェクト以外にもオブジェクトが登場し、キャラクタオブジェクトと接触すると、キャラクタオブジェクトの移動を妨げたり、キャラクタオブジェクトに衝突を与えたりするオブジェクトが登場する。以下この様なオブジェクトを障害物オブジェクトと呼ぶ。
【０１３１】
本実施の形態では、ランダムに又は所与のアルゴリズムに従って仮想空間に障害物オブジェクトを配置したり、仮想空間内で障害物オブジェクトを移動動作（移動のみでもよいし、移動せずに関節を動かす動作でもよいし、移動及び動作を両方行う場合でもよい）させる制御を行う。
【０１３２】
図１６（Ａ）〜（Ｃ）、図１７（Ａ）〜（Ｃ）は、障害オブジェクトと遭遇した場合のキャラクタオブジェクトの動きについて説明するための図である。
【０１３３】
図１６（Ａ）〜（Ｃ）は、移動中のキャラクタオブジェクト（第１のキャラクタオブジェクトや第２のキャラクタオブジェクトでもよい）の移動経路に障害物オブジェクトが存在した場合を示す。
【０１３４】
図１６（Ａ）に示すようにキャラクタオブジェクトＷＣに作用力ベクトル４１０（プレーヤの操作入力により発生した操作力ベクトルでもよいし、誘導ベクトルでもよいし、これらの合力でもよい）が作用し、キャラクタオブジェクトＷＣが移動している場合、移動経路に障害物オブジェクト４００が存在したとする。本システムでは、障害物オブジェクト４００とキャラクタオブジェクトＷＣのヒットチェックをとっているので、図１６（Ｂ）のように障害物オブジェクト４００とキャラクタオブジェクトＷＣが所定距離内に近づくとヒットが検出される。このような場合、障害物オブジェクト４００に設定されている移動開始閾値とキャラクタオブジェクトＷＣが障害物オブジェクト４００に加える力（例えば作用力ベクトルの大きさとキャラクタオブジェクトに設定された仮想的な重さ等により求まる力）を比較して、比較結果に基づき、例えばキャラクタオブジェクトＷＣが障害物オブジェクト４００に加える力が移動開始閾値より小さい場合には、キャラクタオブジェクトＷＣが障害物オブジェクト４００に邪魔されて動けないようにキャラクタオブジェクトＷＣの移動動作に制限を加えてもよい。また図１６（Ｃ）に示すようにキャラクタオブジェクトＷＣが障害物オブジェクト４００にぶつかった反動による生じる力を外力ベクトル４１２として、キャラクタオブジェクトＷＣに加え、キャラクタオブジェクトＷＣが障害物オブジェクト４００にはじき返されるような移動制御を行ってもよい。
【０１３５】
図１７（Ａ）〜（Ｃ）は、移動中の障害物オブジェクトの移動経路にキャラクタオブジェクト（第１のキャラクタオブジェクトや第２のキャラクタオブジェクトでもよい）が存在した場合を示す。
【０１３６】
図１７（Ａ）に示すよう障害物オブジェクト４００が、所与の力４２０により移動している場合、キャラクタオブジェクトＷＣが存在したとする。本システムでは、障害物オブジェクト４００とキャラクタオブジェクトＷＣのヒットチェックをとっているので、図１７（Ｂ）のように障害物オブジェクト４００とキャラクタオブジェクトＷＣが所定距離内に近づくとヒットが検出される。このような場合、図１６（Ｃ）に示すように、キャラクタオブジェクトＷＣが障害物オブジェクトに押されて障害物オブジェクトと共に移動するような移動制御を行ってもよい。
【０１３７】
９．キャラクタ画像
図１１、図１２は、アプリケーション画像４１０の一例である。本実施の形態では、タッチパネルディスプレイにキャラクタオブジェクトＷＣが表示され、ユーザはタッチパネルディスプレイでのタッチ操作（例えば指等をキャラクタオブジェクトの表示位置にタッチして接触移動させること）によりキャラクタオブジェクトＷＣを自由に動かすことができる。
【０１３８】
またタッチパネルディスプレイはマルチタッチ可能に構成されているので、タッチパネルディスプレイにおいてキャラクタオブジェクトを引き延ばすようなタッチ操作（例えば指２本でキャラクタオブジェクトの２カ所をタッチして、タッチ位置を遠ざける操作等でもよいし、キャラクタオブジェクトの一カ所にタッチして引っ張るように指を移動させる操作でもよい）を行うことにより、図１２に示すようにキャラクタオブジェクトを伸ばすことができる。またキャラクタオブジェクトの二カ所にタッチして縮めるように指を移動させることでキャラクタオブジェクトを短縮させることができる。
【０１３９】
１０．切断処理
本実施の形態では、タッチパネル上の切断ボタン（図１２の４３２）をタッチすることでキャラクタオブジェクトＷＣを切断することができる。
【０１４０】
図１３（Ａ）〜（Ｃ）は、キャラクタオブジェクトが切断されるアプリケーション画像の例である。図１２に示すアプリケーション画像において、切断ボタン４３２がタッチ操作されると、キャラクタオブジェクトＷＣは切断されて、図１３（Ａ）に示すように、２つの切断されたキャラクタオブジェクトＷＣｂ１、ＷＣｂ２に分割される。
【０１４１】
切断されたキャラクタオブジェクトＷＣｂ１、ＷＣｂ２は、完全な形態のキャラクタオブジェクト（例えば頭と胴体と尾を有するキャラクタオブジェクト）ではなく、１つのキャラクタオブジェクトの切断された部分からなるキャラクタオブジェクト（例えば頭と胴体の半分からなるキャラクタオブジェクトと胴体の残り半分と尾からなるキャラクタオブジェクト）でもよい。
【０１４２】
図１３（Ａ）の状態で、切断ボタン４３２がタッチ操作されると、仮想空間に存在するキャラクタオブジェクトＷＣｂ１、ＷＣｂ２から１の切断対象となるキャラクタオブジェクトが選択されて、さらに切断されることになる。ここでは切断されたキャラクタオブジェクトＷＣｂ１が切断対象として選択されて、さらに切断されて、図１３（Ｂ）に示すように、２つの切断されたキャラクタオブジェクトＷＣｂ１、ＷＣｂ３に分割されている。
【０１４３】
図１３（Ａ）に示すように、仮想空間に複数の切断されたキャラクタオブジェクトＷＣｂ１、ＷＣｂ２が存在する状態で切断処理を行う場合には、切断対象となるキャラクタオブジェクトを選択する処理をおこなう。切断対象は、例えばキャラクタオブジェクトの長さや予め設定された優先順位等によって決定することができる。例えば仮想空間に存在する複数のキャラクタオブジェクトの長さに基づき切断対象となるキャラクタオブジェクトを選択してもよい。そして長さが同じキャラクタオブジェクトが複数ある場合には、予め設定されている優先順位に従って切断対象となるキャラクタオブジェクトを選択してもよい。
【０１４４】
図１３（Ａ）では、後述するようにキャラクタオブジェクトＷＣｂ１の長さ＞キャラクタオブジェクトＷＣｂ２の長さなので、キャラクタオブジェクトＷＣｂ１が切断対象として選択されている。もしキャラクタオブジェクトＷＣｂ１の長さ＝キャラクタオブジェクトＷＣｂ２である場合には、例えばキャラクタオブジェクトを構成する関節（直列に連結された関節）の頭又は尾に近い方の関節を含むキャラクタオブジェクトを選択するようにしてもよい。例えば直列に連結された関節に頭又は尾から昇順に順番に番号をふっておき、番号が低いほうが高い優先順位で選択されるようにすることで、頭又は尾に近い方の関節を含むキャラクタオブジェクトを選択することができる。
【０１４５】
ここでキャラクタオブジェクトの長さとして、キャラクタオブジェクトに含まれる関節（直列に連結された関節）間の距離の総和をもちいてもよい。関節間の距離が変化しない構成の場合には、直列に連結された関節の数を用いてもよい。
【０１４６】
図１３（Ｂ）の状態で、切断ボタン４３２がタッチ操作されると、仮想空間に存在するキャラクタオブジェクトＷＣｂ１、ＷＣｂ２、ＷＣｂ３から１の切断対象となるキャラクタオブジェクトが選択されて、さらに切断されることになる。ここでは切断されたキャラクタオブジェクトＷＣｂ２が切断対象として選択されて、さらに切断されて、図１３（Ｃ）に示すように、２つの切断されたキャラクタオブジェクトＷＣｂ２、ＷＣｂ４に分割されている。
【０１４７】
この様な切断処理が繰り返し行われることにより、図１４に示すように、キャラクタオブジェクトＣＷを細かく裁断することができる。
【０１４８】
図１５（Ａ）〜（Ｄ）、図１８（Ａ）〜（Ｄ）は、切断処理に伴う関節の連結制御処理について説明するための図である。図１５（Ａ）〜（Ｄ）は、図１２、図１３（Ａ）〜（Ｃ）の各状態のキャラクタオブジェクトに対応する関節の連結構造を模式的に示した図である。（図１５（Ａ）〜（Ｄ）では、説明を簡単にするために関節の接続構造のみ図示しているので、湾曲しているキャラクタオブジェクトについても関節を直線上に並べて図示している。）
図１８（Ａ）〜（Ｄ）は、本実施の形態の関節の連結制御データの一例である。本実施の形態では、キャラクタオブジェクトが切断されたり、接続されたりすることにより、関節の連結状態が変化するため、キャラクタオブジェクトの切断や接続に伴い関節の連結制御データ６１０も変化する。 図１５（Ａ）〜（Ｄ）に示すようにキャラクタオブジェクトの連結状態が変化した場合には連結制御データも図１８（Ａ）〜（Ｄ）に示すように変化する。
【０１４９】
連結制御データ６１０は、直列に接続された関節の連結状態を示す関節連結情報６１４を仮想空間に存在するオブジェクトのオブジェクト識別情報６１２に関連づけて、記憶させたデータである。例えば図１８（Ａ）〜（Ｄ）に示すように、構造体構造を有し、関節連結情報６１４として、連結されている関節の関節識別情報を接続順に配列として並べたものでもよい。
【０１５０】
図１２に示すキャラクタオブジェクトＷＣは、図１５（Ａ）に示すように関節Ｋ１〜Ｋ９が直列に連結した関節構造を有しているとする。この様な場合、仮想空間にはキャラクタオブジェクトＷＣの１体が存在しているので、図１８（Ａ）に示すような連結制御データが生成される。すなわちキャラクタオブジェクトＷＣのオブジェクト識別情報６１２が「ＯＢ１」であり、オブジェクト識別情報「ＯＢ１」に対応する関節連結情報６１４として、関節Ｋ１〜Ｋ９に対応する関節識別情報Ｋ１〜Ｋ９が連結順に配列されている。
【０１５１】
当該キャラクタオブジェクトの関節連結情報を参照してキャラクタオブジェクトＷＣを構成する関節を特定し、図５に示す関節制御データを参照して、特定した関節（図５ではノード）の位置を求めることができる。
【０１５２】
図１３（Ａ）に示すキャラクタオブジェクトＷＣｂ１とキャラクタオブジェクトＷＣｂ２は、図１５（Ｂ）に示すようにそれぞれ、関節Ｋ１〜Ｋ５が直列に連結した関節構造（ＷＣｂ１）と、関節Ｋ６〜Ｋ９が直列に連結した関節構造（ＷＣｂ２）とを有している。
【０１５３】
すなわち、関節Ｋ１〜Ｋ９が直列に連結された関節構造を有するキャラクタオブジェクトＷＣ（図１５（Ａ）参照）において、隣り合わせた第１の関節Ｋ５と第２の関節Ｋ６の関節間の連結Ｌ５が解消され、キャラクタオブジェクトＷＣは、第１の関節Ｋ５を含むキャラクタオブジェクトＷＣｂ１と第２の関節Ｋ６を含むキャラクタオブジェクトＷＣｂ２に分割されている。
【０１５４】
この様な場合、仮想空間にはキャラクタオブジェクトＷＣｂ１とキャラクタオブジェクトＷＣｂの２体が存在しているので、図１８（Ｂ）に示すような連結制御データが生成される。すなわちキャラクタオブジェクトＷＣｂ１のオブジェクト識別情報６１２が「ＯＢ１」であり、オブジェクト識別情報「ＯＢ１」に対応する関節連結情報６１４として、関節Ｋ１〜Ｋ５に対応する関節識別情報Ｋ１〜Ｋ５が連結順に配列され、キャラクタオブジェクトＷＣｂ２のオブジェクト識別情報６１２が「ＯＢ２」であり、オブジェクト識別情報「ＯＢ２」に対応する関節連結情報６１４として、関節Ｋ６〜Ｋ９に対応する関節識別情報Ｋ６〜Ｋ９が連結順に配列されている。
【０１５５】
図１３（Ｂ）に示すキャラクタオブジェクトＷＣｂ１とキャラクタオブジェクトＷＣｂ２とキャラクタオブジェクトＷＣｂ３は、図１５（Ｃ）に示すようにそれぞれ、関節Ｋ１〜Ｋ３が直列に連結した関節構造（ＷＣｂ１）と、関節Ｋ６〜Ｋ９が直列に連結した関節構造（ＷＣｂ２）と、関節Ｋ４、Ｋ５が直列に連結した関節構造（ＷＣｂ３）とを有している。
【０１５６】
すなわち、関節Ｋ１〜Ｋ５が直列に連結された関節構造を有するキャラクタオブジェクトＷＣｂ１（図１５（Ｂ）参照）において、隣り合わせた第１の関節Ｋ３と第２の関節Ｋ４の関節間の連結Ｌ３が解消され、キャラクタオブジェクトＷＣｂ１は、第１の関節Ｋ３を含むキャラクタオブジェクトＷＣｂ１と第２の関節Ｋ４を含むキャラクタオブジェクトＷＣｂ３に分割されている。
【０１５７】
この様な場合、仮想空間にはキャラクタオブジェクトＷＣｂ１とキャラクタオブジェクトＷＣｂ２とキャラクタオブジェクトＷＣｂ３の３体が存在しているので、図１８（Ｃ）に示すような連結制御データが生成される。すなわちキャラクタオブジェクトＷＣｂ１のオブジェクト識別情報６１２が「ＯＢ１」であり、オブジェクト識別情報「ＯＢ１」に対応する関節連結情報６１４として、関節Ｋ１〜Ｋ３に対応する関節識別情報Ｋ１〜Ｋ３が連結順に配列され、キャラクタオブジェクトＷＣｂ２のオブジェクト識別情報６１２が「ＯＢ２」であり、オブジェクト識別情報「ＯＢ２」に対応する関節連結情報６１４として、関節Ｋ６〜Ｋ９に対応する関節識別情報Ｋ６〜Ｋ９が連結順に配列され、キャラクタオブジェクトＷＣｂ３のオブジェクト識別情報６１２が「ＯＢ３」であり、オブジェクト識別情報「ＯＢ３」に対応する関節連結情報６１４として、関節Ｋ４、Ｋ５に対応する関節識別情報Ｋ４、Ｋ５が連結順に配列されている。
【０１５８】
図１３（Ｃ）に示すキャラクタオブジェクトＷＣｂ１とキャラクタオブジェクトＷＣｂ２とキャラクタオブジェクトＷＣｂ３とキャラクタオブジェクトＷＣｂ４は、図１５（Ｄ）に示すようにそれぞれ、関節Ｋ１〜Ｋ３が直列に連結した関節構造（ＷＣｂ１）と、関節Ｋ６、Ｋ７が直列に連結した関節構造（ＷＣｂ２）と、関節Ｋ４、Ｋ５が直列に連結した関節構造（ＷＣｂ３）と、関節Ｋ８、Ｋ９が直列に連結した関節構造（ＷＣｂ４）とを有している。
【０１５９】
すなわち、関節Ｋ６〜Ｋ９が直列に連結された関節構造を有するキャラクタオブジェクトＷＣｂ２（図１５（Ｃ）参照）において、隣り合わせた第１の関節Ｋ７と第２の関節Ｋ８の関節間の連結Ｌ７が解消され、キャラクタオブジェクトＷＣｂ２は、第１の関節Ｋ７を含むキャラクタオブジェクトＷＣｂ２と第２の関節Ｋ８を含むキャラクタオブジェクトＷＣｂ４に分割されている。
【０１６０】
この様な場合、仮想空間にはキャラクタオブジェクトＷＣｂ１とキャラクタオブジェクトＷＣｂ２とキャラクタオブジェクトＷＣｂ３とキャラクタオブジェクトＷＣｂ４の４体が存在しているので、図１８（Ｄ）に示すような連結制御データが生成される。すなわちキャラクタオブジェクトＷＣｂ１のオブジェクト識別情報６１２が「ＯＢ１」であり、オブジェクト識別情報「ＯＢ１」に対応する関節連結情報６１４として、関節Ｋ１〜Ｋ３に対応する関節識別情報Ｋ１〜Ｋ３が連結順に配列され、キャラクタオブジェクトＷＣｂ２のオブジェクト識別情報６１２が「ＯＢ２」であり、オブジェクト識別情報「ＯＢ２」に対応する関節連結情報６１４として、関節Ｋ６、Ｋ７に対応する関節識別情報Ｋ６、Ｋ７が連結順に配列され、キャラクタオブジェクトＷＣｂ３のオブジェクト識別情報６１２が「ＯＢ３」であり、オブジェクト識別情報「ＯＢ３」に対応する関節連結情報６１４として、関節Ｋ４、Ｋ５に対応する関節識別情報Ｋ４、Ｋ５が連結順に配列され、キャラクタオブジェクトＷＣｂ４のオブジェクト識別情報６１２が「ＯＢ４」であり、オブジェクト識別情報「ＯＢ４」に対応する関節連結情報６１４として、関節Ｋ８、Ｋ９に対応する関節識別情報Ｋ８、Ｋ９が連結順に配列されている。
【０１６１】
ここでキャラクタオブジェクトに含まれる関節の数に基づき当該キャラクタオブジェクトが切断可能状態にあるか否か判断し、切断可能状態にあるキャラクタオブジェクトを切断対象としてもよい。すなわち図１５（Ａ）〜（Ｄ）に示すように関節間の連結を切断する形式で切断処理を行う場合には、切断後にも関節が直列に接続された関節構造を保つためには、少なくとも４個の関節を含んでいる必要がある。すなわち図１５（Ｄ）に示すようにキャラクタオブジェクト関節が２個又は３個しかない場合には、切断すると切断後のオブジェクトには関節が1個しか含まれないものができるので、この様なものは切断可能状態にないと判断してもよい。
【０１６２】
切断ボタン４３２がタッチ操作された場合に、図１５（Ｄ）に示すように、切断可能状態にあるキャラクタオブジェクトが１つも存在しない場合には、切断を行わないようにしてもよい。
【０１６３】
１１．接続処理
本実施の形態では、仮想空間内の複数のキャラクタオブジェクトが所定の位置関係になると、複数のキャラクタオブジェクトが自動的に接続される。
【０１６４】
図２９（Ａ）（Ｂ）はキャラクタオブジェクトの接続されるアプリケーション画像の例である。図２９（Ａ）は、仮想空間内に複数のキャラクタオブジェクトＷＣ１、ＷＣ２、ＷＣ３・・が存在する様子を示しており、キャラクタオブジェクトＷＣ１とキャラクタオブジェクトＷＣ２のそれぞれの端が所定の距離内に存在する状態となっている。この様な場合、キャラクタオブジェクトＷＣ１とキャラクタオブジェクトＷＣ２が自動的に接続されて図２９（Ｂ）に示すように、一体として動く１つのキャラクタオブジェクトＷＣ１となる。
【０１６５】
ここで例えばキャラクタオブジェクトＷＣ１とキャラクタオブジェクトＷＣ３のそれぞれの端は所定の距離内に存在する状態となっていないので、この状態では自動接続はおこなわれないが、例えばユーザがタッチ操作によりいずれかのキャラクタオブジェクトを動かして、キャラクタオブジェクトＷＣ１とキャラクタオブジェクトＷＣ３のそれぞれの端が所定の距離内に存在する状態とすると、キャラクタオブジェクトＷＣ１とキャラクタオブジェクトＷＣ３を接続させることができる。
【０１６６】
図１９（Ａ）、（Ｂ）は、本実施の形態の接続制御について説明するための図である。
【０１６７】
図１９（Ａ）では、キャラクタオブジェクトＷＣ１の直列に連結された関節構造（関節Ｋ１〜Ｋ４が直列に連結）の端に位置する関節Ｋ４と、キャラクタオブジェクトＷＣ２の直列に連結された関節構造（関節Ｋ５〜Ｋ７が直列に連結）の端に位置する関節Ｋ５との距離（位置関係の一例）が所定の閾値以下となっているので、所与の接続条件を満たすとしてこれらのキャラクタオブジェクトの接続を行う。
【０１６８】
図１９（Ｂ）は、キャラクタオブジェクトＷＣ１の関節Ｋ４と、キャラクタオブジェクトＷＣ２の関節Ｋ５とが接続される様子を示している。このようにキャラクタオブジェクトの端に位置する関節同士Ｋ４、Ｋ５を新たな連結子Ｌ４で連結して、キャラクタオブジェクトの接続を行うようにしてもよい。このようにすることで図２９（Ｂ）に示すような接続画像を生成することができる。
【０１６９】
図２３（Ａ）（Ｂ）は、接続処理に伴う関節の連結制御処理について説明するための図である。図１９（Ａ）（Ｂ）に示すようにキャラクタオブジェクトの連結状態が変化した場合には連結制御データも図２３（Ａ）（Ｂ）に示すように変化する。
【０１７０】
図１９（Ａ）に示すキャラクタオブジェクトＷＣ１とキャラクタオブジェクトＷＣ２とキャラクタオブジェクトＷＣ３はそれぞれ、関節Ｋ１〜Ｋ４が直列に連結した関節構造（ＷＣ１）と、関節Ｋ５〜Ｋ７が直列に連結した関節構造（ＷＣ２）と、関節Ｋ８〜Ｋ１０が直列に連結した関節構造（ＷＣ３）とを有している。
【０１７１】
この様な場合、仮想空間にはキャラクタオブジェクトＷＣ１とキャラクタオブジェクトＷＣ２とキャラクタオブジェクトＷＣ３の３体が存在しているので、図２３（Ａ）に示すような連結制御データが生成される。すなわちキャラクタオブジェクトＷＣ１のオブジェクト識別情報６１２が「ＯＢ１」であり、オブジェクト識別情報「ＯＢ１」に対応する関節連結情報６１４として、関節Ｋ１〜Ｋ４に対応する関節識別情報Ｋ１〜Ｋ４が連結順に配列され、キャラクタオブジェクトＷＣ２のオブジェクト識別情報６１２が「ＯＢ２」であり、オブジェクト識別情報「ＯＢ２」に対応する関節連結情報６１４として、関節Ｋ５〜Ｋ７に対応する関節識別情報Ｋ５〜Ｋ７が連結順に配列され、キャラクタオブジェクトＷＣ３のオブジェクト識別情報６１２が「ＯＢ３」であり、オブジェクト識別情報「ＯＢ３」に対応する関節連結情報６１４として、関節Ｋ８〜Ｋ１０に対応する関節識別情報Ｋ８〜Ｋ１０が連結順に配列されている。
【０１７２】
接続がおこなわれて、図１９（Ｂ）の状態になると、キャラクタオブジェクトＷＣ１とキャラクタオブジェクトＷＣ３はそれぞれ、関節Ｋ１〜Ｋ７が直列に連結した関節構造（ＷＣ１）と、関節Ｋ８〜Ｋ１０が直列に連結した関節構造（ＷＣ３）になる。
【０１７３】
この様な場合、仮想空間にはキャラクタオブジェクトＷＣ１とキャラクタオブジェクトＷＣ３の２体が存在しているので、図２３（Ｂ）に示すような連結制御データが生成される。すなわちキャラクタオブジェクトＷＣ１のオブジェクト識別情報６１２が「ＯＢ１」であり、オブジェクト識別情報「ＯＢ１」に対応する関節連結情報６１４として、関節Ｋ１〜Ｋ７に対応する関節識別情報Ｋ１〜Ｋ７が連結順に配列され、キャラクタオブジェクトＷＣ３のオブジェクト識別情報６１２が「ＯＢ３」であり、オブジェクト識別情報「ＯＢ３」に対応する関節連結情報６１４として、関節Ｋ８〜Ｋ１０に対応する関節識別情報Ｋ８〜Ｋ１０が連結順に配列されている。
【０１７４】
なお図１３（Ａ）〜（Ｃ）で説明した分割処理が行われた後の所定時間内は切断されたキャラクタオブジェクト同士についての接続は行わないようにしてもよい。図１３（Ａ）に示すように、分割直後には切断されたキャラクタオブジェクトＷＣｂ１，ＷＣｂ２の切断点の関節同士は近くに位置していることが多く、せっかく分割してもすぐに接続されしまう可能性が高い。しかしこのようにすることで、分割後すぐに接続されることを防止することができる。
【０１７５】
この様な切断処理が繰り返し行われることにより、図１４に示すように、キャラクタオブジェクトＣＷを細かく裁断することができる。
【０１７６】
また例えば図１４に示す状態で、画面上の一括接続ボタン４３４がタッチ操作されると（一括接続イベントに発生）、１つのキャラクタオブジェクトから切断により分割されたすべてのキャラクタオブジェクトが接続され、図１２に示すような１つのキャラクタオブジェクトになる。分割により図１４に示すように多数のキャラクタオブジェクトが発生すると、ユーザのタッチ操作で接続させるのは、手間かかり面倒である。しかし一括接続ボタン４３４を操作することにより、簡単に切断前に戻すことができるので、ユーザは簡単に繰り返し切断操作を楽しむことができる。
【０１７７】
１２．処理の説明
次に本実施形態の処理の流れについて説明する。ここで説明する処理は、処理部１００が、記憶部１７０に記憶されているシステムプログラム（不図示）やアプリケーションプログラム１７４を読み出して実行することによって実現され、所定サイクルで繰り返し実行される。
【０１７８】
図２５は、本実施の形態の全体処理の流れを示すフローチャートである。
【０１７９】
先ずアプリケーション演算部１１０は、仮想空間中に背景、ＮＰＣなどを配置してアプリケーション空間を形成し、形成したアプリケーション空間に、キャラクタ初期設定データ１７６を参照して初期状態のキャラクタオブジェクトＷＣを初期位置に配置する（ステップＳ１０）。
【０１８０】
このとき、キャラクタオブジェクトＷＣの配置にともなって、キャラクタ制御データ３００の関節制御データ３１０に初期状態の関節モデルが登録され、登録された関節モデルに従って外皮を形成してキャラクタオブジェクトＷＣの表示オブジェクトをアプリケーション空間に配置する。
【０１８１】
次に分割処理を行う（ステップＳ２０）。分割処理の詳細については図２６で説明する。次に接続処理を行う（ステップＳ３０）。接続処理の詳細については図２７で説明する。次に動作制御処理を行う（ステップＳ４０）。動作制御処理の詳細については図２８で説明する。
【０１８２】
次に、処理部１００は更新された関節制御データや関節制御データに基づいてキャラクタオブジェクトの外皮の形成処理を実行して、キャラクタオブジェクトＷＣの表示オブジェクトをアプリケーション空間に配置する（ステップＳ５０）。
【０１８３】
次いで、処理部１００はアプリケーションの終了条件を満たしているか否かを判定する（ステップＳ６０）。本実施形態では、アプリケーション終了入力が行われたら終了条件を満たしていると判定する。
【０１８４】
アプリケーション終了条件を満たしていなければ（ステップＳ６０のＮＯ）、ステップＳ２０に戻る。一方、終了条件を満たしていれば（ステップＳ６０のＹＥＳ）ゲーム終了となる。
【０１８５】
図２６は、本実施の形態の分割処理の流れを示すフローチャートである。
【０１８６】
分割イベントが発生したか否か判断し（ステップＳ１１０）、分割イベントが発生した場合には、以下の処理を行う。画面上の分割ボタンがタッチ操作された場合に分割イベントが発生したと判断してもよい。
【０１８７】
次に連結制御データ及び関節制御データに基づき切断対象オブジェクトを決定する（ステップＳ１２０）。例えば最も長いキャラクタオブジェクトを切断対象とするなど、キャラクタオブジェクトの長さ基づき切断対象となるキャラクタオブジェクトを選択してもよい。
【０１８８】
切断対象オブジェクトが存在する場合には（ステップＳ１３０）、以下の処理を行う。
【０１８９】
まず切断対象オブジェクトの切断対象連結子を決定し（ステップＳ１４０）、切断対象連結子で接続された第１の関節と第２の関節の関節間の連結を解消し、第１の関節を含む分割オブジェクトと第２の関節を含む分割オブジェクトに分割する（ステップＳ１５０）。
【０１９０】
そして、分割よって生じたオブジェクト数の変更とオブジェクトの連結の変更に基づき連結制御データを更新する（ステップＳ１６０）。
【０１９１】
図２７は、本実施の形態の接続処理の流れを示すフローチャートである。
【０１９２】
一括接続イベントが発生したか否か判断し（ステップＳ２１０）、発生した場合には、すべての分割オブジェクトを元オブジェクトの連結制御データに基づき接続して１つのオブジェクトにする（ステップＳ２２０）。画面上の一括接続ボタンがタッチ操作された場合に一括接続イベントが発生したと判断してもよい。
【０１９３】
接続イベントが発生したか否か判断し（ステップＳ２３０）、発生していない場合にはステップＳ２８０にいく。発生した場合には、各オブジェクトの端の関節（頭と尻尾以外）について、他のオブジェクトの端の関節（頭と尻尾以外）との距離を求め、当該関節との距離が接続条件を満たす場合には、接続対象関節候補として抽出する（ステップＳ２４０）。
【０１９４】
次に所定時間内に分割イベントがあったか判断し（ステップＳ２５０）、ない場合にはステップＳ２７０にいく。あった場合には、接続対象関節組み合わせ候補の中に所定時間内の分割イベントにより切断された関節の組み合わせが含まれている場合には、それを接続対象関節組み合わせ候補から除外する（ステップＳ２６０）。
【０１９５】
次に接続対象関節組み合わせ候補の関節間を連結子で接続し、２つのオブジェクトを接続して１つのオブジェクトにする（ステップＳ２７０）
そして、接続よって生じたオブジェクト数の変更とオブジェクトの連結の変更に基づき連結制御データを更新する（ステップＳ２８０）。
【０１９６】
図２８は、本実施の形態の動作制御処理の流れを示すフローチャートである。
【０１９７】
処理部１００は、予め動作が設定されているオブジェクト（例えば、ＮＰＣなどの障害物オブジェクト）の動作を制御する（ステップＳ３１０）。例えば、キャラクタオブジェクトWＣの移動を邪魔する障害物オブジェクトなどを設定し、所定のルールに基づいて移動制御する。
【０１９８】
次に、処理部１００は、プレーヤの操作入力に従ってキャラクタオブジェクトＷＣの各関節に作用させる操作力ベクトルを演算する（ステップＳ３２０）。
【０１９９】
次に、処理部１００は、ヒット判定制御データに基づきキャラクタオブジェクトＷＣと他のオブジェクトのヒットチェック処理を行い、ヒットチェック結果に従って、キャラクタオブジェクトの関節に作用させる外力ベクトルを演算する（ステップＳ３３０）。
【０２００】
次に、処理部１００は、キャラクタオブジェクトＷＣの関節に作用する力の合力である作用力ベクトルを求め、作用力ベクトルに基づきキャラクタオブジェクトの関節の移動位置を演算する（ステップＳ３４０）。
【０２０１】
次に、処理部１００は、キャラクタオブジェクトＷＣの関節の移動位置に基づき、関節の追加、削減処理を行い、移動後の関節位置を決定する（ステップＳ３５０）。
【０２０２】
次に、処理部１００は、移動後の関節位置に基づき関節制御データの更新やヒット判定制御データの更新を行う（ステップＳ３６０）。
【０２０３】
以上、本発明を適用した第１実施形態について説明したが、本発明の適用可能な構成がこれらに限定されるものではなく、適宜構成要素の追加・削除・変更を行うことができる。
【０２０４】
例えば、本実施形態では、キャラクタオブジェクトＷＣの全身を関節構造のモデルとしたが、下半身や上半身といった一部のみを関節構造のモデルとしても良い。例えば、プレーヤキャラクタＷＣをカタツムリとし、殻の部分は形状・大きさが変化せず、体の部分をプレーヤキャラクタＷＣのような関節構造を有した伸縮自在なモデルとして設定する。そして、体の部分の制御については上述の実施形態を適用するならば、殻から出た体部分が自在に伸び縮みするカタツムリらしい様子を表現する事ができる。
【０２０５】
また上記実施の形態では、タッチパネルディスプレイを用いてタッチ操作により操作入力を行う場合を例にとり説明したが、これに限られない。例えばボタンやレバーやキーボード等の操作部から操作入力を行ってもよい。
【０２０６】
また上記実施の形態ではアプリケーション空間（仮想空間）が２次元平面である場合を例にとり説明したが、これに限られない。例えば３次元空間でもよい。
【符号の説明】
【０２０７】
２０２  ノード、２０４  連結子、１００  処理部、１１０  アプリケーション演算部、１１２  キャラクタオブジェクト制御部、１１４  切断制御部、１１６  接続制御部、１２０  画像生成部、１２２  画像表示部、１３０  音生成部、１３２  音出力部、１４０  通信制御部、１４２  通信部、１６０  操作入力部、１７０  記憶部、１７２  システムプログラム、１７４  アプリケーションプログラム、１７６  キャラクタ初期設定データ、３００  キャラクタ制御データ、３１０  関節制御データ、３３０  作用力データ、  連結制御データ、ＢＭ  骨格モデル、ＷＣ  キャラクタオブジェクト、ＷＣｈ  頭、ＷＣｂ  胴、ＷＣｔ  尾、ＵＶ１〜ＵＶ６  誘導ベクトル、Ｋ１〜Ｋ６  関節
【図１】
2011143123.tif 000003
【図２】
2011143123.tif 000004
【図３】
2011143123.tif 000005
【図４】
2011143123.tif 000006
【図５】
2011143123.tif 000007
【図６】
2011143123.tif 000008
【図７】
2011143123.tif 000009
【図８】
2011143123.tif 000010
【図９】
2011143123.tif 000011
【図１０】
2011143123.tif 000012
【図１１】
2011143123.tif 000013
【図１２】
2011143123.tif 000014
【図１３】
2011143123.tif 000015
【図１４】
2011143123.tif 000016
【図１５】
2011143123.tif 000017
【図１６】
2011143123.tif 000018
【図１７】
2011143123.tif 000019
【図１８】
2011143123.tif 000020
【図１９】
2011143123.tif 000021
【図２０】
2011143123.tif 000022
【図２１】
2011143123.tif 000023
【図２２】
2011143123.tif 000024
【図２３】
2011143123.tif 000025
【図２４】
2011143123.tif 000026
【図２５】
2011143123.tif 000027
【図２６】
2011143123.tif 000028
【図２７】
2011143123.tif 000029
【図２８】
2011143123.tif 000030
【図２９】
2011143123.tif 000031