(57)【要約】【課題】第１モーションデータに基づく第１動作を実行中のキャラクタの動作を第２モーションデータに基づく第２動作に切り替えることを好適に実行することが可能な画像処理装置、画像処理システム、及びプログラムを提供する。【解決手段】実行手段（１７０）は、第１動作を実行中の前記キャラクタの動作を第２動作に切り替える場合に、第１モーションデータの動作切替時フレームにおけるキャラクタの特定部位の位置と、第２モーションデータの各フレームのうちから設定された複数の候補フレームの各々におけるキャラクタの特定部位の位置とに基づいて、複数の候補フレームのうちのいずれかを選択し、当該選択された候補フレームに基づくフレームから第２モーションデータに基づいてキャラクタに動作を実行させる。【選択図】図７
2020035446.tif 000002
【特許請求の範囲】
【請求項１】
キャラクタに第１動作を実行させるための第１モーションデータを取得する第１取得手段と、
前記キャラクタに第２動作を実行させるための第２モーションデータを取得する第２取得手段と、
前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１モーションデータの動作切替時フレームにおける前記キャラクタの特定部位の位置を特定する第１特定手段と、
前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第２モーションデータの各フレームのうちから設定された複数の候補フレームの各々における前記キャラクタの前記特定部位の位置を特定する第２特定手段と、
前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１特定手段によって特定された前記動作切替時フレームにおける前記特定部位の位置と、前記第２特定手段によって特定された前記複数の候補フレームの各々における前記特定部位の位置とに基づいて、前記複数の候補フレームのうちのいずれかを選択し、当該選択された候補フレームに基づくフレームから前記第２モーションデータに基づいて前記キャラクタに動作を実行させる実行手段と、
を含む画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理システム、及びプログラムに関する。
【背景技術】
【０００２】
複数のモーションデータのうちから選択されたモーションデータに基づいて、キャラクタに動作を実行させる画像処理装置（例えばゲーム制御装置等）が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１０４４８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
第１モーションデータに基づく第１動作を実行中のキャラクタの動作を第２モーションデータに基づく第２動作に切り替える場合、第１動作の実行中のキャラクタの足（フィールドに接地している足）の位置と、第２動作の開始時のキャラクタの上記足の位置（第２モーションデータの先頭フレームにおけるキャラクタの上記足の位置）とがずれていることによって、第１動作から第２動作への動作切替時にキャラクタの足がフィールド（地面又は床等）上で滑っているかのように見えてしまい、ユーザに違和感を与えてしまう場合がある。
【０００５】
このような問題の発生を抑制するための手法としては、第１モーションデータのフレームのうちの、上記のような足の位置ずれが生じないようなフレームを基準フレームとして予め設定しておき、第１動作を実行中のキャラクタの動作を第２動作に切り替える場合には、基準フレームになるまで第１動作をキャラクタに継続させ、基準フレームになったら、先頭フレームから第２モーションデータに基づいてキャラクタに動作を実行させるような手法が考えられる。
【０００６】
しかしながら、ユーザによる第２動作の実行指示操作に応じて、第１動作を実行中のキャラクタの動作を第２動作に切り替える場合、上記手法では、実行指示操作に応じて直ちにキャラクタの動作を切り替えるのではなく、基準フレームになるまで第１動作をキャラクタに継続させ、基準フレームになってからキャラクタの動作を切り替えるため、キャラクタの動作切替が遅れる（すなわち、キャラクタの反応が遅い）との不満をユーザに感じさせてしまう場合がある。
【０００７】
本発明は上記課題に鑑みてなされたものであって、その目的は、第１モーションデータに基づく第１動作を実行中のキャラクタの動作を第２モーションデータに基づく第２動作に切り替えることを好適に実行することが可能な画像処理装置、画像処理システム、及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の一態様に係る画像処理装置は、キャラクタに第１動作を実行させるための第１モーションデータを取得する第１取得手段と、前記キャラクタに第２動作を実行させるための第２モーションデータを取得する第２取得手段と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１モーションデータの動作切替時フレームにおける前記キャラクタの特定部位の位置を特定する第１特定手段と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第２モーションデータの各フレームのうちから設定された複数の候補フレームの各々における前記キャラクタの前記特定部位の位置を特定する第２特定手段と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１特定手段によって特定された前記動作切替時フレームにおける前記特定部位の位置と、前記第２特定手段によって特定された前記複数の候補フレームの各々における前記特定部位の位置とに基づいて、前記複数の候補フレームのうちのいずれかを選択し、当該選択された候補フレームに基づくフレームから前記第２モーションデータに基づいて前記キャラクタに動作を実行させる実行手段と、を含む。
【０００９】
本発明の一態様に係る画像処理システムは、キャラクタに第１動作を実行させるための第１モーションデータを取得する第１取得手段と、前記キャラクタに第２動作を実行させるための第２モーションデータを取得する第２取得手段と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１モーションデータの動作切替時フレームにおける前記キャラクタの特定部位の位置を特定する第１特定手段と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第２モーションデータの各フレームのうちから設定された複数の候補フレームの各々における前記キャラクタの前記特定部位の位置を特定する第２特定手段と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１特定手段によって特定された前記動作切替時フレームにおける前記特定部位の位置と、前記第２特定手段によって特定された前記複数の候補フレームの各々における前記特定部位の位置とに基づいて、前記複数の候補フレームのうちのいずれかを選択し、当該選択された候補フレームに基づくフレームから前記第２モーションデータに基づいて前記キャラクタに動作を実行させる実行手段と、を含む。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るゲームシステムの構成を示す図である。
【図２】仮想空間の一例を示す図である。
【図３】選手キャラクタの一例を示す図である。
【図４Ａ】歩行動作の一例を示す図である。
【図４Ｂ】ステップ動作の一例を示す図である。
【図５】動作切替時の「足滑り」の一例について説明するための図である。
【図６】本発明の実施形態に係る動作切替手法の一例について説明するための図であ    る。
【図７】本発明の実施形態に係るゲームシステムの機能ブロック図である。
【図８】モーションデータの一例を示す図である。
【図９】候補フレームデータの一例を示す図である。
【図１０】キャラクタ状態データの一例を示す図である。
【図１１】取得される特定部位間の距離の一例を示す図である。
【図１２】ゲームシステムで実行される処理の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を図面に基づいて説明する。以下では、画像処理システムの一例であるゲームシステムに本発明を適用した例について説明する。
【００１２】
［１．ゲームシステムの構成］図１は、本発明の実施形態に係るゲームシステムの構成を示す。図１に示すように、本実施形態に係るゲームシステム１はゲーム端末１０とサーバ３０とを含む。ゲーム端末１０とサーバ３０とはネットワークＮに接続されている。このため、ゲーム端末１０とサーバ３０との間で相互にデータ通信が可能である。
【００１３】
ゲーム端末１０は、ユーザが操作するコンピュータである。具体的には、ゲーム端末１０は、ユーザがゲームをプレイするために使用するコンピュータである。例えば、ゲーム端末１０は、家庭用ゲーム機（据置型ゲーム機）、携帯用ゲーム機、遊戯施設等に設置される業務用ゲーム機、携帯電話機（スマートフォンを含む）、携帯情報端末（タブレット型コンピュータを含む）、デスクトップ型コンピュータ、又はラップトップ型コンピュータである。
【００１４】
図１に示すように、ゲーム端末１０は制御部１１、記憶部１２、光ディスクドライブ部１３、通信部１４、操作部１５、表示部１６、及び音声出力部１７を含む。制御部１１は少なくとも一つのマイクロプロセッサ（ＣＰＵ）を含み、記憶部１２に記憶されたオペレーティングシステムやその他のプログラムに従って情報処理を実行する。記憶部１２は、主記憶部（例えばＲＡＭ）及び補助記憶部（例えば、不揮発性の半導体メモリ、ハードディスクドライブ、又はソリッドステートドライブ）を含む。記憶部１２はプログラムやデータを記憶するためのものである。光ディスクドライブ部１３は光ディスク（情報記憶媒体）に記憶されたプログラムやデータを読み取る。通信部１４は、ネットワークＮを介して他の装置とデータ通信するためのものである。
【００１５】
操作部１５は、ユーザが各種操作を行うためのものである。操作部１５は、例えばボタン（キー）、レバー（スティック）、タッチパネル、又はマウス等を含む。操作部１５は、ユーザが音声又はジェスチャによって操作を行うためのものであってもよい。なお、操作部１５は、ゲーム端末１０に接続された外部装置として設けられてもよいし、ゲーム端末１０自体に設けられていてもよい。また、ボタンやレバーは、タッチパネルに表示された仮想的なボタン又はレバーであってもよい。
【００１６】
表示部１６は、例えば液晶ディスプレイ又は有機ＥＬディスプレイ等であり、画像を表示する。音声出力部１７は、例えばスピーカ又はヘッドホン等であり、音声を出力する。なお、表示部１６や音声出力部１７は、ゲーム端末１０に接続された外部装置として設けられてもよいし、ゲーム端末１０自体に設けられていてもよい。
【００１７】
サーバ３０は例えばサーバコンピュータである。図１に示すように、サーバ３０は制御部３１、記憶部３２、光ディスクドライブ部３３、及び通信部３４を含む。制御部３１、記憶部３２、光ディスクドライブ部３３、及び通信部３４は、ゲーム端末１０の制御部１１、記憶部１２、光ディスクドライブ部１３、及び通信部１４と同様である。サーバ３０はデータベース３５にアクセス可能である。データベース３５はサーバ３０内に構築されていてもよいし、サーバ３０とは別のサーバ内に構築されていてもよい。
【００１８】
プログラムやデータは光ディスクを介してゲーム端末１０又はサーバ３０に供給される。すなわち、光ディスクに記憶されたプログラムやデータが光ディスクドライブ部１３又は３３によって読み出されて、記憶部１２又は３２に記憶される。光ディスク以外の情報記憶媒体（例えばメモリカード）に記憶されたプログラムやデータを読み取るための構成要素（例えばメモリーカードスロット）がゲーム端末１０又はサーバ３０に備えられてもよい。そして、プログラムやデータが光ディスク以外の情報記憶媒体を介してゲーム端末１０又はサーバ３０に供給されてもよい。または、プログラムやデータはネットワークＮを介して遠隔地からゲーム端末１０又はサーバ３０に供給されてもよい。
【００１９】
［２．ゲームの概要］ゲームシステム１では、ゲーム端末１０でプログラムを実行することによって各種ゲームを実行可能である。例えば、スポーツゲーム（サッカー、野球、テニス、アメリカンフットボール、バスケットボール、バレーボール等を題材としたゲーム）、アクションゲーム、格闘ゲーム、又はロールプレイングゲームのように、ゲーム形式・ジャンルを問わず様々なゲームを実行可能である。これらのゲームは、ゲーム端末１０単体（スタンドアロン）で実行されてもよいし、ゲーム端末１０がサーバ３０又は他のゲーム端末１０との間でデータ通信を行うことによって実行されてもよい。なお、ゲーム端末１０単体でゲームを実行する場合、サーバ３０を設けなくてもよい。
【００２０】
ゲームシステム１では、複数のモーションデータのうちから選択されたモーションデータに基づいてキャラクタに動作を実行させるゲームが実行される。
【００２１】
なお、「キャラクタ」とは、仮想空間内に配置されるオブジェクトであって、仮想空間内で動作を行うオブジェクトである。「仮想空間」とは、表示部１６に表示される仮想的な空間である。言い換えれば、「仮想空間」とは、主記憶（又はＶＲＡＭ）に構築される仮想的な空間である。「仮想空間」は、３次元空間であってもよいし、２次元空間であってもよい。
【００２２】
例えば、「キャラクタ」とは、人を表すオブジェクトである。「人」は実在の人物であってもよいし、架空の人物であってもよい。また例えば、「キャラクタ」とは、人以外の生物を表すオブジェクトであってもよい。「生物」は実在の生物であってもよいし、架空の生物であってもよい。また例えば、「キャラクタ」とは、生物以外を表すオブジェクトであってもよい。例えば、「キャラクタ」とは、ロボットを表すオブジェクトであってもよい。「キャラクタ」は複数の部位を有し、複数の部位にそれぞれ対応する複数の部位オブジェクトを含んで構成される。
【００２３】
「モーションデータ」とは、キャラクタに動作を実行させる場合の各フレームにおけるキャラクタの姿勢を特定するためのデータである。言い換えれば、「モーションデータ」とは、キャラクタに動作を実行させる場合のフレームごとのキャラクタの姿勢の変化を特定するためのデータである。なお、「フレーム」とは、コンピュータにおける処理単位である。例えば、フレームレートが６０ｆｐｓであれば、１フレームの長さは１／６０秒となる。
【００２４】
例えば、「モーションデータ」とは、キャラクタに動作を実行させる場合の全フレームのうちの複数の特定フレーム（キーフレーム）におけるキャラクタの姿勢を定めたデータである。この場合、特定フレームと他の特定フレームとの間のフレームにおけるキャラクタの姿勢は、それら特定フレームにおけるキャラクタの姿勢に基づいて補間を行うことによって特定される。また例えば、「モーションデータ」とは、キャラクタに動作を実行させる場合の全フレームにおけるキャラクタの姿勢を定めたデータであってもよい。「キャラクタの姿勢を定めたデータ」とは、例えば、キャラクタ内に設定されたボーンの位置及び回転角度を定めたデータである。
【００２５】
「モーションデータに基づいて、キャラクタに動作を実行させる」とは、キャラクタを対象としてモーションデータを再生することによって、キャラクタに動作を実行させることである。「モーションデータを再生する」とは、モーションデータに従ってキャラクタの姿勢を変化させることである。すなわち、「モーションデータを再生する」とは、フレームごとに、当該フレームにおける姿勢をモーションデータに基づいて特定し、キャラクタの姿勢を当該特定した姿勢に設定することである。
【００２６】
なお、「モーションデータ（第２モーションデータ）に基づいて、キャラクタに動作を実行させる」には、キャラクタの動作を、他のモーションデータ（第１モーションデータ）に基づく動作（第１動作）から、モーションデータ（第２モーションデータ）に基づく動作（第２動作）に切り替える場合に、所定数フレームの期間において、キャラクタの動作を、第１動作と第２動作とをブレンドしてなる動作とし、第１動作のブレンド比率を徐々に下げ、第２動作のブレンド比率を徐々に上げることによって、キャラクタの動作を第１動作から第２動作へと徐々に切り替えることも含まれる。言い換えれば、「モーションデータ（第２モーションデータ）に基づいて、キャラクタに動作を実行させる」には、キャラクタの動作を、他のモーションデータ（第１モーションデータ）に基づく動作から、モーションデータ（第２モーションデータ）に基づく動作に切り替える場合に、所定数フレームの期間において、キャラクタの姿勢を、第１モーションデータの示す姿勢と第２モーションデータの示す姿勢とをブレンドしてなる姿勢とし、第１モーションデータの示す姿勢のブレンド比率を徐々に下げ、第２モーションデータの示す姿勢のブレンド比率を徐々に上げることによって、キャラクタの姿勢を、第１モーションデータの示す姿勢から、第２モーションデータの示す姿勢へと徐々に切り替えることも含まれる。
【００２７】
以下では、複数のモーションデータのうちから選択されたモーションデータに基づいてキャラクタに動作を実行させるゲームの一例として、サッカーゲームについて主に説明する。例えば、サッカーゲームでは、ユーザのサッカーチーム（第１チーム）と、対戦相手のサッカーチーム（第２チーム）との間のサッカーの試合が行われる。なお、対戦相手はコンピュータであってもよいし、他のユーザであってもよいが、以下では、説明の簡便のため、対戦相手がコンピュータである場合を想定する。
【００２８】
［２−１］図２は、サッカーゲームを実行する際に設定される仮想空間（ゲーム空間）の一例を示す。図２に示す仮想空間５０は、互いに直交する三つの座標軸であるＸｗ軸、Ｙｗ軸、及びＺｗ軸が設定された仮想的な３次元空間である。下記に説明するように、仮想空間５０にはオブジェクトが配置される。各オブジェクトの位置はＸｗＹｗＺｗ座標系（ワールド座標系）の３次元座標で特定される。
【００２９】
図２に示すように、仮想空間５０には、サッカーフィールドを表すオブジェクトであるフィールド５１が配置される。例えばフィールド５１は、Ｙｗ軸座標値が０であるような平面に相当するオブジェクトである。フィールド５１上には、２本のタッチライン５２、２本のゴールライン５３、及び１本のセンターライン５４が表される。サッカーの試合は、タッチライン５２及びゴールライン５３によって囲まれたピッチ５５内で行われる。
【００３０】
また、フィールド５１上には、サッカーのゴールを表すオブジェクトであるゴール５６が配置される。さらに、フィールド５１上には、サッカーボールを表すオブジェクトであるボール５７と、サッカー選手を表すオブジェクトである選手キャラクタ６０とが配置される。選手キャラクタ６０は、歩行動作、走行動作、ステップ動作、パス動作、シュート動作、プレス動作、タックル動作等の各種動作を行う。試合中においては、所定条件の下、選手キャラクタ６０とボール５７とが関連付けられる。この場合、選手キャラクタ６０の歩行動作や走行動作はドリブル動作となる。
【００３１】
図２では省略しているが、第１チーム（ユーザのサッカーチーム）と第２チーム（対戦相手であるコンピュータのサッカーチーム）とのサッカーの試合が行われる場合には、第１チームに所属する１１体の選手キャラクタ６０と、第２チームに所属する１１体の選手キャラクタ６０とがフィールド５１上に配置される。
【００３２】
例えば、試合においては、第１チームに所属する複数の選手キャラクタ６０のうちのいずれか１名の選手キャラクタ６０がユーザの操作対象として設定される。ユーザの操作対象になっている選手キャラクタ６０は、ユーザによって行われた動作指示操作に基づいて各種動作を行う。一方、第１チームに所属する複数の選手キャラクタ６０のうちの、ユーザの操作対象になっていない選手キャラクタ６０や、第２チームに所属する複数の選手キャラクタ６０は、コンピュータの動作指示に基づいて各種動作を行う。なお、ユーザの操作対象は、第１チームに所属する複数の選手キャラクタ６０のうちで、試合状況（例えばボール５７の位置）又はユーザの切替指示操作に基づいて、試合中に切り替わるようにしてもよいし、第１チームに所属する複数の選手キャラクタ６０のうちから予め設定された特定の１名の選手キャラクタ６０に固定されていてもよい。
【００３３】
また、仮想空間５０には、仮想的な視点５８が設定される。視点５８から視線方向Ｖを見た場合の仮想空間５０を表すゲーム画像が表示部１６に表示される。例えば、ユーザの操作対象になっている選手キャラクタ６０又はボール５７がゲーム画像に含まれるように、視点５８の位置や視線方向Ｖは、ユーザの操作対象になっている選手キャラクタ６０又はボール５７の位置に基づいて設定される。
【００３４】
［２−２］ここで、選手キャラクタ６０について詳しく説明する。図３は選手キャラクタ６０の一例を示す。図３に示すように、選手キャラクタ６０は、複数の部位の各々を示す複数の部位オブジェクトを含む。例えば、選手キャラクタ６０は、複数の部位オブジェクトとして、頭６０１、首６０２、胸６０３、腰６０４、左上腕６０５Ｌ、右上腕６０５Ｒ、左前腕６０６Ｌ、右前腕６０６Ｒ、左手６０７Ｌ、右手６０７Ｒ、左腿６０８Ｌ、右腿６０８Ｒ、左脛６０９Ｌ、右脛６０９Ｒ、左足６１０Ｌ、及び右足６１０Ｒを含む。
【００３５】
また、左足６１０Ｌはヌルオブジェクト６１１Ｌを含み、右足６１０Ｒはヌルオブジェクト６１１Ｒを含む。例えば、ヌルオブジェクト６１１Ｌ，６１１Ｒは不可視のオブジェクトであり、点に相当するオブジェクトである。また、ヌルオブジェクト６１１Ｌ，６１１Ｒは、通常のオブジェクトと同様にジオメトリ演算等の対象になるが、通常のオブジェクトとは異なり、描画処理の対象にはならないオブジェクトである。ヌルオブジェクト６１１Ｌ，６１１Ｒは、左足６１０Ｌ及び右足６１０Ｒの足裏に相当する位置に配置される。ヌルオブジェクト６１１Ｌ，６１１Ｒを設定する意義については後述する。
【００３６】
選手キャラクタ６０は複数のポリゴンによって構成される。「ポリゴン」とは、３以上の頂点によって構成される平面である。複数のポリゴンによって立体を構成することによって、選手キャラクタ６０の各部位オブジェクトが構成される。
【００３７】
また、選手キャラクタ６０の内部にはボーンが設定される。「ボーン」とは、選手キャラクタ６０の骨格に相当するものである。選手キャラクタ６０の内部には複数のボーンが設定されており、これら複数のボーンは、特定のボーン（例えば腰骨に対応するボーン）をルートとする階層構造で管理される。あるボーンの位置又は回転角度が変化した場合、当該ボーンの下の階層のボーンも連動するようになっており、ボーンの位置は、当該ボーンよりも上の階層のボーンの位置及び回転角度によって特定される。
【００３８】
選手キャラクタ６０を構成する複数のポリゴンの各頂点には、少なくとも１つのボーンが関連付けられている。頂点の位置は当該ボーンの状態（位置又は回転角度）の変化に基づいて変化する。すなわち、ボーンの状態が変化すると、頂点が従動し、その結果、選手キャラクタ６０の姿勢が変化する。このように、各ボーンの状態を制御することによって、選手キャラクタ６０の姿勢を制御できる。
【００３９】
サッカーゲームでは、選手キャラクタ６０を対象としてモーションデータを再生することによって、モーションデータに基づく動作を選手キャラクタ６０に実行させる。すなわち、モーションデータに従ってフレームごとに選手キャラクタ６０の姿勢を変化させることによって、当該モーションデータに基づく動作を選手キャラクタ６０に実行させる。
【００４０】
選手キャラクタ６０は複数種類の動作を実行し得るため、それら複数種類の動作にそれぞれ対応する複数種類のモーションデータが用意される。例えば、選手キャラクタ６０に歩行動作を実行させる場合には、それら複数種類のモーションデータのうちから、歩行動作に対応するモーションデータを選択し、当該モーションデータを再生することによって、選手キャラクタ６０に歩行動作を実行させることになる。
【００４１】
［２−３］図４Ａは、選手キャラクタ６０の歩行動作の一例を示す。すなわち、図４Ａは、歩行動作を実行する際の選手キャラクタ６０の姿勢の変化の一例を示す。歩行動作は複数のフレームにわたって行われるところ、図４Ａは、それら複数のフレームのうちのいくつかのフレームにおける選手キャラクタ６０の姿勢の一例を示している。
【００４２】
図４Ａに示す歩行動作は、歩行動作に対応するモーションデータに基づいて実行される。以下では、歩行動作に対応するモーションデータを「歩行モーションデータ」と記載する。歩行動作を実行する際の各フレームにおける選手キャラクタ６０の姿勢は歩行モーションデータに基づいて特定される。
【００４３】
図４Ａに示す例では、第１フレーム（先頭フレーム）における選手キャラクタ６０の姿勢が、右足６１０Ｒ及び左足６１０Ｌがフィールド５１に接触し、右足６１０Ｒが左足６１０Ｌの前方に位置するような姿勢になっている（Ａ１）。また、第４８フレームにおける選手キャラクタ６０の姿勢が、右足６１０Ｒの踵部分がフィールド５１から離れた状態で右足６１０Ｒが左足６１０Ｌの後方に位置するような姿勢になっている（Ａ２）。さらに、第９６フレームにおける選手キャラクタ６０の姿勢が、右足６１０Ｒの踵部分がフィールド５１に接触し、左足６１０Ｌが右足６１０Ｒの前方に位置するような姿勢になっている（Ａ３）。また、第１４４フレームにおける選手キャラクタ６０の姿勢が、左足６１０Ｌが第９６フレームにおける位置よりもさらに前方に位置するような姿勢になっている（Ａ４）。図４Ａに示すように、歩行動作では、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒがフィールド５１と接触したり離れたりするようになっている。なお、歩行動作が継続される場合、歩行モーションデータが最終フレームまで再生されると、再度、歩行モーションデータが先頭フレームから再生される。
【００４４】
図４Ｂは、選手キャラクタ６０のステップ動作の一例を示す。すなわち、図４Ｂは、ステップ動作を実行する際の選手キャラクタ６０の姿勢の変化の一例を示す。ステップ動作は複数のフレームにわたって行われるところ、図４Ｂは、それら複数のフレームのうちのいくつかのフレームにおける選手キャラクタ６０の姿勢の一例を示す。
【００４５】
図４Ｂに示すステップ動作は、ステップ動作に対応するモーションデータに基づいて実行される。以下では、ステップ動作に対応するモーションデータを「ステップモーションデータ」と記載する。ステップ動作を実行する際の各フレームにおける選手キャラクタ６０の姿勢はステップモーションデータに基づいて特定される。
【００４６】
図４Ｂに示す例では、第１フレーム（先頭フレーム）における選手キャラクタ６０の姿勢が、右足６１０Ｒ及び左足６１０Ｌがフィールド５１に接触し、右足６１０Ｒが左足６１０Ｌの前方に位置するような姿勢になっている（Ｂ１）。また、第４８フレームにおける選手キャラクタ６０の姿勢が、両膝が屈折し右足６１０Ｒが左足６１０Ｌの付近に位置するような姿勢になっている（Ｂ２）。さらに、第９６フレームにおける選手キャラクタ６０の姿勢が、両膝が伸びて右足６１０Ｒ及び左足６１０Ｌがフィールド５１から離れているような姿勢になっている（Ｂ３）。また、第１４４フレームにおける選手キャラクタ６０の姿勢が、右足６１０Ｒ及び左足６１０Ｌがフィールド５１に再度接触するような姿勢になっている（Ｂ４）。図４Ｂに示すように、ステップ動作では、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒがフィールド５１と接触したり離れたりするようになっている。
【００４７】
［２−４］サッカーゲームでは、第１モーションデータに基づく第１動作を実行中の選手キャラクタ６０の動作を第２モーションデータに基づく第２動作に切り替える場合がある。例えば、ユーザの操作対象になっている選手キャラクタ６０が歩行動作を実行している状態で、ステップ動作の実行指示操作がユーザによって行われた場合には、歩行動作を実行中の選手キャラクタ６０の動作がステップ動作に切り替えられる。なお、ユーザの操作対象になっていない選手キャラクタ６０（すなわち、コンピュータによる動作指示に基づいて動作する選手キャラクタ６０）に関しても、このような動作切替が実行される場合がある。
【００４８】
第１動作を実行中の選手キャラクタ６０の動作を第２動作に切り替える場合、下記に説明するような「足滑り」の発生を抑制する必要がある。図５は、動作切替時の「足滑り」の一例について説明するための図である。なお図５では、歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替える場合を想定している。また図５では、選手キャラクタ６０の姿勢が歩行モーションデータの第９６フレームにおける姿勢（Ａ３）である時点で、選手キャラクタ６０の動作を歩行動作からステップ動作へと切り替える場合を想定している。
【００４９】
図５に示す例において、単にステップモーションデータの再生を先頭フレームから開始させた場合、選手キャラクタ６０の姿勢は、歩行モーションデータの第９６フレームにおける姿勢（Ａ３）から、ステップモーションデータの先頭フレームにおける姿勢（Ｂ１）へと変化することになる。
【００５０】
これらの姿勢（Ａ３，Ｂ１）の間では、フィールド５１に接触している右足６１０Ｒの位置がずれている。具体的には、動作切替後の姿勢（Ｂ１）における右足６１０Ｒの位置は、動作切替前の姿勢（Ａ３）における右足６１０Ｒの位置よりもＸｗ軸正方向にずれている。その結果、動作切替時に、右足６１０Ｒがフィールド５１上でＸｗ軸正方向に移動することによって、選手キャラクタ６０の右足６１０Ｒがフィールド５１上で滑っているかのようにユーザに見えてしまい、ユーザに違和感を与えてしまう可能性がある。
【００５１】
なお、図５に示す例では、動作切替前後の姿勢（Ａ３，Ｂ１）において、左足６１０Ｌの位置もずれている。しかしながら、動作切替前の姿勢（Ａ３）では左足６１０Ｌがフィールド５１に接触していないため、動作切替前後の姿勢（Ａ３，Ｂ１）において、左足６１０Ｌの位置がずれていたとしても、動作切替時に、選手キャラクタ６０の左足６１０Ｌがフィールド５１上で滑っているかのようにユーザに見えないため、ユーザに違和感を与えてしまう可能性は低い。
【００５２】
［２−５］以下、「足滑り」の発生を抑制しつつ、第１動作を実行中の選手キャラクタ６０の動作を第２動作に切り替えるための手法について説明する。図６は、当該手法の概要について説明するための図である。なお図６では、図５と同様、歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替える場合を想定している。また図６でも、選手キャラクタ６０の姿勢が歩行モーションデータの第９６フレームにおける姿勢（Ａ３）である時点で、選手キャラクタ６０の動作を歩行動作からステップ動作へと切り替える場合を想定している。
【００５３】
この場合、まず、動作切替時点における姿勢（Ａ３）において、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒのうちで、どちらがフィールド５１に近いかを判定する。例えば、図２に示す仮想空間５０では、フィールド５１が、Ｙｗ軸座標値が０であるような平面に相当しているため、左足６１０Ｌのヌルオブジェクト６１１Ｌと右足６１０Ｒのヌルオブジェクト６１１ＲとのＹｗ軸座標値を比較する。すなわち、ヌルオブジェクト６１１ＬのＹｗ軸座標値がヌルオブジェクト６１１ＲのＹｗ軸座標値よりも小さい場合には、左足６１０Ｌの方がフィールド５１に近いと判定する。一方、ヌルオブジェクト６１１ＲのＹｗ軸座標値がヌルオブジェクト６１１ＬのＹｗ軸座標値よりも小さい場合には、右足６１０Ｒの方がフィールド５１に近いと判定する。動作切替時点における姿勢（Ａ３）の場合、ヌルオブジェクト６１１ＲのＹｗ軸座標値がヌルオブジェクト６１１ＬのＹｗ軸座標値よりも小さいため、右足６１０Ｒの方がフィールド５１に近いと判定する。
【００５４】
次に、ステップモーションデータの複数のフレームのうちから設定された複数の候補フレームＣＦ［１］，ＣＦ［２］，ＣＦ［３］，・・・・，ＣＦ［Ｎ］の各々について、当該候補フレームにおける右足６１０Ｒの位置と、動作切替時点における姿勢（Ａ３）の右足６１０Ｒの位置とを比較する。具体的には、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］の各々について、当該候補フレームにおける右足６１０Ｒのヌルオブジェクト６１１Ｒの位置と、動作切替時点における姿勢（Ａ３）の右足６１０Ｒのヌルオブジェクト６１１Ｒの位置との間の距離を算出する。そして、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］のうちから、上記距離が最も小さい候補フレームを選択する。
【００５５】
ここで、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］とは、選手キャラクタ６０の動作をステップ動作に切り替える場合に、ステップモーションデータの再生開始フレームとして選択され得る候補のフレームである。例えば、ステップモーションデータのキーフレームが複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］として設定される。なお、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］には、ステップモーションデータのキーフレーム以外のフレームが含まれていてもよい。図６に示す例では、候補フレームＣＦ［１］は図４Ｂに示した第１フレームに相当し、候補フレームＣＦ［３］は図４Ｂに示した第４８フレームに相当している。
【００５６】
複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］のうちからいずれかを選択した後、当該選択された候補フレームから、ステップモーションデータに基づいて、ステップ動作を選手キャラクタ６０に実行させる。例えば、候補フレームＣＦ［３］（第４８フレーム）が選択された場合には、当該フレームから、ステップモーションデータに基づいて、ステップ動作を選手キャラクタ６０に実行させる。
【００５７】
この場合、選手キャラクタ６０の姿勢は、歩行モーションデータの第９６フレームにおける姿勢（Ａ３）から、ステップモーションデータの第４８フレームにおける姿勢（Ｂ２）へと変化することになる。これらの姿勢（Ａ３，Ｂ２）の間では、フィールド５１に接触している右足６１０Ｒの位置のずれが小さいため、動作切替時に、選手キャラクタ６０の右足６１０Ｒがフィールド５１上で滑っているかのようにユーザに見えないように図ることができる。すなわち、「足滑り」の発生を抑制できる。
【００５８】
なお、選手キャラクタ６０の姿勢を、歩行モーションデータの示す姿勢から、ステップモーションデータの示す姿勢へと切り替える場合、一つのフレームにおいて瞬時に切り替えるのではなく、所定数フレームの期間において、選手キャラクタ６０の姿勢を、歩行モーションデータの示す姿勢とステップモーションデータの示す姿勢とをブレンドしてなる姿勢とし、歩行モーションデータの示す姿勢のブレンド比率を徐々に下げ、ステップモーションデータの示す姿勢のブレンド比率を徐々に上げることによって、選手キャラクタ６０の姿勢を、歩行モーションデータの示す姿勢から、ステップモーションデータの示す姿勢へと徐々に切り替えるようにしてもよい。
【００５９】
また、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］は、先頭フレームから特定の範囲内にあるフレームのうちで設定するのが好ましい場合がある。例えば、ステップモーションデータのうちの先頭フレームから大きく離れたフレームが候補フレームとして設定されており、かつ、当該候補フレームが選択された場合には、選手キャラクタ６０のステップ動作が途中から実行されることによって、選手キャラクタ６０の動作が不自然であるとユーザが感じてしまう場合がある。この点、先頭フレームから特定の範囲内にあるフレームのうちで候補フレームを設定しておくことによって、このような不都合の発生を抑制できるようになる。
【００６０】
［２−６］以上に説明した手法によれば、歩行モーションデータに基づく歩行動作を実行中の選手キャラクタ６０の動作をステップモーションデータに基づくステップ動作に切り替える場合に、フィールド５１に接触している足の位置ずれを軽減でき、「足滑り」の発生を抑制できる。
【００６１】
また、以上に説明した手法によれば、ユーザによるステップ動作の実行指示操作に応じて、直ちに、歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替えることができる。例えば、「足滑り」の発生を抑制する他の手法としては、歩行モーションデータのフレームのうちで、「足滑り」が発生しないようなフレーム（すなわち、選手キャラクタ６０の足の位置が、ステップモーションデータの先頭フレームにおける選手キャラクタ６０の足の位置に近いフレーム）を基準フレームとして予め設定しておき、歩行動作を実行中のキャラクタの動作をステップ動作に切り替える際には、基準フレームになるまで歩行動作を選手キャラクタ６０に継続させ、基準フレームになったら、先頭フレームからステップモーションデータに基づいて選手キャラクタ６０にステップ動作を実行させるような手法も考えられる。しかしながら、この手法では、実行指示操作に応じて直ちに選手キャラクタ６０の動作をステップ動作に切り替えるのではなく、基準フレームになるのを待ち、基準フレームになってから選手キャラクタ６０の動作をステップ動作に切り替えるため、選手キャラクタ６０の動作切替が遅れる（すなわち、選手キャラクタ６０の反応が遅い）との不満をユーザに感じさせてしまう可能性がある。これに対し、本実施形態に係る手法によれば、ステップ動作の実行指示操作に応じて、直ちに、選手キャラクタ６０の動作を歩行動作からステップ動作に切り替えることができるため、選手キャラクタ６０の動作切替が遅れる（すなわち、選手キャラクタ６０の反応が遅い）との不満をユーザに感じさせないように図ることができる。
【００６２】
また、本実施形態に係る手法では、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒのうちで、フィールド５１に近い方の足を判定し、フィールド５１に近い方の足の位置に基づいて、ステップモーションデータの複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］のうちからいずれかを選択するようになっている。このようにすることによって、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒのうちで、「足滑り」が発生させてしまう可能性が高い方の足に関して、動作切替時の位置ずれを軽減できるようになる。
【００６３】
また、本実施形態に係る手法では、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒにヌルオブジェクト６１１Ｌ，６１１Ｒをそれぞれ設定し、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒの位置としてヌルオブジェクト６１１Ｌ，６１１Ｒの位置を用いるようにしている。このようにすることによって、ヌルオブジェクト６１１Ｌ，６１１Ｒの位置のみについて着目すればよくなるため、処理を簡略化できる。また、ヌルオブジェクト６１１Ｌ，６１１Ｒは非表示のオブジェクトであるため、余計なオブジェクトが表示部１６に表示されるという不都合も発生しない。
【００６４】
なお、以上では、「足滑り」の発生を抑制する場合について主に説明したが、本実施形態に係る手法は、「手滑り」の発生を抑制するために用いることもできる。例えば、キャラクタが逆立ちをした状態が各種動作を行うようなゲーム等、キャラクタが他のオブジェクト（例えば、フィールド、壁、又はテーブル等）に手を付いた状態で各種動作を行うようなゲームの場合、「手滑り」が発生する場合がある。すなわち、動作切替前後で他のオブジェクトに接触しているキャラクタの左手又は右手の位置ずれが発生することによって、動作切替時にキャラクタの左手又は右手が他のオブジェクト上で移動し、キャラクタの左手又は右手が他のオブジェクト上で滑っているかのようにユーザに見えてしまい、ユーザに違和感を与えてしまう可能性がある。この点、本実施形態に係る手法をキャラクタの左手又は右手を対象として実行することによって、「手滑り」の発生を抑制しつつ、キャラクタの動作を切り替えることもできる。なお、この場合、キャラクタの左手や右手にヌルオブジェクトを設定するようにすればよい。
【００６５】
［３．機能ブロック］次に、以上に説明した機能を実現するための構成について説明する。図７は、ゲームシステム１で実現される機能ブロックの一例を示す機能ブロック図である。図７に示すように、ゲームシステム１は、データ記憶部１００と、第１モーションデータ取得部１１０と、第２モーションデータ取得部１２０と、第１動作実行部１３０と、特定部位選択部１４０と、第１特定部１５０と、第２特定部１６０と、第２動作実行部１７０とを含む。このうち、データ記憶部１００は記憶部１２、記憶部３２、及びデータベース３５のうちの少なくとも一つによって実現される。また、データ記憶部１００以外の機能ブロックは、制御部１１及び制御部３１の少なくとも一つによって実現される。すなわち、データ記憶部１００以外の機能ブロックのすべてを制御部１１によって実現してもよいし、これらのすべてを制御部３１によって実現してもよいし、これらの一部を制御部１１によって実現し、残りを制御部３１によって実現してもよい。
【００６６】
［３−１］データ記憶部１００は、ゲームを実行するために必要なデータを記憶する。ここでは、データ記憶部１００に記憶されるデータの一例として、先述のサッカーゲームを実行するために必要なデータについて説明する。図７に示すように、先述のサッカーゲームを実行するために必要なデータとして、例えば、モデルデータＤ１０１と、モーションデータＤ１０２と、候補フレームデータＤ１０３と、キャラクタ状態データＤ１０４とがデータ記憶部１００に記憶される。
【００６７】
［３−１−１］モデルデータＤ１０１は、選手キャラクタ６０の形状を示すデータである。モデルデータＤ１０１は、選手キャラクタ６０の姿勢が基準姿勢である場合の選手キャラクタ６０の各頂点（すなわち、選手キャラクタ６０を構成する各ポリゴンの各頂点）の位置を示す頂点データを含む。頂点データは、ヌルオブジェクト６１１Ｌ，６１１Ｒの頂点の位置を示すデータも含む。例えば、各頂点の位置はローカル座標系で示される。「ローカル座標系」とは、例えば、選手キャラクタ６０の基準点（例えば腰に相当する点等）を原点とし、上下方向に対応する軸であって、上方向を正方向とする第１軸と、左右方向に対応する軸であって、左方向を正方向とする第２軸と、前後方向に対応する軸であって、正面方向を正方向とする第３軸とを有する座標系である。なお、「基準姿勢」とは、ボーンが適用されていない姿勢（すなわち、ボーンの位置や回転角度が設定（変更）される前における基本の姿勢）である。また、頂点データは、頂点とボーンとの関連付けを示すデータも含む。
【００６８】
また、モデルデータＤ１０１は、選手キャラクタ６０内に設定される各ボーンに関するボーンデータも含む。例えば、ボーンデータは、ボーンの階層構造に関するデータや、選手キャラクタ６０の姿勢が基準姿勢である場合の各ボーンの位置及び回転角度を示すデータを含む。なお、ボーンの階層構造を示すデータ自体を記憶するのではなく、プログラムが扱うメモリ上で階層構造を展開するようにしてもよい。または、シェーダプログラムにおいてルールを定めて処理するようにし、ルールの異なるボーンを扱う場合にはシェーダプログラムを切り替えるという手法を採用してもよい。
【００６９】
［３−１−２］モーションデータＤ１０２は、選手キャラクタ６０に動作を実行させる場合の各フレームにおける選手キャラクタ６０の姿勢を制御するためのデータである。データ記憶部１００は、選手キャラクタ６０が実行可能な複数種類の動作にそれぞれ対応する複数種類のモーションデータＤ１０２を記憶する。
【００７０】
図８はモーションデータＤ１０２の一例を示す。モーションデータＤ１０２はモーションＩＤに関連付けて記憶される。モーションＩＤは、モーションデータ（又は動作）を一意に識別するための識別情報である。
【００７１】
モーションデータＤ１０２は、複数のキーフレームの各々ごとに、選手キャラクタ６０に設定された各ボーンのボーン行列が定められたデータである。ボーン行列はボーンの位置及び回転角度を示す行列である。図８に示すように、モーションデータＤ１０２は「キーフレーム」及び「ボーン」フィールドを含む。「キーフレーム」フィールドは、モーションデータにおけるキーフレームのフレーム番号を示す。図８に示す例では、モーションＩＤが「Ｍ１」であるモーションデータＤ１０２に関して、第１フレーム、第４８フレーム、第９６フレーム、第１４４フレーム等がキーフレームになっている。「ボーン」フィールドには、選手キャラクタ６０に設定されたすべてのボーンＢ１，Ｂ２，Ｂ３，Ｂ４，・・・の各々に関連付けて、当該ボーンの位置及び回転角度を示すボーン行列が登録される。
【００７２】
図８に示す例では、モーションＩＤが「Ｍ１」であるモーションデータＤ１０２において、第１フレームにおけるボーンＢ１，Ｂ２，Ｂ３，Ｂ４，・・・のボーン行列としてそれぞれＢＭ１１，ＢＭ２１，ＢＭ３１，ＢＭ４１，・・・が設定されている。また、第４８フレームにおけるボーンＢ１，Ｂ２，Ｂ３，Ｂ４，・・・のボーン行列としてそれぞれＢＭ１４８，ＢＭ２４８，ＢＭ３４８，ＢＭ４４８，・・・が設定されている。
【００７３】
このため、モーションＩＤが「Ｍ１」であるモーションデータＤ１０２を再生する場合には、第１フレームにおいて、選手キャラクタ６０のボーンＢ１，Ｂ２，Ｂ３，Ｂ４，・・・の位置及び回転角度がそれぞれボーン行列ＢＭ１１，ＢＭ２１，ＢＭ３１，ＢＭ４１，・・・に基づいて設定されることによって、選手キャラクタ６０の姿勢が設定される。また、第４８フレームにおいて、選手キャラクタ６０のボーンＢ１，Ｂ２，Ｂ３，Ｂ４，・・・の位置及び回転角度がそれぞれボーン行列ＢＭ１４８，ＢＭ２４８，ＢＭ３４８，ＢＭ４４８，・・・に基づいて設定されることによって、選手キャラクタ６０の姿勢が設定される。
【００７４】
［３−１−３］候補フレームデータＤ１０３は候補フレームを示すデータである。図９は候補フレームデータＤ１０３の一例を示す。候補フレームデータＤ１０３はモーションＩＤに関連付けて（モーションデータＤ１０２ごとに）記憶される。なお、図７では、モーションデータＤ１０２と候補フレームデータＤ１０３とを別個のデータとして示しているが、モーションデータＤ１０２と候補フレームデータＤ１０３とを一つのデータにまとめてもよい。
【００７５】
図９に示すように、候補フレームデータＤ１０３は「候補フレーム」フィールドを含む。「候補フレーム」フィールドは、モーションデータＤ１０２の複数のフレーム（選手キャラクタ６０がモーションデータＤ１０２に基づく動作を実行する場合の複数のフレーム）のうちから設定された複数の候補フレームを示す。例えば、候補フレームとして設定されたフレームのフレーム番号のリストが「候補フレーム」フィールドに登録される。図９に示す例では、モーションＩＤが「Ｍ１」であるモーションデータＤ１０２に関しては、第１フレーム、第２４フレーム、第４８フレーム等が候補フレームとして設定されている。なお、図９では、候補フレームのフレーム番号を「候補フレーム」フィールドに登録しているが、先頭フレームから特定の範囲にあるフレームが候補フレームとして設定される場合には、当該特定範囲を示す情報を「候補フレーム」フィールドに登録してもよい。
【００７６】
［３−１−４］キャラクタ状態データＤ１０４は、仮想空間５０に配置される各選手キャラクタ６０の現在の状態を示すデータである。図１０はキャラクタ状態データＤ１０４の一例を示す。図１０に示すように、キャラクタ状態データＤ１０４は、「キャラクタＩＤ」、「位置」、「向き」、「再生モーション」、及び「再生フレーム」フィールド等を含む。
【００７７】
「キャラクタＩＤ」フィールドは、選手キャラクタ６０を一意に識別するための識別情報を示す。「位置」フィールドは、仮想空間５０における選手キャラクタ６０の現在位置を示す。例えば、選手キャラクタ６０の基準点（例えばローカル座標系における原点）の現在位置を示すワールド座標系（ＸｗＹｗＺｗ座標系）における座標値が「位置」フィールドに登録される。「向き」フィールドは、選手キャラクタ６０が現在向いている方向を示す。
【００７８】
「再生モーション」フィールドは、選手キャラクタ６０に関して現在再生されているモーションデータＤ１０２を示す。すなわち、「再生モーション」フィールドは、選手キャラクタ６０が現在実行している動作の種類を示す。例えば、選手キャラクタ６０に関して現在再生されているモーションデータＤ１０２のモーションＩＤが「再生モーション」フィールドに登録される。「再生フレーム」フィールドは、モーションデータＤ１０２の現在再生位置を示す。例えば、モーションデータＤ１０２の何フレーム目を現在再生中であるのかが「再生フレーム」に登録される。
【００７９】
図１０に示す例では、キャラクタＩＤが「Ｃ１０１」である選手キャラクタ６０の「再生モーション」フィールドに「Ｍ１」が登録され、「再生フレーム」フィールドに「４０」が登録されている。これは、キャラクタＩＤが「Ｃ１０１」である選手キャラクタ６０に関して、現在、モーションＩＤが「Ｍ１」であるモーションデータＤ１０２が再生されており、現在再生中のフレームが「第４０フレーム」であることを示す。すなわち、これは、キャラクタＩＤが「Ｃ１０１」である選手キャラクタ６０の現在の姿勢が、モーションＩＤが「Ｍ１」であるモーションデータＤ１０２の第４０フレームの姿勢であることを示す。
【００８０】
なお、キャラクタ状態データＤ１０４は、以上に説明したフィールドの他に、例えば、選手キャラクタ６０の移動速度を示すフィールド、選手キャラクタ６０がボール５７を保有しているか否かを示すフィールドや、選手キャラクタ６０がユーザの操作対象になっているか否かを示すフィールド等を含む。
【００８１】
［３−１−５］先述のサッカーゲームを実行するために必要なデータは、以上に説明したデータに限られず、他のデータもデータ記憶部１００に記憶される。例えば、ボール５７の現在の状態（例えば位置、移動方向、及び移動速度等）を示すボール状態データ、視点５８の現在の状態（例えば位置、視線方向、及び画角等）を示す視点状態データや、試合の戦況（例えば、両チームの得点や経過時間等）を示す戦況データ等もデータ記憶部１００に記憶される。
【００８２】
［３−２］第１モーションデータ取得部１１０は、キャラクタに第１動作を実行させるための第１モーションデータを取得する。第１動作実行部１３０は、第１モーションデータに基づいて、キャラクタに第１動作を実行させる。
【００８３】
「第１動作」とは、キャラクタによって実行される動作の一つである。例えば、「第１動作」は、キャラクタを操作するユーザ（又はコンピュータ）によって指示された動作である。
【００８４】
例えば、「第１動作」では、キャラクタの特定部位が他のオブジェクトと接触する。すなわち、「第１動作」では、キャラクタの特定部位が他のオブジェクトと接触したり、他のオブジェクトから離れたりする。または、「第１動作」が開始されてから終了するまで、キャラクタの特定部位が他のオブジェクトに接触し続けてもよい。
【００８５】
「第１モーションデータ」とは、第１動作に対応するモーションデータである。「第１モーションデータ」とは、キャラクタに第１動作を実行させるためのモーションデータである。すなわち、「第１モーションデータ」とは、キャラクタに第１動作を実行させる場合の各フレームにおけるキャラクタの姿勢を特定するためのモーションデータである。
【００８６】
「モーションデータを取得する」とは、例えば、補助記憶部に記憶されたモーションデータを読み出すことである。または、「モーションデータを取得する」とは、例えば、他の装置から通信ネットワークを介してモーションデータを受信することであってもよい。
【００８７】
先述のサッカーゲームの場合、例えば、歩行動作が「第１動作」の一例に相当し、歩行モーションデータが「第１モーションデータ」の一例に相当する。また、選手キャラクタ６０が「キャラクタ」の一例に相当し、選手キャラクタ６０の左足６１０Ｌ又は右足６１０Ｒが上述の「特定部位」の一例に相当し、フィールド５１が上述の「他のオブジェクト」の一例に相当する。
【００８８】
先述のサッカーゲームの場合、第１モーションデータ取得部１１０は、歩行モーションデータをデータ記憶部１００から取得する。また、第１動作実行部１３０は、歩行モーションデータを再生することによって、歩行モーションデータに基づく歩行動作を選手キャラクタ６０に実行させる。
【００８９】
［３−３］第２モーションデータ取得部１２０は、キャラクタに第２動作を実行させるための第２モーションデータを取得する。
【００９０】
「第２動作」とは、キャラクタによって実行される動作の一つであって、第１動作とは異なる動作である。例えば、「第２動作」は、キャラクタを操作するユーザ（又はコンピュータ）によって指示された動作である。
【００９１】
例えば、「第２動作」では、キャラクタの特定部位が他のオブジェクトと接触する。すなわち、「第２動作」では、キャラクタの特定部位が他のオブジェクトと接触したり、他のオブジェクトから離れたりする。または、「第２動作」が開始されてから終了するまで、キャラクタの特定部位が他のオブジェクトに接触し続けてもよい。
【００９２】
「第２モーションデータ」とは、第２動作に対応するモーションデータである。「第２モーションデータ」とは、キャラクタに第２動作を実行させるためのモーションデータである。すなわち、「第２モーションデータ」とは、キャラクタに第２動作を実行させる場合の各フレームにおけるキャラクタの姿勢を特定するためのモーションデータである。
【００９３】
先述のサッカーゲームの場合、例えば、ステップ動作が「第２動作」の一例に相当し、ステップモーションデータが「第２モーションデータ」の一例に相当する。第２モーションデータ取得部１２０はステップモーションデータをデータ記憶部１００から取得する。
【００９４】
［３−４］特定部位選択部１４０は、キャラクタが有する複数の部位のうちのいずれかを特定部位として選択する。例えば、キャラクタが、第１動作及び第２動作において、他のオブジェクト上に接触したり、他のオブジェクト上から離れたりする複数の部位を有する場合、特定部位選択部１４０は、当該複数の部位の各々と他のオブジェクトとの間の距離に基づいて、複数の部位のうちのいずれかを特定部位として選択する。
【００９５】
「特定部位」とは、キャラクタの複数の部位のうちの特定の部位である。「特定部位」とは、第１動作及び第２動作において、他のオブジェクトと接触し得る部位である。例えば、左足又は右足が「特定部位」の一例に相当し得る。また例えば、左手又は右手が「特定部位」の一例に相当し得る。「他のオブジェクト」とは、キャラクタの部位によって接触され得るオブジェクトである。
【００９６】
例えば、「他のオブジェクト」とは、キャラクタの左足又は右足によって接触され得るオブジェクトである。すなわち、「他のオブジェクト」とは、例えば、キャラクタの左足又は右足によって接触され得る面を有するオブジェクトである。具体的には、「他のオブジェクト」とは、キャラクタが立つことが可能な面を有するようなオブジェクトである。例えば、フィールド、地面、床等が「他のオブジェクト」の一例に相当する。なお、「面」は、平面であってもよいし、曲面であってもよいし、凹凸のある面であってもよい。
【００９７】
また例えば、「他のオブジェクト」とは、キャラクタの左手又は右手によって接触され得るオブジェクトである。すなわち、「他のオブジェクト」とは、例えば、キャラクタの左手又は右手によって接触され得る面を有するオブジェクトである。具体的には、「他のオブジェクト」とは、例えば、壁、崖、テーブル、フィールド、地面、床等である。なお、「面」は、平面であってもよいし、曲面であってもよいし、凹凸のある面であってもよい。また例えば、キャラクタの左手又は右手によって掴まれるオブジェクトであってもよい。具体的には、例えば、ロープやはしご等であってもよい。
【００９８】
「複数の部位の各々と他のオブジェクトとの間の距離」とは、例えば、複数の部位の各々の基準点から他のオブジェクトの基準点までの距離である。ここで、「他のオブジェクトの基準点」は予め定められた点であってもよいし、複数の部位の各々の基準点から他のオブジェクトへ垂らした垂線の足を「他のオブジェクトの基準点」としてもよい。
【００９９】
例えば、キャラクタが左足と右足とを有している場合、左足と右足とが「複数の部位」の一例に相当し、特定部位選択部１４０は、キャラクタの左足と右足との各々と他のオブジェクトとの間の距離に基づいて、左足と右足とのうちのいずれかを特定部位として選択する。
【０１００】
また例えば、キャラクタが左手と右手とを有している場合、左手と右手とが「複数の部位」の一例に相当し、特定部位選択部１４０は、キャラクタの左手と右手との各々と他のオブジェクトとの間の距離に基づいて、左手と右手とのうちのいずれかを特定部位として選択する。
【０１０１】
例えば、特定部位選択部１４０は、複数の部位のうちで、他のオブジェクトとの距離が最も小さい部位を特定部位として選択する。または、特定部位選択部１４０は、複数の部位のうちで、他のオブジェクトとの距離が閾値以下である部位を特定部位として選択してもよい。すなわち、特定部位選択部１４０は、複数の部位の各々について順番に、上記距離が閾値以下であるか否かを判定し、上記距離が閾値以下である部位が見つかったら、残りの部位について判定を行うことなく、当該部位を特定部位として選択してもよい。
【０１０２】
先述のサッカーゲームの場合、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒが「複数の部位」の一例に相当し、フィールド５１が「他のオブジェクト」の一例に相当する。特定部位選択部１４０は、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒの各々とフィールド５１との間の距離に基づいて、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒのうちのいずれかを特定部位として選択する。
【０１０３】
具体的には、選手キャラクタ６０の左足６１０Ｌのヌルオブジェクト６１１Ｌとフィールド５１との距離（すなわち、ヌルオブジェクト６１１ＬのＹｗ軸座標値）が、選手キャラクタ６０の右足６１０Ｒのヌルオブジェクト６１１Ｒとフィールド５１との距離（すなわち、ヌルオブジェクト６１１ＲのＹｗ軸座標値）よりも小さい場合に、特定部位選択部１４０は選手キャラクタ６０の左足６１０Ｌを特定部位として選択する。
【０１０４】
一方、選手キャラクタ６０の右足６１０Ｒのヌルオブジェクト６１１Ｒとフィールド５１との距離（すなわち、ヌルオブジェクト６１１ＲのＹｗ軸座標値）が選手キャラクタ６０の左足６１０Ｌのヌルオブジェクト６１１Ｌとフィールド５１との距離（すなわち、ヌルオブジェクト６１１ＬのＹｗ軸座標値）よりも小さい場合に、特定部位選択部１４０は選手キャラクタ６０の右足６１０Ｒを特定部位として選択する。
【０１０５】
［３−５］第１特定部１５０は、第１動作を実行中のキャラクタの動作を第２動作に切り替える場合に、第１モーションデータの動作切替時フレームにおけるキャラクタの特定部位の位置を特定する。
【０１０６】
「第１動作を実行中のキャラクタの動作を第２動作に切り替える」とは、第１動作を実行しているキャラクタに実行させる動作を第１動作から第２動作に切り替えることである。言い換えれば、「第１動作を実行中のキャラクタの動作を第２動作に切り替える」とは、第１動作を実行中のキャラクタに第２動作を開始させることである。すなわち、「第１動作を実行中のキャラクタの動作を第２動作に切り替える」とは、キャラクタによって実行されている第１動作の実行（続行）を中止させ、当該キャラクタに第２動作を開始させることである。
【０１０７】
「動作切替時フレーム」とは、第１動作を実行中のキャラクタの動作を第２動作に切り替えるタイミングにおけるフレームである。「動作切替時フレーム」は、予め定められたフレームではなく、例えば、ユーザによる第２動作の実行指示操作に応じて、第１動作を実行中のキャラクタの動作を第２動作に切り替える場合であれば、実行指示操作が行われたと判定されたフレームが「動作切替時フレーム」に相当する。
【０１０８】
例えば、キャラクタは、複数の部位オブジェクトを含んで構成され、当該複数の部位オブジェクトのうちの、特定部位に対応する部位オブジェクトは、非表示の基準オブジェクトを含んで構成される。そして、第１特定部１５０は、動作切替時フレームにおけるキャラクタの基準オブジェクトの位置を特定する。
【０１０９】
「複数の部位オブジェクト」とは、キャラクタを構成する複数のオブジェクトである。例えば、個々の部位オブジェクトは複数のポリゴンを含んで構成される。
【０１１０】
「非表示のオブジェクト」とは、表示部１６に表示されないオブジェクトである。例えば、「非表示のオブジェクト」とは、透明に設定されたオブジェクトである。言い換えれば、「非表示のオブジェクト」とは、表示部１６への表示対象（ＶＲＡＭへの描画対象）から除外されるオブジェクトである。
【０１１１】
「基準オブジェクト」とは、第１特定部１５０や第２特定部１６０による位置の特定の対象として用いられるオブジェクトであり、それ以外の用途のないオブジェクトである。例えば、ヌルオブジェクトが「基準オブジェクト」として設定される。
【０１１２】
先述のサッカーゲームの場合、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒにそれぞれ設定されたヌルオブジェクト６１１Ｌ及びヌルオブジェクト６１１Ｒが「基準オブジェクト」の一例に相当する。
【０１１３】
先述のサッカーゲームでは、例えば、歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替える場合に、第１特定部１５０は、動作切替時フレームにおける選手キャラクタ６０の左足６１０Ｌ又は右足６１０Ｒの位置を特定する。具体的には、特定部位選択部１４０によって特定部位として選択された部位が左足６１０Ｌである場合に、第１特定部１５０は、動作切替時フレームにおけるヌルオブジェクト６１１Ｌの位置を特定する。一方、特定部位選択部１４０によって特定部位として選択された部位が右足６１０Ｒである場合に、第１特定部１５０は、動作切替時フレームにおけるヌルオブジェクト６１１Ｒの位置を特定する。
【０１１４】
［３−６］第２特定部１６０は、第１動作を実行中のキャラクタの動作を第２動作に切り替える場合に、第２モーションデータの各フレームのうちから設定された複数の候補フレームの各々におけるキャラクタの特定部位の位置を特定する。
【０１１５】
「複数の候補フレーム」とは、第２動作実行部１７０（フレーム選択部１７２）による選択の候補となるフレームである。すなわち、「複数の候補フレーム」とは、第１動作を実行中のキャラクタの動作を第２動作に切り替える場合にどのフレームから第２モーションデータに基づいてキャラクタに動作させるのかを決定するための基準として第２動作実行部１７０（フレーム選択部１７２）によって選択され得る候補となるフレームである。
【０１１６】
「複数の候補フレーム」とは、第２モーションデータの各フレームのうちから設定された複数のフレームである。言い換えれば、「複数の候補フレーム」とは、キャラクタに第２動作を実行させる場合の各フレームのうちから設定された複数のフレームである。例えば、第２モーションデータの全フレーム（言い換えれば、キャラクタに第２動作を実行させる場合の全フレーム）のうちの複数のフレームが「複数の候補フレーム」として設定される。第２モーションデータの全フレームのうちの一部である複数のフレームが「複数の候補フレーム」として設定されてもよいし、第２モーションデータの全フレームが「複数の候補フレーム」として設定されてもよい。
【０１１７】
例えば、「複数の候補フレーム」は、第２モーションデータの各フレームのうちからゲーム開発者によって予め設定された複数のフレームである。なお、「複数の候補フレーム」は、第２モーションデータの各フレームのうちからコンピュータによって予め設定された複数のフレームであってもよい。
【０１１８】
例えば、第２モーションデータが、キャラクタに第２動作を実行させる場合の全フレームのうちの複数の特定フレーム（キーフレーム）におけるキャラクタの姿勢を定めたデータである場合、複数の特定フレーム（キーフレーム）の全部又は一部が「複数の候補フレーム」として設定される。なお、第２モーションデータが、キャラクタに第２動作を実行させる場合の全フレームのうちの複数の特定フレーム（キーフレーム）におけるキャラクタの姿勢を定めたデータであっても、特定フレーム以外のフレームが「複数の候補フレーム」に含まれてもよい。
【０１１９】
なお、「複数の候補フレーム」は、第２モーションデータの先頭フレームから特定の範囲内にあるフレームのうちで設定される。例えば、第２モーションデータのあるフレーム（ここではフレームＸと呼ぶ）から第２モーションデータの再生を開始させたとしても、キャラクタの第２動作が不自然であるとはユーザに感じさせてしまうおそれがないが、フレームＸよりも後のフレームから第２モーションデータの再生を開始させると、キャラクタの第２動作が不自然であるとユーザに感じさせてしまうおそれがあるような場合、先頭フレームからフレームＸまでが「特定の範囲」に相当する。
【０１２０】
「複数の候補フレームの各々におけるキャラクタの特定部位の位置」とは、第２モーションデータに基づいてキャラクタに第２動作を実行させたと仮定した場合の複数の候補フレームの各々におけるキャラクタの特定部位の位置である。
【０１２１】
先述したように、例えば、キャラクタは、複数の部位オブジェクトを含んで構成され、当該複数の部位オブジェクトのうちの、特定部位に対応する部位オブジェクトは、非表示の基準オブジェクトを含んで構成される。そして、第２特定部１６０は、複数の候補フレームの各々におけるキャラクタの基準オブジェクトの位置を特定する。
【０１２２】
先述のサッカーゲームでは、例えば、歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替える場合に、第２特定部１６０は、ステップモーションデータの各フレームのうちから設定された複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］の各々における選手キャラクタ６０の左足６１０Ｌ又は右足６１０Ｒの位置を特定する。具体的には、特定部位選択部１４０によって特定部位として選択された部位が左足６１０Ｌである場合に、第２特定部１６０は、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］の各々におけるヌルオブジェクト６１１Ｌの位置を特定する。一方、特定部位選択部１４０によって特定部位として選択された部位が右足６１０Ｒである場合に、第２特定部１６０は、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］の各々におけるヌルオブジェクト６１１Ｒの位置を特定する。
【０１２３】
［３−７］第２動作実行部１７０は、第１動作を実行中のキャラクタの動作を第２動作に切り替える場合に、第１特定部１５０によって特定された動作切替時フレームにおける特定部位の位置と、第２特定部１６０によって特定された複数の候補フレームの各々における特定部位の位置とに基づいて、複数の候補フレームのうちのいずれかを選択し、当該選択された候補フレームに基づくフレームから第２モーションデータに基づいてキャラクタに動作を実行させる。
【０１２４】
例えば、第２動作実行部１７０は、第１特定部１５０によって特定された動作切替時フレームにおける特定部位の位置と、第２特定部１６０によって特定された複数の候補フレームの各々における特定部位の位置とを比較し、その比較結果に基づいて、複数の候補フレームのうちからいずれかを選択する。
【０１２５】
図７に示すように、第２動作実行部１７０は、距離取得部１７１とフレーム選択部１７２とを含む。距離取得部１７１は、第１特定部１５０によって特定された動作切替時フレームにおける特定部位の位置と、第２特定部１６０によって特定された複数の候補フレームの各々における特定部位の位置との間の距離を取得する。フレーム選択部１７２は、複数の候補フレームのうちから、距離取得部１７１によって取得された距離が最も小さい候補フレームを選択する。そして、第２動作実行部１７０は、フレーム選択部１７２によって選択された候補フレームに基づくフレームから第２モーションデータに基づいてキャラクタに動作を実行させる。
【０１２６】
「距離」は、特定部位の位置が座標値（ｘ，ｙ，ｚ）で示される場合であれば、Δｘ２＋Δｙ２＋Δｚ２の平方根として算出することができ、特定部位の位置が座標値（ｘ，ｙ）で示される場合であれば、Δｘ２＋Δｙ２の平方根として算出することができる。
【０１２７】
「選択された候補フレームに基づくフレーム」とは、例えば、選択された候補フレーム自体である。または、「選択された候補フレームに基づくフレーム」とは、選択された候補フレーム以外のフレームであって、選択された候補フレームに基づいて選択されたフレームであってもよい。例えば、「選択された候補フレームに基づくフレーム」とは、選択された候補フレームの前又は／及び後の所定範囲にあるフレームであってもよい。
【０１２８】
「選択された候補フレームに基づくフレームから第２モーションデータに基づいてキャラクタに動作を実行させる」とは、例えば、選択された候補フレームに基づくフレームにおけるキャラクタの姿勢を第２モーションデータに基づいて特定し、キャラクタの姿勢を、上記特定された姿勢から、第２モーションデータに従って変化させることである。
【０１２９】
なお、第２動作実行部１７０は、キャラクタの姿勢を第１モーションデータに基づく姿勢から第２モーションデータに基づく姿勢へと動作切替時フレームにおいて瞬時に切り替えるのではなく、動作切替時フレームから所定数フレームの期間においては、キャラクタの姿勢を、第１モーションデータに基づく姿勢と第２モーションデータに基づく姿勢とをブレンドしてなる姿勢とし、第１モーションデータに基づく姿勢のブレンド比率を徐々に下げ、第２モーションデータに基づく姿勢のブレンド比率を徐々に上げることによって、キャラクタの姿勢を、第１モーションデータに基づく姿勢から第２モーションデータに基づく姿勢へと徐々に切り替えるようにしてもよい。
【０１３０】
「第１モーションデータに基づく姿勢と第２モーションデータに基づく姿勢とをブレンドする」とは、第１モーションデータに基づく姿勢におけるキャラクタの頂点座標を（ｘ１，ｙ１，ｚ１）とし、第２モーションデータに基づく姿勢におけるキャラクタの頂点座標（ｘ２，ｙ２，ｚ２）とし、第２モーションデータに基づく姿勢のブレンド比率をα（α：０〜１の数値）とすると、キャラクタの頂点座標を（（ｘ１＊（１−α））＋（ｘ２＊α），（ｙ１＊（１−α））＋（ｙ２＊α），（ｚ１＊（１−α））＋（ｚ２＊α））とすることである。
【０１３１】
先述したように、例えば、キャラクタは、複数の部位オブジェクトを含んで構成され、当該複数の部位オブジェクトのうちの、特定部位に対応する部位オブジェクトは、非表示の基準オブジェクトを含んで構成される。そして、第２動作実行部１７０は、第１特定部１５０によって特定された動作切替時フレームにおける基準オブジェクトの位置と、第２特定部１６０によって特定された複数の候補フレームの各々における基準オブジェクトの位置とに基づいて、複数の候補フレームのうちのいずれかを選択する。
【０１３２】
先述のサッカーゲームでは、例えば、歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替える場合に、第２動作実行部１７０は、歩行モーションデータの動作切替時フレームにおける左足６１０Ｌ又は右足６１０Ｒの位置と、ステップモーションデータの複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］の各々における左足６１０Ｌ又は右足６１０Ｒの位置とに基づいて、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］のうちのいずれかを選択する。
【０１３３】
具体的には、特定部位選択部１４０によって特定部位として選択された部位が左足６１０Ｌである場合に、距離取得部１７１は、歩行モーションデータの動作切替時フレームにおけるヌルオブジェクト６１１Ｌの位置と、ステップモーションデータの複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］の各々におけるヌルオブジェクト６１１Ｌの位置との間の距離を取得する。すなわち、図１１に示すように、距離取得部１７１は、ステップモーションデータの各候補フレームＣＦ［ｉ］（ｉ＝１，２，・・・，Ｎ）について、歩行モーションデータの動作切替時フレームにおけるヌルオブジェクト６１１Ｌの位置と、ステップモーションデータの候補フレームＣＦ［ｉ］におけるヌルオブジェクト６１１Ｌの位置との間の距離Ｄｉを取得する。また、フレーム選択部１７２は、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］のうちから、距離取得部１７１によって取得された距離が最も小さい候補フレームを選択する。そして、第２動作実行部１７０は、フレーム選択部１７２によって選択された候補フレームからステップモーションデータに基づいて選手キャラクタ６０に動作を実行させる。
【０１３４】
一方、特定部位選択部１４０によって特定部位として選択された部位が右足６１０Ｒである場合に、距離取得部１７１は、歩行モーションデータの動作切替時フレームにおけるヌルオブジェクト６１１Ｒの位置と、ステップモーションデータの複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］の各々におけるヌルオブジェクト６１１Ｒの位置との間の距離を取得する。すなわち、図１１に示すように、距離取得部１７１は、ステップモーションデータの各候補フレームＣＦ［ｉ］（ｉ＝１，２，・・・，Ｎ）について、歩行モーションデータの動作切替時フレームにおけるヌルオブジェクト６１１Ｒの位置と、ステップモーションデータの候補フレームＣＦ［ｉ］におけるヌルオブジェクト６１１Ｒの位置との間の距離Ｄｉを取得する。また、フレーム選択部１７２は、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］のうちから、距離取得部１７１によって取得された距離が最も小さい候補フレームを選択する。そして、第２動作実行部１７０は、フレーム選択部１７２によって選択された候補フレームからステップモーションデータに基づいて選手キャラクタ６０に動作を実行させる。
【０１３５】
［４．処理］次に、ゲームシステム１（ゲーム端末１０）で実行される処理について説明する。
【０１３６】
図１２は、歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替える場合に実行される処理の一例を示す。例えば、ユーザの操作対象になっている選手キャラクタ６０が歩行動作を実行している間に、ステップ動作の実行指示操作がユーザによって行われた場合に、図１２に示す処理が実行される。また例えば、ユーザの操作対象になっていない選手キャラクタ６０が歩行動作を実行している間に、当該選手キャラクタ６０に対するステップ動作の実行指示がコンピュータによって行われた場合に、図１２に示す処理が実行される。ゲーム端末１０の制御部１１が図１２に示す処理をプログラムに従って実行することによって、制御部１１が図７に示す機能ブロック（データ記憶部１００を除く）として機能するようになる。
【０１３７】
図１２に示すように、まず、制御部１１は、歩行モーションデータの動作切替時フレーム（歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替えるタイミングのフレーム）における選手キャラクタ６０の左足６１０Ｌのヌルオブジェクト６１１Ｌの位置を取得する（Ｓ１００）。
【０１３８】
例えば、制御部１１は、キャラクタ状態データＤ１０４（再生フレームフィールド）に基づいて、現在再生中のフレームのフレーム番号を特定する。また、制御部１１は、歩行モーションデータに基づいて、当該フレームにおける選手キャラクタ６０の各ボーンのボーン行列を取得する。そして、制御部１１は、選手キャラクタ６０の各ボーンの位置及び回転角度を、取得したボーン行列に基づいて設定することによって、選手キャラクタ６０のヌルオブジェクト６１１Ｌの位置を示すローカル座標系の座標値（すなわち、選手キャラクタ６０の基準点に対するヌルオブジェクト６１１Ｌの相対的位置）を特定する。また、制御部１１は、キャラクタ状態データＤ１０４（位置フィールド）に基づいて、選手キャラクタ６０の基準点の位置を示すワールド座標系の座標値を特定する。そして、制御部１１は、これらに基づいて、ヌルオブジェクト６１１Ｌの位置を示すワールド座標系の座標値を特定する。
【０１３９】
同様に、制御部１１は、歩行モーションデータの動作切替時フレームにおける選手キャラクタ６０の右足６１０Ｒのヌルオブジェクト６１１Ｒの位置を取得する（Ｓ１０２）。この処理はステップＳ１００と同様である。
【０１４０】
ステップＳ１００及びＳ１０２の実行後、制御部１１は、選手キャラクタ６０の左足６１０Ｌ及び右足６１０Ｒのうちで、フィールド５１に近い方の足を特定部位として選択する（Ｓ１０４）。
【０１４１】
例えば、制御部１１は、ステップＳ１００で取得した左足６１０Ｌのヌルオブジェクト６１１Ｌの位置とフィールド５１との距離（第１距離）を取得する。具体的には、制御部１１は、ヌルオブジェクト６１１Ｌからフィールド５１へ垂らした垂線の長さを上記第１距離として取得する。なお、フィールド５１がワールド座標系のＹｗ軸座標値が０となるような平面に相当している場合、制御部１１は、ヌルオブジェクト６１１ＬのＹｗ軸座標値を上記第１距離として取得してもよい。同様に、制御部１１は、ステップＳ１０２で取得した右足６１０Ｒのヌルオブジェクト６１１Ｒの位置とフィールド５１との距離（第２距離）を取得する。そして、第１距離が第２距離よりも短い場合に、制御部１１は左足６１０Ｌを特定部位として選択する。一方、第２距離が第１距離よりも短い場合に、制御部１１は右足６１０Ｒを特定部位として選択する。
【０１４２】
また、制御部１１はステップモーションデータを取得する（Ｓ１０６）。例えば、ステップモーションデータが記憶部１２に記憶されている場合、制御部１１はステップモーションデータを記憶部１２から読み出す。
【０１４３】
さらに、制御部１１は変数ｉを１に初期化し（Ｓ１０８）、第ｉ番目の候補フレームＣＦ［ｉ］における選手キャラクタ６０の特定部位の位置を取得する（Ｓ１１０）。
【０１４４】
例えば、制御部１１は、ステップモーションデータの候補フレームデータＤ１０３を参照し、第ｉ番目の候補フレームＣＦ［ｉ］として設定されているフレームのフレーム番号を取得する。また、制御部１１は、ステップモーションデータに基づいて、当該フレームにおける選手キャラクタ６０の各ボーンのボーン行列を取得する。
【０１４５】
そして、ステップＳ１０４で選択された特定部位が左足６１０Ｌである場合、制御部１１は、選手キャラクタ６０の各ボーンの位置及び回転角度を、取得したボーン行列に基づいて設定することによって、選手キャラクタ６０の左足６１０Ｌのヌルオブジェクト６１１Ｌの位置を示すローカル座標系の座標値（すなわち、選手キャラクタ６０の基準点に対するヌルオブジェクト６１１Ｌの相対的位置）を特定する。
【０１４６】
一方、ステップＳ１０４で選択された特定部位が右足６１０Ｒである場合、制御部１１は、選手キャラクタ６０の各ボーンの位置及び回転角度を、取得したボーン行列に基づいて設定することによって、選手キャラクタ６０の右足６１０Ｒのヌルオブジェクト６１１Ｒの位置を示すローカル座標系の座標値（すなわち、選手キャラクタ６０の基準点に対するヌルオブジェクト６１１Ｒの相対的位置）を特定する。
【０１４７】
ステップＳ１１０の実行後、制御部１１は、第ｉ番目の候補フレームＣＦ［ｉ］における特定部位の位置（すなわち、ステップＳ１１２で取得された位置）と、動作切替時フレームにおける特定部位の位置（ステップＳ１００又はＳ１０２で取得された位置のうち、ステップＳ１０４で特定部位として特定された足の位置）との間の距離を取得する（Ｓ１１２）。
【０１４８】
例えば、ステップＳ１０４で選択された特定部位が左足６１０Ｌである場合、制御部１１は、ステップＳ１１０で取得されたヌルオブジェクト６１１Ｌの位置（ローカル座標系の座標値）と、ステップＳ１００で取得されたヌルオブジェクト６１１Ｌの位置（ローカル座標系の座標値）との間の距離を算出する。一方、ステップＳ１０４で選択された特定部位が右足６１０Ｒである場合、制御部１１は、ステップＳ１１０で取得されたヌルオブジェクト６１１Ｒの位置（ローカル座標系の座標値）と、ステップＳ１０２で取得されたヌルオブジェクト６１１Ｒの位置（ローカル座標系の座標値）との間の距離を算出する。そして、制御部１１は、以上のようにして算出された距離を、第ｉ番目の候補フレームＣＦ［ｉ］を識別する情報と関連付けて記憶部１２に記憶させる（図１１）。
【０１４９】
ステップＳ１１２の実行後、制御部１１は変数ｉに「１」を加算する（Ｓ１１４）。また、制御部１１は変数ｉがＮ以下であるか否かを判定する（Ｓ１１６）。ここで、「Ｎ」は、ステップモーションデータにおける候補フレームの総数を示している（図６）。
【０１５０】
変数ｉがＮ以下である場合（Ｓ１１６：Ｙｅｓ）、制御部１１は、ステップＳ１１０〜Ｓ１１４の処理を再度実行する。一方、変数ｉがＮ以下でない場合（Ｓ１１６：Ｎｏ）とは、すべての候補フレームＣＦ［１］〜ＣＦ［Ｎ］について上記距離を取得し終えた場合である。この場合、制御部１１は、複数の候補フレームＣＦ［１］〜ＣＦ［Ｎ］のうちで、ステップＳ１１２において取得した距離が最も小さい候補フレームを選択する（Ｓ１１８）。
【０１５１】
ステップＳ１１８の実行後、制御部１１は、ステップＳ１１８で選択した候補フレームからステップモーションデータに基づいて選手キャラクタ６０に動作を実行させる（Ｓ１２０）。
【０１５２】
例えば、制御部１１は、歩行モーションデータの再生を中止し、ステップＳ１１８で選択した候補フレームからステップモーションデータを再生することによって選手キャラクタ６０にステップ動作を開始させる。
【０１５３】
また例えば、制御部１１は、動作切替時フレームから所定数フレームの期間において、歩行モーションデータと、ステップＳ１１８で選択した候補フレームからのステップモーションデータとのブレンド再生を実行するようにしてもよい。すなわち、制御部１１は、動作切替時フレームから所定数フレームの期間において、選手キャラクタ６０の姿勢を、歩行モーションデータに基づく姿勢とステップモーションデータに基づく姿勢とをブレンドしてなる姿勢とし、歩行モーションデータに基づく姿勢のブレンド比率を徐々に下げ、ステップモーションデータに基づく姿勢のブレンド比率を徐々に上げることによって、選手キャラクタ６０の姿勢を、歩行モーションデータに基づく姿勢からステップモーションデータに基づく姿勢へと徐々に切り替えるようにしてもよい。つまり、制御部１１は、動作切替時フレームから所定数フレームの期間において、選手キャラクタ６０の動作を、歩行動作とステップ動作とをブレンドしてなる動作とし、歩行動作のブレンド比率を徐々に下げ、ステップ動作のブレンド比率を徐々に上げることによって、選手キャラクタ６０の動作を歩行動作からステップ動作へと徐々に切り替えるようにしてもよい。
【０１５４】
なお、ステップＳ１１２において、制御部１１はワールド座標系における距離を取得してもよい。すなわち、ステップＳ１０４で選択された特定部位が左足６１０Ｌである場合には、ステップＳ１１０において、制御部１１は、キャラクタ状態データＤ１０４（位置フィールド）に基づいて、選手キャラクタ６０の基準点の位置を示すワールド座標系の座標値を特定し、ヌルオブジェクト６１１Ｌの位置を示すローカル座標系の座標値と、選手キャラクタ６０の基準点の位置を示すワールド座標系の座標値とに基づいて、ヌルオブジェクト６１１Ｌの位置を示すワールド座標系の座標値を特定してもよい。そして、ステップＳ１１２において、制御部１１は、ステップＳ１１０で取得されたヌルオブジェクト６１１Ｌの位置（ワールド座標系の座標値）と、ステップＳ１００で取得されたヌルオブジェクト６１１Ｌの位置（ワールド座標系の座標値）との間の距離を算出してもよい。同様に、ステップＳ１０４で選択された特定部位が右足６１０Ｒである場合には、ステップＳ１１０において、制御部１１は、ヌルオブジェクト６１１Ｒの位置を示すワールド座標系の座標値を特定してもよい。そして、ステップＳ１１２において、制御部１１は、ステップＳ１１０で取得されたヌルオブジェクト６１１Ｒの位置（ワールド座標系の座標値）と、ステップＳ１００で取得されたヌルオブジェクト６１１Ｒの位置（ワールド座標系の座標値）との間の距離を算出してもよい。
【０１５５】
また、ステップＳ１０４において、制御部１１は、左足６１０Ｌのヌルオブジェクト６１１Ｌの位置を示すローカル座標系の座標値と、右足６１０Ｒのヌルオブジェクト６１１Ｒの位置を示すローカル座標系の座標値とを比較することによって、フィールド５１に近い方の足を特定するようにしてもよい。例えば、制御部１１は、ヌルオブジェクト６１１Ｌの位置を示すローカル座標系の座標値と所定の座標値（フィールド５１に対応するローカル座標系の座標値）との間の距離を第１距離として算出してもよい。同様に、制御部１１は、ヌルオブジェクト６１１Ｒの位置を示すローカル座標系の座標値と所定の座標値（フィールド５１に対応するローカル座標系の座標値）との間の距離を第２距離として算出してもよい。そして、第１距離が第２距離よりも短い場合に、制御部１１は左足６１０Ｌを特定部位として選択し、第２距離が第１距離よりも短い場合に、制御部１１は右足６１０Ｒを特定部位として選択してもよい。
【０１５６】
［５．まとめ］以上に説明したゲームシステム１によれば、例えば、歩行動作を実行中のキャラクタの動作をステップ動作に切り替える場合に、動作切替時における選手キャラクタ６０の左足６１０Ｌ又は右足６１０Ｒ（例えばフィールド５１に接触している方の足）の位置ずれを軽減でき、その結果、「足滑り」の発生を抑制できる。
【０１５７】
なお、「足滑り」は、フィールド５１に接触している足又はフィールド５１に近い位置にある足について発生しやすい。一方、フィールド５１から離れている足に関しては、動作切替時に位置ずれが生じていたとしても、ユーザに違和感を与えてしまう可能性は低い。この点、ゲームシステム１によれば、選手キャラクタ６０の左足６１０Ｌ又は右足６１０Ｒのうち、フィールド５１に近い方の足がどちらであるかを判定し、フィールド５１に近い方の足について、動作切替時の位置ずれを軽減するため、「足滑り」が発生する可能性が高い足に関して、動作切替時の位置ずれを軽減できる。
【０１５８】
また、ゲームシステム１によれば、例えば、ユーザによるステップ動作の実行指示操作に応じて、歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替える場合に、実行指示操作に応じて、直ちに、選手キャラクタの動作を切り替えることができ、選手キャラクタ６０の動作切替が遅れる（すなわち、選手キャラクタ６０の反応が遅い）との不満をユーザに感じさせないように図ることができる。
【０１５９】
また、ゲームシステム１によれば、左足６１０Ｌにヌルオブジェクト６１１Ｌを設定し、右足６１０Ｒにヌルオブジェクト６１１Ｒを設定したことによって、第１特定部１５０、第２特定部１６０、及び第２動作実行部１７０において、左足６１０Ｌ又は右足６１０Ｒの位置としてヌルオブジェクト６１１Ｌ，６１１Ｒの位置のみに着目すればよくなるため、処理を簡略化できる。また、ヌルオブジェクト６１１Ｌ，６１１Ｒは非表示のオブジェクトであるため、余計なオブジェクトが表示部１６に表示されるという不都合も発生しない。
【０１６０】
［６．変形例］本発明は以上に説明した実施形態に限定されるものではない。
【０１６１】
［６−１］例えば、第２動作実行部１７０は、第２モーションデータの複数の候補フレームの各々について、順番に、第１特定部１５０によって特定された第１モーションデータの動作切替時フレームにおける特定部位の位置と、第２特定部１６０によって特定された当該候補フレームにおける特定部位の位置との間の距離が閾値よりも小さい否かを判定していき、当該距離が閾値よりも小さい候補フレームが見つかったら、残りの候補フレームについて判定を行うことなく当該候補フレームを選択するようにしてもよい。
【０１６２】
すなわち、図１２に示す処理では、ステップＳ１１２の実行後において、ステップＳ１１２で取得された距離が閾値よりも小さいか否かを判定するようにしてもよい。そして、距離が閾値よりも小さければ、第ｉ番目の候補フレームＣＦ［ｉ］を選択して、ステップＳ１２０を実行し、一方、距離が閾値よりも小さくなければ、ステップＳ１１４を実行するようにしてもよい。このようにすれば、候補フレームＣＦ［１］〜ＣＦ「Ｎ」のすべてについて距離を取得しなくても、いずれかの候補フレームを選択できる場合があるため、複数の候補フレームＣＦ［１］〜ＣＦ「Ｎ」のうちからいずれかを選択するための処理負荷を軽減できる。
【０１６３】
［６−２］また例えば、第２動作実行部１７０は、第１特定部１５０によって特定された第１モーションデータの動作切替時フレームにおける特定部位（例えば左足又は右足）の位置に基づいて設定される判定領域（例えば、第１動作を実行中のキャラクタの特定部位の位置から閾値以下の領域）内に、第２特定部１６０によって特定された、第２モーションデータの複数の候補フレームのいずれかにおける特定部位の位置が含まれる場合に、当該候補フレームを選択するようにしてもよい。
【０１６４】
すなわち、図１２に示す処理では、ステップＳ１０４において特定部位として特定された足が左足６１０Ｌであれば、ステップＳ１１０の実行後において、ステップＳ１００で取得された位置に基づいて設定される判定領域内に、ステップＳ１１０で取得された位置が含まれているか否かを判定するようにしてもよい。一方、ステップＳ１０４において特定部位として特定された足が右足６１０Ｒであれば、ステップＳ１１０の実行後において、ステップＳ１０２で取得された位置に基づいて設定される判定領域内に、ステップＳ１１０で取得された位置が含まれているか否かを判定するようにしてもよい。そして、ステップＳ１１０で取得された位置が判定領域に含まれていれば、第ｉ番目の候補フレームＣＦ［ｉ］を選択して、ステップＳ１２０を実行し、一方、ステップＳ１１０で取得された位置が判定領域に含まれていなければ、ステップＳ１１４を実行するようにしてもよい。このようにしても、候補フレームＣＦ［１］〜ＣＦ「Ｎ」のすべてについて距離を取得しなくても、いずれかの候補フレームを選択できる場合があるため、処理負荷を軽減できる。
【０１６５】
［６−３］また例えば、第２動作実行部１７０は、第１特定部１５０によって特定された第１モーションデータの動作切替時フレームにおける特定部位（例えば左足又は右足）の位置が、第２特定部１６０によって特定された、第２モーションデータの複数の候補フレームのいずれかにおけるキャラクタの特定部位の位置に基づいて設定される判定領域（例えば、複数の候補フレームの各々におけるキャラクタの特定部位の位置から閾値以下の領域）内に含まれる場合に、当該候補フレームを選択するようにしてもよい。
【０１６６】
すなわち、図１２に示す処理では、ステップＳ１０４において特定部位として特定された足が左足６１０Ｌであれば、ステップＳ１１０の実行後において、ステップＳ１１０で取得された位置に基づいて設定される判定領域内に、ステップＳ１００で取得された位置が含まれているか否かを判定するようにしてもよい。一方、ステップＳ１０４において特定部位として特定された足が右足６１０Ｒであれば、ステップＳ１１０の実行後において、ステップＳ１１０で取得された位置に基づいて設定される判定領域内に、ステップＳ１０２で取得された位置が含まれているか否かを判定するようにしてもよい。そして、ステップＳ１００又はＳ１０２で取得された位置が判定領域に含まれていれば、第ｉ番目の候補フレームＣＦ［ｉ］を選択して、ステップＳ１２０を実行し、一方、ステップＳ１００又はＳ１０２で取得された位置が判定領域に含まれていなければ、ステップＳ１１４を実行するようにしてもよい。このようにしても、候補フレームＣＦ［１］〜ＣＦ「Ｎ」のすべてについて距離を取得しなくても、いずれかの候補フレームを選択できる場合があるため、処理負荷を軽減できる。
【０１６７】
［６−４］また例えば、ゲーム端末１０（画像処理装置の一例）の制御部１１によって実行されることとして説明した処理の全部又は一部がサーバ３０（画像処理装置の他の一例）で実行されてもよい。この場合、サーバ３０で処理を実行するために必要なデータを記憶部３２又はデータベース３５に格納したり、ゲーム端末１０からサーバ３０に送信したりするようにすればよい。また、各種画像を表示部１６に表示するために必要なデータ（画像自体を示すデータ又は画像を生成するためのデータ等）をサーバ３０からゲーム端末１０に送信するようにすればよい。
【０１６８】
［６−５］以上では、主に、歩行動作を実行中の選手キャラクタ６０の動作をステップ動作に切り替える場合について主に説明したが、本発明は、歩行動作以外の動作を実行中の選手キャラクタ６０の動作をステップ動作以外の動作に切り替える場合に用いることもできる。
【０１６９】
また、以上では、サッカーゲームにおいて、「足滑り」の発生を抑制しつつ、選手キャラクタ６０の動作を切り替える場合について主に説明したが、本発明は、サッカーゲーム以外のゲームにも適用できる。
【０１７０】
また、以上では、「足滑り」の発生を抑制する場合について主に説明したが、先述したように、本発明は、「手滑り」の発生を抑制するために用いることもできる。例えば、キャラクタが逆立ちをした状態が各種動作を行うようなゲーム等、キャラクタが他のオブジェクト（例えば、フィールド、壁、又はテーブル等）に手を付いた状態で各種動作を行うようなゲームでは、動作切替前後で他のオブジェクトに接触しているキャラクタの左手又は右手の位置ずれが発生することによって、動作切替時にキャラクタの左手又は右手が他のオブジェクト上で滑っているかのようにユーザに見えてしまう可能性がある。この点、本発明に係る手法をキャラクタの左手又は右手を対象として実行することによって、「手滑り」の発生を抑制しつつ、キャラクタの動作を切り替えることもできる。
【０１７１】
［６−６］以上では、本発明を画像処理システム（画像処理装置）の一例であるゲームシステム１（ゲーム端末１０）に適用した場合について説明したが、本発明は、ゲームシステム１以外の画像処理システムにも適用できる。本発明は、第１モーションデータに基づく第１動作を実行中のキャラクタを第２モーションデータに基づく第２動作に切り替えるような各種画像処理システム（画像処理装置）に適用できる。
【０１７２】
［７．付記］以上のような記載から、本発明は例えば以下のように把握される。なお、本発明の理解を容易にするために、適宜図面に記載された符号を括弧書きで記載するが、それにより本発明が図示の態様に限定されるものではない。
【０１７３】
１）本発明の一態様に係る画像処理装置（１０）は、キャラクタ（例えば選手キャラクタ６０）に第１動作（例えば歩行動作）を実行させるための第１モーションデータ（例えば歩行モーションデータ）を取得する第１取得手段（１１０）と、前記キャラクタに第２動作（例えばステップ動作）を実行させるための第２モーションデータ（例えばステップモーションデータ）を取得する第２取得手段（１２０）と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１モーションデータの動作切替時フレームにおける前記キャラクタの特定部位（例えば左足６１０Ｌ又は右足６１０Ｒ）の位置を特定する第１特定手段（１５０）と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第２モーションデータの各フレームのうちから設定された複数の候補フレームの各々における前記キャラクタの前記特定部位の位置を特定する第２特定手段（１６０）と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１特定手段（１５０）によって特定された前記動作切替時フレームにおける前記特定部位の位置と、前記第２特定手段（１６０）によって特定された前記複数の候補フレームの各々における前記特定部位の位置とに基づいて、前記複数の候補フレームのうちのいずれかを選択し、当該選択された候補フレームに基づくフレームから前記第２モーションデータに基づいて前記キャラクタに動作を実行させる実行手段（１７０）と、を含む。
【０１７４】
６）本発明の一態様に係る画像処理システム（１）は、キャラクタに第１動作を実行させるための第１モーションデータを取得する第１取得手段（１１０）と、前記キャラクタに第２動作を実行させるための第２モーションデータを取得する第２取得手段（１２０）と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１モーションデータの動作切替時フレームにおける前記キャラクタの特定部位の位置を特定する第１特定手段（１５０）と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第２モーションデータの各フレームのうちから設定された複数の候補フレームの各々における前記キャラクタの前記特定部位の位置を特定する第２特定手段（１６０）と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１特定手段（１５０）によって特定された前記動作切替時フレームにおける前記特定部位の位置と、前記第２特定手段（１６０）によって特定された前記複数の候補フレームの各々における前記特定部位の位置とに基づいて、前記複数の候補フレームのうちのいずれかを選択し、当該選択された候補フレームに基づくフレームから前記第２モーションデータに基づいて前記キャラクタに動作を実行させる実行手段（１７０）と、を含む。
【０１７５】
７）また、本発明の一態様に係るプログラムは、１）〜５）のいずれかに記載の画像処理装置（１０）、又は、６）に記載の画像処理システム（１）としてコンピュータを機能させるためのプログラムである。
【０１７６】
８）また、本発明の一態様に係る情報記憶媒体は、７）に記載のプログラムを記録したコンピュータで読み取り可能な情報記憶媒体である。
【０１７７】
９）また、本発明の一態様に係る画像処理方法（画像処理装置（１０）又は画像処理システム（１）の制御方法）は、キャラクタに第１動作を実行させるための第１モーションデータを取得する第１取得ステップ（Ｓ１００，Ｓ１０２）と、前記キャラクタに第２動作を実行させるための第２モーションデータを取得する第２取得ステップ（Ｓ１０６）と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１モーションデータの動作切替時フレームにおける前記キャラクタの特定部位の位置を特定する第１特定ステップ（Ｓ１００，Ｓ１０２，Ｓ１０４）と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第２モーションデータの各フレームのうちから設定された複数の候補フレームの各々における前記キャラクタの前記特定部位の位置を特定する第２特定ステップ（Ｓ１１０）と、前記第１動作を実行中の前記キャラクタの動作を前記第２動作に切り替える場合に、前記第１特定ステップによって特定された前記動作切替時フレームにおける前記特定部位の位置と、前記第２特定ステップによって特定された前記複数の候補フレームの各々における前記特定部位の位置とに基づいて、前記複数の候補フレームのうちのいずれかを選択し、当該選択された候補フレームに基づくフレームから前記第２モーションデータに基づいて前記キャラクタに動作を実行させる実行ステップ（Ｓ１１８，Ｓ１２０）と、を含む。
【０１７８】
上記１）、６）〜９）に記載の発明によれば、第１モーションデータに基づく第１動作を実行中のキャラクタの動作を第２モーションデータに基づく第２動作に切り替える場合に、第１モーションデータの動作切替時フレームにおけるキャラクタの特定部位の位置と、第２モーションデータの各フレームのうちから設定された複数の候補フレームの各々におけるキャラクタの特定部位の位置とに基づいて、複数の候補フレームのうちのいずれかを選択し、選択された候補フレームに基づくフレームから第２モーションデータに基づいてキャラクタに動作を実行させる。
【０１７９】
以上のようにしたことによって、第１動作から第２動作への動作切替時の特定部位（例えばフィールド、地面、又は床に接地している足、又は、壁又はテーブル等に接触している手等）の位置ずれを軽減できる。その結果、第１動作から第２動作への動作切替時にキャラクタの特定部位が他のオブジェクト（例えば、フィールド、地面、床、壁、又はテーブル等）上で滑っているかのように見えてしまうことを抑制できる。
【０１８０】
また、以上のようにしたことにとって、ユーザによる第２動作の実行指示操作に応じて、第１動作を実行中のキャラクタの動作を第２動作に切り替える場合に、実行指示操作に応じて直ちにキャラクタの動作を切り替えることができる。その結果、キャラクタの動作切替が遅れる（すなわち、キャラクタの反応が遅い）との不満をユーザに感じさせないように図ることができる。
【０１８１】
以上のように、上記１）、６）〜９）に記載の発明によれば、第１モーションデータに基づく第１動作を実行中のキャラクタの動作を第２モーションデータに基づく第２動作に切り替えることを、動作切替時にキャラクタの特定部位が他のオブジェクト（例えば、フィールド、地面、床、壁、又は壁等）上で滑っているかのように見えてしまわないようにしつつ、かつ、キャラクタの動作切替が遅れる（すなわち、キャラクタの反応が遅い）との不満をユーザに感じさせないようにしつつ実現することができる。すなわち、第１モーションデータに基づく第１動作を実行中のキャラクタの動作を第２モーションデータに基づく第２動作に切り替えることを好適に実行することが可能になる。
【０１８２】
２）本発明の一態様に係る画像処理装置（１０）では、前記実行手段（１７０）は、前記第１特定手段（１５０）によって特定された前記動作切替時フレームにおける前記特定部位の位置と、前記第２特定手段（１６０）によって特定された前記複数の候補フレームの各々における前記特定部位の位置との間の距離を取得する距離取得手段（１７１）と、前記複数の候補フレームのうちから、前記距離が最も小さい候補フレームを選択するフレーム選択手段（１７２）と、を含むようにしてもよい。
【０１８３】
２）に記載の発明によれば、第１特定手段によって特定された動作切替時フレームにおける特定部位の位置と、第２特定手段によって特定された複数の候補フレームの各々における特定部位の位置との間の距離を取得し、複数の候補フレームのうちから、当該距離が最も小さい候補フレームを選択するため、第１動作から第２動作への動作切替時の特定部位の位置ずれをできる限り小さくできる。
【０１８４】
３）本発明の一態様に係る画像処理装置（１０）では、前記キャラクタは、前記第１動作及び前記第２動作において、他のオブジェクト（例えばフィールド５１）上に接触したり、前記他のオブジェクト上から離れたりする複数の部位（例えば左足６１０Ｌ及び右足６１０Ｒ）を有し、前記画像処理装置（１０）は、前記複数の部位の各々と前記他のオブジェクトとの間の距離に基づいて、前記複数の部位のうちのいずれかを前記特定部位として選択する特定部位選択手段（１４０）をさらに含むようにしてもよい。
【０１８５】
３）に記載の発明によれば、第１動作から第２動作への動作切替時に他のオブジェクト上で滑っているかのように見えてしまうという不都合を発生させてしまう可能性が高い部位に関して、動作切替時の位置ずれを軽減できるようになる。第１動作から第２動作への動作切替時にキャラクタの部位が他のオブジェクト上で滑っているかのように見えてしまうという不都合は、他のオブジェクト上に接触している部位又は他のオブジェクトに近い位置にある部位について発生しやすい。一方、他のオブジェクトから離れている部位に関しては、動作切替時に位置ずれが生じていたとしても、ユーザに違和感を与えてしまう可能性は低い。この点、本発明によれば、キャラクタの複数の部位の各々と他のオブジェクトとの間の距離に基づいて、当該複数の部位のうちのいずれかを特定部位として選択するようにしたため、上記不都合を発生させてしまう可能性が高い部位に関して、第１動作から第２動作への動作切替時の位置ずれを軽減できるようになる。
【０１８６】
４）本発明の一態様に係る画像処理装置（１０）では、前記キャラクタは、複数の部位オブジェクトを含んで構成され、前記複数の部位オブジェクトのうちの、前記特定部位に対応する部位オブジェクト（例えば左足６１０Ｌ又は右足６１０Ｒ）は、非表示の基準オブジェクト（例えばヌルオブジェクト６１１Ｌ又は６１１Ｒ）を含んで構成され、前記第１特定手段（１５０）は、前記動作切替時フレームにおける前記キャラクタの前記基準オブジェクトの位置を特定し、前記第２特定手段（１６０）は、前記複数の候補フレームの各々における前記キャラクタの前記基準オブジェクトの位置を特定し、前記実行手段（１７０）は、前記第１特定手段（１５０）によって特定された前記動作切替時フレームにおける前記基準オブジェクトの位置と、前記第２特定手段（１６０）によって特定された前記複数の候補フレームの各々における前記基準オブジェクトの位置とに基づいて、前記複数の候補フレームのうちのいずれかを選択するようにしてもよい。
【０１８７】
４）に記載の発明によれば、第１特手手段、第２特定手段や、実行手段において、基準オブジェクトの位置のみについて着目すればよくなるため、処理を簡略化できる。また、基準オブジェクトは非表示のオブジェクトであるため、余計なオブジェクトが表示部に表示されるという不都合も発生しない。
【０１８８】
５）本発明の一態様に係る画像処理装置（１０）では、前記複数の候補フレームは、前記第２モーションデータの先頭フレームから特定の範囲内にあるフレームのうちで設定されるようにしてもよい。
【０１８９】
５）に記載の発明によれば、下記に説明するような不都合の発生を抑制できる。第２モーションデータの先頭フレームから離れたフレームから第２モーションデータに基づいてキャラクタに動作を実行させた場合、キャラクタの動作が第２動作の途中から実行されることによって、キャラクタの動作が不自然であるとユーザが感じてしまうおそれがある。この点、５）に記載の発明によれば、このような不都合の発生を抑制できる。
【０１９０】
１０）本発明の一態様に係る画像処理装置（１０）では、前記キャラクタは左足と右足とを有し、前記複数の部位は前記左足と前記右足とであってもよい。
【０１９１】
１０）に記載の発明によれば、キャラクタの左足及び右足のうち、第１動作から第２動作への動作切替時に他のオブジェクト（例えばフィールド、地面、又は床等）上で滑っているかのように見えてしまうという不都合を発生させてしまう可能性が高い方の部位に関して、動作切替時の位置ずれを軽減できるようになる。第１動作から第２動作への動作切替時に他のオブジェクト上で滑っているかのように見えてしまうという不都合は、左足と右足とのうちの、他のオブジェクト上に接触している方（又は他のオブジェクトに近い方）について発生しやすい。この点、本発明によれば、キャラクタの左足と右足とのうちの、上記不都合を発生させてしまう可能性が高い方に関して、動作切替時の位置ずれを軽減できるようになる。
【０１９２】
１１）本発明の一態様に係る画像処理装置（１０）では、前記キャラクタは左手と右手とを有し、前記複数の部位は前記左手と前記右手とであってもよい。
【０１９３】
１１）に記載の発明によれば、キャラクタの左手及び右手のうち、第１動作から第２動作への動作切替時に他のオブジェクト（例えば壁又はテーブル等）上で滑っているかのように見えてしまうという不都合を発生させてしまう可能性が高い方の部位に関して、動作切替時の位置ずれを軽減できるようになる。第１動作から第２動作への動作切替時に他のオブジェクト上で滑っているかのように見えてしまうという不都合は、左手と右手とのうちの、他のオブジェクト上に接触している方（又は他のオブジェクトに近い方）について発生しやすい。この点、本発明によれば、キャラクタの左手と右手とのうちの、上記不都合を発生させてしまう可能性が高い方の部位に関して、動作切替時の位置ずれを軽減できるようになる。
【符号の説明】
【０１９４】
１  ゲームシステム、Ｎ  ネットワーク、１０  ゲーム端末、１１  制御部、１２  記憶部、１３  光ディスクドライブ部、１４  通信部、１５  操作部、１６  表示部、１７
音声出力部、３０  サーバ、３１  制御部、３２  記憶部、３３  光ディスクドライブ部、３４  通信部、３５  データベース、５０  仮想空間、５１  フィールド、５２  タッチライン、５３  ゴールライン、５４  センターライン、５５  ピッチ、５６  ゴール、５７  ボール、５８  視点、６０  選手キャラクタ、６０１  頭、６０２  首、６０３
胸、６０４  腰、６０５Ｌ  左上腕、６０５Ｒ  右上腕、６０６Ｌ  左前腕、６０６Ｒ
右前腕、６０７Ｌ  左手、６０７Ｒ  右手、６０８Ｌ  左腿、６０８Ｒ  右腿、６０９Ｌ  左脛、６０９Ｒ  右脛、６１０Ｌ  左足、６１０Ｒ  右足、６１１Ｌ，６１１Ｒ  ヌルオブジェクト、１００  データ記憶部、Ｄ１０１  モデルデータ、Ｄ１０２  モーションデータ、Ｄ１０３  候補フレームデータ、Ｄ１０４  キャラクタ状態データ、１１０  第１モーションデータ取得部、１２０  第２モーションデータ取得部、１３０  第１動作実行部、１４０  特定部位選択部、１５０  第１特定部、１６０  第２特定部、１７０  第２動作実行部、１７１  距離取得部、１７２  フレーム選択部。
【図１】
2020035446.tif 000003
【図２】
2020035446.tif 000004
【図３】
2020035446.tif 000005
【図４Ａ】
2020035446.tif 000006
【図４Ｂ】
2020035446.tif 000007
【図５】
2020035446.tif 000008
【図６】
2020035446.tif 000009
【図７】
2020035446.tif 000010
【図８】
2020035446.tif 000011
【図９】
2020035446.tif 000012
【図１０】
2020035446.tif 000013
【図１１】
2020035446.tif 000014
【図１２】
2020035446.tif 000015