説明

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

【課題】ヒット対象物に設定された判定エリアを用いたヒット演算処理を実現できるプログラム、画像生成システム等の提供。
【解決手段】画像生成システムは、キャラクタ制御部と、ヒット演算処理部と、ヒット対象物の位置を基準とした第1の判定エリアと、第1の判定エリアの外側に設けられる第2の判定エリアを、ヒット対象物に対して設定する判定エリア設定部と、画像を生成する画像生成部を含む。ヒット演算処理部は、ヒット判定タイミングにおいてキャラクタが第1の判定エリアに位置する場合には、第1のヒット演算処理を行い、ヒット判定タイミングにおいてキャラクタが第2の判定エリアに位置する場合には、第1のヒット演算処理とは異なる第2のヒット演算処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラム、情報記憶媒体及び画像生成システム等に関する。
【背景技術】
【0002】
従来より、スポーツ選手を模したキャラクタ等のオブジェクトが配置設定されるオブジェクト空間内(仮想的な3次元空間)において仮想カメラ(所与の視点)から見える画像を生成する画像生成システム(ゲームシステム)が知られており、いわゆる仮想現実を体験できるものとして人気が高い。テニスゲームを楽しむことができる画像生成システムを例にとれば、プレーヤは、コントローラなどの操作部を用いて自身のキャラクタを操作して、他のプレーヤやコンピュータが操作する相手キャラクタがショットしたボールをラケットで打ち返すことでゲームを楽しむ。このようなテニスゲームを楽しむことができる画像生成システムの従来技術としては、例えば特許文献1に開示される技術が知られている。そして、このような画像生成ゲームでは、相手キャラクタがショットしたボールをラケットで打ち返すためのヒット演算処理が必要になる。
【0003】
しかしながら、これまでの画像生成システムでは、ラケット側だけにヒット判定エリアを設けてヒット演算処理を実現していた。このため、相手キャラクタの能力やステータスなどの情報や、ボールの強さ、速度などの情報に応じたヒット演算処理を実現することが難しかった。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−307166号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の幾つかの態様によれば、ヒット対象物に設定された判定エリアを用いたヒット演算処理を実現できるプログラム、情報記憶媒体、画像生成システム等を提供できる。
【課題を解決するための手段】
【0006】
本発明の一態様は、キャラクタの制御処理を行うキャラクタ制御部と、前記キャラクタが所持する所持オブジェクト又は前記キャラクタを構成する部位オブジェクトであるヒット体と、ヒット対象物とのヒット演算処理を行うヒット演算処理部と、前記ヒット対象物の位置を基準とした第1の判定エリアと、前記第1の判定エリアの外側に設けられる第2の判定エリアを、前記ヒット対象物に対して設定する判定エリア設定部と、画像を生成する画像生成部とを含み、前記ヒット演算処理部は、ヒット判定タイミングにおいて前記キャラクタが前記第1の判定エリアに位置する場合には、第1のヒット演算処理を行い、前記ヒット判定タイミングにおいて前記キャラクタが前記第2の判定エリアに位置する場合には、前記第1のヒット演算処理とは異なる第2のヒット演算処理を行う画像生成システムに関係する。また本発明は、上記各部としてコンピュータを機能させるプログラム、又は該プログラムを記憶したコンピュータ読み取り可能な情報記憶媒体に関係する。
【0007】
本発明の一態様では、ヒット対象物に対して第1、第2の判定エリアが設定されて、キャラクタの所持オブジェクト又は部位オブジェクトであるヒット体とヒット対象物のヒット演算処理が行われる。そしてヒット判定タイミングにおいてキャラクタが、ヒット対象物に設定された第1の判定エリアに位置する場合には、第1のヒット演算処理が行われる。一方、第2の判定エリアに位置する場合には、第2のヒット演算処理が行われる。従って、ヒット判定タイミングにおいてキャラクタが第1、第2の判定エリアのいずれに位置するかに応じて、ヒット演算処理を異ならせることが可能になり、ヒット対象物に設定された判定エリアを用いたヒット演算処理を実現できる。
【0008】
また本発明の一態様では、前記ヒット演算処理部は、前記ヒット判定タイミングにおいて前記キャラクタが前記第1の判定エリアに位置する場合には、前記ヒット対象物に対して第1の制御処理を行い、前記ヒット判定タイミングにおいて前記キャラクタが前記第2の判定エリアに位置する場合には、前記ヒット対象物に対して前記第1の制御処理とは異なる第2の制御処理を行ってもよい。
【0009】
このようにすれば、ヒット判定タイミングにおいてキャラクタが第1、第2の判定エリアのいずれに位置するかに応じて、ヒット対象物の制御処理を異ならせることが可能になる。
【0010】
また本発明の一態様では、前記第1、第2の制御処理は、前記ヒット体による前記ヒット対象物のヒットの強さ、ヒット後の前記ヒット対象物の移動速度、及びヒット後の前記ヒット対象物の移動方向の少なくとも1つを制御する処理であってもよい。
【0011】
このようにすれば、ヒット判定タイミングにおいてキャラクタが第1、第2の判定エリアのいずれに位置するかに応じて、ヒット対象物のヒットの強さや移動速度や移動方向を異ならせることが可能になる。
【0012】
また本発明の一態様では、前記判定エリア設定部は、前記ヒット対象物をヒットした相手キャラクタの情報に応じて、前記第1の判定エリア及び前記第2の判定エリアの少なくとも一方の設定を変更してもよい。
【0013】
このようにすれば、相手キャラクタの情報を、簡素な処理でヒット演算処理に反映できるようになる。
【0014】
また本発明の一態様では、前記判定エリア設定部は、前記ヒット体によりヒットされる前記ヒット対象物の状態に応じて、前記第1の判定エリア及び前記第2の判定エリアの少なくとも一方の設定を変更してもよい。
【0015】
このようにすれば、ヒット対象物の情報を、簡素な処理でヒット演算処理に反映できるようになる。
【0016】
また本発明の一態様では、前記判定エリア設定部は、前記ヒット対象物のバウンド前とバウンド後で、前記第1の判定エリア及び前記第2の判定エリアの少なくとも一方の設定を変更してもよい。
【0017】
このようすれば、ヒット対象物がバウンドしたか否かを反映させたヒット演算処理を、簡素な処理で実現できるようになる。
【0018】
また本発明の一態様では、前記判定エリア設定部は、前記第2の判定エリアの外側に設けられる第3の判定エリアを、前記ヒット対象物に対して設定し、前記キャラクタ制御部は、前記ヒット判定タイミングにおいて前記キャラクタが前記第3の判定エリアに位置する場合には、前記第1、第2の判定エリアに位置する場合とは異なるキャラクタ制御処理を行ってもよい。
【0019】
このようにすれば、ヒット判定タイミングにおいてキャラクタが、第1、第2の判定エリアと第3の判定エリアのいずれに位置するかに応じて、キャラクタの制御処理を異ならせることが可能になる。
【0020】
また本発明の一態様では、前記キャラクタ制御部は、前記ヒット判定タイミングにおいて前記キャラクタが前記第1、第2の判定エリアに位置する場合には、第1のモーションで前記キャラクタを動作させ、前記ヒット判定タイミングにおいて前記キャラクタが前記第3の判定エリアに位置する場合には、前記第1のモーションとは異なる第2のモーションで前記キャラクタを動作させてもよい。
【0021】
このようにすれば、ヒット判定タイミングにおいてキャラクタが、第1、第2の判定エリアと第3の判定エリアのいずれに位置するかに応じて、キャラクタのモーション異ならせることが可能になる。
【0022】
また本発明の一態様では、前記キャラクタ制御部は、前記ヒット対象物の予測ヒット位置に前記キャラクタを移動させる制御を行ってもよい。
【0023】
このようにすれば、キャラクタを予測ヒット位置に移動させてヒット演算処理を実現できるようになる。
【0024】
また本発明の一態様では、センサを有するコントローラからのセンサ情報に基づいて、所定座標軸回りでの前記コントローラの回転角度情報を、操作情報として取得する操作情報取得部を含み、前記操作情報取得部は、前記コントローラの長軸方向に沿って設定された座標軸を第3の座標軸とし、前記第3の座標軸に直交する座標軸を第1、第2の座標軸とした場合に、前記第3の座標軸回りでの回転角度情報である第3の回転角度情報を取得し、前記ヒット演算処理部は、前記第3の座標軸回りでの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【0025】
このようにすれば、コントローラが長軸方向である第3の座標軸回りで回転すると、第3の座標軸回りでの第3の回転角度情報に応じて、ヒット対象物の移動方向や回転状態が変化するようになり、これまでにないタイプのヒット演算処理を実現できる。
【0026】
また本発明の一態様では、前記ヒット演算処理部は、前記ヒット体による前記ヒット対象物のヒットタイミングにおける前記コントローラの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【0027】
このようにすれば、ヒットタイミングでのコントローラの第3の回転角度情報を、ヒット対象物のヒット後の移動方向や回転状態に反映させることが可能になる。
【0028】
また本発明の一態様では、前記ヒット演算処理部は、ヒット判定期間における前記コントローラの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【0029】
このようにすれば、ヒット判定期間において取得されたコントローラの第3の回転角度情報を、ヒット対象物の移動方向や回転状態に反映させたヒット演算処理を実現できる。
【0030】
また本発明の一態様では、前記ヒット演算処理部は、前記ヒット判定期間における前記コントローラの前記第3の回転角度情報の変化情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【0031】
このようにすれば、ヒット判定期間でのコントローラの第3の回転角度情報の変化を、ヒット演算処理に反映できるようになる。
【0032】
また本発明の一態様では、前記ヒット演算処理部は、前記ヒット判定期間の第1のタイミングにおける前記第3の回転角度情報と、前記ヒット判定期間の第2のタイミングにおける前記第3の回転角度情報とに基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定してもよい。
【0033】
このようにすれば、ヒットタイミング前の第1のタイミングでの第3の回転角度情報と、ヒットタイミング後の第2のタイミングでの第3の回転角度情報とに基づいて、ヒット対象物の移動方向や回転状態が設定されるようになり、よりインテリジェントで精度の高いヒット演算処理を実現できる。
【図面の簡単な説明】
【0034】
【図1】本実施形態の画像生成システムの構成例。
【図2】プレーヤによるコントローラの操作の説明図。
【図3】図3(A)、図3(B)はコントローラの構成例。
【図4】コントローラの各座標軸回りでの回転角度情報の説明図。
【図5】図5(A)〜図5(C)はヒット対象物に設定される判定エリアの説明図。
【図6】本実施形態のヒット演算処理の説明図。
【図7】各判定エリアに対応づけられたヒット演算処理、キャラクタ制御処理の説明図。
【図8】図8(A)〜図8(C)はヒット演算処理、キャラクタ制御処理の説明図。
【図9】図9(A)、図9(B)は相手キャラクタの情報に基づく判定エリアの設定手法の説明図。
【図10】図10(A)〜図10(C)はボールのバウンド前後に応じた判定エリアの設定手法の説明図。
【図11】本実施形態の詳細な処理例のフローチャート。
【図12】図12(A)、図12(B)はキャラクタのスイング動作の例。
【図13】キャラクタのスイング動作の例。
【図14】図14(A)〜図14(C)はヒット時の回転角度情報に基づくヒット演算処理の説明図。
【図15】図15(A)〜図15(C)はヒット判定区間で取得された回転角度情報に基づくヒット演算処理の説明図。
【図16】図16(A)〜図16(D)はヒット後のボールの移動状態、動作状態の説明図。
【図17】基準ポジションの検出手法の説明図。
【発明を実施するための形態】
【0035】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【0036】
1.構成
図1に本実施形態の画像生成システム(ゲームシステム)のブロック図の例を示す。なお本実施形態の画像生成システムは図1の構成要素(各部)の一部を省略した構成としてもよい。
【0037】
操作部160は、プレーヤが操作データを入力するためのものであり、その機能は、方向キー、操作ボタン、アナログスティック、レバー、各種センサ(角速度センサ、加速度センサ等)、マイク、或いはタッチパネル型ディスプレイなどにより実現できる。
【0038】
記憶部170は、処理部100や通信部196などのワーク領域となるもので、その機能はRAM(DRAM、VRAM)などにより実現できる。そしてゲームプログラムや、ゲームプログラムの実行に必要なゲームデータは、この記憶部170に保持される。
【0039】
情報記憶媒体180(コンピュータにより読み取り可能な媒体)は、プログラムやデータなどを格納するものであり、その機能は、光ディスク(CD、DVD)、HDD(ハードディスクドライブ)、或いはメモリ(ROM等)などにより実現できる。処理部100は、情報記憶媒体180に格納されるプログラム(データ)に基づいて本実施形態の種々の処理を行う。即ち情報記憶媒体180には、本実施形態の各部としてコンピュータ(操作部、処理部、記憶部、出力部を備える装置)を機能させるためのプログラム(各部の処理をコンピュータに実行させるためのプログラム)が記憶される。
【0040】
表示部190は、本実施形態により生成された画像を出力するものであり、その機能は、LCD、有機ELディスプレイ、CRT、タッチパネル型ディスプレイ、或いはHMD(ヘッドマウントディスプレイ)などにより実現できる。音出力部192は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【0041】
補助記憶装置194(補助メモリ、2次メモリ)は、記憶部170の容量を補うために使用される記憶装置であり、SDメモリーカード、マルチメディアカードなどのメモリーカードなどにより実現できる。
【0042】
通信部196は、有線や無線のネットワークを介して外部(例えば他の画像生成システム、サーバ、ホスト装置)との間で通信を行うものであり、その機能は、通信用ASIC又は通信用プロセッサなどのハードウェアや、通信用ファームウェアにより実現できる。
【0043】
なお本実施形態の各部としてコンピュータを機能させるためのプログラム(データ)は、サーバ(ホスト装置)が有する情報記憶媒体からネットワーク及び通信部196を介して情報記憶媒体180(あるいは記憶部170、補助記憶装置194)に配信してもよい。このようなサーバ(ホスト装置)による情報記憶媒体の使用も本発明の範囲内に含めることができる。
【0044】
処理部100(プロセッサ)は、操作部160からの操作データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などを行う。処理部100は記憶部170をワーク領域として各種処理を行う。この処理部100の機能は、各種プロセッサ(CPU、GPU等)、ASIC(ゲートアレイ等)などのハードウェアや、プログラムにより実現できる。
【0045】
処理部100は、操作情報取得部101、ゲーム演算部102、オブジェクト空間設定部104、ヒット演算処理部106、基準ポジション検出部108、判定エリア設定部110、キャラクタ制御部114、仮想カメラ制御部118、画像生成部120、音生成部130を含む。なおこれらの一部を省略する構成としてもよい。
【0046】
操作情報取得部101は、プレーヤが操作部160を用いて各種操作を行うと、その操作情報を取得する。例えば操作部160としてセンサ(例えば角速度センサ又は加速度センサ等)を有するコントローラ(図2参照)を用いたとする。この場合には操作情報取得部101は、このコントローラからのセンサ情報(センサの出力信号又は当該出力信号に所定の処理を施した情報)に基づいて、所定座標軸回り(少なくとも1つの座標軸回り)でのコントローラの回転角度情報(回転角度、回転角度と等価なパラメータ)を、操作情報として取得する。例えばコントローラの長手方向(長軸方向)に沿って設定された座標軸を第3の座標軸とし、第3の座標軸に直交する座標軸を第1、第2の座標軸としたとする。この場合に、操作情報取得部101は、第3の座標軸回りでの回転角度情報である第3の回転角度情報を取得する。或いは第1、第2の座標軸回りでの回転角度情報である第1、第2の回転角度情報を取得する。例えばコントローラが有する角速度センサのセンサ情報に基づいて第1、第2、第3の回転角度情報を取得する。またコントローラが加速度センサを有する場合には、例えば第3の座標軸に沿った方向での加速度情報を取得する。或いは、第1、第2の座標軸に沿った方向での加速度情報を取得してもよい。
【0047】
ゲーム演算部102はゲーム演算処理を行う。ここでゲーム演算としては、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム結果を演算する処理、或いはゲーム終了条件が満たされた場合にゲームを終了する処理などがある。
【0048】
オブジェクト空間設定部104は、キャラクタ等のモデルオブジェクト(人、ロボット、車、戦闘機、ミサイル、弾等の移動体)、マップ(地形)、建物、コース(道路)、樹木、壁などの表示物を表す各種オブジェクト(ポリゴン、自由曲面又はサブディビジョンサーフェイスなどのプリミティブ面で構成されるオブジェクト)をオブジェクト空間に配置設定する処理を行う。即ちワールド座標系でのオブジェクトの位置や回転角度(向き、方向と同義)を決定し、その位置(X、Y、Z)にその回転角度(X、Y、Z軸回りでの回転角度)でオブジェクトを配置する。具体的には、記憶部170のオブジェクトデータ記憶部172には、オブジェクトの位置、回転角度、移動速度、移動方向等のデータであるオブジェクトデータがオブジェクト番号に対応づけて記憶される。
【0049】
ヒット演算処理部106は、ヒット体とヒット対象物のヒット演算処理を行う。このヒット演算処理では、例えばヒット後のヒット対象物の移動状態や動作状態が設定される。
【0050】
ここでヒット体は、ヒット対象物をヒットするためのオブジェクトであり、例えばキャラクタが所持(把持)する所持オブジェクト(把持オブジェクト)や、キャラクタを構成する部位オブジェクトである。キャラクタの所持オブジェクトとしては、例えばテニス、卓球、バトミントン等のラケットや、野球のバットや、ゴルフのクラブや、剣等の武器や、マラカス等の楽器や、或いはドラムのスティック等を想定できる。キャラクタの部位オブジェクトとしては、手、足、頭、胴体等の部位を想定できる。ヒット対象物は、ヒット体によりヒットされるものであり、ヒット対象物としては、ボールや、他キャラクタの武器や、壁、床等の固定物や、他キャラクタの手、足、頭、胴体等の部位を想定できる。
【0051】
またヒット対象物のヒット後の移動状態は、例えば、ヒット後のヒット対象物の移動方向、移動速度、或いは移動加速度等である。またヒット対象物のヒット後の動作状態は、例えばヒット後のヒット対象物の回転状態、或いはモーション状態等である。回転状態は、ヒット対象物の回転方向、回転速度(角速度)、或いは回転加速度(角加速度)等であり、モーション状態は、ヒット対象物をモーションデータ等により動作させた場合の各種状態である。
【0052】
本実施形態ではヒット演算処理部106は、ヒット判定タイミングにおいてキャラクタが第1の判定エリアに位置する場合には、第1のヒット演算処理を行う。一方、ヒット判定タイミングにおいてキャラクタが第2の判定エリアに位置する場合には、第1のヒット演算処理とは異なる第2のヒット演算処理を行う。即ち、キャラクタが、ヒット対象物に設定された第1の判定エリア内に位置するか第2の判定エリア内に位置するかに応じて、ヒット演算処理の内容を異ならせる。例えばヒット対象物の制御処理やキャラクタの制御処理の内容を異ならせる。なおヒット判定タイミングにおいてキャラクタが第3の判定エリアに位置する場合には、第1又は第2のヒット演算処理とは異なる第3のヒット演算処理を行ってもよい。
【0053】
例えばヒット演算処理部106は、ヒット判定タイミングにおいてキャラクタが第1の判定エリアに位置する場合には、ヒット対象物に対して第1の制御処理を行う。一方、ヒット判定タイミングにおいてキャラクタが第2の判定エリアに位置する場合には、ヒット対象物に対して、第1の制御処理とは異なる第2の制御処理を行う。またヒット判定タイミングにおいてキャラクタが第3の判定エリアに位置する場合には、第1、第2の制御処理とは異なる制御処理を行ってもよい。
【0054】
ここで、ヒット対象物に対する第1、第2の制御処理は、ヒット体によるヒット対象物のヒットの強さ(ヒット力)、ヒット後のヒット対象物の移動速度(ヒット速度)、及びヒット後のヒット対象物の移動方向(角度)の少なくとも1つを制御する処理である。またヒット判定タイミングは、キャラクタが判定エリアに位置するか否かを判定するためのタイミングであり、例えば操作情報取得部101により取得されたユーザの操作情報に基づき特定される。このヒット判定タイミングは、キャラクタの所持オブジェクトや部位オブジェクトなどのヒット体とヒット対象物のヒットタイミングや、ヒットタイミングの少し前のタイミングである。例えばテニスゲームにおけるテークバックタイミング等の、ヒット動作の準備が整ったタイミングである。
【0055】
また操作情報取得部101が、コントローラの長軸方向に沿って設定された第3の座標軸回りでの第3の回転角度情報を取得したとする。この場合にヒット演算処理部106は、第3の座標軸回りでの第3の回転角度情報に基づいて、ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定する。具体的には、ヒット体によるヒット対象物のヒットタイミングにおける第3の回転角度情報、或いはヒット判定期間における第3の回転角度情報に基づいて、ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定する。
【0056】
基準ポジション検出部108は、コントローラが基準ポジションに設定されたことを検出する処理を行う。例えばコントローラが基準ポジションに設定されたことを知らせる所定の操作(例えばボタンを押す等)を、プレーヤがコントローラにより行った場合に、基準ポジションに設定されたと判断する。そして例えばコントローラが内蔵するセンサが角速度センサである場合に、操作情報取得部101は、コントローラが基準ポジションに設定された時に初期値(例えば0度)に設定される回転角度情報を取得する。ここで基準ポジションは、例えばコントローラの第1、第2又は第3の座標軸回りでの回転角度情報を初期値(基準値)に設定するためのポジションである。
【0057】
判定エリア設定部110は、ヒット対象物の判定エリアの設定処理を行う。そして判定エリア設定部110による判定エリアの設定データは、エリア設定データ記憶部178に記憶される。
【0058】
例えば判定エリア設定部110は、ヒット対象物に対して第1、第2の判定エリアを設定する。或いは更に第3の判定エリアを設定する。ここで第1の判定エリアは、ヒット対象物の位置を基準(例えば中心)として設定されるエリアである。第2の判定エリアは第1の判定エリアの外側に設けられるエリアであり、第3の判定エリアは第2の判定エリアの外側に設けられるエリアである。これらの第1〜第3の判定エリアは、ヒット対象物の位置を基準に設定されるため、ヒット対象物が移動するとそれに追従して移動する。また第1〜第3の各判定エリアは、お互いに重なり部分の無い領域であり、2元的な領域であってもよいし、3次元的な領域であってもよい。また第4、第5の判定エリアというように、4つ以上の判定エリアをヒット対象物に対して設定してもよい。
【0059】
また判定エリア設定部110は、判定エリアの設定変更処理も行う。例えばヒット対象物をヒットした相手キャラクタの情報に応じて、第1の判定エリア及び第2の判定エリアの少なくとも一方の設定を変更する。或いは第3の判定エリアの設定を変更する。ここで相手キャラクタの情報は、例えば相手キャラクタの能力パラメータやステータスパラメータなどである。また判定エリアの設定は、判定エリアの大きさ(面積、体積)や、判定エリアに対応づけられたヒット演算処理やキャラクタ制御処理の内容である。
【0060】
例えば相手キャラクタの能力パラメータが高い場合や、相手キャラクタのステータスが優れた状態である場合等には、判定エリアの設定を相手キャラクタ側に有利な設定(プレーヤが操作するプレーヤキャラクタ側に不利な設定)にする。例えば判定エリアの大きさを小さくして、ヒット体によるヒット対象物のヒットが難しくなるようにする。一方、相手キャラクタの能力パラメータが低い場合や、相手キャラクタのステータスが良くない状態である場合等には、判定エリアの設定を、相手キャラクタ側に不利な設定(プレーヤキャラクタ側に有利な設定)にする。例えば判定エリアの大きさを大きくして、ヒット体によるヒット対象物のヒットが容易になるようにする。
【0061】
また判定エリア設定部110は、ヒット対象物の状態に応じて、第1の判定エリア及び第2の判定エリアの少なくとも一方の設定を変更する。或いは第3の判定エリアの設定を変更する。ここでヒット対象物の状態は、例えばヒット対象物のヒットの強さ、移動速度、或いは移動方向(角度)などである。例えばヒット対象物のヒットの強さが大きい場合や、移動速度が速い場合や、移動方向が優れた方向(鋭い方向等)である場合には、判定エリアの設定を相手キャラクタ側に有利な設定にする。例えば判定エリアの大きさを小さくして、ヒット体によるヒット対象物のヒットが難しくなるようにする。一方、ヒット対象物のヒットの強さが小さい場合や、移動速度が遅い場合や、移動方向が良くない方向(浅い方向等)である場合には、判定エリアの設定を相手キャラクタ側に不利な設定にする。例えば判定エリアの大きさを大きくして、ヒット体によるヒット対象物のヒットが容易になるようにする。
【0062】
また判定エリア設定部110は、ヒット対象物のバウンド前とバウンド後で、第1の判定エリア及び第2の判定エリアの少なくとも一方の設定を変更する。或いは第3の判定エリアの設定を変更する。例えばヒット対象物が、コート等のフィールドにおいてバウンドする前においては、判定エリアの設定を、バウンド前のヒット対象物の状態を表す設定にする。例えば判定エリアの大きさを小さくして、ヒット体によるヒット対象物のヒットが難しくなるようにする。一方、ヒット対象物が、フィールドにおいてバウンドした後においては、判定エリアの設定を、バウンド後のヒット対象物の状態を表す設定にする。例えば判定エリアの大きさを大きくして、ヒット体によるヒット対象物のヒットが容易になるようにする。
【0063】
キャラクタ制御部114は、キャラクタの制御処理を行う。キャラクタはゲームに登場する人、ロボット、動物等の移動体である。具体的にはキャラクタ制御部114は、キャラクタ(モデルオブジェクト)を移動させるための演算を行う。或いはキャラクタを動作させるための演算を行う。即ち操作情報取得部101により取得された操作情報や、プログラム(移動・動作アルゴリズム)や、各種データ(モーションデータ)などに基づいて、キャラクタをオブジェクト空間内で移動させたり、キャラクタを動作(モーション、アニメーション)させる処理を行う。具体的には、キャラクタの移動情報(位置、回転角度、速度、或いは加速度)や動作情報(パーツオブジェクトの位置、或いは回転角度)を、1フレーム(1/60秒)毎に順次求めるシミュレーション処理を行う。なおフレームは、移動・動作処理(シミュレーション処理)や画像生成処理を行う時間の単位である。
【0064】
例えばキャラクタ制御部114は、モーション記憶部174に記憶されるモーションデータに基づいて、キャラクタのモーション処理(モーション生成、モーション再生)を行う。具体的には、キャラクタ(スケルトン)を構成する各部位オブジェクト(スケルトンを構成する骨)の位置又は回転角度(方向)等を含むモーションデータを、モーション記憶部174から読み出す。そして、キャラクタの各部位オブジェクト(骨)を動かすことで(スケルトン形状を変形させることで)、キャラクタを動作させる。
【0065】
そして本実施形態では、ヒット判定タイミングにおいてキャラクタが位置する判定エリアに応じて、キャラクタの制御処理を異ならせる。例えばキャラクタ制御部114は、ヒット判定タイミングにおいてキャラクタが第3の判定エリアに位置する場合には、キャラクタが第1、第2の判定エリアに位置する場合とは異なるキャラクタ制御処理を行う。具体的には、ヒット判定タイミングにおいてキャラクタが第1、第2の判定エリアに位置する場合には、第1のモーションでキャラクタを動作させる。一方、ヒット判定タイミングにおいてキャラクタが第3の判定エリアに位置する場合には、第1のモーションとは異なる第2のモーションでキャラクタを動作させる。
【0066】
またキャラクタ制御部114は、ヒット対象物の予測ヒット位置にキャラクタを移動させる制御を行う。即ち、プレーヤが操作部160により操作を行わない場合にも、ヒット対象物の予測ヒット位置を演算して、キャラクタを予測ヒット位置に自動的に移動させて、キャラクタの所持オブジェクト又は部位オブジェクトによるヒット対象物のヒット処理を行わせる。
【0067】
仮想カメラ制御部118は、オブジェクト空間内の所与(任意)の視点から見える画像を生成するための仮想カメラ(視点)の制御処理を行う。具体的には、仮想カメラの位置(X、Y、Z)又は回転角度(X、Y、Z軸回りでの回転角度)を制御する処理(視点位置、視線方向あるいは画角を制御する処理)を行う。
【0068】
画像生成部120は、処理部100で行われる種々の処理(ゲーム処理、シミュレーション処理)の結果に基づいて描画処理を行い、これにより画像を生成し、表示部190に出力する。具体的には、座標変換(ワールド座標変換、カメラ座標変換)、クリッピング処理、透視変換、或いは光源処理等のジオメトリ処理が行われ、その処理結果に基づいて、描画データ(プリミティブ面の頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等)が作成される。そして、この描画データ(プリミティブ面データ)に基づいて、透視変換後(ジオメトリ処理後)のオブジェクト(1又は複数プリミティブ面)を、描画バッファ176(フレームバッファ、ワークバッファ等のピクセル単位で画像情報を記憶できるバッファ)に描画する。これにより、オブジェクト空間内において仮想カメラ(所与の視点)から見える画像が生成される。なお描画処理は頂点シェーダ処理やピクセルシェーダ処理により実現してもよい。
【0069】
音生成部130は、処理部100で行われる種々の処理の結果に基づいて音処理を行い、BGM、効果音、又は音声などのゲーム音を生成し、音出力部192に出力する。
【0070】
2.本実施形態の手法
2.1 キャラクタの制御手法
以下、プレーヤが操作するキャラクタの制御手法の一例について図2〜図4を用いて説明する。但し、本実施形態のキャラクタの制御手法は図2〜図4に示す手法には限定されず、例えば通常のゲームコントローラの操作ボタンやアナログスティック等の操作によりキャラクタの動作や移動を制御してもよい。
【0071】
例えば図2では、プレーヤは、コントローラ200(ゲームコントローラ)を片手で所持し、あたかもテニスのラケットのようにコントローラ200を振って、スイングを行う。またゲーム装置300(画像生成システム)により生成される画像が表示される表示部190には、プレーヤが操作するキャラクタCHが映し出される。そして、プレーヤがコントローラ200を持ってスイングすると、画面上のキャラクタCHも、プレーヤのスイングに応じたスイングを行う。例えばプレーヤがフラットショットのスイングを行うと、キャラクタCHもフラットショットのスイングを行い、プレーヤがトップスピンショットやスライスショットのスイングを行うと、キャラクタCHもトップスピンショットやスライスショットのスイングを行う。そして画面上のキャラクタCHが、相手キャラクタCCが打ったボールBLを打ち返すことで、プレーヤはテニスゲームを楽しむ。
【0072】
なお、以下では本実施形態をテニスゲームに適用した場合を主に例にとり説明する。このテニスゲームの場合には、ヒット体はラケットになり、ヒット対象物はボールになる。但し、本実施形態はテニスゲーム以外のスポーツゲーム(例えば卓球、バトミントン、野球、サッカー、バレーボール等)や、スポーツゲーム以外の各種ゲーム(例えば格闘ゲーム、戦闘ゲーム、ロールプレイングゲーム等)に適用できる。
【0073】
図3(A)、図3(B)にコントローラ200の構成例を示す。図3(A)はコントローラ200を正面から見た正面図であり、図3(B)は正面向かって右側から見た右側面図である。コントローラ200は、面取りされた略四角断面を有する棒状の形状になっており、プレーヤは棒を握る要領でコントローラ200を片手で所持して操作する。
【0074】
コントローラ200の正面側(操作面側)には、方向指示キー210、Aボタン212等の各種スイッチ類(入力デバイス)が設けられている。またコントローラ200の裏面側(背面側)にはトリガボタン214が設けられている。
【0075】
コントローラ200は、撮像素子220、無線通信モジュール222、加速度センサ224、角速度センサ230を有する。またコントローラ200は、図示しないコントローラ制御部やバイブレータ(振動機構)やスピーカ等も内蔵する。コントローラ制御部は例えば制御IC(CPU、ASIC)やメモリにより構成され、コントローラ200の全体の制御や各種処理を行う。バイブレータは、コントローラ制御部からの振動制御信号にしたがって振動を発生させ、コントローラ200を把持するプレーヤの手に振動を感じさせる。スピーカは、コントローラ制御部から出力された音信号に応じた音を出力する。
【0076】
撮像素子220はCCDやCMOSセンサなどにより実現され、コントローラ200の長手方向(長軸方向)の前方の様子を撮像する。
【0077】
無線通信モジュール222は、図2のゲーム装置300(ゲーム装置本体)と無線通信(近接無線通信)を行うためのものである。例えば、方向指示キー210、Aボタン212等により入力された操作情報、撮像素子220により得られた撮像情報、加速度センサ224、角速度センサ230により得られたセンサ情報(加速度情報、角速度情報)は、無線通信モジュール222によりゲーム装置300に無線通信される。
【0078】
加速度センサ224は、ユーザがコントローラ200を動かした時(振った時)の加速度情報を検出するセンサである。例えば加速度センサ224は直交3軸方向の各加速度情報を検出する。例えば図4において、コントローラ200の長辺方向に沿って設定された座標軸をZ軸(広義には第3の座標軸)とし、Z軸に直交する座標軸をX軸、Y軸(広義には第1、第2の座標軸)としたとする。この場合には加速度センサ224は、例えばX軸方向に沿った第1の加速度情報、Y軸方向に沿った第2の加速度情報、Z軸方向に沿った第3の加速度情報を検出して、センサ情報として出力する。
【0079】
角速度センサ230は、ユーザがコントローラ200を動かした時(回転させた時)の角速度情報を検出するセンサである。例えば角速度センサ230は、直交3軸での角速度情報を検出するセンサであり、コントローラ200のX軸、Y軸、Z軸回りでの角速度情報を検出する。具体的には、図4においてX軸回りの回転角度をα、Y軸回りの回転角度をβ、Z軸回りの回転角度をγとすると、これらのα、β、γについての角速度を検出する。なおX、Y、Zの座標軸の正負の向きや、α、β、γの回転方向は、図4に限定されず適宜設定できる。また角速度センサ230は、例えば多軸角速度センシングジャイロスコープなどにより実現できる。具体的にはMEMS構造の多軸角速度センシングジャイロスコープなどにより実現できる。
【0080】
なお角速度センサ230は、コントローラ200の本体の拡張端子に接続される拡張ユニット202内に設けられているが、コントローラ200の本体内に設けてもよい。また以下では説明を簡略化するため、コントローラ本体と拡張ユニットが一体に形成されているものとして図示する。
【0081】
またコントローラ200は、プレーヤが所持(把持、取り付け)可能であり、例えば長手方向に沿った座標軸で回転可能な形状であることが望ましいが、図3(A)、図3(B)の形状(略直方体形状。長手方向に沿った切断面が略長方形形状)には限定されない。例えば図3(A)、図3(B)の形状の一部が異なる形状にしたり、コントローラ200を収納するケースを設けて使用するなどの種々の変形実施が可能である。
【0082】
2.2 判定エリアの設定
本実施形態では、ヒット対象物であるボールに対して、ヒット演算処理のための判定エリアを設定している。即ち、通常はヒット体であるラケットに対して設定される判定エリアを、ボールに対して設定し、この判定エリアを用いてヒット演算処理を行う。
【0083】
図5(A)に判定エリアの設定例を示す。図5(A)では、ボールBL(広義にはヒット対象物)を基準にして第1の判定エリアHA1が設定される。また第1の判定エリアHA1の外側に第2の判定エリアHA2が設定され、第2の判定エリアHA2の外側に第3の判定エリアHA3が設定される。図5(A)では、判定エリアHA1〜HA3は、半円形状(或いは半球形状。以下、同様)のエリアになっている。具体的にはボールBLの進行方向に対して半円形状になっている。また判定エリアHA1〜HA3は互いに重ならない排他的な領域になっている。
【0084】
なお判定エリアHA1〜HA3の形状・態様は図5(A)に限定されない。例えば図5(B)に示すように円形状(球形状)であってもよいし、楕円形状(楕円球状)であってもよい。或いは図5(C)に示すような形状であってもよい。即ち、判定エリアHA1〜HA3は、少なくともボールBLの前方(ボールの進行方向の領域)に対して重ならないように設定される領域であればよい。但し、判定エリアHA1〜HA3は、図5(A)、図5(C)の形状のように、ボールBLの後方(進行方向の逆方向の領域)には設定しないことが望ましい。即ちボールBLの後方領域を除く領域に判定エリアHA1〜HA3を設定する。このようにすれば、ボールBLがキャラクタを通過したのにもかかわらず、ヒット演算処理が行われてしまう事態を防止できる。
【0085】
また各判定エリアHA1〜HA3の幅の設定も任意である。例えば判定エリアHA1の幅(半径方向での幅)に比べて判定エリアHA2の幅を広くしたり、狭くしてもよい。また図5(A)〜図5(C)では判定エリアの設定数はHA1、HA2、HA3というように3つになっているが、2つであってもよいし、4つ以上であってもよい。また判定エリアHA1〜HA3は2次元の領域であってもよいし、3次元の領域であってもよい。
【0086】
図6は、判定エリアHA1〜HA3を用いた本実施形態のヒット演算処理を説明するための図である。例えば図2のように相手キャラクタCCがボールBLをヒットして打ち返した場合に、図6に示すようにキャラクタCHは、ボールBLの予測ヒット位置PPに自動的に移動する。即ちプレーヤが、コントローラ200(操作部)を用いて何も操作を行わなくても、ボールBLの予測ヒット位置PPが求められて、その予測ヒット位置PPにキャラクタCHが自動的に移動する。
【0087】
例えば相手キャラクタCCがボールBLをヒットすると、ヒット後のボールBLの移動状態(移動方向、移動速度等)や動作状態(回転方向、回転速度)等に基づいて、ボールBLの軌道が求められる。そして、そのボールBLの軌道に対して最短で到達する位置が、予測ヒット位置PPとして求められる。例えば図6において、ボールBLが予測ヒット位置PPに到達するまでのフレーム数と、所定速度で移動するキャラクタCHが予測ヒット位置PPに到達するまでのフレーム数とが同じフレーム数になるように、予測ヒット位置PPが求められる。そしてキャラクタCHは、この予測ヒット位置PPの方向へと所定速度で移動し、予測ヒット位置PPに到達した時に、例えばテークバック等を行って、ボールBLのヒット動作の準備が整った状態になるようにする。
【0088】
そして本実施形態では、キャラクタCHが予測ヒット位置PPに到達して、ヒット判定タイミングになると、キャラクタCHがHA1〜HA3のいずれの判定エリアに位置するのかを判定する。例えば、予測ヒット位置PPに到達したキャラクタCHがテークバック動作等を行い、ボールBLをヒットする準備が整った状態になると、キャラクタCHの位置(代表位置、所持オブジェクトや部位オブジェクトの位置)が、HA1〜HA3のいずれの判定エリアに属するのかを判定する。そしてヒット判定タイミングにおいてキャラクタCHが判定エリアHA1に位置する場合には、第1のヒット演算処理(例えばボールに対する第1の制御処理)を行い、判定エリアHA2に位置する場合には、第1のヒット演算処理とは異なる第2のヒット演算処理(例えばボールに対する第2の制御処理)を行う。またヒット判定タイミングにおいてキャラクタCHが判定エリアHA3に位置する場合には、判定エリアHA1、HA2に位置する場合とは異なるキャラクタ制御処理(モーション処理)を行う。
【0089】
図7に、各判定エリアにおいて行われるヒット演算処理(ボールの制御処理)、キャラクタ制御処理の一例を示す。図7に示すように判定エリアHA1はファインエリアに設定され、判定エリアHA2はブレエリアに設定され、判定エリアHA3は横っ飛びエリアに設定される。
【0090】
そしてキャラクタが、ヒット判定タイミングにおいてファインエリアである判定エリアHA1に位置すると判定されると、ボールのヒットの強さが強くなり、ヒット後のボールの移動速度(ヒット速度)が速くなり、ヒット後のボールの移動方向が鋭い角度になるように設定される。従って、この設定の状態でキャラクタがボールを打ち返すと、ボールは強くヒットされ、ヒット後のボールは速い速度で移動すると共に鋭い角度(アングルショット)で移動するようになる。なお、判定エリアHA1に位置する場合には、キャラクタのモーション(制御処理)は通常のモーションに設定される。
【0091】
このように、ヒット判定タイミング(テークバック動作やヒット動作のタイミング)においてキャラクタが判定エリアHA1に位置する場合には、プレーヤ側に有利になるボールの制御処理(広義にはヒット演算処理)が行われる。例えば、ボールが強くヒットされることで、相手キャラクタは、ボールを上手く打ち返すことが困難になる。またボールが速い速度や鋭い角度で飛ぶことで、相手キャラクタがボールに追いつくのが難しくなる。即ち、プレーヤが、ファインエリアである判定エリアHA1にキャラクタが位置する時に、テークバック動作やボールBLのヒット動作を行い、そのタイミングがヒット判定タイミングになることで、ボールは、強く・速く・鋭い角度でショットされるため、ゲームがプレーヤにとって優位に進むようになる。
【0092】
一方、キャラクタが、ヒット判定タイミングにおいてブレエリアである判定エリアHA2に位置すると判定されると、ボールのヒットの強さが弱くなり、ヒット後のボールの移動速度が遅くなり、ヒット後のボールの移動方向は浅い角度になるように設定される。従って、この設定の状態でキャラクタがボールを打ち返すと、ボールは弱くヒットされ、ヒット後のボールは遅い速度で移動すると共に浅い角度で移動するようになる。なお、この時に、キャラクタのモーション(制御処理)は通常のモーションに設定される。
【0093】
このように、ヒット判定タイミングにおいてキャラクタが判定エリアHA2に位置する場合には、判定エリアHA1に位置する場合に比べて、プレーヤ側に不利になるボールの制御処理が行われる。例えば、ボールが弱くヒットされることで、相手キャラクタは、ボールを容易に打ち返すことが可能になる。またボールが遅い速度や浅い角度で飛ぶことで、相手キャラクタはボールに容易に追いつけるようになる。
【0094】
また、キャラクタが、ヒット判定タイミングにおいて横っ飛びエリアである判定エリアHA3に位置すると判定されると、ボールの制御処理については、判定エリアHA2と同等になる。或いは、判定エリアHA2に比べてプレーヤキャラクタにとって更に不利な設定にしてもよい。
【0095】
一方、判定エリアHA3にキャラクタが位置すると判定されると、キャラクタのモーションは、通常モーション(広義には第1のモーション)から横っ飛びモーション(広義には第2のモーション)に切り替えられる。この横っ飛びモーションでは、ボールに追いついて打ち返した後に、キャラクタが通常の態勢に戻るまでの時間が長くなる。従って、その後に相手キャラクタがボールを打ち返して来た場合には、横っ飛びモーション後のキャラクタがそのボールをヒットするのが難しくなる。
【0096】
このように、ヒット判定タイミングにおいてキャラクタが判定エリアHA3に位置する場合には、判定エリアHA2に位置する場合に比べて、プレーヤ側に更に不利になるキャラクタ制御処理が行われるようになる。
【0097】
なお図8(A)は、ヒット後のボールBLの移動方向を説明する図である。ヒット判定タイミングにおいてキャラクタが判定エリアHA1に位置する場合には、DR1に示すようにボールは鋭い角度(アングルショット)で飛ぶようになり、相手キャラクタがボールを打ち返すのが難しくなる。一方、ヒット判定タイミングにいてキャラクタが判定エリアHA2に位置する場合には、DR2に示すようにボールは浅い角度で飛ぶようになり、相手キャラクタはボールを容易に打ち返すことが可能になる。
【0098】
図8(B)、図8(C)は、キャラクタの横っ飛びモーションを説明する図である。ヒット判定タイミングにおいてキャラクタが判定エリアHA3に位置する場合には、キャラクタは図8(B)、図8(C)に示すような横っ飛びモーションを行う。従って、ボールをヒットした後、キャラクタが元の態勢に戻るまでに長い時間を要するようになり、その後に相手キャラクタにより打ち返されてきたボールをヒットすることが難しくなる。
【0099】
以上のように本実施形態では、通常ならばラケット等のヒット体に対して設定されるヒット演算処理の判定エリアを、ボール等のヒット対象物に設定している。そしてプレーヤがヒット動作の準備動作(テークバック)やヒット動作を行ったヒット判定タイミングにおいて、キャラクタがHA1〜HA3のいずれの判定エリアに位置するかに応じて、ボールの制御処理(ヒット演算処理)やキャラクタの制御処理を異ならせている。このようにすれば、図6に示すようにキャラクタが予測ヒット位置に自動移動するシステムにおいて好適なヒット演算処理を提供できるようになる。また後述するように、ボールを打った相手キャラクタの情報や、ボールの状態を反映させたヒット演算処理も容易に実現できるようになる。
【0100】
2.3 判定エリアの設定変更
本実施形態では、相手キャラクタの情報やボールの状態に応じて、判定エリアHA1〜HA3の設定を変更する処理を行っている。
【0101】
例えば図9(A)は、ボールを打った相手キャラクタの能力が低い場合(ステータスが悪い状態の場合)の判定エリアHA1〜HA3の設定例である。一方、図9(B)は、相手キャラクタの能力が高い場合(ステータスが良い状態の場合)の判定エリアHA1〜HA3の設定例である。
【0102】
図9(A)に示すように、ボールを打った相手キャラクタの能力が低い場合には、判定エリアHA1〜HA3の大きさ(面積、体積)が大きくなる。例えばファインエリアである判定エリアHA1が大きくなることで、キャラクタは、強く・速く・鋭い角度でボールをショットできるようになり、プレーヤにとって有利になる。また横っ飛びエリアである判定エリアHA3が大きくなることで、横っ飛びでボールをショットできる範囲が広くなるため、プレーヤにとって有利になる。なおHA1〜HA3のいずれか1つの判定エリアのみを大きくしたり、判定エリアの大きさの増加率をHA1〜HA3で異ならせるなどの種々の変形実施が可能である。
【0103】
図9(B)に示すように、ボールを打った相手キャラクタの能力が高い場合には、判定エリアHA1〜HA3の大きさが小さくなる。例えばファインエリアである判定エリアHA1が小さくなることで、キャラクタがショットしたボールは、弱く・遅く・浅い角度で飛ぶようになり、プレーヤにとって不利になる。また横っ飛びエリアである判定エリアHA3が小さくなることで、横っ飛びでボールをショットできる範囲が狭くなるため、プレーヤにとって不利になる。なおHA1〜HA3のいずれか1つの判定エリアのみを小さくしたり、判定エリアの大きさの減少率をHA1〜HA3で異ならせるなどの種々の変形実施が可能である。
【0104】
以上のように相手キャラクタの能力等の情報に基づいて、判定エリアの設定を変更すれば、ゲームの有利、不利の設定を容易に実現できるようになる。またプレーヤが対戦する相手キャラクタが変わった場合にも、その相手キャラクタの情報に基づいて、判定エリアの設定が自動的に変更される。従って、ゲームの有利、不利の設定も自動的に調整されるようになるため、有利、不利の設定に関するゲーム調整を容易化できる。
【0105】
また本実施形態では、ボール(ヒット対象物)の状態に応じて、判定エリアの設定を変更してもよい。例えば図10(A)に示すようなボールのバウンド前とバウンド後で、判定エリアの設定を変更する。
【0106】
例えば図10(B)は、ボールのバウンド前の判定エリアHA1〜HA3の設定例である。ボールのバウンド前は、例えば判定エリアHA1〜HA3の大きさが小さくなる。従って、ボールのバウンド前のノーバウンドの状態では、キャラクタがボールをヒットするのが難しくなる。
【0107】
一方、図10(C)は、ボールのバウンド後の判定エリアHA1〜HA3の設定例である。ボールのバウンド後は、例えば判定エリアHA1〜HA3の大きさが大きくなる。従って、ボールのバウンド後は、キャラクタがボールをヒットするのが容易になる。
【0108】
このようにすれば、ボールのバウンド前とバウンド後とで判定エリアHA1〜HA3の大きさ等を変更するという簡素な処理で、ボールがバウンドしたか否かを反映させたヒット演算処理を実現できるようになる。
【0109】
なお、ボールの状態に応じた判定エリアの設定の変更処理は図10(A)〜図10(C)に限定されない。例えばボール(ヒット対象物)が相手キャラクタによりヒットされた時のボールの状態に応じて、判定エリアの設定を変更してもよい。例えば相手キャラクタによりヒットされた時のボールのヒットの強さ、ボールの移動速度、或いはボールの移動方向に基づいて、判定エリアの設定を変更してもよい。
【0110】
例えば相手キャラクタが、ボールを強く・速く・鋭い角度でヒットした場合には、判定エリアHA1〜HA3の大きさを小さくする。これにより、相手キャラクタが有利になり、プレーヤが不利になるゲーム設定が可能になる。一方、相手キャラクタが、ボールを弱く・遅く・浅い角度でヒットした場合には、判定エリアHA1〜HA3の大きさを大きくする。これにより、相手キャラクタが不利になり、プレーヤが有利になるゲーム設定が可能になる。
【0111】
また判定エリアの設定の変更処理は、判定エリアの大きさの変更には限定されない。例えば図7で説明したような各判定エリアに設定されるヒット演算処理(ボール制御処理)やキャラクタ制御処理の内容自体を変更するようにしてもよい。
【0112】
2.4 詳細な処理
次に本実施形態の詳細な処理例について図11のフローチャートを用いて説明する。
【0113】
まず、相手キャラクタがボールをヒットしたか否かを判定する(ステップS21)。そして相手キャラクタがボールをヒットした場合には、図9(A)〜図10(C)で説明したように、相手キャラクタの情報(能力、ステータス等)とボールの状態(強さ、速度等)に基づいて、ボールの判定エリアを設定する(ステップS22)。
【0114】
次に、ボールの軌道を決定する(ステップS23)。そして、図6で説明したように、ボールの軌道に基づいて、ボールの予測ヒット位置を求め、求められた予測ヒット位置にキャラクタを移動させる(ステップS24、S25)。
【0115】
次に、コントローラの操作情報に基づいて、ヒット判定タイミングを特定する(ステップS26)。例えばキャラクタがテークバックを行うタイミング(或いはボールをヒットするタイミング)を特定する。そして、ヒット判定タイミング(テークバックのタイミング)においてキャラクタ(代表位置等)が位置する判定エリアを特定する(ステップS27)。
【0116】
そして図7で説明したように、キャラクタが判定エリアHA1に位置する場合にはファインショットの処理を行う(ステップS28)。即ちボールのヒットの強さを強くし、ヒット速度を速くし、ヒット方向を鋭い角度に設定する。また判定エリアHA2に位置する場合には、ブレショットの処理を行う(ステップS29)。即ち、ボールのヒットの強さを弱くし、ヒット速度を遅くし、ヒット方向を浅い角度に設定する。また判定エリアHA3に位置する場合には、横っ飛びショット処理を行う(ステップS30)。即ちキャラクタのモーションを横っ飛びモーションに切り替える。またボールのヒットの強さを弱くし、ヒット速度を遅くし、ヒット方向を浅い角度に設定する。
【0117】
以上のようにすることで、ボールに設定された判定エリアを用いたヒット演算処理が行われるようになり、これまでにないヒット演算処理を実現できる。
【0118】
2.5 コントローラの回転角度情報に基づくヒット演算処理
次に本実施形態のヒット演算処理の詳細例について説明する。なお本実施形態のヒット演算処理は以下に説明する処理に限定されず、種々の変形実施が可能である。
【0119】
図12(A)、図12(B)、図13に、図3(A)〜図4で説明したコントローラ200により操作されるプレーヤキャラクタCH(以下、適宜、キャラクタCHと記載)のモーション(基準モーション)の例を示す。図12(A)は基準ポジションでのキャラクタCHのモーション(姿勢)の例である。図12(B)はテークバック時のモーションの例であり、図13はボールのヒット時(インパクト時)のモーションの例である。プレーヤが、図2のようにコントローラ200を持って、テニスのラケットのようにコントローラ200を振ってスイングを行うと、画面上のキャラクタCHも、図12(A)〜図13のようにスイングを行う。ここではキャラクタCHは、フラットショットのスイングを行っている。即ち図13に示すようにボール(広義にはヒット対象物)のインパクトの瞬間では、ラケットRK(広義にはヒット体)の面は水平面(地面)に垂直な方向になっており、ラケット面にボールが直角にヒットするため、ボールは回転せずにフラットショットの軌道で飛ぶようになる。
【0120】
さて、現実世界のテニスでは、図13のようなフラットショット以外にも、トップスピンやスライスなどの各種ショットがある。例えばトップスピンショットでは、図13のフラットショットに比べて、ボールのインパクト時にラケット面の向きが下側に向き(水平面に対する角度が90度よりも小さくなり)、ボールに対して順方向の回転がかかる。一方、スライスショットでは、図13のフラットショットに比べて、ボールのインパクト時にラケット面の向きが上側に向き(水平面に対する角度が90度よりも大きくなり)、ボールに対して逆方向の回転がかかる。
【0121】
しかしながら、これまでのテニスゲームでは、このようなトップスピンやスライスなどの各種ショットを、プレーヤが違和感を感じない操作で実現することが難しかった。例えばトップスピンやスライスの打ち分けを、方向指示キーやボタンの操作で行う手法も考えられる。具体的には方向指示キーで下側を指示した場合にはトップスピンのショットになり、上側を指示した場合にはスライスショットになるようにする。しかしながら、このような操作は、現実世界でのテニスのスイングの感覚とは異なるものであり、このような操作では、実際にテニスをプレイしているというような仮想現実感をプレーヤに与えることが難しい。
【0122】
特に図2のように、プレーヤがコントローラ200をテニスラケットのようにスイングすることで、画面上のキャラクタCHがスイングしてボールBLを打ち返す場合には、このような方向指示キー等を用いたショットの打ち分けでは、プレーヤの仮想現実感を今ひとつ向上できない。即ち、コントローラ200を振る動作については、現実世界のテニスと同様であるのに、トップスピンやスライスの打ち分けは、現実世界とは異なってしまい、図2のようなゲーム操作を実現した意味が薄れてしまう。
【0123】
そこで本実施形態では、コントローラ200の所定座標軸回りでの回転角度情報、例えばZ軸(第3の座標軸)回りでの回転角度情報を取得する。そして取得された回転角度情報に基づいて、ラケットRK(広義にはヒット体)によりヒットされるボールBL(広義にはヒット対象物)の移動状態や動作状態(移動方向や回転状態)を設定するヒット演算処理を行う。
【0124】
例えば図14(A)〜図14(C)では、ラケットRKによるボールBLのヒットタイミングにおけるコントローラ200の回転角度情報に基づいて、ボールBLの移動状態や動作状態を設定している。
【0125】
具体的には図14(A)では、ヒットタイミングTHでのコントローラ200のZ軸回りでの回転角度γは、基準ポジションでの初期値を例えば0(度)とした場合に、γ=0になっている。このようにヒットタイミングTHでのZ軸回りの回転角度がγ=0である場合には、ラケットRKの面が水平面に対して垂直であると判断して、例えばフラットショットになるようにボールBLの移動方向や回転状態等を設定する。例えばボールBLが、ほぼ無回転で、比較的速い速度で、フラットショットの軌道で飛ぶように、ボールBLの移動演算処理を行う。
【0126】
一方、図14(B)では、ヒットタイミングTHでのコントローラ200の回転角度はγ=γAとなっている。従って、ラケット面と水平面のなす角度が90度よりも小さくなっており、ラケット面の向きが下向きであると判断して、例えばトップスピンショットになるようにボールBLの移動方向や回転状態等を設定する。例えばボールBLが、順方向の回転でトップスピンショットの軌道で飛ぶように、ボールBLの移動演算処理を行う。
【0127】
図14(C)では、ヒットタイミングTHでのコントローラ200の回転角度はγ=−γBとなっている。従って、ラケット面と水平面のなす角度が90度よりも大きくなっており、ラケット面の向きが上向きであると判断して、例えばスライスショットになるようにボールBLの移動方向や回転状態等を設定する。例えばボールBLが、逆方向の回転でスライスショットの軌道で飛ぶように、ボールBLの移動演算処理を行う。
【0128】
なお図14(A)〜図14(C)の各ショットの切り替えは、例えば回転角度γが属する角度範囲を判定することで実現できる。一例としては、−γ1≦γ≦γ1である場合にはフラットショットであると判断し、γ1<γ<γ2である場合にはトップスピンショットであると判断し、−γ2<γ<−γ1である場合にはスライスショットであると判断すればよい。
【0129】
図15(A)〜図15(C)では、ヒット判定期間におけるコントローラ200の回転角度情報に基づいて、ボールBLのヒット後の移動状態や動作状態を設定している。具体的にはヒット判定期間における回転角度情報の変化情報に基づいて、ボールBLのヒット後の移動状態や動作状態を設定する。例えば第1のタイミングでの回転角度情報と第2のタイミングでの回転角度情報に基づいて、ボールBLの移動状態や動作状態を設定する。
【0130】
例えば図15(A)では、ヒットタイミングTHの前の第1のタイミングTM1でのZ軸回りでの回転角度はγ=0になっており、ラケット面が水平面に対して垂直になっていると判断される。またヒットタイミングTHでは、回転角度はγ=γAとなっており、ラケット面の向きが、タイミングTM1に比べて下方向に向いていると判断される。またヒットタイミングTHの後の第2のタイミングTM2では、回転角度はγ=γB>γAとなっており、ラケット面の向きが、ヒットタイミングTHに比べて更に下方向に向いていると判断される。このように、ヒットタイミングの前後で、ラケット面の向きが下方向に変化した場合には、例えばトップスピンショットになるようにボールBLの移動方向や回転状態等を設定する。またヒットタイミング前後での回転角度の変化が大きい場合には、例えばトップスピンの回転速度(回転量)を速くしてもよい。
【0131】
また図15(B)では、ヒットタイミングTHの前の第1のタイミングTM1でのZ軸回りでの回転角度はγ=0になっており、ラケット面が水平面に対して垂直になっていると判断される。またヒットタイミングTHでは、回転角度はγ=−γAとなっており、ラケット面の向きが、タイミングTM1に比べて上方向に向いていると判断される。またヒットタイミングTHの後の第2のタイミングTM2では、回転角度はγ=−γB<−γAとなっており、ラケット面の向きが、ヒットタイミングTHに比べて更に上方向に向いていると判断される。このように、ヒットタイミングの前後で、ラケット面の向きが上方向に変化した場合には、例えばスライスショットになるようにボールBLの移動方向や回転状態等を設定する。またヒットタイミング前後での回転角度の変化が大きい場合には、スライスの回転速度(回転量)を速くしてもよい。
【0132】
また図15(C)では、タイミングTM1、TH、TM2において、ラケット面の向きが上方向に向いていると判断される。また例えばY軸回りでの回転角度β等に基づいて、ラケットRKの位置が徐々に上側に移動していると判断される。従って、この場合には、ボールBLが上方向に飛ぶロブショットになるようにボールBLの移動方向や回転状態等を設定する。
【0133】
このように、図14(A)〜図14(C)では、ヒットタイミングTHでの回転角度だけを用いているのに対して、図15(A)〜図15(C)では、ヒットタイミングTHの前後のタイミングTM1、TM2での回転角度を反映させてボールBLの移動方向や回転状態等を設定している。このようにすることで、ヒット後のボールBLの軌道を現実世界の軌道に近づけることが可能になり、プレーヤの仮想現実感を更に向上できる。また、ヒットタイミングのみならず、その前後のタイミングでのコントローラの回転角度も反映されるため、フォロースルーやテークバックでのラケット面の角度も反映させたショットが可能になる。
【0134】
図16(A)〜図16(D)に、フラット、トップスピン、スライス、ロブの各ショットの回転方向や移動方向の設定例を示す。同図に示すように、フラットやロブではボールBLはほぼ無回転で飛び、トップスピンでは順方向の回転になり、スライススピンでは逆方向の回転になる。またフラットではボールBLが水平に飛ぶのに対して、ロブでは上方向に飛ぶ。なおボールBLの回転方向や移動方向の設定は、図16(A)〜図16(D)に限定されず、種々の変形実施が可能である。例えば、順方向に回転しながら上方向に飛ぶトップスピンロブなどを再現してもよい。また、ヒット後のボールBLのショットの軌道は、ヒット時に設定された移動状態や動作状態に基づく物理シミュレーション処理を行うことで求めてもよいし、複数のショット軌道の中から、ヒット時に設定された移動状態や動作状態に応じたショット軌道を選択することで求めてもよい。
【0135】
以上のように本実施形態では、コントローラ200の所定座標軸回りでの回転角度情報を用いてヒット演算処理を実行している。このようにすれば、例えばテニスのラケット面のコントロール等を、コントローラ200の所定座標軸回りでの回転操作により実現できる。従って、従来のスポーツゲーム等では実現することが難しかった操作インターフェース環境を提供できる共に、コントローラ200の操作と、キャラクタの動きとがマッチするようになるため、プレーヤの仮想現実感を向上できる。
【0136】
例えば従来は、コントローラ200に設けられた加速度センサ224を用いて、プレーヤによりコントローラ200が振られたことを検知していた。このような加速度センサ224だけを用いる手法では、各座標軸回りでの絶対的な回転角度を正確に求めることは困難である。また加速度センサ224では、コントローラ200の長手方向に沿ったZ軸回りでの回転角度を求めることは難しい。
【0137】
これに対して本実施形態では、例えば角速度センサ230を用いてコントローラ200の各座標軸回りでの回転角度を求め、この回転角度を用いてヒット演算処理を実現している。従って、加速度センサ224だけを用いる従来の手法に比べて、よりインテリジェントで精度の高いヒット演算処理を実現できる。なおコントローラ200の各座標軸回りでの回転角度を求めるセンサとして、角速度センサ230以外のセンサを採用することも可能である。
【0138】
2.6 基準ポジション
角速度センサ230を用いた場合には、センサから得られる情報は角速度になる。従って、絶対的な回転角度を求める場合には、角速度の積算処理等を行うことになるため、回転角度の初期値を設定することが望ましい。このため本実施形態では、基準ポジション検出部108が、コントローラ200の基準ポジションを検出する。この基準ポジションは、例えばコントローラ200のX、Y、Z軸回りでの回転角度α、β、γの初期値を設定するためのポジションである。
【0139】
この基準ポジションの検出手法としては種々の手法が考えられるが、本実施形態では、コントローラ200が基準ポジションに設定されたことを知らせる所定の操作を、プレーヤが行った場合に、基準ポジションに設定されたと判断している。具体的には図17では、プレーヤは、ラケットに相当するコントローラ200を体の前側に持って、テニスと同様の基準ポジションの姿勢をとる。そしてトリガボタン214を押すことで、コントローラ200が基準ポジションに設定されたことを、ゲーム装置300側に知らせる。すると、コントローラ200の回転角度α、β、γが初期値(例えば0度)に設定される。その後、プレーヤがコントローラ200をラケットのように見なしてスイングを行うと、角速度センサ230で検出された角速度に基づいて、回転角度α、β、γが初期値から変化して、基準ポジションからの回転角度が取得される。そしてキャラクタCHが図12(A)〜図13に示すようなスイングを行って、ボールBLのショットを行う。
【0140】
このようにすれば、プレーヤは、実際のテニスと同様に、ラケットに相当するコントローラ200を体の前側に持った後に、トリガボタン214を押してスイングするという動作を繰り返すことで、相手キャラクタCCとのラリーを楽しむことができる。従って、プレーヤが違和感を感じない動作でテニスゲームを楽しむことができる。
【0141】
なお基準ポジションの検出手法は図17の手法に限定されない。例えばトリガボタン214以外のボタン等の操作で、基準ポジションであることを知らせるようにしてもよい。或いは図3(A)の撮像素子220による撮像で、表示部190に取り付けられた発光素子等を検出することで、基準ポジションを検出してもよい。例えばプレーヤが、撮像素子220を表示部190の画面側に向けた場合に基準ポジションを検出する。
【0142】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語(ヒット体、ヒット対象物等)と共に記載された用語(ラケット、ボール等)は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また、ヒット演算処理、キャラクタ制御処理等も本実施形態で説明したものに限定されず、これらと均等な手法も本発明の範囲に含まれる。また本発明は種々のゲームに適用できる。また本発明は、業務用ゲームシステム、家庭用ゲームシステム、多数のプレイヤプレーヤが参加する大型アトラクションシステム、シミュレータ、マルチメディア端末、ゲーム画像を生成するシステムボード、携帯電話等の種々の画像生成システムに適用できる。
【符号の説明】
【0143】
100 処理部、101 操作情報取得部、102 ゲーム演算部、
104 オブジェクト空間設定部、106 ヒット演算処理部、
108 基準ポジション検出部、110 判定エリア設定部、
114 キャラクタ制御部、118 仮想カメラ制御部、
120 画像生成部、130 音生成部、160 操作部、170 記憶部、
172 オブジェクトデータ記憶部、174 モーション記憶部、
176 描画バッファ、178 パラメータ記憶部、180 情報記憶媒体、
190 表示部、192 音出力部、194 補助記憶装置、196 通信部、
200 コントローラ、202 拡張ユニット、210 方向指示キー、
212 Aボタン、214 トリガボタン、220 撮像素子、
222 無線通信モジュール、224 加速度センサ、230 角速度センサ

