説明

プログラム、情報記憶媒体及び画像生成システム

【課題】先行入力システムに好適な移動体のショット処理又は捕捉処理を実現できるプログラム、情報記憶媒体及び画像生成システムの提供。
【解決手段】画像生成システムは、キャラクタにより移動体がショット又は捕捉されるタイミングに先行して、キャラクタの動作を指示する先行入力をプレーヤが行った場合に、その先行入力を受け付ける入力受け付け部と、移動体の制御処理を行う移動体制御部と、キャラクタの制御処理を行うキャラクタ制御部と、ヒット位置を求めるヒット位置演算部と、ヒット位置が、キャラクタによる移動体のショット条件又は捕捉条件を満たす位置であるか否かを判定する判定部を含む。ヒット位置演算部は、ヒット位置がショット条件又は捕捉条件を満たす位置ではない場合、ヒット位置の再演算処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システムに関する。
【背景技術】
【0002】
従来より、スポーツ選手を模したキャラクタ等のオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。テニスゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、ゲームコントローラなどの操作部を用いて自身のキャラクタを操作して、他のプレーヤやコンピュータが操作する相手キャラクタがショットしたボールをラケットで打ち返すことでゲームを楽しむ。
【0003】
このようなテニスゲームでは、ボールがキャラクタの場所に飛んできたタイミングで、プレーヤがゲームコントローラの動作指示ボタンを押すことで、ボールを打ち返すという操作インターフェースを採用するのが一般的である。
【0004】
しかしながら、このような操作インターフェースでは、プレーヤがキャラクタの動作指示ボタンを押すタイミングの前においては、どのような種類のショット動作をキャラクタに行わせるのかを、確定できない。即ちプレーヤがショットタイミングの直前に例えばトップスピンやスライスのショット動作の指示ボタンを押した場合に、打ち返したボールの軌道をトップスピンやスライスの軌道にすることはできるが、キャラクタのモーション自体を、トップスピンやスライスのショット動作に応じたモーションにすることは難しかった。
【0005】
以上のような課題を解決するために、本願発明者は、キャラクタによりボール(移動体)がショット(捕捉)されるタイミングに先行して、キャラクタの動作指示を行うことができる先行入力システムを開発している。この先行入力システムによれば、例えばショットタイミングの前に、プレーヤがトップスピンやスライスの動作指示ボタンを押すと、ボールの軌道のみならず、ショットタイミングまでのキャラクタのモーションについても、トップスピンやスライスの動作を忠実に再現したモーションにすることが可能になる。
【0006】
しかしながら、このような先行入力システムを採用した場合には、プレーヤの操作によっては、ボールのショットタイミングで適正にボールをショットできなくなる状況が生じてしまうことが判明した。
【特許文献1】特開平8−90638号公報
【特許文献2】特開平11−90046号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、以上のような課題に鑑みてなされたものであり、その目的とするところは、先行入力システムに好適な移動体のショット処理又は捕捉処理を実現できるプログラム、情報記憶媒体及び画像生成システムを提供することにある。
【課題を解決するための手段】
【0008】
本発明は、画像を生成する画像生成システムであって、キャラクタにより移動体がショット又は捕捉されるタイミングに先行して、前記キャラクタの動作を指示する先行入力をプレーヤが行った場合に、入力された先行入力を受け付ける入力受け付け部と、前記キャラクタによりショット又は捕捉される前記移動体の制御処理を行う移動体制御部と、受け付けられた前記先行入力の操作データに基づいて、前記キャラクタの制御処理を行うキャラクタ制御部と、前記キャラクタと前記移動体とのヒットイベントが発生する位置であるヒット位置を求めるヒット位置演算部と、求められたヒット位置が、前記キャラクタによる前記移動体のショット条件又は捕捉条件を満たす位置であるか否かを判定する判定部とを含み、前記ヒット位置演算部は、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではなかった場合には、ヒット位置の再演算処理を行ってヒット位置を移動する画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0009】
本発明では、キャラクタにより移動体がショット又は捕捉されるタイミングに先行して、キャラクタの動作指示のための先行入力をプレーヤが行うと、キャラクタと移動体の間のヒットイベントのヒット位置(予測ヒット位置)が求められる。そして求められたヒット位置が、移動体のショット条件又は捕捉条件を満たす位置であるか否かが判定される。そして、ショット条件又は捕捉条件を満たす位置ではなかった場合には、ヒット位置の再演算処理が行われて、ヒット位置の移動処理(補正処理)が行われる。このようにすれば、プレーヤによる先行入力の動作指示にそのまま従うと、ショット条件又は捕捉条件が満たされないような場合にも、ヒット位置の再演算処理により、これらの条件が満たされるようにヒット位置が移動できる。従って、先行入力システムに好適な、キャラクタによる移動体のショット処理又は捕捉処理を実現できる。
【0010】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ヒット位置演算部は、前記先行入力のタイミングでの前記キャラクタの位置及び移動方向により特定される軌道と、前記移動体の軌道との交点を求めることで、ヒット位置を求めてもよい。
【0011】
このようにすれば、再演算処理の前の初回のヒット位置を、キャラクタの軌道と移動体の軌道との交点を求めるだけで取得できる。
【0012】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ヒット位置演算部は、前記先行入力のタイミングにおいて既に計算されている前記移動体の軌道データの移動体位置の中から、前記交点に対応する移動体位置を選択することで、ヒット位置を求めてもよい。
【0013】
このようにすれば、軌道データに含まれる移動体位置を選択するだけという負荷の軽い処理で、ヒット位置を取得できる。
【0014】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ヒット位置演算部は、ヒット位置を移動する処理を、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置になるまで繰り返してもよい。
【0015】
このようにすれば、先行入力についてのプレーヤの意思をある程度反映させたヒット位置の再演算処理を実現できる。
【0016】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ヒット位置演算部は、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置になるまで、前記移動体の軌道上においてヒット位置を移動してもよい。
【0017】
このようにすれば、再演算処理後のヒット位置を、キャラクタと移動体とのヒットイベントが発生する場所として保証できるようになる。
【0018】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記判定部は、前記キャラクタとヒット位置の間に障害物が存在した場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定してもよい。
【0019】
このようにすれば、移動体を追うキャラクタが障害物をすり抜けてしまうなどの事態を防止できる。
【0020】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、ヒット位置から、前記先行入力のタイミングでの前記移動体の位置へと向かう方向を、第1の方向とした場合に、前記ヒット位置演算部は、前記再演算処理として、ヒット位置を前記第1の方向側に移動する処理を行ってもよい。
【0021】
このようにすれば、プレーヤが、第1の方向と逆方向側にキャラクタを移動させる先行入力を行ったような場合にも、これを補正して適正な場所にヒット位置を移動できる。
【0022】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ヒット位置演算部は、ヒット位置の第1、第2、第3の座標を求め、前記判定部は、ヒット位置での前記移動体の前記第2の座標が所与の座標範囲内にない場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定してもよい。
【0023】
このようにすれば、ヒット位置においてキャラクタと移動体との間で第2の座標がずれてしまい、移動体のショット又は捕捉ができなくなってしまう事態を防止できる。
【0024】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記第2の座標は高さ方向の座標であり、前記判定部は、ヒット位置での前記移動体の高さが所与の高さ範囲内にない場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定してもよい。
【0025】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記判定部は、前記キャラクタの身体パラメータに基づいて前記座標範囲を変更して判定処理を行ってもよい。
【0026】
このようにすれば、キャラクタの身体パラメータに応じた適正なショット条件又は捕捉条件を設定できる。
【0027】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ヒット位置演算部は、前記再演算処理として、前記移動体の前記第2の座標が前記座標範囲内に入るように、前記移動体の軌道上においてヒット位置を移動する処理を行ってもよい。
【0028】
このようにすれば、キャラクタと移動体の第2の座標のずれが少ない場所にヒット位置を移動できる。
【0029】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記判定部は、ヒット位置への前記移動体の到達時間内に、前記キャラクタがヒット位置に到達できないと判断した場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定してもよい。
【0030】
このようにすれば、プレーヤによる先行入力の動作指示では、移動体の到達時間内にキャラクタがヒット位置に到達できず、移動体のショット又は捕捉ができなくなってしまう事態を防止できる。
【0031】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記キャラクタのモーションデータを記憶するモーションデータ記憶部と、前記モーションデータに基づいて前記キャラクタのモーション再生を行うモーション再生部を含み(或いはこれらの各部としてコンピュータを機能させ)、前記モーション再生部は、前記先行入力が受け付けられた場合に、前記先行入力の動作指示データにより指示される動作を前記キャラクタに行わせるモーション再生を行い、前記判定部は、前記キャラクタのモーションにおける前記移動体のショットタイミング又は捕捉タイミングが、前記到達時間よりも遅いタイミングである場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定してもよい。
【0032】
このようにすれば、モーションにおけるショットタイミング又は捕捉タイミングがショット条件又は捕捉条件を満たさない場合にも、再演算処理によりこれを解消できる。
【0033】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記ヒット位置演算部は、前記再演算処理として、ヒット位置を、前記到達時間内に前記キャラクタが到達できる位置に移動する処理を行ってもよい。
【0034】
このようにすれば、先行入力システムにおいて効果的なプレーヤの操作アシストを実現できる。
【0035】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記キャラクタのモーションデータを記憶するモーションデータ記憶部と、前記モーションデータに基づいて前記キャラクタのモーション再生を行うモーション再生部を含み(或いはこれらの各部としてコンピュータを機能させ)、前記モーション再生部は、前記キャラクタによる前記移動体のショット又は捕捉の準備動作及び前記準備動作に続くショット動作又は捕捉動作を再生するためのモーションデータであって、前記再演算処理により最終的に求められたヒット位置に基づき特定されるモーションデータを選択して再生してもよい。
【0036】
このようにすれば、ショット又は捕捉の準備動作と、その準備動作に続くショット動作又は捕捉動作を、1つのモーションデータで一体的に再生できるため、先行入力システムに好適なモーション再生処理を実現できる。
【0037】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記モーション再生部は、最終的に求められたヒット位置への前記移動体の到達時間と、前記先行入力の動作指示データとに基づき、モーションデータを選択してもよい。
【0038】
このようにすれば、到達時間の長さやプレーヤの動作指示に応じた最適なモーションデータの選択が可能になる。
【0039】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記キャラクタのモーションデータを記憶するモーションデータ記憶部と、前記モーションデータに基づいて前記キャラクタのモーション再生を行うモーション再生部と、前記キャラクタのモーションの再生速度変更処理を行う再生速度変更部を含み(或いはこれらの各部としてコンピュータを機能させ)、前記再生速度変更部は、前記先行入力のタイミングから第1のタイミングまでの期間である第1の期間での第1の再生速度の変更度合いを、前記第1のタイミングから前記キャラクタと前記移動体のヒットイベントが発生するタイミングまでの期間である第2の期間での第2の再生速度の変更度合いに比べて大きくする再生速度変更処理を行ってもよい。
【0040】
本発明によれば、モーションの再生期間が、先行入力のタイミングから第1のタイミングまでの期間である第1の期間と、第1のタイミングからヒットイベントの発生タイミングまでの期間である第2の期間に区画される。そしてモーションの再生速度変更処理の際に、第1の期間での第1の再生速度の変更度合いが、第2の期間での第2の再生速度の変更度合いに比べて大きくなる。このようにすれば、ショット動作又は捕捉動作の後半の期間で、再生速度の変更により不自然なモーションが再生されてしまう事態を防止でき、リアルで高品質なモーション再生を実現できる。
【0041】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記再生速度変更部は、前記ヒットイベントの発生位置であるヒット位置への前記移動体の到達時間と、モーションの再生時間とにより、前記第1の期間での前記第1の再生速度の変更倍率である第1の変更倍率と、前記第2の期間での前記第2の再生速度の変更倍率である第2の変更倍率を設定してもよい。
【0042】
このようにすれば、例えば移動体の到達時間と再生時間との時間比等に応じた変更倍率の設定処理を実現できる。
【0043】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記再生速度変更部は、前記第2の変更倍率を1倍に設定したときの前記第1の変更倍率を求め、求められた前記第1の変更倍率が第1のしきい値よりも大きい場合には、前記第1の変更倍率を小さくすると共に前記第2の変更倍率を大きくし、求められた前記第1の変更倍率が第2のしきい値よりも小さい場合には、前記第1の変更倍率を大きくすると共に前記第2の変更倍率を小さくしてもよい。
【0044】
このようにすれば、第1の変更倍率が大きくなりすぎたり、小さくなりすぎて、不自然なモーション再生が行われてしまう事態を防止できる。
【0045】
また本発明に係る画像生成システム、プログラム及び情報記憶媒体では、前記モーションデータ記憶部は、前記第1、第2の期間を区画するフレームを特定するための区画フレームのデータを、各モーションに関連づけて記憶し、前記再生速度変更部は、前記区画フレームのデータに基づいて前記第1のタイミングを特定して、前記再生速度変更処理を行ってもよい。
【0046】
このようにすれば、各モーション毎に第1のタイミングを異ならせることが可能になり、より適切で多様なモーション再生を実現できる。
【発明を実施するための最良の形態】
【0047】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0048】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)のブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0049】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0050】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。この記憶部170は、電源を切るとデータが消えてしまう揮発性のメモリにより構成できるが、補助記憶装置194よりも高速な記憶装置になっている。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。
【0051】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0052】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、CRT、LCD、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0053】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードや、HDDなどにより実現できる。この補助記憶装置194は脱着自在になっているが、内蔵されるものであってもよい。この補助記憶装置194は、ゲームの途中結果などのセーブデータや、プレーヤ(ユーザ)の個人的な画像データや音楽データなどを保存するために使用される。
【0054】
通信部196は、有線や無線のネットワークを介して外部(例えば他の画像生成システム、サーバ、ホスト装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0055】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0056】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0057】
処理部100は、入力受け付け部102、オブジェクト空間設定部104、ゲーム演算部106、移動体制御部108、キャラクタ制御部110、モーション再生部112、再生速度変更部113、ヒット位置演算部114、判定部116、仮想カメラ制御部118、画像生成部120、音生成部130を含むことができる。なおこれらの一部の構成要素(例えば再生速度変更部)を省略する構成としてもよい。
【0058】
入力受け付け部(操作データ取得部)102は、プレーヤの操作入力を受け付ける処理を行う。例えばプレーヤによる操作部160の操作をモニタし、プレーヤがキャラクタの動作指示等のために操作部160を操作した場合に、操作部160により入力された動作指示データ(モーション指示データ、方向指示データ)等の操作情報を取得する。
【0059】
そして本実施形態では入力受け付け部102は、キャラクタにより移動体(ボール)がショット(打撃、キック)又は捕捉(捕球、キープ)されるタイミングに先行して、キャラクタの動作を指示する先行入力(動作指示データの入力)をプレーヤが行った場合に、入力された先行入力を受け付ける。ここで先行入力は、例えば、少なくとも先行入力が行われたタイミングから移動体がショット又は捕捉されるタイミングまでのキャラクタのモーション(動作)を決めるための入力である。例えばヒット動作(トップスピンやスライスなどのショット動作)を指示する先行入力が行われると、その先行入力の動作指示データにより特定されるモーションが再生されて、ヒットタイミング(ショットタイミング、捕捉タイミング)においてキャラクタが移動体(ボール、プレイ対象物)のヒット動作(ショット動作、捕捉動作)を行う。このようにすれば、先行入力のタイミングから少なくともヒットタイミングまで、その先行入力で特定されるモーション(例えば1つのモーションデータ)を選択して再生できるようになり、リアルで高品質なモーション表現を実現できる。
【0060】
オブジェクト空間設定部104は、モデルオブジェクト(キャラクタ、ロボット、車、戦闘機、ボール、ミサイル、弾等)、ゲームフィールド(コート、グラウンド)、壁、建物、樹木、マップ(地形)、コース(道路)などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。
【0061】
例えば記憶部170の形状データ記憶部171には、キャラクタ等のオブジェクト(モデルオブジェクト)の形状を決めるための形状データ(ポリゴンデータ)が記憶されている。またオブジェクトデータ記憶部172には、図2に示すように、これらのオブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。
【0062】
そしてオブジェクト空間設定部104は、これらの形状データやオブジェクトデータを用いて、オブジェクト空間へのオブジェクトの設定(配置)処理を行う。またオブジェクトデータ記憶部172のオブジェクトデータは、移動体制御部108やキャラクタ制御部110での移動制御処理等により順次更新される。
【0063】
ゲーム演算部106はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0064】
移動体制御部(移動体演算部)108は、オブジェクト空間内で移動するボールなどの移動体(プレイ対象物)の制御処理を行う。例えば移動体を移動させたり動作させるための制御処理(演算処理)を行う。即ち、移動体の移動軌道等を決めるためのアルゴリズムや、各種データなどに基づいて、移動体をオブジェクト空間内(ゲーム空間内)で移動させるための処理を行う。例えば移動体の移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動体の移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0065】
キャラクタ制御部(キャラクタ演算部)110は、人間等(例えばスポーツ選手)を模したキャラクタの制御処理を行う。例えばキャラクタを移動させたり動作させるための制御処理を行う。即ち操作部160によりプレーヤが入力した操作データや、キャラクタの移動、動作を決めるためのアルゴリズムや、各種データなどに基づいて、キャラクタをオブジェクト空間内で移動、動作させるための処理を行う。例えば操作データに基づいてキャラクタの移動情報や動作情報を1フレーム毎に順次求めるシミュレーション処理を行う。
【0066】
そして本実施形態では、移動体制御部108は、キャラクタによりショット又は捕捉されるボール(プレイ対象物)などの移動体の制御処理(移動制御処理)を行う。またキャラクタ制御部110は、入力受け付け部102により受け付けられた先行入力の操作データに基づいて、キャラクタの制御処理(移動制御処理)を行う。この場合に図3に示すように、制御処理により移動する移動体の軌道データは、軌道データ記憶部175に記憶される。例えばコンピュータや他プレーヤが操作する相手キャラクタが、ボール等の移動体をショット(ヒット)すると、図3に示すように、ショットしたフレームを先頭フレームとした各フレームでの移動体位置(予測位置)が、軌道データとして記憶される。
【0067】
モーション再生部112はモーション再生処理を行う。即ちキャラクタにモーション(アニメーション)を行わせるモーション再生処理(モーション処理、モーション生成処理)を行う。このモーション再生処理は、キャラクタのモーションを、モーションデータ記憶部173に記憶されているモーションデータに基づいて再生することなどで実現できる。
【0068】
例えば図4に示すように、キャラクタ等を表すモデルオブジェクトMOBは、複数のパーツオブジェクト(腰12、胸14、首16、頭18、右上腕20、右前腕22、右手24、左上腕26、左前腕28、左手30、右股32、右すね34、右足36、左股38、左すね40、左足42)により構成されている。そして、これらのパーツオブジェクト(部位)の位置や回転角度(方向)は、スケルトンモデルを構成する骨B0〜B19の位置(関節J0〜J15の位置)や回転角度(親の骨に対する子の骨の相対的な回転角度)により特定される。なお、これらの骨、関節は仮想的なものであり、現実に表示されるオブジェクトではない。
【0069】
モーションデータ記憶部173には、例えば、これらの骨(パーツオブジェクト、関節)の位置、回転角度がモーションデータとして記憶される。具体的には図5に示すように、親の骨BMPに対する子の骨BMCの、X軸、Y軸、Z軸回りの回転角度α、β、γ等が、モーションデータとして記憶される。
【0070】
なお、モーションデータの構造等は、図4、図5に限定されず、種々の変形実施が可能である。例えば骨の回転角度だけをモーションデータに含ませて、骨の位置(関節の位置)についてはモデルオブジェクトのモデルデータの中に含ませてもよい。また図4の骨B1〜B19以外に、モーション骨によるモデルオブジェクトの変形を補助する補助骨を設けてもよい。
【0071】
また、モーションデータ記憶部173に記憶されるモーションデータは、現実世界の人にセンサをつけてモーションキャプチャを行うことで作成できるが、モーションデータを、物理シミュレーション(物理計算を利用したシミュレーション。擬似的な物理計算でもよい)やモーションブレンドなどによりリアルタイムに生成してもよい。また、少ないモーションデータ量でリアルなモーションを再生するために、インバース・キネマティクス等を用いてモーション再生を行ってもよい
図6に本実施形態で使用されるモーションデータのデータ構造の例を示す。モーションファイルには、図4、図5で説明した各モーションのデータ(骨の回転角度等)が格納される。即ち「正面ボール用ショット」、「ステップからの通常ショット」、「小走りからの通常ショット」、「ランニングショット」などの各動作を表現するための各モーションのデータが格納される。また図6に示すようにモーションデータ記憶部173には、区画フレームやショットフレームのデータがモーションに関連づけて記憶される。
【0072】
モーションパラメータ記憶部174には、モーション群毎に設定されるモーションパラメータが記憶される。例えば図7に示すように、そのモーション群に含まれるモーションのショットフレームのデータやモーション再生時間(再生フレーム数)のデータが、モーションパラメータとして記憶される。例えばそのモーション群におけるショットフレームや再生時間の最大値や平均値を記憶する。
【0073】
そして本実施形態では、モーション再生部112は、キャラクタのショット又は捕捉の準備動作(例えばテイクバック動作、走り動作等)及びその準備動作に続くショット動作又は捕捉動作を再生するためのモーションデータを再生する。また再演算処理により最終的に求められたヒット位置により特定されるモーションデータを選択して再生する。この場合に、ヒット位置への移動体の到達時間(移動時間)と、先行入力の動作指示データなどに基づき、モーションデータを選択することができる。
【0074】
再生速度変更部113は、キャラクタのモーションの再生速度の変更処理を行う。具体的には先行入力のタイミングから第1のタイミング(足滑り防止開始タイミング)までの期間である第1の期間での第1の再生速度の変更度合い(変更の程度、変更倍率)を、第1のタイミングから、キャラクタと移動体とのヒットイベントが発生するタイミングまでの期間である第2の期間(足滑り防止期間)での第2の再生速度の変更度合いに比べて大きくする。例えばヒットイベント(ショットイベント、捕捉イベント)の発生位置であるヒット位置(ショット位置、捕捉位置)への移動体の到達時間(移動時間、移動距離)と、モーションの再生時間(再生フレーム数)とに基づいて、第1の再生速度の変更倍率である第1の変更倍率と、第2の再生速度の変更倍率である第2の変更倍率を設定する。更に具体的には、第2の変更倍率を1倍に設定したときの第1の変更倍率を求める。そして求められた第1の変更倍率が第1のしきい値(第1の倍率)よりも大きい場合には、第1の変更倍率を小さくすると共に第2の変更倍率を大きくする。一方、求められた第1の変更倍率が第2のしきい値(第2の倍率)よりも小さい場合には、第1の変更倍率を大きくすると共に第2の変更倍率を小さくする。
【0075】
また図6に示すようにモーションデータ記憶部173には、各モーションに関連づけて区画フレームのデータが記憶される。この区画フレームのデータは、第1、第2の期間を区画するフレームを特定するためのデータである。具体的には、キャラクタの足を滑らせたくない期間を特定するためのデータである。そして再生速度変更部113は、この区画フレームのデータに基づいて第1のタイミング(足滑り防止開始期間)を特定して、再生速度変更処理を行う。
【0076】
ヒット位置演算部114は、キャラクタ(例えばキャラクタが持つラケット、バット等)と移動体(ボール等)とのヒットイベントが発生する位置(場所)であるヒット位置(ショット位置、捕捉位置)を求める処理を行う。例えばキャラクタが移動体をショットするショット位置や、キャラクタが移動体を捕捉する捕捉位置を求める。即ち、キャラクタと移動体とのヒットチェック処理を行い、ヒットイベントが発生した時の移動体の位置等を、ヒット位置として求める。そして求められたヒット位置のデータはヒット位置記憶部176に記憶される。
【0077】
判定部116は、ヒット位置演算部114により求められたヒット位置が、キャラクタによる移動体のショット条件又は捕捉条件を満たす位置(ショット又は捕捉が成功する位置)であるか否かを判定する処理を行う。具体的には、キャラクタとヒット位置の間に障害物(例えば壁、他のキャラクタ)が存在した場合や、ヒット位置での移動体の第2の座標(例えばY座標)が所与の座標範囲内(例えば高さ範囲内)にない場合や、ヒット位置への移動体の到達時間内にキャラクタがヒット位置に到達できないと判断された場合などに、ヒット位置はショット条件や捕捉条件を満たす位置ではないと判定する。
【0078】
そしてヒット位置演算部114は、ヒット位置がショット条件又は捕捉条件を満たす位置ではなかった場合には、ヒット位置の再演算処理を行い、例えばヒット位置を移動する。この場合に、ヒット位置を移動する処理を、ヒット位置がショット条件又は捕捉条件を満たす位置になるまで繰り返す。例えばヒット位置を移動し、移動後のヒット位置が、ショット条件又は捕捉条件を満たす位置か否かを再度判定する。そしてこれらの条件を満たすようになるまで、移動処理や再判定処理を繰り返す。即ち、ヒット位置がショット条件又は捕捉条件を満たす位置になるまで、移動体の軌道上においてヒット位置を移動する。
【0079】
具体的にはヒット位置演算部114は、ヒット位置から、先行入力のタイミングでの移動体の位置へと向かう方向を、第1の方向とした場合に、ヒット位置を第1の方向側に移動する処理を行う。例えば移動体の軌道上でヒット位置を第1の方向側に移動する。或いは、移動体の座標が所与の座標範囲内に入るように、移動体の軌道上においてヒット位置を移動する。或いはヒット位置を、到達時間内にキャラクタが到達できる位置に移動する。
【0080】
仮想カメラ制御部118は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。
【0081】
例えば仮想カメラによりキャラクタを後方から撮影する場合には、キャラクタの位置又は回転の変化に仮想カメラが追従するように、仮想カメラの位置又は回転角度(仮想カメラの向き)を制御する。この場合には、キャラクタ制御部110で得られたキャラクタの位置、回転角度又は速度などの情報に基づいて、仮想カメラを制御できる。或いは、仮想カメラを、予め決められた回転角度で回転させたり、予め決められた移動経路で移動させる制御を行ってもよい。この場合には、仮想カメラの位置(移動経路)又は回転角度を特定するための仮想カメラデータに基づいて仮想カメラを制御する。
【0082】
画像生成部120は、処理部100で行われる種々の処理(ゲーム処理)の結果に基づいて描画処理を行い、これにより画像を生成し、描画バッファ177に書き込んで、表示部190に出力する。いわゆる3次元ゲーム画像を生成する場合には、まずモデル(オブジェクト)の各頂点の頂点データ(頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)を含むモデルデータが入力され、入力されたモデルデータに含まれる頂点データに基づいて、頂点処理(頂点シェーダによるシェーディング)が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理(テッセレーション、曲面分割、ポリゴン分割)を行うようにしてもよい。
【0083】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0084】
なお、本実施形態の画像生成システムは、1人のプレーヤのみがプレイできるシングルプレーヤモード専用のシステムにしてもよいし、複数のプレーヤがプレイできるマルチプレーヤモードも備えるシステムにしてもよい。また複数のプレーヤがプレイする場合に、これらの複数のプレーヤに提供するゲーム画像やゲーム音を、1つの端末を用いて生成してもよいし、ネットワーク(伝送ライン、通信回線)などで接続された複数の端末(ゲーム機、携帯電話)を用いて分散処理により生成してもよい。
【0085】
2.本実施形態の手法
次に本実施形態の手法の具体例について説明する。なお以下では、テニスゲームに本実施形態の手法を適用した場合について主に説明するが、本実施形態はこれに限定されず、例えばサッカー、アメリカンフットボール、野球などの様々なスポーツゲームやそれ以外のゲームにも適用できる。
【0086】
2.1 先行入力
本実施形態の手法を適用したテニスゲームでは、図8に示すように、プレーヤが操作するキャラクタCHとコンピュータや他プレーヤが操作する相手キャラクタCCとが、オブジェクト空間(仮想3次元空間)に設定されたコート上でボールBLを打ち合って対戦する。例えば図8のオブジェクト空間のワールド座標系では、平面方向にX軸、Z軸(広義には第1、第3の座標軸)が設定され、高さ方向にY軸(広義には第2の座標軸)が設定され、コート(ネット)の中心に原点に設定されている。そしてキャラクタCHは、プレーヤにより入力された操作データに基づいてX、Z平面のコート上で移動して、相手キャラクタCCが打ったボールBLを打ち返す。
【0087】
具体的には図9(A)に示すようにプレーヤは、相手キャラクタCCがボールBLをショットした後、キャラクタCHの動作を指示する先行入力を行う。即ちキャラクタCHによりボールBL(広義には移動体)がショット(又は捕捉)されるタイミングに先行して、キャラクタCHの動作を指示する先行入力を行う。具体的には、キャラクタCHの移動方向を方向指示キー50(ジョイスティック、方向指示部)で指示すると共に、キャラクタCHのショットの種類を指示する操作ボタン61を押す。ここでは、操作ボタン61、62、63、64は、各々、トップスピン、スライス、フラット、ロブのショットを指示するボタンになっており、キャラクタCHは、指示されたショットに応じたモーションを行う。そして図9(A)ではトップスピンを指示する操作ボタン61が押されているため、トップスピン用のモーションデータが再生されることになる。
【0088】
なお方向指示キー50と操作ボタン61の操作は必ずしも同時である必要はなく、例えば操作ボタン61を操作した後に方向指示キー50を操作したり、方向指示キー50を操作した後に操作ボタン61を操作してもよい。
【0089】
以上のような先行入力が行われると、図9(B)に示すように、キャラクタCH(キャラクタのラケット)とボールBL(移動体)とのヒットイベント(ショットイベント)が発生する位置であるヒット位置HP(ショット位置、捕捉位置)が求められる。即ちキャラクタCHによりボールBLがショット(ヒット)されると予測される位置(場所)がヒット位置HPとして求められる。例えば、先行入力のタイミングでのキャラクタCHの位置及び移動方向により特定される軌道RCと、ボールBLの軌道RBとの交点を求めることで、ヒット位置HPが求められる。
【0090】
具体的には、ボールBLの軌道RBは、相手キャラクタCCがボールBLを打った時点で計算され、計算された軌道は図3に示すように軌道データとして軌道データ記憶部175に記憶される。ヒット位置HPは、図3の軌道データに含まれる複数のボール位置(各フレームでの移動体位置)のデータのうち、軌道RC、RBの交点に対応するボール位置(交点に最も近いボール位置)のデータを選択することで、取得できる。
【0091】
またこの時に、ボールBLのヒット位置HPへの到達時間trも取得される。具体的には、到達時間trは、図3の軌道データにおいてヒット位置HPにボールBLが到達するまでのフレーム数として取得できる。
【0092】
そして図9(C)に示すように、求められた到達時間tr(到達フレーム数)と、図9(A)での動作指示データとに基づき、モーション(モーションデータ)を選択し、選択されたモーションを再生することで、キャラクタCHのショット動作を表現する。
【0093】
例えば図6に示すように、各ショットのモーションとして再生時間(再生フレーム数)が異なる複数のモーションを用意しておく。そして図9(A)でトップスピンが選択された場合には、トップスピン用に用意された複数のモーションの中から、到達時間trに応じた長さの再生時間のモーションを選択する。例えば到達時間trが短ければ、再生時間が短いモーションを選択し、到達時間trが長ければ、再生時間が長いモーションを選択する。またモーション再生速度の変更処理を行うことで、到達時間trと再生時間の長さを一致させるための微調整を行う。
【0094】
そして図9(D)に示すように、キャラクタCHとボールBLのヒットイベント(ショットイベント)が発生した場合には、そのときにプレーヤが方向指示キー50で指示している方向にボールBLが打ち返される。なお図9(D)では、ヒットイベントの発生タイミング(ショットタイミング)と、プレーヤが操作ボタン61を離すタイミングとの一致の度合いが高いほど、ボールBLの速度が増したり、相手コート内の厳しい場所にボールBLが飛ぶようになる。即ち、図9(A)で操作ボタン61を押した後、そのまま押し続け、キャラクタCHの近くにボールBLが来た時に、タイミング良く操作ボタン61を離すことで、いわゆる溜め打ち動作が実現され、強くて正確なショットが相手コートに打ち返される。
【0095】
図9(A)〜図9(D)の先行入力システムの手法によれば、先行入力により指示されたモーションが切れ目なく再生されるため、選手のモーション、ボールの挙動、カメラアングル等をリアルに表現できる。即ち各ショット毎に用意された多彩で高品質なモーションを再生でき、プレーヤは、多彩なショットを使い分けてゲームを楽しむことができるようになる。
【0096】
例えば比較例の手法として、準備動作であるテイクバック動作の開始条件が満たされると、キャラクタが自動的にテイクバック動作を開始し、その後にプレーヤがショットを指示する操作ボタンを押すと、キャラクタがボールをショットするという手法が考えられる。この手法では、テイクバックモーション(準備動作モーション)を再生した後、ショット動作が指示されると、ショットモーションを再生する。即ちテイクバックモーションとショットモーションを別々のモーションデータとして記憶して再生する。従ってテイクバックモーションとショットモーションが滑らかに繋がらなくなる場合があり、リアルで滑らかなモーション表現を実現できないおそれがある。
【0097】
この点、本実施形態の先行入力システムによれば、テイクバック動作(準備動作)及びショット動作(捕捉動作)が1つのモーションデータの再生により実現される。従ってテイクバック動作とショット動作(フォロー動作)が滑らかに繋がるようになり、よりリアルなモーション表現を実現できる。
【0098】
例えば比較例の手法では、ヒット位置においてボールが高ければ、通常のテイクバックモーションの再生後に高いボール用のショットモーションが再生され、ヒット位置においてボールが低ければ、通常のテイクバックモーションの再生後に低いボール用のショットモーションが再生されるようになる。即ち、ボールが高くても低くても、テイクバック動作については同じモーションが再生されるため、リアルなモーション表現を実現できない。
【0099】
これに対して本実施形態の先行入力システムによれば、先行入力を行った時点で、ヒット位置でのボールの高さ等を予測し、高いボール用のテイクバック動作及びショット動作が一体となったモーションを選択して再生したり、低いボール用のテイクバック動作及びショット動作が一体となったモーションを選択して再生できる。従って、不自然さの少ないリアルなモーション表現を実現できる。
【0100】
2.2 ヒット位置の再演算処理
さて、以上のような先行入力システムを採用した場合に、図9(B)において予測されたヒット位置HPが適正な位置ではないと、不都合が生じるという課題がある。本実施形態ではこのような課題を解決するために、以下に説明する手法を採用している。図10に本実施形態の処理を説明するためのフローチャートを示す。
【0101】
まず、プレーヤによる先行入力(ショット操作)が行われたか否かを判断する(ステップS1)。例えば図9(A)において方向指示キー50と操作ボタン61(又は62〜64)の両方の操作が行われた場合に、先行入力が行われたと判断できる。そして、受け付けられた先行入力の操作情報を取得する(ステップS2)。例えば方向指示キー50及び操作ボタン61からの動作指示データ(方向指示データ、ショット指示データ)が取得される。
【0102】
次に、取得された操作情報(動作指示データ)に基づきキャラクタCHの位置、移動方向を取得する(ステップS3)。例えば先行入力が行われたタイミングでのキャラクタCHの位置、移動方向が取得される。この場合に移動方向は、方向指示キー50の方向指示データ等に基づき求める。
【0103】
次にボールBLの軌道を取得する(ステップS4)。具体的には図3の軌道データを読み出す。そして図9(B)に示すように、キャラクタCHの軌道とボールBLの軌道によりヒット位置HP(ショット位置)を求める(ステップS5)。例えばボールBLの軌道データの中から、ヒット位置HPに対応するボール位置(軌道ポイント)を選択する。即ち先行入力のタイミングにおいて既に計算されている軌道データのボール位置(移動体位置)の中から、交点に対応するボール位置(交点に最も近いボール位置)を選択することで、ヒット位置HPを求める。
【0104】
次にヒット位置HPとキャラクタCHの間に障害物が無いか否かを判定する(ステップS6)。そして障害物が無い場合には、ヒット位置HPでのボールBLの高さが適正な高さ範囲内か否かを判断する(ステップS7)。そして適正な高さ範囲内である場合には、キャラクタCHがボールBLの到達時間tr内にヒット位置HP(ショット位置)に到達しているか否かを判断する(ステップS8)。
【0105】
そしてステップS6、S7、S8に示す各ショット条件(捕捉条件)の判定が「NO」であった場合には、求めたヒット位置の前後で最適なヒット位置を求める再演算処理を行う(ステップS9)。即ちヒット位置の再演算処理を行ってヒット位置を移動する。そして、ヒット条件の判定処理及びヒット位置の移動処理であるステップS6〜S9の処理を、ヒット位置がショット条件(捕捉条件)を満たす位置になるまで繰り返す。
【0106】
一方、ステップS6、S7、S8の各ショット条件の判定が全て「YES」であった場合には、先行入力の動作指示データと、最終的に求められたヒット位置等に基づきモーションデータを選択し(ステップS10)、選択されたモーションデータを再生する(ステップS11)。具体的には、例えば最終的に求められたヒット位置HPに基づきボールBLの到達時間trを求める。そしてプレーヤが先行入力により選択したショットのモーションの中から、到達時間tr内に再生することが可能なモーションを選択する。例えば到達時間trとモーションの再生時間の比較処理を行って、最適なモーションを選択し、必要であればモーションの再生速度の変更処理を行う。
【0107】
図10のステップS6、S7、S8に示すように、本実施形態では、ヒット位置が、キャラクタによる移動体のショット条件(捕捉条件)を満たす位置であるか否かを判定する。そしてステップS9に示すように、ヒット位置がショット条件(捕捉条件)を満たす位置ではなかった場合には、ヒット位置の再演算処理を行う。その後、ステップS6に戻って、再演算処理後のヒット位置がショット条件を満たすか否かを再度判断し、ショット条件が満たされるまで処理を繰り返す。即ち、ヒット位置を移動する処理を、ヒット位置がショット条件を満たす位置になるまで繰り返す。つまり、ショット条件が満たされるまで、ボールの軌道上においてヒット位置を移動する。
【0108】
このように、最終的なヒット位置を繰り返し処理により求めれば、プレーヤの先行入力により求められた初期のヒット位置を、少しずつ移動して最終的なヒット位置を取得できるようになる。従って、先行入力についてのプレーヤの意思をある程度反映させたヒット位置の再演算処理(補正処理)を実現できる。また再演算処理においてボールの軌道上でヒット位置を移動するようにすれば、再演算処理により得られたヒット位置が、キャラクタとボールのヒットイベント(ショットイベント)が発生する場所として保証できるようになる。
【0109】
そしてヒット位置がショット条件を満たす位置になったと判断すると、ステップS10、S11に示すように、最終的に得られたヒット位置等に基づいてモーションデータを選択して再生する。
【0110】
このようにすれば、図9(B)で予測したヒット位置HPが、ショット条件を満たす位置ではなかった場合に、このヒット位置を修正し、適正なヒット位置でキャラクタCHがボールBLをショットできるようになる。即ち先行入力システムでは、予測されたヒット位置HPがボールBLのショットに適さない位置になってしまう場合があるが、本実施形態の手法によれば、このような場合にもボールBLの適正なショットが可能になる。従って先行入力システムに好適なショット処理を実現でき、リアルで高品質なモーション再生と、適正なショット処理とを両立できる。
【0111】
2.3 ショット条件、捕捉条件
次にショット条件、捕捉条件の詳細について説明する。なお以下ではテニスゲームへの適用例を説明するが、テニスゲームではショット条件は、キャラクタのラケットによりボールをショット(ヒット)できるか否かの条件になる。一方、本実施形態の手法は例えばサッカー、アメリカンフットボール、野球等のゲームにも適用できる。例えばサッカーゲームでは、足でボールをキックしたり、頭でボールをヘディングできるか否かがショット条件になり、ボールをキープできるか否かが捕捉条件になる。またアメリカンフットボールのゲームでは、飛んできたボールをキャッチできるか否かが捕捉条件になる。また野球ゲームでは、バットでボールをヒットできるか否かがショット条件になり、フライやゴロをキャッチできるか否かが捕捉(捕球)条件になる。
【0112】
例えば図11(A)では、最初に計算されたヒット位置HP0とキャラクタCHとの間には、障害物である壁WOBが存在するため、判定部116は、ヒット位置HP0はショット条件を満たす位置ではないと判定する。従ってこの場合には、図11(B)に示すように再演算処理を行って、ヒット位置をHP0からHP1に移動する。即ち、ヒット位置から、先行入力のタイミングでのボール位置へと向かう方向を、第1の方向D1とした場合に、ヒット位置演算部114は、再演算処理として、ヒット位置をD1方向側に移動する処理を行う。具体的には図3の軌道データにおいて、HP0よりもBL側のボール位置であるHP1を選択する。なおキャラクタとヒット位置との間に壁が存在するか否かの判定は、キャラクタとヒット位置とを結ぶ軌道と壁のオブジェクトとの間で、公知のヒットチェック処理を行うことで実現できる。
【0113】
そして図11(B)では、再演算処理後のヒット位置HP1も、壁WOBの向こう側にあるため、ショット条件を満たすことができない。従って再演算処理が行われて、図11(C)に示すように、ヒット位置をHP1からHP2に移動する。即ちヒット位置をD1方向側に再度移動する。具体的には軌道データにおいて、HP1よりもBL側のボール位置であるHP2を選択する。この場合に再演算処理後のヒット位置HP2とキャラクタCHとの間には壁WOBは存在しないため、HP2はショット条件を満たす位置になり、最終的なヒット位置になる。そして最終的なヒット位置HP2等に基づいてモーションデータが選択されて再生されることになる。
【0114】
図12(A)〜図13(B)に本実施形態により生成されるゲーム画像の例を示す。図12(A)では、相手キャラクタCCがボールBLをショットしている。そして図12(B)では、プレーヤが方向指示キー50と、トップスピンショットの操作ボタン61を操作して、キャラクタCHの動作指示の先行入力を行っている。
【0115】
この場合にプレーヤは、図12(B)のA1に示すように、深めのショットのボールBLに対して画面手前側である壁方向側の方向を、方向指示キー50により指示してしまっている。従って、このままであると、画面手前側の壁WOBをキャラクタCHがすり抜けてしまうおそれがある。即ちプレーヤは、画面奥側から飛んでくるボールBLをショットするのが難しいと判断した場合に、実際のヒット位置よりも手前側の方向を方向指示キー50により指示してしまう場合が多い。そして、このようなプレーヤの方向指示をそのまま用いて、最終的なヒット位置を求めてしまうと、壁WOBをキャラクタがすり抜けてしまう不具合が生じる。
【0116】
このような不具合を防止するために本実施形態では、図11(C)に示すようにヒット位置を補正する再演算処理を行う。これにより、図12(B)のA2に示すように、A1に示す方向よりも画面奥側の方向にキャラクタCHが移動するようになり、ショット条件が満たされるようになる。そして図13(A)、図13(B)に示すように、キャラクタCHが態勢を乱されながらも適正にボールBLをショットするゲーム画像を生成できる。
【0117】
また、この場合に本実施形態では先行入力システムを用いているため、図12(B)の先行入力のタイミングから図13(B)のショットタイミング(及びフォロースイング)までの一連の動作を、1つのモーションデータを用いて再生できる。従って、これまでにないリアルで高品質なモーション表現が可能になる。
【0118】
図14(A)では、ヒット位置演算部114は、予測されるヒット位置HP1の座標XH1、YH1、ZH1(広義には第1、第2、第3の座標)を取得する。そしてヒット位置HP1でのボールBL(移動体)の座標YH1(例えば高さ方向の座標)が所与の座標範囲内にない場合には、判定部116は、ヒット位置HP1はショット条件(捕捉条件)を満たす位置ではないと判定する。具体的にはヒット位置HP1でのボールBLの高さが所与の高さ範囲内に入らない場合に、ショット条件は満たされないと判定する。
【0119】
そして図14(B)に示すようにヒット位置演算部114は、再演算処理として、ボールBLの座標YH(高さ)が、座標範囲内(高さ範囲内)に入るように、ボールBLの軌道上においてヒット位置をHP1からHP2に移動する処理を行う。
【0120】
具体的には図14(C)に示すように、ボールBLの高さがキャラクタCHの身長に比べて高すぎるために座標範囲HR内に入らない場合には、ボールBLの座標YHが小さくなるようにヒット位置HPを軌道上で移動させる。即ち、ボールBLのバウンドが高すぎて、例えばボールBLがキャラクタCHの頭の高さを越えてしまうような場合には、ボールBLの高さが低くなるようにヒット位置を移動する。
【0121】
一方、ボールBLの高さがキャラクタCHの身長に対して低すぎるために座標範囲HR内に入らない場合には、ボールBLの座標YHが大きくなるようにヒット位置HPを軌道上で移動させる。即ち、ボールBLのバウンドが低すぎて、例えば2バウンドになってしまうような場合には、ボールBLの高さが高くなるようにヒット位置を移動する。
【0122】
この場合にヒット位置の検索は図3の軌道データを用いて行うことが望ましい。即ち軌道データの複数の軌道ポイントの中から、ボールBLの高さが最適の範囲内になる軌道ポイントを検索することで、最終的なヒット位置を求める。
【0123】
なおヒット位置を求める際には、ボールBLの放物線軌道の頂点との位置関係も考慮することが望ましい。即ちボールBLの高さを低くする場合には、頂点から遠ざける方向にヒット位置を移動させ、ボールBLの高さを高くする場合には、頂点に近づく方向にヒット位置を移動させる。また2バウンドしてしまうような場合には、2バウンドをしない位置にヒット位置を移動させる。
【0124】
また判定部116は、キャラクタCHの身体パラメータ(身長)に基づいて、高さ範囲HRを変更することが望ましい。例えば図14(C)では、プレーヤが選択したキャラクタCHの身長が低いため、高さ範囲HRを低い場所に設定したり、高さ範囲HRを狭くする。一方、図14(D)では、キャラクタCHの身長が高いため、高さ範囲HRを高い場所に設定したり、高さ範囲HRを広くする。このようにすることでキャラクタCHの身体パラメータも考慮できるため、よりリアルなヒット位置の演算処理を実現できる。
【0125】
なおこの場合に、高さ範囲HRの変更処理は、各キャラクタCHと高さ範囲HRとを関連づけたテーブルデータなどを用いることで実現できる。即ち各キャラクタのパラメータとして、高さ範囲HRの設定位置や大きさを各キャラクタに関連づけて記憶しておけばよい。
【0126】
図15(A)〜図16(B)に本実施形態により生成されるゲーム画像の例を示す。図15(A)では相手キャラクタCCがボールBLをショットしている。そして図15(B)では、プレーヤが方向指示キー50と、スライスショットの操作ボタン62を操作して、キャラクタCHの動作指示の先行入力を行っている。
【0127】
この場合にプレーヤは、図15(B)のB1に示すように、短めのショットのボールBLに対して画面手前側の方向を方向指示キー50により指示してしまっている。従って、このままであると、ヒット位置においてボールBLが低くなりすぎてショットできなくなるおそれがある。
【0128】
このような場合にも本実施形態によれば、ヒット位置でのボールBLの高さが適正な高さ範囲内に入るように、ヒット位置を補正する再演算処理を行う。これにより図15(B)のB2に示すように、B1に示す方向よりも画面奥側の方向にキャラクタCHが移動するようになり、ショット条件が満たされるようになる。そして図16(A)、図16(B)に示すように、ボールBLが2バウンドになる前にキャラクタCHが適正にボールBLをショットする画像を生成できる。
【0129】
またこの場合に本実施形態では先行入力システムを用いているため、図15(B)の先行入力のタイミングから図16(B)のショットタイミングまでの一連の動作を、1つのモーションデータを用いて再生できる。従って、これまでにないリアルで高品質なモーション表現が可能になる。
【0130】
なお図14(A)〜図16(B)ではボールBLの高さ方向でのヒット位置の補正処理について説明したが、本実施形態の手法はこれに限定されない。例えばサッカーでボールをキックする場合においては、横方向でのヒット位置の補正処理を行ってもよい。
【0131】
また図17(A)では、判定部116は、ヒット位置HP1へのボールBLの到達時間tr(到達フレーム数)を求める。例えば図3の軌道データにおいて、キャラクタCHの軌道とボールBLの軌道の交点に対応するボール位置を選択した場合には、そのボール位置のフレーム数を到達時間trとして求めることができる。
【0132】
そして図17(B)に示すように、判定部116は、この到達時間tr内にキャラクタCHがヒット位置HP1に到達できないと判断した場合に、ヒット位置HPがショット条件(捕捉条件)を満たす位置ではないと判定する。
【0133】
具体的には例えばキャラクタCHの移動速度(最大速度)に基づいて、到達時間tr内でのキャラクタCHの移動距離を求める。そして、求められた移動距離では、ヒット位置HP1に到達できないと判断した場合に、ショット条件が満たされないと判断する。
【0134】
或いはキャラクタCHのモーションにおけるボールBLのショットタイミング(捕捉タイミング)が、到達時間trよりも遅いタイミングである場合に、ヒット位置HP1がショット条件を満たす位置ではないと判定してもよい。即ち図17(A)の先行入力での動作指示データに基づいて、キャラクタCHの大まかなモーションを特定する。そして図7に示すようなモーションパラメータにより、特定されたモーションのショットフレーム数(最大ショットフレーム数)を取得する。そしてそのショットフレーム数で特定されたショットタイミングが、到達時間trよりも遅いタイミングであるか否かを判断する。即ち、例えばショットフレーム数の方が到達フレーム数よりも大幅に大きい場合には、ショットタイミングが間に合わなくなるため、ショット条件が満たされないと判断する。
【0135】
そして、このようにヒット位置HP1がショット条件を満たさない位置であると判定された場合には、ヒット位置演算部114は、図17(C)に示すように、再演算処理として、ヒット位置HP1を、到達時間tr内にキャラクタCHが到達できる位置HP2に移動する処理を行う。具体的にはボールBLの軌道上において、到達時間tr内にキャラクタCHが到達できる位置が存在しないかを求める。例えば図3の軌道データのボール位置の中から、到達時間tr内にキャラクタCHが到達できるボール位置を検索する。そして最終的なヒット位置HP2が求められると、キャラクタCHをヒット位置HP2の方向に移動させる。
【0136】
この際に図17(C)に示すように、キャラクタCHによるボールBLのショット(捕捉)の準備動作(テイクバック動作等)及び準備動作に続くショット動作(捕捉動作)を再生するためのモーションデータを、最終的に求められたヒット位置HP2に基づき特定して再生する。即ち準備動作及びショット動作のモーションが一体となったモーションデータを再生する。このようにすれば、準備動作のモーションとショット動作のモーションが滑らかに繋がるようになり、リアルでスムーズなモーション再生を実現できる。
【0137】
また、この場合のモーションデータの選択は、最終的に求められたヒット位置HP2へのボールBLの到達時間trと、先行入力の動作指示データとに基づいて行うことができる。例えば図17(A)の先行入力の動作指示に基づいてトップスピンショットが選択された場合には、予め用意された複数のトップスピンショット用のモーションデータの中から、その再生時間が到達時間trに一致又は近いモーションデータを選択して再生する。この場合に、例えば再生時間に比べて到達時間trが長かったり短かったりした場合には、後述するようにモーションの再生速度の変更処理を行うことで、その調整を行う。
【0138】
以上のようにすれば、プレーヤが指示したキャラクタCHの移動方向(CHからHP1への方向)が、ショット条件を満たす位置の方向(CHからHP2への方向)からずれていた場合にも、その方向のずれを適正に補正できる。そしてキャラクタCHがボールBLを適正にショットするゲーム画像を生成でき、先行入力システムにおいて好適なユーザの操作アシスト機能を実現できる。
【0139】
2.4 再生速度の変更
先行入力システムではプレーヤの先行入力のタイミングに応じてボールの到達時間が変化する。そして、このような到達時間の変化の全てに対応できるように多数のモーションデータを用意しようとすると、モーションデータ記憶部173の記憶容量を圧迫する。
【0140】
そこで本実施形態ではボールの到達時間(キャラクタの移動距離)の長さに応じてモーションの再生速度を変更する手法を採用している。即ちボールの到達時間よりもキャラクタのモーションの再生時間の方が長ければ、モーションの早送り再生を行い、短ければスロー再生を行う。このようにすれば、プレーヤの先行入力のタイミングに応じてボールの到達時間が変動しても、比較的少ないデータ量のモーションデータでこれに対応できるようになる。
【0141】
しかしながら、このような再生速度の変更処理を行うとキャラクタの足が滑って見える現象が生じることが判明した。即ちモーションデータにおいて想定されているキャラクタの移動距離と、コート等のゲームフィールド上でのキャラクタの実際の移動距離とが異なると、足が滑って見えるようになってしまう。特に本実施形態の先行入力システムは、キャラクタのショット動作を、従来のシステムに比べて再生時間が長い1つのモーションデータを用いて再生することで、スムーズで高品質なモーション表現を実現している。従って、このような足滑り現象が目立ってしまうと、スムーズで高品質なモーション表現を実現した意味が損なわれてしまうという課題がある。
【0142】
このような課題を解決するために、本実施形態では、キャラクタのモーションの再生期間を第1、第2の期間に区画し、第1、第2の期間での再生速度を変更度合い(変更倍率)を異ならせる手法を採用している。
【0143】
具体的には図18(A)に示すように、モーション再生期間を、先行入力のタイミングから第1のタイミングTM1までの期間である第1の期間T1と、第1のタイミングTM1からキャラクタとボールのヒットイベントが発生するタイミングまでの期間である第2の期間T2に区画する。そして第1の期間T1での第1の再生速度RS1の変更度合いを、第2の期間T2での第2の再生速度RS2の変更度合いに比べて大きくする。即ち、ボールの到達時間とモーション再生時間とが一致しないため再生速度を変更しなければならない場合には、期間T1の方の再生速度を期間T2に比べて大きく変更する。そして、期間T1の方で再生速度の変更分の多くを吸収して、再生速度の変更の影響が期間T2の方になるべく及ばないようにする。
【0144】
ここで、タイミングTM1は、足滑り防止の開始タイミングとして例えばモーション毎に設定されるタイミングである。例えば図15(A)、図15(B)のようなショット動作の前半期間においてキャラクタCHの足滑り現象が生じても、それほど目立たない。しかしながら、図16(A)、図16(B)のようなショット動作の後半期間において足滑り現象が生じると、プレーヤに気づかれてしまい、仮想現実感を低下させるおそれがある。
【0145】
即ち、一般的に、ショット動作の前半期間ではキャラクタCHの移動速度が速いため、足が滑っていてもそれほど目立たない。一方、ショットの後半期間ではキャラクタCHの移動速度が遅くなるため、足が滑ると目立ってしまい、プレーヤに気づかれてしまう。
【0146】
そこで、この場合には例えば図16(A)のタイミングが足滑り防止開始タイミングTM1に設定される。そして足滑り防止期間T2では、なるべく足滑りが目立たないように、期間T1に比べて再生速度の変更を最小限に抑える。このようにすることで、モーション再生速度の変更処理を行った場合に、足滑りの発生により画像の品質が低下してしまう事態を防止できる。
【0147】
具体的には図19や図6に示すように、モーションデータ記憶部173では、期間T1、T2を区間するフレームを特定するための区画フレームのデータが、各モーションに関連づけて記憶されている。例えば図19では、モーション1(モーションファイル1)に関連づけられた区画フレームDF1により、モーション1のタイミングTM1が特定され、モーション2(モーションファイル2)に関連づけられた区画フレームDF2により、モーション2のタイミングTM1が特定される。また例えば図6の「正面ボール用ショット1」では、区画フレームである32フレームが、足滑り防止開始フレームに設定される。そして32フレームから、ショットタイミングのフレームである41フレームまでは、足滑り防止期間に設定され、再生速度の変更が最小限に抑えられる。同様に、図6の「ステップからの通常ショット1」では、15フレームが足滑り防止開始フレームに設定される。そして15フレームからショットフレームである24フレームまでが、足滑り防止期間に設定され、再生速度の変更が最小限に抑えられる。
【0148】
この場合に、図18(B)に示すように、ヒット位置へのボール(移動体)の到達時間trと、モーションの再生時間tmとにより、期間T1での再生速度RS1の変更倍率である第1の変更倍率m1が設定され、期間T2での再生速度RS2の変更倍率である第2の変更倍率m2が設定される。即ち再生時間tmの方が到達時間trよりも長い場合には、早送り再生が必要になるため、変更倍率m1、m2を1以上の値に設定して、モーション再生速度を速くする。一方、再生時間tmの方が到達時間trよりも短い場合には、スロー再生が必要になるため、変更倍率m1、m2を1以下の値に設定して、モーション再生速度を遅くする。
【0149】
具体的には図20(A)、図20(B)に示すように、期間T2での再生速度の変更倍率m2を1倍に設定したときの期間T1での再生速度の変更倍率m1を求める。
【0150】
例えば図20(A)では、再生時間tmの方が到達時間trよりも長いため、早送り再生が必要になっている。従ってこの場合には、期間T1での再生速度RS1の変更倍率m1を1よりも大きな値に設定して、早送りによる再生速度の変更分を、期間T1側だけで吸収し、期間T2側には及ばないようにする。このようにすれば、タイミングTM1以降の期間T2では再生速度が変更されないようになるため、早送りによる足滑り現象の発生を防止できる。
【0151】
一方、図20(B)では、再生時間tmの方が到達時間trより短いため、スロー再生が必要になっている。従ってこの場合には、変更倍率m1を1よりも小さな値に設定して、スロー再生による再生速度の変更分を、期間T1側だけで吸収し、期間T2側には及ばないようにする。これにより、スロー再生による足滑り現象の発生を防止できる。
【0152】
このように図20(A)、図20(B)では、期間T2での変更倍率m2を1倍のままにしながら、期間T1での変更倍率m1だけを変更している。このようにすれば、プレーヤにとって目立つ期間である期間T2での足滑り現象は防止できるが、変更倍率m1を大きくしすぎたり、小さくしすぎると、期間T1とT2の間の再生速度の差が目立ってしまい、プレーヤが不自然さを感じるおそれがある。
【0153】
そこで本実施形態では図21(A)に示すように、変更倍率m2を1倍に設定したときの変更倍率m1が、第1のしきい値mthよりも大きいか否かを判断する。そして大きい場合(m1>mth)には、変更倍率m1を小さくすると共に変更倍率m2を大きくする。即ち、m2が1倍の時の期間T1での変更倍率をm1とした場合に、期間T1での変更倍率をm1’<m1に設定し、期間T2での変更倍率をm2’>m2=1に設定する。
【0154】
なお、この場合にm1’>m2’の関係が成り立つようにする。即ち変更倍率m2を1倍に設定したときの変更倍率m1が、例えばm1=1.4というように大きくなりすぎたとする。この場合には、例えばm1’=1.3(<m1=1.4)に設定すると共にm2’=1.1(>m2=1)に設定するというように、再生速度の変更分を、期間T1側のみならず期間T2側にも分担させて、再生速度を平均化する。
【0155】
また図21(B)に示すように、変更倍率m2を1倍に設定したときの変更倍率m1が、第2のしきい値mtlよりも小さい場合には、変更倍率m1の方を大きくすると共に変更倍率m2の方を小さくする。即ちm2=1の時の期間T1での変更倍率をm1とした場合に、期間T1での変更倍率をm1’>m1に設定し、期間T2での変更倍率をm2’<m2=1に設定する。
【0156】
なお、この場合にm1’<m2’の関係が成り立つようにする。即ち変更倍率m2を1倍に設定したときの変更倍率m1が、例えばm1=0.6というように小さくなりすぎたとする。この場合には、例えばm1’=0.7(>m1=0.6)に設定すると共にm2’=0.9(<m2=1)に設定するというように、再生速度の変更分を、期間T1側のみならず期間T2側にも分担させて、再生速度を平均化する。
【0157】
図21(A)、図21(B)に示す手法によれば、期間T2での足滑りの度合いを小さくできると共に、期間T1とT2での再生速度の差が大きくなって目立ってしまう事態も防止できる。
【0158】
図22、図23に再生速度の変更処理を説明するためのフローチャートを示す。
【0159】
まずヒット位置(ショット位置)までのボールの到達時間trを求める(ステップS21)。そして先行入力の動作指示データ、到達時間tr等に基づいてモーションを選択する(ステップS22)。例えば先行入力によりトップスピン動作が指示された場合には、複数のトップスピンモーションの中から、その再生時間tmの長さが到達時間trの長さに近いモーションを選択する。
【0160】
次に、選択されたモーションは、再生速度を変更するモーション(第1のモーション)か否かを判断する(ステップS23)。例えば「スマッシュ」、「空振り」、「瞬時に打ち返すボレー」、「前方へ移動しながらのショット」などのモーション(第2のモーション)については、本実施形態では再生速度の変更処理を行わない。これらのモーションでは、再生速度の変更の必要性自体がなかったり、再生速度を変更すると不自然になるからである。
【0161】
図22のステップS23において、選択されたモーションが再生速度を変更しないモーション(第2のモーション)であると判断された場合には、そのモーションの再生時間tmを取得する(ステップS24)。即ち、各モーションに関連づけて記憶される再生フレーム数(総フレーム数)を、再生時間tmとして取得する。そして再生時間tmがボールの到達時間trよりも長いか否かを判断する(ステップS25)。
【0162】
そしてtm>trである場合には、モーションを途中から再生する(ステップS26)。即ちモーションの前半部分を再生せずに、後半部分だけを再生する。なおこの場合に、途中再生前にキャラクタが行っていたモーションと、途中再生モーション(途中再生を開始するフレームのモーション)とのモーションブレンド処理を行い、モーションが滑らかに変化するように見えるようにする。
【0163】
一方、tm>trではない場合には、待機モーションなどの他のモーション再生を行った後に、モーションを再生する(ステップS27)。即ち、構えのモーションや普通に走っているモーションなどの他のモーションの再生を取りあえず行っておいて、残りの再生時間が到達時間trに一致したと判断された場合に、ステップS22で選択されたモーションの再生を開始する。
【0164】
このように本実施形態では、モーションデータ記憶部173は、モーションの再生速度が変更される第1のモーションと、モーションの再生速度が変更されない第2のモーション(例えばスマッシュ、空振り、ボレー)のデータを記憶する。そして再生速度変更部113は、図22のステップS23や図23の処理に示すように、先行入力によるキャラクタの動作指示に基づいて第1のモーション(第1のモーション群)が選択された場合に、再生速度変更処理を行う。
【0165】
一方、ステップS23、S24に示すように、モーション再生部112は、先行入力によるキャラクタの動作指示に基づいて第2のモーション(第2のモーション群)が選択された場合には、第2のモーションの再生時間を取得する。そしてステップS25、S26に示すように、再生時間tmが、ヒット位置へのボールの到達時間trよりも長い場合には、第2のモーションの途中からモーション再生を開始する。一方、再生時間tmが到達時間trよりも短い場合には、待機モーション等の他のモーション再生を行った後に第2のモーションの再生を開始する。
【0166】
このようにすれば、再生速度変更処理が必要な第1のモーションと再生速度変更処理が必要ではない第2のモーションをカテゴリ分けして処理することができるため、処理の効率化を図れる。
【0167】
図22のステップS23において、選択されたモーションが再生速度変更処理が必要なモーションであると判断された場合には、そのモーション(第1のモーション)の再生時間tmを取得する(ステップS31)。また、ショット前の足滑り防止期間T2の時間t2を取得する(ステップS32)。即ち図18(A)等の期間T2の長さ(フレーム数)を取得する。これは例えば図3の軌道データのフレーム数から求めることができる。
【0168】
次に、tr<t2か否かを判断する(ステップS33)。そしてtr<t2である場合には、ショットのインパクトに合わせて、そのままモーションを再生する(ステップS42)。即ち再生速度の変更処理を行うことなくモーションを再生する。
【0169】
このように本実施形態では、モーション再生部112は、ヒット位置へのボール(移動体)の到達時間trが、期間T2の時間t2よりも短い場合には、再生速度変更処理を行うことなくキャラクタCHのモーションを再生している。
【0170】
一方、tr<t2ではない場合には、到達時間tr内でのキャラクタCHのゲームフィールド上(コート)での移動距離LCHを取得する(ステップS34)。また足滑り防止期間T2におけるキャラクタCHのモーションでの移動距離L2を取得する(ステップS35)。これら移動距離LCH、L2は、例えば到達時間tr、時間t2や、キャラクタCHの移動速度や、モーションの再生時間などに基づいて求めることができる。
【0171】
次に、LCH<L2か否かを判断する(ステップS36)。そしてLCH<L2である場合には、ショットのインパクトに合わせて、そのままモーションを再生する(ステップS42)。
【0172】
このように本実施形態では、モーション再生部112は、到達時間tr内でのキャラクタCHのゲームフィールド上での移動距離LCHが、期間T2でのキャラクタCLのモーションでの移動距離L2よりも短い場合には、再生速度変更処理を行うことなくキャラクタCHのモーションを再生している。
【0173】
一方、LCH<L2ではない場合には、図20(A)、図20(B)で説明したように、期間T2での再生速度の変更倍率m2を1倍に設定した場合の、期間T1での再生速度の変更倍率m1を求める(ステップS37)。
【0174】
次に、m1>mthか否かを判断する(ステップS38)。即ち、変更倍率m1により設定される期間T1でのモーション再生速度RS1が速すぎないか否かを判断する。そしてm1>mthである場合には、図21(A)で説明したように、変更倍率m1を小さくする(遅くする)と共に、変更倍率m2を大きくして(速くして)、全体の再生速度を平均化する(ステップS39)。
【0175】
次に、m1<mtlか否かを判断する(ステップS40)。即ち、変更倍率m1により設定される期間T1でのモーション再生速度RS1が遅すぎないか否かを判断する。そしてm1<mtlである場合には、図21(B)で説明したように、変更倍率m1を大きくする(速くする)と共に、変更倍率m2を小さくして(遅くして)、全体の再生速度を平均化する(ステップS41)。
【0176】
3.ハードウェア構成
図24(A)に本実施形態を実現できるハードウェアの構成例を示す。
【0177】
CPU900(メインプロセッサ)は、複数のCPUコア1、CPUコア2、CPUコア3を含むマルチコアプロセッサである。またCPU900は図示しないキャッシュメモリを含む。CPUコア1、2、3の各々にはベクタ演算器等が設けられている。そしてCPUコア1、2、3の各々は、例えば2つのH/Wスレッド処理をコンテクストスイッチをすることなしに並列実行でき、マルチスレッド機能がハードウェアでサポートされている。そして3つのCPUコア1、2、3の合計で、6つのH/Wスレッド処理を並列実行できる。
【0178】
GPU910(描画プロセッサ)は、頂点処理やピクセル処理を行って、描画(レンダリング)処理を実現する。具体的には、シェーダプログラムに従って、頂点データの作成・変更やピクセル(フラグメント)の描画色の決定を行う。1フレーム分の画像がVRAM920(フレームバッファ)に書き込まれると、その画像はビデオ出力を介してTVなどのディスプレイに表示される。なおメインメモリ930はCPU900やGPU910のワークメモリとして機能する。またGPU910では、複数の頂点スレッド、複数のピクセルスレッドが並列実行され、描画処理のマルチスレッド機能がハードウェアでサポートされている。またGPU910にはハードウェアのテッセレータも備えられている。またGPU910は、頂点シェーダとピクセルシェーダとがハードウェア的に区別されていないユニファイド・シェーダ・タイプとなっている。
【0179】
ブリッジ回路940(サウスブリッジ)は、システム内部の情報流通を制御する回路であり、USBコントローラ(シリアルインターフェース)、ネットワークの通信コントローラ、IDEコントローラ、或いはDMAコントローラなどのコントローラを内蔵する。そしてこのブリッジ回路940により、ゲームコントローラ942、メモリーカード944、HDD946、DVDドライブ948との間のインターフェース機能が実現される。
【0180】
なお本実施形態を実現できるハードウェア構成は図24(A)に限定されず、例えば図24(B)のような構成であってもよい。
【0181】
図24(B)ではCPU902が、プロセッサエレメントPPと8つのプロセッサエレメントPE1〜PE8を含む。プロセッサエレメントPPは汎用的なプロセッサコアであり、プロセッサエレメントPE1〜PE8は比較的シンプルな構成のプロセッサコアである。そしてプロセッサエレメントPPとプロセッサエレメントPE1〜PE8のアーキテクチャは異なっており、プロセッサエレメントPE1〜PE8は、複数のデータに対して1命令で同じ処理を同時にできるSIMD型のプロセッサコアとなっている。これによりストリーミング処理などのマルチメディア処理を効率的に実行できる。プロセッサエレメントPPは、2つのH/Wスレッド処理を並列実行でき、プロセッサエレメントPE1〜PE8の各々は、1つのH/Wスレッド処理を実行できる。従って、CPU902では、合計で10個のH/Wスレッド処理の並列実行が可能になる。
【0182】
図24(B)では、GPU912とCPU902の連携が密になっており、GPU912は、CPU902側のメインメモリ930に直接にレンダリング処理を行うことができる。また例えばCPU902がジオメトリ処理を行って、頂点データを転送したり、GPU912からCPU902にデータを戻すことも容易にできる。またCPU902が、レンダリングのプリプロセッシング処理やポストプロセッシング処理を行うことも容易であり、テッセレーション(平面分割)やドットフィルをCPU902が実行できる。例えば抽象度の高い処理はCPU902が行い、抽象度が低い細かな処理はGPU912が行うというような役割分担が可能である。
【0183】
なお本実施形態の各部の処理をハードウェアとプログラムにより実現する場合には、情報記憶媒体には、ハードウェア(コンピュータ)を本実施形態の各部として機能させるためのプログラムが格納される。より具体的には、上記プログラムが、ハードウェアであるプロセッサ(CPU、GPU)に処理を指示すると共に、必要であればデータを渡す。そして、プロセッサは、その指示と渡されたデータとに基づいて本発明の各部の処理を実現する。
【0184】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(移動体、第1、第2、第3の座標等)と共に記載された用語(ボール、X、Y、Z座標等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。
【0185】
また、先行入力処理、ヒット位置の演算処理、ショット条件や捕捉条件の判定処理、モーション再生処理、再生速度の変更処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明はテニスゲーム以外の種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【図面の簡単な説明】
【0186】
【図1】本実施形態の画像生成システムのブロック図の例。
【図2】キャラクタやボールのオブジェクトデータの例。
【図3】ボールの軌道データの例。
【図4】モデルオブジェクト、スケルトン構造の例。
【図5】骨の親子関係の説明図。
【図6】キャラクタのモーションデータの例。
【図7】モーションパラメータの例。
【図8】テニスゲームにおけるオブジェクト空間の設定例。
【図9】図9(A)〜図9(D)は先行入力システムの説明図。
【図10】本実施形態のヒット位置演算処理を説明するフローチャート。
【図11】図11(A)〜図11(C)はショット条件の判定処理及びヒット位置演算処理の説明図。
【図12】図12(A)、図12(B)は本実施形態により生成されるゲーム画像例。
【図13】図13(A)、図13(B)は本実施形態により生成されるゲーム画像例。
【図14】図14(A)〜図14(D)はショット条件の判定処理及びヒット位置演算処理の説明図。
【図15】図15(A)、図15(B)は本実施形態により生成されるゲーム画像例。
【図16】図16(A)、図16(B)は本実施形態により生成されるゲーム画像例。
【図17】図17(A)〜図17(C)はショット条件の判定処理及びヒット位置演算処理の説明図。
【図18】図18(A)、図18(B)はモーションの再生速度変更手法の説明図。
【図19】区画フレームデータを用いる手法の説明図。
【図20】図20(A)、図20(B)はモーションの再生速度変更処理の具体例の説明図。
【図21】図21(A)、図21(B)はモーションの再生速度変更処理の具体例の説明図。
【図22】本実施形態の処理を説明するフローチャート。
【図23】本実施形態の処理を説明するフローチャート。
【図24】図24(A)、図24(B)はハードウェア構成例。
【符号の説明】
【0187】
100 処理部、102 入力受け付け部、104 オブジェクト空間設定部、
106 ゲーム演算部、108 移動体制御部、110 キャラクタ制御部、
112 モーション再生部、113 再生速度変更部、114 ヒット位置演算部、
116 判定部、118 仮想カメラ制御部、120 画像生成部、130 音生成部、
160 操作部、170 記憶部、171 形状データ記憶部、
172 オブジェクトデータ記憶部、173 モーションデータ記憶部、
174 モーションパラメータ記憶部、175 軌道データ記憶部、
176 ヒット位置記憶部、177 描画バッファ、180 情報記憶媒体、
190 表示部、192 音出力部、194 補助記憶装置、196 通信部

【特許請求の範囲】
【請求項1】
キャラクタにより移動体がショット又は捕捉されるタイミングに先行して、前記キャラクタの動作を指示する先行入力をプレーヤが行った場合に、入力された先行入力を受け付ける入力受け付け部と、
前記キャラクタによりショット又は捕捉される前記移動体の制御処理を行う移動体制御部と、
受け付けられた前記先行入力の操作データに基づいて、前記キャラクタの制御処理を行うキャラクタ制御部と、
前記キャラクタと前記移動体とのヒットイベントが発生する位置であるヒット位置を求めるヒット位置演算部と、
求められたヒット位置が、前記キャラクタによる前記移動体のショット条件又は捕捉条件を満たす位置であるか否かを判定する判定部として、
コンピュータを機能させ、
前記ヒット位置演算部は、
ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではなかった場合には、ヒット位置の再演算処理を行ってヒット位置を移動することを特徴とするプログラム。
【請求項2】
請求項1において、
前記ヒット位置演算部は、
前記先行入力のタイミングでの前記キャラクタの位置及び移動方向により特定される軌道と、前記移動体の軌道との交点を求めることで、ヒット位置を求めることを特徴とするプログラム。
【請求項3】
請求項2において、
前記ヒット位置演算部は、
前記先行入力のタイミングにおいて既に計算されている前記移動体の軌道データの移動体位置の中から、前記交点に対応する移動体位置を選択することで、ヒット位置を求めることを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記ヒット位置演算部は、
ヒット位置を移動する処理を、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置になるまで繰り返すことを特徴とするプログラム。
【請求項5】
請求項4において、
前記ヒット位置演算部は、
ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置になるまで、前記移動体の軌道上においてヒット位置を移動することを特徴とするプログラム。
【請求項6】
請求項1乃至5のいずれかにおいて、
前記判定部は、
前記キャラクタとヒット位置の間に障害物が存在した場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定することを特徴とするプログラム。
【請求項7】
請求項6において、
ヒット位置から、前記先行入力のタイミングでの前記移動体の位置へと向かう方向を、第1の方向とした場合に、
前記ヒット位置演算部は、
前記再演算処理として、ヒット位置を前記第1の方向側に移動する処理を行うことを特徴とするプログラム。
【請求項8】
請求項1乃至7のいずれかにおいて、
前記ヒット位置演算部は、
ヒット位置の第1、第2、第3の座標を求め、
前記判定部は、
ヒット位置での前記移動体の前記第2の座標が所与の座標範囲内にない場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定することを特徴とするプログラム。
【請求項9】
請求項8において、
前記第2の座標は高さ方向の座標であり、
前記判定部は、
ヒット位置での前記移動体の高さが所与の高さ範囲内にない場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定することを特徴とするプログラム。
【請求項10】
請求項8又は9において、
前記判定部は、
前記キャラクタの身体パラメータに基づいて前記座標範囲を変更して判定処理を行うことを特徴とするプログラム。
【請求項11】
請求項8乃至10のいずれかにおいて、
前記ヒット位置演算部は、
前記再演算処理として、前記移動体の前記第2の座標が前記座標範囲内に入るように、前記移動体の軌道上においてヒット位置を移動する処理を行うことを特徴とするプログラム。
【請求項12】
請求項1乃至11のいずれかにおいて、
前記判定部は、
ヒット位置への前記移動体の到達時間内に、前記キャラクタがヒット位置に到達できないと判断した場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定することを特徴とするプログラム。
【請求項13】
請求項12において、
前記キャラクタのモーションデータを記憶するモーションデータ記憶部と、
前記モーションデータに基づいて前記キャラクタのモーション再生を行うモーション再生部として、
コンピュータを機能させ、
前記モーション再生部は、
前記先行入力が受け付けられた場合に、前記先行入力の動作指示データにより指示される動作を前記キャラクタに行わせるモーション再生を行い、
前記判定部は、
前記キャラクタのモーションにおける前記移動体のショットタイミング又は捕捉タイミングが、前記到達時間よりも遅いタイミングである場合に、ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではないと判定することを特徴とするプログラム。
【請求項14】
請求項12又は13において、
前記ヒット位置演算部は、
前記再演算処理として、ヒット位置を、前記到達時間内に前記キャラクタが到達できる位置に移動する処理を行うことを特徴とするプログラム。
【請求項15】
請求項1乃至14のいずれかにおいて、
前記キャラクタのモーションデータを記憶するモーションデータ記憶部と、
前記モーションデータに基づいて前記キャラクタのモーション再生を行うモーション再生部として、
コンピュータを機能させ、
前記モーション再生部は、
前記キャラクタによる前記移動体のショット又は捕捉の準備動作及び前記準備動作に続くショット動作又は捕捉動作を再生するためのモーションデータであって、前記再演算処理により最終的に求められたヒット位置に基づき特定されるモーションデータを選択して再生することを特徴とするプログラム。
【請求項16】
請求項15において、
前記モーション再生部は、
最終的に求められたヒット位置への前記移動体の到達時間と、前記先行入力の動作指示データとに基づき、モーションデータを選択することを特徴とするプログラム。
【請求項17】
請求項1乃至16のいずれかにおいて、
前記キャラクタのモーションデータを記憶するモーションデータ記憶部と、
前記モーションデータに基づいて前記キャラクタのモーション再生を行うモーション再生部と、
前記キャラクタのモーションの再生速度変更処理を行う再生速度変更部として、
コンピュータを機能させ、
前記再生速度変更部は、
前記先行入力のタイミングから第1のタイミングまでの期間である第1の期間での第1の再生速度の変更度合いを、前記第1のタイミングから前記キャラクタと前記移動体のヒットイベントが発生するタイミングまでの期間である第2の期間での第2の再生速度の変更度合いに比べて大きくする再生速度変更処理を行うことを特徴とするプログラム。
【請求項18】
請求項17において、
前記再生速度変更部は、
前記ヒットイベントの発生位置であるヒット位置への前記移動体の到達時間と、モーションの再生時間とにより、前記第1の期間での前記第1の再生速度の変更倍率である第1の変更倍率と、前記第2の期間での前記第2の再生速度の変更倍率である第2の変更倍率を設定することを特徴とするプログラム。
【請求項19】
請求項18において、
前記再生速度変更部は、
前記第2の変更倍率を1倍に設定したときの前記第1の変更倍率を求め、求められた前記第1の変更倍率が第1のしきい値よりも大きい場合には、前記第1の変更倍率を小さくすると共に前記第2の変更倍率を大きくし、求められた前記第1の変更倍率が第2のしきい値よりも小さい場合には、前記第1の変更倍率を大きくすると共に前記第2の変更倍率を小さくすることを特徴とするプログラム。
【請求項20】
請求項17乃至19のいずれかにおいて、
前記モーションデータ記憶部は、
前記第1、第2の期間を区画するフレームを特定するための区画フレームのデータを、各モーションに関連づけて記憶し、
前記再生速度変更部は、
前記区画フレームのデータに基づいて前記第1のタイミングを特定して、前記再生速度変更処理を行うことを特徴とするプログラム。
【請求項21】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至20のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項22】
画像を生成する画像生成システムであって、
キャラクタにより移動体がショット又は捕捉されるタイミングに先行して、前記キャラクタの動作を指示する先行入力をプレーヤが行った場合に、入力された先行入力を受け付ける入力受け付け部と、
前記キャラクタによりショット又は捕捉される前記移動体の制御処理を行う移動体制御部と、
受け付けられた前記先行入力の操作データに基づいて、前記キャラクタの制御処理を行うキャラクタ制御部と、
前記キャラクタと前記移動体とのヒットイベントが発生する位置であるヒット位置を求めるヒット位置演算部と、
求められたヒット位置が、前記キャラクタによる前記移動体のショット条件又は捕捉条件を満たす位置であるか否かを判定する判定部と、
を含み、
前記ヒット位置演算部は、
ヒット位置が前記ショット条件又は前記捕捉条件を満たす位置ではなかった場合には、ヒット位置の再演算処理を行ってヒット位置を移動することを特徴とする画像生成システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate


【公開番号】特開2008−307165(P2008−307165A)
【公開日】平成20年12月25日(2008.12.25)
【国際特許分類】
【出願番号】特願2007−156254(P2007−156254)
【出願日】平成19年6月13日(2007.6.13)
【出願人】(000134855)株式会社バンダイナムコゲームス (1,157)
【Fターム(参考)】