【特許請求の範囲】
【請求項1】
キャラクタの制御処理を行うキャラクタ制御部と、
前記キャラクタが所持する所持オブジェクト又は前記キャラクタを構成する部位オブジェクトであるヒット体と、ヒット対象物とのヒット演算処理を行うヒット演算処理部と、
前記ヒット対象物の位置を基準とした第1の判定エリアと、前記第1の判定エリアの外側に設けられる第2の判定エリアを、前記ヒット対象物に対して設定する判定エリア設定部と、
画像を生成する画像生成部として、
コンピュータを機能させ、
前記ヒット演算処理部は、
ヒット判定タイミングにおいて前記キャラクタが前記第1の判定エリアに位置する場合には、第1のヒット演算処理を行い、前記ヒット判定タイミングにおいて前記キャラクタが前記第2の判定エリアに位置する場合には、前記第1のヒット演算処理とは異なる第2のヒット演算処理を行うことを特徴とするプログラム。
【請求項2】
請求項1において、
前記ヒット演算処理部は、
前記ヒット判定タイミングにおいて前記キャラクタが前記第1の判定エリアに位置する場合には、前記ヒット対象物に対して第1の制御処理を行い、前記ヒット判定タイミングにおいて前記キャラクタが前記第2の判定エリアに位置する場合には、前記ヒット対象物に対して前記第1の制御処理とは異なる第2の制御処理を行うことを特徴とするプログラム。
【請求項3】
請求項2において、
前記第1、第2の制御処理は、前記ヒット体による前記ヒット対象物のヒットの強さ、ヒット後の前記ヒット対象物の移動速度、及びヒット後の前記ヒット対象物の移動方向の少なくとも1つを制御する処理であることを特徴とするプログラム。
【請求項4】
請求項1乃至3のいずれかにおいて、
前記判定エリア設定部は、
前記ヒット対象物をヒットした相手キャラクタの情報に応じて、前記第1の判定エリア及び前記第2の判定エリアの少なくとも一方の設定を変更することを特徴とするプログラム。
【請求項5】
請求項1乃至4のいずれかにおいて、
前記判定エリア設定部は、
前記ヒット体によりヒットされる前記ヒット対象物の状態に応じて、前記第1の判定エリア及び前記第2の判定エリアの少なくとも一方の設定を変更することを特徴とするプログラム。
【請求項6】
請求項5において、
前記判定エリア設定部は、
前記ヒット対象物のバウンド前とバウンド後で、前記第1の判定エリア及び前記第2の判定エリアの少なくとも一方の設定を変更することを特徴とするプログラム。
【請求項7】
請求項1乃至6のいずれかにおいて、
前記判定エリア設定部は、
前記第2の判定エリアの外側に設けられる第3の判定エリアを、前記ヒット対象物に対して設定し、
前記キャラクタ制御部は、
前記ヒット判定タイミングにおいて前記キャラクタが前記第3の判定エリアに位置する場合には、前記第1、第2の判定エリアに位置する場合とは異なるキャラクタ制御処理を行うことを特徴とするプログラム。
【請求項8】
請求項7において、
前記キャラクタ制御部は、
前記ヒット判定タイミングにおいて前記キャラクタが前記第1、第2の判定エリアに位置する場合には、第1のモーションで前記キャラクタを動作させ、前記ヒット判定タイミングにおいて前記キャラクタが前記第3の判定エリアに位置する場合には、前記第1のモーションとは異なる第2のモーションで前記キャラクタを動作させることを特徴とするプログラム。
【請求項9】
請求項1乃至8のいずれかにおいて、
前記キャラクタ制御部は、
前記ヒット対象物の予測ヒット位置に前記キャラクタを移動させる制御を行うことを特徴とするプログラム。
【請求項10】
請求項1乃至9のいずれかにおいて、
センサを有するコントローラからのセンサ情報に基づいて、所定座標軸回りでの前記コントローラの回転角度情報を、操作情報として取得する操作情報取得部として、
コンピュータを機能させ、
前記操作情報取得部は、
前記コントローラの長軸方向に沿って設定された座標軸を第3の座標軸とし、前記第3の座標軸に直交する座標軸を第1、第2の座標軸とした場合に、前記第3の座標軸回りでの回転角度情報である第3の回転角度情報を取得し、
前記ヒット演算処理部は、
前記第3の座標軸回りでの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項11】
請求項10において、
前記ヒット演算処理部は、
前記ヒット体による前記ヒット対象物のヒットタイミングにおける前記コントローラの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項12】
請求項10又は11において、
前記ヒット演算処理部は、
ヒット判定期間における前記コントローラの前記第3の回転角度情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項13】
請求項12において、
前記ヒット演算処理部は、
前記ヒット判定期間における前記コントローラの前記第3の回転角度情報の変化情報に基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項14】
請求項13において、
前記ヒット演算処理部は、
前記ヒット判定期間の第1のタイミングにおける前記第3の回転角度情報と、前記ヒット判定期間の第2のタイミングにおける前記第3の回転角度情報とに基づいて、前記ヒット対象物のヒット後の移動方向及び回転状態の少なくとも一方を設定することを特徴とするプログラム。
【請求項15】
コンピュータ読み取り可能な情報記憶媒体であって、請求項1乃至14のいずれかに記載のプログラムを記憶したことを特徴とする情報記憶媒体。
【請求項16】
キャラクタの制御処理を行うキャラクタ制御部と、
前記キャラクタが所持する所持オブジェクト又は前記キャラクタを構成する部位オブジェクトであるヒット体と、ヒット対象物とのヒット演算処理を行うヒット演算処理部と、
前記ヒット対象物の位置を基準とした第1の判定エリアと、前記第1の判定エリアの外側に設けられる第2の判定エリアを、前記ヒット対象物に対して設定する判定エリア設定部と、
画像を生成する画像生成部とを含み、
前記ヒット演算処理部は、
ヒット判定タイミングにおいて前記キャラクタが前記第1の判定エリアに位置する場合には、第1のヒット演算処理を行い、前記ヒット判定タイミングにおいて前記キャラクタが前記第2の判定エリアに位置する場合には、前記第1のヒット演算処理とは異なる第2のヒット演算処理を行うことを特徴とする画像生成システム。

【図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

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図1】
image rotate

【図12】
image rotate

【図13】
image rotate