(57)【特許請求の範囲】
【請求項１】
オブジェクト空間における仮想カメラから見える画像を生成する処理を行うプログラムであって、
前記オブジェクト空間において、入力部の入力情報に基づき移動体を移動させる処理を行う移動処理部と、
前記仮想カメラを前記移動体の移動に追従させる制御を行う仮想カメラ制御部と、
前記オブジェクト空間内でエフェクトを発生させるための所定条件を満たしたか否かを判断する判断部と、
前記所定条件を満たした場合に、前記移動体の移動速度及び移動方向に基づいて、所定期間後の前記移動体の推定位置を特定位置として算出する処理を行う算出部と、
前記オブジェクト空間において、エフェクト発生位置から前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行うエフェクトオブジェクト配置部と、
前記仮想カメラから見える画像を生成する処理を行う描画部として、コンピュータを機能させ、
前記エフェクト発生位置は、前記仮想カメラの視野範囲外の位置であり、前記所定条件が満たされた位置に基づき決定され、前記移動体の移動に応じて変化しない位置であり、
前記描画部が、前記オブジェクト空間に存在する複数の移動体のうち、第１の移動体の移動に追従する第１の仮想カメラから見える画像を生成する場合には、
前記算出部が、
前記第１の移動体の移動速度及び移動方向に基づいて、所定期間後の前記第１の移動体の推定位置を前記特定位置として算出する処理を行い、
前記描画部が、前記複数の移動体のうち、第２の移動体の移動に追従する第２の仮想カメラから見える画像を生成する場合には、
前記算出部が、
前記第２の移動体の移動速度及び移動方向に基づいて、所定期間後の前記第２の移動体の推定位置を前記特定位置として算出する処理を行うことを特徴とするプログラム。
【請求項２】
請求項１において、
前記プログラムは、第１の端末のためのプログラムであって、
前記第１の端末が第２の端末とネットワークを介して相互にエフェクト発生情報を含むデータを送受信する処理を行う通信制御部として、コンピュータを更に機能させ、
前記第１の端末の判断部が、
前記第２の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、
前記第１の端末の算出部が、
前記第１の端末で移動処理を行う前記移動体の移動速度及び移動方向に基づいて、所定期間後の前記移動体の推定位置を前記特定位置として算出する処理を行い、
前記第１の端末の前記エフェクトオブジェクト配置部が、
前記第１の端末で算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、
前記第１の端末の描画部が、
前記第１の端末で移動処理を行う前記移動体の移動に追従する仮想カメラから見える画像を生成する処理を行うことを特徴とするプログラム。
【請求項３】
オブジェクト空間における仮想カメラから見える画像を生成する処理を行うプログラムであって、
前記オブジェクト空間内でエフェクトを発生させるための所定条件を満たしたか否かを判断する判断部と、
前記所定条件を満たした場合に、前記仮想カメラの移動速度及び移動方向に基づいて、所定期間後の前記仮想カメラの推定位置を特定位置として算出する処理を行う算出部と、
前記オブジェクト空間において、エフェクト発生位置から前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行うエフェクトオブジェクト配置部と、
前記仮想カメラから見える画像を生成する処理を行う描画部として、コンピュータを機能させ、
前記エフェクト発生位置は、前記仮想カメラの視野範囲外の位置であり、前記所定条件が満たされた位置に基づき決定され、前記仮想カメラの移動に応じて変化しない位置であり、
前記描画部が複数の仮想カメラのうち、第１の仮想カメラから見える画像を生成する場合には、
前記算出部が、
前記第１の仮想カメラの移動速度及び移動方向に基づいて、所定期間後の前記第１の仮想カメラの推定位置を前記特定位置として算出する処理を行い、
前記描画部が前記複数の仮想カメラのうち、第２の仮想カメラから見える画像を生成する場合には、
前記算出部が、
前記第２の仮想カメラの移動速度及び移動方向に基づいて、所定期間後の前記第２の仮想カメラの推定位置を前記特定位置として算出する処理を行うことを特徴とするプログラム。
【請求項４】
請求項３において、
前記プログラムは、第１の端末のためのプログラムであって、
前記第１の端末が第２の端末とネットワークを介して相互にエフェクト発生情報を含むデータを送受信する処理を行う通信制御部として、コンピュータを更に機能させ、
前記第１の端末の判断部が、
前記第２の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、
前記第１の端末の算出部が、
前記所定条件を満たした場合に、前記第１の端末で制御される前記仮想カメラの移動速度及び移動方向に基づいて、所定期間後の前記仮想カメラの推定位置を前記特定位置とし
て
算出する処理を行い、
前記第１の端末の前記エフェクトオブジェクト配置部が、
前記第１の端末で算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、
前記第１の端末の描画部が、
前記第１の端末で制御される前記仮想カメラから見える画像を生成する処理を行うことを特徴とするプログラム。
【請求項５】
請求項１〜４のいずれかにおいて、
前記エフェクトオブジェクト配置部が、
前記仮想カメラの移動速度に基づいて算出された配置速度に基づいて、前記エフェクト発生位置から前記特定位置に向かって順次エフェクトオブジェクトを配置することを特徴とするプログラム。
【請求項６】
請求項１〜４のいずれかにおいて、
前記エフェクトオブジェクト配置部が、
エフェクト発生時からエフェクト終了時までの期間と前記エフェクト発生位置から前記特定位置までの距離とに基づいて算出された配置速度に基づいて、前記エフェクト発生位置から前記特定位置に向かって順次エフェクトオブジェクトを配置することを特徴とするプログラム。
【請求項７】
オブジェクト空間における仮想カメラから見える画像を生成する処理を行う第１の端末と第２の端末とが、ネットワークを介して相互にデータを送受信する処理を行うネットワークシステムであって、
各端末が、
他の端末とネットワークを介して相互にエフェクト発生情報を含むデータを送受信する処理を行う通信制御部と、
前記オブジェクト空間において、入力部の入力情報に基づき移動体を移動させる処理を行う移動処理部と、
前記仮想カメラを前記移動体の移動に追従させる制御を行う仮想カメラ制御部と、
前記オブジェクト空間内でエフェクトを発生させるための所定条件を満たしたか否かを判断する判断部と、
前記所定条件を満たした場合に、前記移動体の移動速度及び移動方向に基づいて、所定期間後の前記移動体の推定位置を特定位置として算出する処理を行う算出部と、
前記オブジェクト空間において、エフェクト発生位置から前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行うエフェクトオブジェクト配置部と、
前記仮想カメラから見える画像を生成する処理を行う描画部とを含み、
前記エフェクト発生位置は、前記仮想カメラの視野範囲外の位置であり、前記所定条件が満たされた位置に基づき決定され、前記移動体の移動に応じて変化しない位置であり、
前記第１の端末の判断部が、
前記第２の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、
前記第１の端末の算出部が、
前記第１の端末で移動処理を行う前記移動体の移動速度及び移動方向に基づいて、所定期間後の前記移動体の推定位置を前記特定位置として算出する処理を行い、
前記第１の端末の前記エフェクトオブジェクト配置部が、
前記第１の端末で算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、
前記第１の端末の描画部が、
前記第１の端末で移動処理を行う前記移動体の移動に追従する仮想カメラから見える画像を生成する処理を行い、
前記第２の端末の判断部が、
前記第１の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、
前記第２の端末の算出部が、
前記第２の端末で移動処理を行う前記移動体の移動速度及び移動方向に基づいて、所定期間後の前記移動体の推定位置を前記特定位置として算出する処理を行い、
前記第２の端末の前記エフェクトオブジェクト配置部が、
前記第２の端末で算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、
前記第２の端末の描画部が、
前記第２の端末で移動処理を行う前記移動体の移動に追従する仮想カメラから見える画像を生成する処理を行うことを特徴とするネットワークシステム。
【請求項８】
オブジェクト空間における仮想カメラから見える画像を生成する処理を行う第１の端末と第２の端末とが、ネットワークを介して相互にデータを送受信する処理を行うネットワークシステムであって、
各端末が、
他の端末とネットワークを介して相互にエフェクト発生情報を含むデータを送受信する処理を行う通信制御部と、
前記オブジェクト空間内でエフェクトを発生させるための所定条件を満たしたか否かを判断する判断部と、
前記所定条件を満たした場合に、前記仮想カメラの移動速度及び移動方向に基づいて、所定期間後の前記仮想カメラの推定位置を特定位置として算出する処理を行う算出部と、
前記オブジェクト空間において、エフェクト発生位置から前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行うエフェクトオブジェクト配置部と、
前記仮想カメラから見える画像を生成する処理を行う描画部とを含み、
前記エフェクト発生位置は、前記仮想カメラの視野範囲外の位置であり、前記所定条件が満たされた位置に基づき決定され、前記仮想カメラの移動に応じて変化しない位置であり、
前記第１の端末の判断部が、
前記第２の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、
前記第１の端末の算出部が、
前記所定条件を満たした場合に、前記第１の端末で制御される前記仮想カメラの移動速度及び移動方向に基づいて、所定期間後の前記仮想カメラの推定位置を前記特定位置として算出する処理を行い、
前記第１の端末の前記エフェクトオブジェクト配置部が、
前記第１の端末で算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、
前記第１の端末の描画部が、
前記第１の端末で制御される前記仮想カメラから見える画像を生成する処理を行い、
前記第２の端末の判断部が、
前記第１の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、
前記第２の端末の算出部が、
前記所定条件を満たした場合に、前記第２の端末で制御される前記仮想カメラの移動速度及び移動方向に基づいて、所定期間後の前記仮想カメラの推定位置を前記特定位置として算出する処理を行い、
前記第２の端末の前記エフェクトオブジェクト配置部が、
前記第２の端末で算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、
前記第２の端末の描画部が、
前記第２の端末で制御される前記仮想カメラから見える画像を生成する処理を行うことを特徴とするネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム、情報記憶媒体、端末及びネットワークシステムに関する。
【背景技術】
【０００２】
従来から、オブジェクトが配置設定されるオブジェクト空間（仮想的な３次元空間）内において仮想カメラ（所与の視点）から見える画像を生成する端末（画像生成システム、ゲーム装置、携帯端末など）が知られており、いわゆる仮想現実を体験できるものとして人気が高い。
【０００３】
例えば、プレーヤが移動体を操作して、ミサイルをターゲットオブジェクトにヒットさせてターゲットオブジェクトを撃墜させるフライトシューティングゲーム処理の場合に、ターゲットオブジェクトの移動可能な範囲を設定する従来技術がある（特許文献１の０００９、００５９、図３参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許３４７０８２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来のフライトシューティングゲーム処理では、ミサイルがターゲットオブジェクトにヒットした場合に、そのヒット位置に爆発、炎、煙などのエフェクトオブジェクトを配置して、エフェクトを表現した３次元画像を生成することが多い。
【０００６】
しかし、フライトシューティングゲームのように、移動体や仮想カメラがオブジェクト空間を移動する場合には、プレーヤはオブジェクト空間にエフェクトオブジェクトが配置されている状況を視認できないことがある。
【０００７】
例えば、ミサイルを発射時には、仮想カメラの視野範囲内にターゲットオブジェクトがあったとしても、ミサイルがターゲットオブジェクトにヒットしてエフェクトが発生したときには、移動体或いは仮想カメラが移動しているために、仮想カメラの視野範囲外にエフェクトオブジェクトがあり、その仮想カメラから見える画像を生成した場合、エフェクトオブジェクトを描画することができなくなってしまう。
【０００８】
また、エフェクト発生位置が仮想カメラの視野範囲外にあるときは、発射したミサイルがターゲットオブジェクトにヒットし、ターゲットオブジェクトが撃墜したか否かという推測すら難しくなってしまう。
【０００９】
本発明は、上記課題に鑑みたものであり、その目的は、移動体又は仮想カメラが移動する場合においても、エフェクトオブジェクトを仮想カメラの視野範囲内に配置する可能性を高め、自然なエフェクト画像を生成することが可能なプログラム、情報記憶媒体、端末及びネットワークシステムを提供することにある。
【課題を解決するための手段】
【００１０】
（１）本発明は、オブジェクト空間における仮想カメラから見える画像を生成する処理を行うプログラムであって、前記オブジェクト空間において、入力部の入力情報に基づき移動体を移動させる処理を行う移動処理部と、前記仮想カメラを前記移動体の移動に追従させる制御を行う仮想カメラ制御部と、前記オブジェクト空間内でエフェクトを発生させるための所定条件を満たしたか否かを判断する判断部と、前記所定条件を満たした場合に、前記移動体の移動情報に基づいて、特定位置を算出する処理を行う算出部と、前記オブジェクト空間において、エフェクト発生位置から前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行うエフェクトオブジェクト配置部と、前記仮想カメラから見える画像を生成する処理を行う描画部として、コンピュータを機能させるプログラムに関する。また、本発明は、上記プログラムを記憶した情報記憶媒体、上記各部として構成する端末に関係する。
【００１１】
本発明によれば、移動体の移動情報に基づいて算出される特定位置に向かって、エフェクトオブジェクトが配置されるので、エフェクトオブジェクトを視野範囲内に配置させる可能性を高くすることができる。また、エフェクトオブジェクトがエフェクト発生位置から特定位置に向かって配置されるので、プレーヤはエフェクト発生位置を推測することができる。例えば、画面右側から黒煙などのエフェクトが見える場合には、移動体の移動に追従する仮想カメラの右側において、エフェクトが発生したことをプレーヤは推測することができる。
【００１２】
（２）また、本発明のプログラム、情報記憶媒体及び端末は、前記算出部が、前記移動体の移動速度及び移動方向に基づいて、前記特定位置を算出するようにしてもよい。本発明によれば、エフェクトオブジェクトを視野範囲内に配置させる可能性を高くすることができる。
【００１３】
（３）また、本発明のプログラム、情報記憶媒体及び端末は、前記算出部が、前記移動体の移動速度及び移動方向に基づいて、所定期間後の前記移動体の位置を推定し、推定された位置を前記特定位置とするようにしてもよい。本発明によれば、エフェクトオブジェクトを視野範囲内に配置させる可能性を高くすることができる。
【００１４】
（４）また、本発明のプログラム、情報記憶媒体及び端末は、前記描画部が、前記オブジェクト空間に存在する複数の移動体のうち、特定の移動体の移動に追従する仮想カメラから見える画像を生成する場合には、前記算出部が、前記特定の移動体の移動情報に基づいて、特定位置を算出する処理を行い、前記エフェクトオブジェクト配置部が、前記特定の移動体の移動情報に基づいて算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行うようにしてもよい。本発明によれば、複数の移動体が存在する場合において特定の移動体の移動に追従する仮想カメラに基づいて画像を生成する場合には、特定の移動体以外の移動体の移動情報に左右されることなく、その特定の移動体の移動情報に基づくエフェクトオブジェクトの配置を行うことができる。
【００１５】
（５）また、本発明のプログラム、情報記憶媒体及び端末は、第１の端末のためのプログラム、第１の端末のプログラムを記憶した情報記憶媒体及び第１の端末であって、前記第１の端末が第２の端末とネットワークを介して相互にエフェクト発生情報を含むデータを送受信する処理を行う通信制御部として、コンピュータを更に機能させ、前記第１の端末の判断部が、前記第２の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、前記第１の端末の算出部が、前記１の端末で移動処理を行う前記移動体の移動情報に基づいて、特定位置を算出する処理を行い、前記第１の端末の前記エフェクトオブジェクト配置部が、前記第１の端末で移動処理を行う前記移動体の移動情報に基づいて算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、前記第１の端末の描画部が、前記第１の端末で移動処理を行う前記移動体の移動に追従する仮想カメラから見える画像を生成する処理を行うようにしてもよい。本発明によれば、第１の端末が独立して、特定位置を算出してその特定位置に向かってエフェクトオブジェクトを配置する処理を行うので、第２の端末の処理の影響を受けずにエフェクトオブジェクトを配置することができる。
【００１６】
（６）本発明は、オブジェクト空間における仮想カメラから見える画像を生成する処理を行うプログラムであって、前記オブジェクト空間内でエフェクトを発生させるための所定条件を満たしたか否かを判断する判断部と、前記所定条件を満たした場合に、前記仮想カメラの移動情報に基づいて、特定位置を算出する処理を行う算出部と、前記オブジェクト空間において、エフェクト発生位置から特定位置に向かって、エフェクトオブジェクトを配置する処理を行うエフェクトオブジェクト配置部と、前記仮想カメラから見える画像を生成する処理を行う描画部として、コンピュータを機能させるプログラムに関する。また、本発明は、上記プログラムを記憶した情報記憶媒体、上記各部として構成する端末に関係する。
【００１７】
本発明によれば、仮想カメラの移動情報に基づいて算出される特定位置に向かって、エフェクトオブジェクトが配置されるので、エフェクトオブジェクトを視野範囲内に配置させる可能性を高くすることができる。また、エフェクトオブジェクトがエフェクト発生位置から特定位置に向かって配置されるので、プレーヤはエフェクト発生位置を推測することができる。例えば、画面右側から黒煙などのエフェクトが見える場合には、仮想カメラに対して右側において、エフェクトが発生したことをプレーヤは推測することができる。
【００１８】
（７）また、本発明のプログラム、情報記憶媒体及び端末は、前記算出部が、前記仮想カメラの移動速度及び移動方向に基づいて、前記特定位置を算出するようにしてもよい。本発明によれば、エフェクトオブジェクトを視野範囲内に配置させる可能性を高くすることができる。
【００１９】
（８）また、本発明のプログラム、情報記憶媒体及び端末は、前記算出部が、前記仮想カメラの移動速度及び移動方向に基づいて、所定期間後の前記仮想カメラの位置を推定し、推定された位置を前記特定位置とするようにしてもよい。本発明によれば、エフェクトオブジェクトを視野範囲内に配置させる可能性を高くすることができる。
【００２０】
（９）また、本発明のプログラム、情報記憶媒体及び端末は、前記描画部が複数の仮想カメラのうち、いずれかの仮想カメラから見える画像を生成する場合には、前記算出部が、前記画像生成で用いられる仮想カメラの移動情報に基づいて、特定位置を算出し、前記エフェクトオブジェクト配置部が、前記画像生成で用いられる仮想カメラの移動情報に基づいて算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行うようにしてもよい。
【００２１】
本発明によれば、複数の仮想カメラが存在する場合には、画像生成で用いられる仮想カメラの移動情報に基づいて特定位置を算出するので、その仮想カメラの移動情報に基づくエフェクトオブジェクトの配置を行うことができる。
【００２２】
（１０）また、本発明のプログラム、情報記憶媒体及び端末は、第１の端末のためのプログラム、第１の端末のためのプログラムを記憶した情報記憶媒体及び第１の端末であって、前記第１の端末が第２の端末とネットワークを介して相互にエフェクト発生情報を含むデータを送受信する処理を行う通信制御部として、コンピュータを更に機能させ、前記第１の端末の判断部が、前記第２の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、前記第１の端末の算出部が、前記所定条件を満たした場合に、前記１の端末で制御される前記仮想カメラの移動情報に基づいて、特定位置を算出する処理を行い、前記第１の端末の前記エフェクトオブジェクト配置部が、前記１の端末で制御される前記仮想カメラの移動情報に基づいて算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、前記第１の端末の描画部が、前記１の端末で制御される前記仮想カメラから見える画像を生成する処理を行うようにしてもよい。本発明によれば、第１の端末が独立して、特定位置を算出してその特定位置に向かってエフェクトオブジェクトを配置する処理を行うので、第２の端末の処理の影響を受けずにエフェクトオブジェクトを配置することができる。
【００２３】
（１１）また、本発明は、オブジェクト空間における仮想カメラから見える画像を生成する処理を行う第１の端末と第２の端末とが、ネットワークを介して相互にデータを送受信する処理を行うネットワークシステムであって、各端末が、他の端末とネットワークを介して相互にエフェクト発生情報を含むデータを送受信する処理を行う通信制御部と、前記オブジェクト空間において、入力部の入力情報に基づき移動体を移動させる処理を行う移動処理部と、前記仮想カメラを前記移動体の移動に追従させる制御を行う仮想カメラ制御部と、前記オブジェクト空間内でエフェクトを発生させるための所定条件を満たしたか否かを判断する判断部と、前記所定条件を満たした場合に、前記移動体の移動情報に基づいて、特定位置を算出する処理を行う算出部と、前記オブジェクト空間において、エフェクト発生位置から前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行うエフェクトオブジェクト配置部と、前記仮想カメラから見える画像を生成する処理を行う描画部とを含み、前記第１の端末の判断部が、前記第２の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、前記第１の端末の算出部が、前記１の端末で移動処理を行う前記移動体の移動情報に基づいて、特定位置を算出する処理を行い、前記第１の端末の前記エフェクトオブジェクト配置部が、前記第１の端末で移動処理を行う前記移動体の移動情報に基づいて算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、前記第１の端末の描画部が、前記第１の端末で移動処理を行う前記移動体の移動に追従する仮想カメラから見える画像を生成する処理を行うネットワークシステムに関する。本発明によれば、各端末が独立して、特定位置を算出してその特定位置に向かってエフェクトオブジェクトを配置する処理を行うので、各端末が他の端末の影響を受けずにエフェクトオブジェクトを配置することができる。
【００２４】
（１２）また、本発明は、オブジェクト空間における仮想カメラから見える画像を生成する処理を行う第１の端末と第２の端末とが、ネットワークを介して相互にデータを送受信する処理を行うネットワークシステムであって、各端末が、他の端末とネットワークを介して相互にエフェクト発生情報を含むデータを送受信する処理を行う通信制御部と、前記オブジェクト空間内でエフェクトを発生させるための所定条件を満たしたか否かを判断する判断部と、前記所定条件を満たした場合に、前記仮想カメラの移動情報に基づいて、特定位置を算出する処理を行う算出部と、前記オブジェクト空間において、エフェクト発生位置から特定位置に向かって、エフェクトオブジェクトを配置する処理を行うエフェクトオブジェクト配置部と、前記仮想カメラから見える画像を生成する処理を行う描画部とを含み、前記第１の端末の判断部が、前記第２の端末から、エフェクト発生情報を受信した場合には、前記所定条件を満たしたと判断する処理を行い、前記第１の端末の算出部が、前記所定条件を満たした場合に、前記１の端末で制御される前記仮想カメラの移動情報に基づいて、特定位置を算出する処理を行い、前記第１の端末の前記エフェクトオブジェクト配置部が、前記１の端末で制御される前記仮想カメラの移動情報に基づいて算出された前記特定位置に向かって、エフェクトオブジェクトを配置する処理を行い、前記第１の端末の描画部が、前記１の端末で制御される前記仮想カメラから見える画像を生成する処理を行うことをネットワークシステムに関する。本発明によれば、各端末が独立して、特定位置を算出してその特定位置に向かってエフェクトオブジェクトを配置する処理を行うので、各端末が他の端末の影響を受けずにエフェクトオブジェクトを配置することができる。
【図面の簡単な説明】
【００２５】
【図１】図１は、本実施形態の端末の構成の一例である。
【図２】図２は、オブジェクトデータの説明図。
【図３】図３（Ａ）〜（Ｃ）は、仮想カメラ制御の説明図。
【図４】図４は、スケーリング対象のオブジェクトと、スケーリング対象外のオブジェクトをワールド座標系に配置する例。
【図５】図５は、本実施形態において倍率を算出する手法を説明するための図。
【図６（Ａ）】図６（Ａ）は、スケーリング処理を行わずに画像を生成する例。
【図６（Ｂ）】図６（Ｂ）は、スケーリング処理を行って画像を生成する例。
【図７（Ａ）】図７（Ａ）は、スケーリング処理を行わずに画像を生成する例。
【図７（Ｂ）】図７（Ｂ）は、スケーリング処理を行って画像を生成する例。
【図８】図８（Ａ）（Ｂ）は、倍率が変化する値域を説明するための図。
【図９】図９は、遠近感に矛盾が生じる場合を説明するための図。
【図１０】図１０は、補正処理の説明図。
【図１１】図１１は、補正処理の説明図。
【図１２】図１２は、スケーリング処理のフローチャート図。
【図１３】図１３（Ａ）〜（Ｃ）は、エフェクト発生を説明するための図。
【図１４】図１４（Ａ）〜（Ｃ）は、エフェクトオブジェクトを配置する処理の説明図。
【図１５】図１５（Ａ）〜（Ｃ）は、エフェクトオブジェクトを配置する処理の説明図。
【図１６】図１６は、エフェクトオブジェクトを配置する処理の説明図。
【図１７（Ａ）】図１７（Ａ）は、エフェクトオブジェクトを配置する処理の説明図。
【図１７（Ｂ）】図１７（Ｂ）は、エフェクトオブジェクトを配置する処理の説明図。
【図１７（Ｃ）】図１７（Ｃ）は、エフェクトオブジェクトを配置する処理の説明図。
【図１８】図１８（Ａ）（Ｂ）は、エフェクトオブジェクトを配置する処理の説明図。
【図１９】図１９（Ａ）〜（Ｃ）は、エフェクトオブジェクトを配置する処理の説明図。
【図２０】図２０は、本実施形態のネットワークシステムの一例を示す図。
【図２１】図２１は、本実施形態のネットワークシステムの一例を示す図。
【図２２】図２２は、本実施形態のエフェクトオブジェクトを配置する処理のフローチャート。
【発明を実施するための形態】
【００２６】
以下、本実施形態について説明する。なお、以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではない。また本実施形態で説明される構成の全てが、本発明の必須構成要件であるとは限らない。
【００２７】
１．構成
図１に本実施形態の端末（画像生成装置、ゲーム装置、携帯電話、携帯端末、携帯型ゲーム装置）の機能ブロック図の例を示す。なお本実施形態の端末は図１の構成要素（各部）の一部を省略した構成としてもよい。
【００２８】
入力部１６０は、プレーヤ（操作者）からの入力情報を入力するための入力機器（コントローラ）であり、プレーヤの入力情報を処理部に出力する。本実施形態の入力部１６０は、プレーヤの入力情報（入力信号）を検出する検出部１６２を備える。入力部１６０は、例えば、レバー、ボタン、ステアリング、マイク、タッチパネル型ディスプレイなどがある。また、入力部１６０は、振動信号に基づいて振動させる処理を行う振動部を備えていてもよい。
【００２９】
また、入力部１６０は、３軸の加速度を検出する加速度センサや、角速度を検出するジャイロセンサ、撮像部を備えた入力機器でもよい。例えば、入力部１６０は、プレーヤが把持して動かすものであってもよいし、プレーヤが身につけて動かすものであってもよい。また、入力部１６０は、プレーヤが把持する刀型コントローラや銃型コントローラ、あるいはプレーヤが身につける（プレーヤが手に装着する）グローブ型コントローラなど実際の道具を模して作られた入力機器でもよい。また入力部１６０は、入力機器と一体化されている端末（携帯電話、携帯端末、携帯型ゲーム装置）なども含まれる。
【００３０】
記憶部１７０は、処理部１００や通信部１９６などのワーク領域となるもので、その機能はＲＡＭ（ＶＲＡＭ）などにより実現できる。例えば、図２に示すように、オブジェクトデータ記憶部１７３では、オブジェクト空間に配置される、倍率が１倍のオブジェクトのモデルデータが記憶されている。
【００３１】
情報記憶媒体１８０（コンピュータにより読み取り可能な媒体）は、プログラムやデータなどを格納するものであり、その機能は、光ディスク（ＣＤ、ＤＶＤ）、光磁気ディスク（ＭＯ）、磁気ディスク、ハードディスク、磁気テープ、或いはメモリ（ＲＯＭ）などにより実現できる。処理部１００は、情報記憶媒体１８０に格納されるプログラム（データ）に基づいて本実施形態の種々の処理を行う。情報記憶媒体１８０には、本実施形態の各部としてコンピュータを機能させるためのプログラム（各部の処理をコンピュータに実行させるためのプログラム）を記憶することができる。
【００３２】
表示部１９０は、本実施形態により生成された画像を出力するものであり、その機能は、ＣＲＴ、ＬＣＤ、タッチパネル型ディスプレイ、或いはＨＭＤ（ヘッドマウントディスプレイ）などにより実現できる。
【００３３】
音出力部１９２は、本実施形態により生成された音を出力するものであり、その機能は、スピーカ、或いはヘッドフォンなどにより実現できる。
【００３４】
通信部１９６は外部（例えば他の端末、サーバ）との間で通信を行うための各種制御を行うものであり、その機能は、各種プロセッサ又は通信用ＡＳＩＣなどのハードウェアや、プログラムなどにより実現できる。
【００３５】
なお、サーバが有する情報記憶媒体や記憶部に記憶されている本実施形態の各部としてコンピュータを機能させるためのプログラムやデータを、ネットワークを介して受信し、受信したプログラムやデータを情報記憶媒体１８０や記憶部１７０に記憶してもよい。このようにプログラムやデータを受信して端末を機能させる場合も本発明の範囲内に含む。
【００３６】
処理部１００（プロセッサ）は、入力部１６０からの入力データやプログラムなどに基づいて、ゲーム処理、画像生成処理、或いは音生成処理などの処理を行う。
【００３７】
この処理部１００は記憶部１７０内の主記憶部１７１をワーク領域として各種処理を行う。処理部１００の機能は各種プロセッサ（ＣＰＵ、ＤＳＰ等）、ＡＳＩＣ（ゲートアレイ等）などのハードウェアや、プログラムにより実現できる。
【００３８】
処理部１００は、受け付け部１１０、オブジェクト配置部１１１、エフェクトオブジェクト配置部１１１ａ、移動・動作処理部１１２、移動処理部１１２ａ、倍率制御部１１３、スケーリング処理部１１４、ゲーム演算部１１５、判断部１１６、算出部１１７、仮想カメラ制御部１１８、通信制御部１１９、描画部１２０、音処理部１３０を含む。なおこれらの一部を省略する構成としてもよい。
【００３９】
受け付け部１１０は、プレーヤの入力情報を受け付ける処理を行う。例えば、自機（プレーヤの操作対象の移動体）を移動させるための移動入力情報を受け付ける処理や、自機から弾（ミサイル、機関砲）を発射させる発射入力情報を受け付ける処理を行う。
【００４０】
オブジェクト配置部１１１は、オブジェクトをオブジェクト空間に配置する処理を行う。例えば、オブジェクト配置部１１１は、自機、敵機（コンピュータプログラムに基づいて移動・動作、攻撃を行う移動体、ノンプレーヤキャラクター）の他に、建物、球場、車、樹木、柱、壁、マップ（地形）などの表示物を、オブジェクト空間に配置する処理を行う。ここでオブジェクト空間とは、仮想的なゲーム空間であり、例えば、ワールド座標系、仮想カメラ座標系のように、３次元座標（Ｘ，Ｙ，Ｚ）においてオブジェクトが配置される空間である。
【００４１】
例えば、オブジェクト配置部１１１は、ワールド座標系にオブジェクト（ポリゴン、自由曲面又はサブディビジョンサーフェスなどのプリミティブで構成されるオブジェクト）を配置する。また、例えば、ワールド座標系でのオブジェクトの位置や回転角度（向き、方向と同義）を決定し、その位置（Ｘ、Ｙ、Ｚ）にその回転角度（Ｘ、Ｙ、Ｚ軸回りでの回転角度）でオブジェクトを配置する。
【００４２】
特に、本実施形態のオブジェクト配置部１１１は、予めモデリングされた（倍率１の大きさの）オブジェクトについて、スケーリング（拡大或いは縮小）する処理を行い、スケーリングされたオブジェクトをオブジェクト空間に配置する処理を行っている。
【００４３】
例えば、オブジェクト配置部１１１は、図２に示すように、スケーリング対象のオブジェクト（例えば、スケーリングフラグが１であるオブジェクト）について、スケーリング処理を行い、スケーリングされたオブジェクト配置する処理を行う。一方、スケーリング対象でないオブジェクト（例えば、スケーリングフラグが０であるオブジェクト）については、スケーリング処理を行わずに、オブジェクトデータ記憶部１７３において記憶されているオブジェクトをそのままオブジェクト空間に配置する処理を行う。
【００４４】
エフェクトオブジェクト配置部１１１ａは、オブジェクト空間において、エフェクト発生位置から仮想カメラが追従する移動体の移動情報に基づき算出された特定位置に向かって、エフェクトオブジェクトを配置する処理を行う。例えば、移動情報とは、移動方向、移動速度、移動加速度、位置、向き（回転角度）等を含む。
【００４５】
また、エフェクトオブジェクト配置部１１１ａは、描画部１２０が、オブジェクト空間に存在する複数の移動体のうち、特定の移動体の移動に追従する仮想カメラから見える画像を生成する場合には、特定の移動体の移動情報に基づいて算出された特定位置に向かって、エフェクトオブジェクトを配置する処理を行う。
【００４６】
また、エフェクトオブジェクト配置部１１１ａは、端末（第１の端末）で移動処理を行う移動体の移動情報又は端末（第１の端末）で制御される仮想カメラの移動情報に基づいて算出された特定位置に向かって、エフェクトオブジェクトを配置する処理を行う。つまり、本実施形態では、ネットワークを介して他の端末とデータの送受信処理を行い、いわゆるマルチプレーヤオンラインゲームを行う場合には、各端末が独立してエフェクトオブジェクトの配置処理を行う。
【００４７】
また、エフェクトオブジェクト配置部１１１ａは、画像生成で用いられる仮想カメラの移動情報に基づいて算出された特定位置に向かって、エフェクトオブジェクトを配置する処理を行う。
【００４８】
なお、エフェクトオブジェクト配置部１１１ａは、スケーリング処理部１１４によってスケーリングされたエフェクトオブジェクトを、特定位置に向かって配置するようにしてもよい。
【００４９】
移動・動作処理部１１２は、オブジェクト空間にあるオブジェクトの移動・動作演算を行う。すなわち入力部１６０から受け付けた入力情報や、プログラム（移動・動作アルゴリズム）や、各種データ（モーションデータ）などに基づいて、オブジェクトをオブジェクト空間内で移動させたり、オブジェクトを動作（モーション、アニメーション）させたりする処理を行う。具体的には、オブジェクトの移動情報（移動速度、移動速度、移動加速度、位置、向きなど）や動作情報（オブジェクトを構成する各パーツの位置、或いは回転角度）を、１フレーム（１／６０秒）毎に順次求める処理を行う。なおフレームは、オブジェクトの移動・動作処理や画像生成処理を行う時間の単位である。
【００５０】
例えば、本実施形態の移動処理部１１２ａは、入力部１６０の入力情報（移動用の入力情報）に基づいて、自機を移動させる処理や、移動処理プログラムに基づいて、敵機を移動させる処理を行う。
【００５１】
なお、移動・動作処理部１１２は、他の端末とネットワークを介してデータを送受信している場合には、他の端末から受信した移動情報等のデータに基づいて、本端末のオブジェクト空間に配置される他の移動体（他の端末を操作するプレーヤの操作対象の移動体）を移動・動作させるようにしてもよい。
【００５２】
倍率制御部１１３は、所与のオブジェクトをスケーリング（拡大・縮小）するための倍率を、算出する処理を行う。つまり、倍率制御部１１３は、スケーリング対象のオブジェクト（例えば、スケーリングフラグが１であるオブジェクト）について、オブジェクトデータ記憶部１７３において記憶されているオブジェクトをスケーリングするための倍率を算出する。スケーリングする倍率は、スケーリング対象の複数のオブジェクト毎に算出する。
【００５３】
より具体的に説明すると、倍率制御部１１３は、仮想カメラの視線方向と、仮想カメラからオブジェクトに向く方向とに基づいて、倍率を算出する処理を行う。例えば、倍率制御部１１３は、仮想カメラの視線方向と、仮想カメラからオブジェクトに向く方向とのなす角が小さくなるほど、倍率を増加させる処理を行う。つまり、仮想カメラの視線方向上にオブジェクトが配置される場合には、そのオブジェクトの倍率が最も大きな値になるように倍率が制御され、仮想カメラの視線方向と、仮想カメラからオブジェクトに向く方向とがずれるほど（ずれ角度が大きいほど）倍率が小さな値になるように、そのオブジェクトの倍率を制御する。つまり、倍率制御部１１３は、オブジェクトの位置が視線方向の軸（視軸）に近いほど、倍率を増加させる処理を行う。例えば、本実施形態の倍率制御部１１３は、仮想カメラの視線方向を向くベクトルと、仮想カメラからオブジェクトに向くベクトルとの内積値に基づいて、倍率を算出する。
【００５４】
また、倍率制御部１１３は、仮想カメラからオブジェクトまでの距離に基づいて、倍率を算出してもよい。倍率制御部１１３は、仮想カメラの視点位置から、スケーリング対象のオブジェクトの位置まで距離に基づいて、そのオブジェクトの倍率を変化させるようにしてもよい。例えば、仮想カメラの視点位置からオブジェクトのまでの距離が３００以内である場合には、視点位置からオブジェクトの位置までの距離が増加する（距離が長くなる）につれて倍率を所定値域（例えば、２．０〜２．５）の最小値（例えば、２．０）から最大値（例えば、２．５）に向かって増加させる処理を行い、仮想カメラの視点位置からオブジェクトまでの距離が３００を超えると、倍率を所定値域の最大値（２．５）に設定する処理を行う。
【００５５】
なお、本実施形態の倍率制御部１１３は、オブジェクトの位置が仮想カメラの視点位置から３００以内である場合には、仮想カメラからオブジェクトまでの距離に基づいて、所定値域で変化する第１の倍率と、仮想カメラの視線方向と、仮想カメラから前記オブジェクトに向く方向とに基づいて算出された第２の倍率とに基づいて、スケーリングするための倍率を算出するようにしてもよい。
【００５６】
倍率制御部１１３は、仮想カメラの視点位置に基づいて設定された所定範囲内にオブジェクトが位置する場合には、仮想カメラとオブジェクトとの距離が減少するに従って、算出された倍率が１倍に近づくように、算出された倍率を補正する処理を行うようにしてもよい。
【００５７】
スケーリング処理部１１４は、スケーリング対象のオブジェクトについて倍率制御部１１３によって求められた倍率に基づいて、当該スケーリング対象のオブジェクトをスケーリングする処理を行う。なお、スケーリング処理部１１４は、仮想カメラの視点位置に基づいて設定された所定範囲内にオブジェクトが位置する場合には、補正された倍率に基づいて、オブジェクトをスケーリングする処理を行う。
【００５８】
ゲーム演算部１１５は、種々のゲーム処理を行う。例えば、ゲーム開始条件が満たされた場合にゲームを開始する処理、ゲームを進行させる処理、ゲーム終了条件が満たされた場合にゲームを終了する処理、最終ステージをクリアした場合にはエンディングを進行させる処理などがある。
【００５９】
本実施形態のゲーム演算部１１５は、各移動体（自機、敵機を含む）のパラメータを更新する処理を行う。例えば、各移動体の耐久値の初期値を所定値（例えば、１００）に設定し、耐久値が「０」になると、その移動体は撃墜されたものとして判定する処理を行う。例えば、自機の耐久値が「０」になると、ゲームクリアできないものと判定し、ゲームを終了させる処理を行う。一方、ゲーム中の全ての敵機の耐久値が「０」になると、ゲームクリアと判定する処理を行う。
【００６０】
判断部１１６は、オブジェクト空間内でエフェクトを発生させるための所定条件を満たしたか否かを判断する処理を行う。例えば、判断部１１６は、自機（プレーヤの操作対象の移動体）から発射されるミサイル（移動体の一例）が、敵機（移動体の一例）にヒットした場合（ヒットして耐久値０になった）には、そのヒット位置又はヒット時の敵機の位置をエフェクト発生位置として制御する。かかる場合には、エフェクトオブジェクト配置部１１１ａが、エフェクトオブジェクトをエフェクト発生位置から特定位置に向かって配置する処理を行う。
【００６１】
判断部１１６は、他の端末（第２の端末）から、エフェクト発生情報を受信した場合には、所定条件を満たしたと判断する処理を行う。例えば、他の端末から、ヒットして耐久値０になった敵機のＩＤを含むエフェクト発生情報を受信した場合には、そのＩＤに対応する敵機の位置でエフェクトを発生させるための所定条件を満たしたと判断する。
【００６２】
算出部１１７は、所定条件を満たした場合に、移動体の移動情報に基づいて、特定位置を算出する処理を行う。つまり、算出部１１７は、移動体の移動方向、移動速度、移動加速度、位置、向きの少なくとも１つを含む移動情報に基づいて、特定位置を算出する処理を行う。例えば、算出部１１７は、移動体の移動速度及び移動方向に基づいて、特定位置を算出する処理を行う。つまり、算出部１１７は、移動体の移動速度及び移動方向に基づいて、所定期間後（例えば１０秒後）の移動体の位置を推定し、推定された位置を特定位置とする。算出部１１７は、描画部１２０が、オブジェクト空間に複数の移動体のうち、特定の移動体の移動に追従する仮想カメラから見える画像を生成する場合には、その特定の移動体の移動情報に基づいて、特定位置を算出する処理を行う。また、算出部１１７は、端末（第１の端末）で移動処理を行う移動体の移動情報又は仮想カメラの移動情報に基づいて、特定位置を算出する処理を行う。
【００６３】
また、本実施形態の算出部１１７は、所定条件を満たした場合に、仮想カメラの移動情報に基づいて、特定位置を算出する処理を行うようにしてもよい。つまり、算出部１１７は、仮想カメラの移動方向、移動速度、移動加速度、位置（視点位置）、向き（視線方向）の少なくとも１つを含む移動情報に基づいて、特定位置を算出するようにしてもよい。例えば、算出部１１７は、仮想カメラの移動速度及び移動方向に基づいて、特定位置を算出する処理を行う。つまり、算出部１１７は、仮想カメラの移動速度及び移動方向に基づいて、所定期間後（１０秒後）の仮想カメラの位置を推定し、推定された位置を特定位置とする。算出部１１７は、描画部１２０が複数の仮想カメラのうち、いずれかの仮想カメラから見える画像を生成する場合には、画像生成で用いられる仮想カメラの移動情報に基づいて、特定位置を算出する。
【００６４】
仮想カメラ制御部１１８は、オブジェクト空間内の所与（任意）の視点から見える画像を生成するための仮想カメラ（視点）の制御処理を行う。具体的には、３次元の画像を生成する場合には、ワールド座標系における仮想カメラの位置（Ｘ、Ｙ、Ｚ）、回転角度（例えば、Ｘ、Ｙ、Ｚ軸の各軸の正方向からみて時計回りに回る場合における回転角度）を制御する処理を行う。要するに、仮想カメラ制御部１１８は、仮想カメラの視点位置、視線方向、画角、移動方向、移動速度の少なくとも１つを制御する処理を行う。
【００６５】
特に、本実施形態の仮想カメラ制御部１１８は、移動体の移動に追従する仮想カメラを制御する。例えば、図３（Ａ）に示すような、ＨＵＤ  Ｖｉｅｗ（一人称視点の一例）や、図３（Ｂ）に示すような、Ｃｏｃｋｐｉｔ  Ｖｉｅｗ（一人称視点の一例）、図３（Ｃ）に示す後方視点（三人称視点の一例）によって、仮想カメラを制御する。
【００６６】
例えば、仮想カメラ制御部１１８は、移動・動作処理部１１２で得られたオブジェクトの位置、向き又は速度などの移動情報に基づいて、仮想カメラを制御する。つまり、仮想カメラ制御部１１８は、ワールド座標において、移動・動作処理部１１２で処理される移動体の移動情報と仮想カメラの移動情報とが所定の関係を保つように制御する。より具体的には、ワールド座標において、移動・動作処理部１１２で処理される移動体の位置（移動体の中心点Ｐ０）と仮想カメラの位置（ＣＰ）とが所定の関係を保つように制御する。例えば、所定の距離を保つように制御する。また、移動体の移動方向及び移動速度と、仮想カメラの移動方向及び移動速度とが所定の関係性を保つように制御する。例えば、移動体の移動方向と仮想カメラの移動方向が同一の方向になるように制御したり、移動体の移動速度と仮想カメラの移動速度とが同一の速度になるように制御する。また、仮想カメラ制御部１１８は、移動体の向きと、仮想カメラの向き（視線方向）とが所定の関係を保つように仮想カメラの向き（視線方向）を制御する。例えば、移動体の向きと仮想カメラの向きとが同一の方向を向くように制御する。
【００６７】
なお、仮想カメラ制御部１１８は、仮想カメラを予め決められた向きに設定したり、予め決められた移動経路で移動させる制御を行うようにしてもよい。かかる場合には、仮想カメラの位置（移動経路）又は向きを制御するための仮想カメラデータ（記憶部１７０、情報記憶媒体１８０等に記憶されている仮想カメラデータ）に基づいて、仮想カメラを制御する。
【００６８】
また、仮想カメラ制御部１１８は、オブジェクト空間において所与の位置から見下ろすような俯瞰用仮想カメラを配置させて当該俯瞰用仮想カメラを制御するようにしてもよい。
【００６９】
また、仮想カメラ制御部１１８は、リプレイ用で画像を生成するためのリプレイ用仮想カメラをオブジェクト空間に配置させて、当該リプレイ用仮想カメラを制御するように使用してもよい。リプレイ用仮想カメラは、移動体の移動に必ずしも追従させる必要はないが、移動体の移動情報に応じて、リプレイ用仮想カメラを制御するようにしてもよい。
【００７０】
通信制御部１１９は、端末（例えば第１の端末）が他の端末（例えば第２の端末）とネットワークを介して相互にエフェクト発生情報を含むデータを送受信する処理を行う。
【００７１】
なお、本実施形態の端末では、通信制御で必要となるネットワーク情報をゲームサーバから取得し、管理する処理等を行う。例えば、端末は、各端末に個別に付与される端末の識別情報（オンラインゲームに参加できる端末を識別するために個別に付与されたデータ、ＩＤ）と、端末の識別情報に対応付けられたパケットの送信先を指定する宛先情報（ＩＰアドレスなど）とを取得し、管理する処理を行う。
【００７２】
通信制御部１１９は、他の端末（第２の端末）に送信するパケットを生成する処理、パケット送信先の端末のＩＰアドレスやポート番号を指定する処理、受信したパケットに含まれるデータを記憶部１７０に保存する処理、受信したパケットを解析する処理、その他のパケットの送受信に関する制御処理等を行う。
【００７３】
本実施形態の通信制御部１１９は、画像を描画するフレームレートに応じてパケットを生成し、接続先の他の端末に生成したパケットを送信する処理を行うようにしてもよい。
【００７４】
ここで、端末間で送受信されるデータは、入力部の入力情報としてもよいし、各移動体の位置情報としてもよい。特に、本実施形態において端末間で送受信されるデータは、撃墜を受けた敵機を特定するための情報（例えば、耐久値が０になった敵機のＩＤ等）などのエフェクト発生情報を含む。
【００７５】
また、本実施形態の通信制御部１１９は、他の端末（第２の端末）から送信されたパケットを受信すると、受信したパケットを解析し、パケットに含まれるエフェクト発生情報などのデータを記憶部に記憶する処理を行う。
【００７６】
また本実施形態の通信制御部１１９は、複数の端末間においての接続（第１の端末と第２の端末との接続）が確立されてから接続が切断されるまで、データを互いに送受信する処理を行う。
【００７７】
なお、複数の端末で構成されるネットワークシステムの場合は、複数の端末間でデータの送受信を行いながらオンラインゲームを実行するピア・ツー・ピア（いわゆるＰ２Ｐ）方式としてもよいし、特定のサービスを提供するためのサーバと端末間においてデータを送受信できるものであってもよい。また、サーバを介して各端末がデータ（情報）の送受信を行いながらオンラインゲームを実行するクライアント・サーバ方式によるものであってもよい。また、本実施形態のネットワークシステムでは、有線通信のみならず無線通信でデータを送受信してもよい。
【００７８】
描画部１２０は、処理部１００で行われる種々の処理の結果に基づいて描画処理を行い、これにより画像を生成し、表示部１９０に出力する。言い換えると、描画部１２０は、オブジェクト空間において、仮想カメラから見える画像を生成する。
【００７９】
例えば、描画部１２０は、オブジェクト（モデル）の各頂点の頂点データ（頂点の位置座標、テクスチャ座標、色データ、法線ベクトル或いはα値等）を含むオブジェクトデータ（モデルデータ）が入力され、入力されたオブジェクトデータに含まれる頂点データに基づいて、頂点処理（頂点シェーダによるシェーディング）が行われる。なお頂点処理を行うに際して、必要に応じてポリゴンを再分割するための頂点生成処理（テッセレーション、曲面分割、ポリゴン分割）を行うようにしてもよい。
【００８０】
頂点処理では、頂点処理プログラム（頂点シェーダプログラム、第１のシェーダプログラム）に従って、頂点の移動処理や、座標変換、例えばワールド座標変換、視野変換（カメラ座標変換）、クリッピング処理、透視変換（投影変換）、ビューポート変換等のジオメトリ処理が行われ、その処理結果に基づいて、オブジェクトを構成する頂点群について与えられた頂点データを変更（更新、調整）する。
【００８１】
そして、頂点処理後の頂点データに基づいてラスタライズ（走査変換）が行われ、ポリゴン（プリミティブ）の面とピクセルとが対応づけられる。そしてラスタライズに続いて、画像を構成するピクセル（表示画面を構成するフラグメント）を描画するピクセル処理（ピクセルシェーダによるシェーディング、フラグメント処理）が行われる。ピクセル処理では、ピクセル処理プログラム（ピクセルシェーダプログラム、第２のシェーダプログラム）に従って、テクスチャの読出し（テクスチャマッピング）、色データの設定／変更、半透明合成、アンチエイリアス等の各種処理を行って、画像を構成するピクセルの最終的な描画色を決定し、透視変換されたオブジェクトの描画色を画像バッファ１７２（ピクセル単位で画像情報を記憶できるバッファ。ＶＲＡＭ、レンダリングターゲット）に出力（描画）する。すなわち、ピクセル処理では、画像情報（色、法線、輝度、α値等）をピクセル単位で設定あるいは変更するパーピクセル処理を行う。これにより、オブジェクト空間内において仮想カメラ（所与の視点）から見える画像が生成される。なお、仮想カメラ（視点）が複数存在する場合には、それぞれの仮想カメラから見える画像を分割画像として１画面に表示できるように画像を生成することができる。
【００８２】
なお頂点処理やピクセル処理は、シェーディング言語によって記述されたシェーダプログラムによって、ポリゴン（プリミティブ）の描画処理をプログラム可能にするハードウェア、いわゆるプログラマブルシェーダ（頂点シェーダやピクセルシェーダ）により実現される。プログラマブルシェーダでは、頂点単位の処理やピクセル単位の処理がプログラム可能になることで描画処理内容の自由度が高く、従来のハードウェアによる固定的な描画処理に比べて表現力を大幅に向上させることができる。
【００８３】
そして描画部１２０は、オブジェクトを描画する際に、ジオメトリ処理、テクスチャマッピング、隠面消去処理、αブレンディング等を行う。
【００８４】
ジオメトリ処理では、オブジェクトに対して、座標変換、クリッピング処理、透視投影変換、或いは光源計算等の処理が行われる。そして、ジオメトリ処理後（透視投影変換後）のオブジェクトデータ（オブジェクトの頂点の位置座標、テクスチャ座標、色データ（輝度データ）、法線ベクトル、或いはα値等）は、記憶部１７０に保存される。
【００８５】
テクスチャマッピングは、記憶部１７０に記憶されるテクスチャ（テクセル値）をオブジェクトにマッピングするための処理である。具体的には、オブジェクトの頂点に設定（付与）されるテクスチャ座標等を用いて記憶部１７０からテクスチャ（色（ＲＧＢ）、α値などの表面プロパティ）を読み出す。そして、２次元の画像であるテクスチャをオブジェクトにマッピングする。この場合に、ピクセルとテクセルとを対応づける処理や、テクセルの補間としてバイリニア補間などを行う。
【００８６】
隠面消去処理としては、描画ピクセルのＺ値（奥行き情報）が格納されるＺバッファ（奥行きバッファ）を用いたＺバッファ法（奥行き比較法、Ｚテスト）による隠面消去処理を行うことができる。すなわちオブジェクトのプリミティブに対応する描画ピクセルを描画する際に、Ｚバッファに格納されるＺ値を参照する。そして参照されたＺバッファのＺ値と、プリミティブの描画ピクセルでのＺ値とを比較し、描画ピクセルでのＺ値が、仮想カメラから見て手前側となるＺ値（例えば小さなＺ値）である場合には、その描画ピクセルの描画処理を行うとともにＺバッファのＺ値を新たなＺ値に更新する。
【００８７】
αブレンディング（α合成）は、α値（Ａ値）に基づく半透明合成処理（通常αブレンディング、加算αブレンディング又は減算αブレンディング等）のことである。
【００８８】
例えば、αブレンディングでは、これから画像バッファ１７２に描画する描画色（上書きする色）Ｃ１と、既に画像バッファ１７２（レンダリングターゲット）に描画されている描画色（下地の色）Ｃ２とを、α値に基づいて線形合成処理を行う。つまり、最終的な描画色をＣとすると、Ｃ＝Ｃ１＊α＋Ｃ２＊（１−α）によって求めることができる。
【００８９】
なお、α値は、各ピクセル（テクセル、ドット）に関連づけて記憶できる情報であり、例えば色情報以外のプラスアルファの情報である。α値は、マスク情報、半透明度（透明度、不透明度と等価）、バンプ情報などとして使用できる。
【００９０】
なお、描画部１２０は、他の端末（第２の端末）とネットワークを介してデータを送受信するマルチプレーヤオンラインゲームを行う場合であっても、端末（第１の端末）で移動処理を行う移動体の移動に追従する仮想カメラ（端末（第１の端末）で制御される仮想カメラ）から見える画像を生成する処理を行う。つまり、各端末が独立した描画処理を行う。
【００９１】
音処理部１３０は、処理部１００で行われる種々の処理の結果に基づいて音処理を行い、ＢＧＭ、効果音、又は音声などのゲーム音を生成し、音出力部１９２に出力する。
【００９２】
なお、本実施形態の端末は、１人のプレーヤのみがプレイできるシングルプレーヤモード、或いは、複数のプレーヤがプレイできるマルチプレーヤモードでゲームプレイできるように制御してもよい。例えば、マルチプレーヤモードで制御する場合には、ネットワークを介して他の端末とデータを送受信してゲーム処理を行うようにしてもよいし、１つの端末が、複数の入力部からの入力情報に基づいて処理を行うようにしてもよい。
【００９３】
２．スケーリング処理
本実施形態では、シューティングゲームのための画像生成処理に関するものであり、予めモデリングされた１倍の大きさオブジェクトについて、倍率を乗算してスケーリング処理を行い、スケーリングされたオブジェクトをワールド座標系に配置する処理を行う。そして、スケーリングされたオブジェクトが配置されたオブジェクト空間において、仮想カメラから見える画像を生成する処理を行う。本実施形態では、スケーリングする倍率を１倍以上にし、オブジェクトを誇張表現して迫力、スピード感のある画像を生成する。
【００９４】
（１）スケーリング処理の詳細
まず、本実施形態においてオブジェクトデータ記憶部１７３に記憶されるオブジェクトについて説明する。本実施形態のオブジェクトデータ記憶部１７３には、モデリングされたオブジェクトを１倍として記憶している。また、図２に示すように、オブジェクトデータ記憶部１７３に、スケーリング対象となるオブジェクト、スケーリング対象とはならないオブジェクトとを、それぞれ識別して記憶する。より具体的には、スケーリング対象となるオブジェクトのスケーリングフラグを「１」とし、スケーリング対象とはならないオブジェクトのスケーリングフラグを「０」として、各オブジェクトのＩＤに対応づけて記憶する。
【００９５】
例えば、敵機ＮＰＣ（ノンプレーヤキャラクター、ターゲットオブジェクト、標的オブジェクト、移動体）、ミサイルＭＩ、エフェクトオブジェクト（爆発オブジェクト、煙オブジェクト、炎オブジェクト）などはスケーリング対象として記憶している。一方、地上物オブジェクト（木、陸地、戦車など）、プレーヤの操作対象の自機ＰＯＢ（プレーヤオブジェクト、移動体）は、スケーリング対象外のオブジェクトとして記憶する。例えば、図３（Ｃ）に示すような後方視点で画像を生成する場合には、自機ＰＯＢの倍率はスケーリング対象とならずに（倍率は１倍のままで）オブジェクト空間に配置される。
【００９６】
本実施形態では、スケーリング対象となるオブジェクト（スケーリングフラグ「１」のオブジェクト）については、そのオブジェクトの倍率を算出し、オブジェクトを構成する各ポリゴンの各頂点座標それぞれに算出された倍率を乗算することによって、オブジェクトをスケーリングする処理を行う。
【００９７】
例えば、図４に示すように、オブジェクトＯＢ１を構成する各ポリゴンの各頂点座標それぞれに２倍の倍率を乗算してスケーリング処理（拡大処理）を行い、スケーリング処理後のオブジェクトＯＢ１をワールド座標系に配置する。
【００９８】
そして、本実施形態では、スケーリング対象とはならないオブジェクト（スケーリングフラグ「０」のオブジェクト）については、オブジェクトデータ記憶部１７３に格納されているオブジェクトをそのまま（つまり、１倍の大きさのまま）ワールド座標系の配置位置に配置する。例えば、図４に示すように、オブジェクトＯＢ２については、倍率１のままで、ワールド座標系のオブジェクトＯＢ２に配置する処理を行う。
【００９９】
なお、一般的に、スケーリング処理は拡大処理又は縮小処理のことをいうが、本実施形態は、迫力やスピード感の得られる画像を生成するために拡大を目的とするスケーリング処理を行っている。
【０１００】
なお、スケーリング処理は、カメラ座標系において原点（視点位置）を中心に、オブジェクトをスケーリングする処理を行ってもよいし、オブジェクトのローカル座標系の原点を中心に、オブジェクトをスケーリングする処理を行ってもよい。また、スケーリング処理を行うことによってオブジェクトの配置位置がずれてしまう場合には、オブジェクトを、スケーリング処理前の配置位置に配置されるように補正する処理を行ってもよい。
【０１０１】
（２）仮想カメラの視線方向と、仮想カメラからオブジェクトに向く方向とに基づいて、倍率を算出する手法
図５に示すように、本実施形態では、仮想カメラＣの視線方向ＣＶと、仮想カメラＣからオブジェクトＯＢ１に向く方向ＯＶに基づいて、オブジェクトＯＢ１の倍率を算出する処理を行う。例えば、仮想カメラＣの視線方向ＣＶと、仮想カメラの視点位置ＣＰからオブジェクトＯＢ１の配置位置Ｐ１に向く方向のＯＶとのなす角度θ（０度≦θ≦９０度）が小さいほど、倍率が大きくなるように倍率を変化させる。つまり、視線方向ＣＶと、方向ＯＶとが一致する場合、つまり角度θが０度である場合には、倍率は最大値となり、視線方向ＣＶと、方向ＯＶとのなす角度θが９０度である場合には、倍率は最小の値となる。
【０１０２】
要するに、本実施形態では、オブジェクトＯＢ１の位置Ｐ１が視線方向ＣＶ軸（視軸）に近いほど、倍率を増加させる。例えば、投影面に投影されたオブジェクトの代表点と、投影面の中心点（注視点）の距離が変化（増加）するにしたがって倍率を変化（減少）させるように制御する。具体的には、投影面の中心点にオブジェクトの代表点が一致するときは、所定値域（例えば２．０〜２．５）の最大値（例えば、２．５）を倍率の値とし、投影面の中心点とオブジェクトの代表点との距離が長くなるに従い、倍率を最小値（例えば、２．０）に向かって減少させる。
【０１０３】
例えば、本実施形態では、仮想カメラＣの視線方向ＣＶの単位ベクトルＥｃと、仮想カメラの位置ＣＰからオブジェクトＯＢ１に向く方向のＯＶの単位ベクトルＥｏとの内積値ＩＰを求め、倍率を算出することができる。例えば、下式（１）によって内積値ＩＰを求める。
【０１０４】
ＩＰ＝Ｅｃ・Ｅｏ・・・（１）
そして、本実施形態では、所定の値（例えば、２）と、内積値ＩＰに０．５を乗算した値との合計値を、スケーリング処理で用いられる倍率として求める。例えば、下式（２）によって、スケーリング処理で用いられる倍率（ｓｃａｌｅ）を求める。
【０１０５】
ｓｃａｌｅ＝２＋ＩＰ＊０．５・・・（２）
つまり、視線方向ＣＶと、方向ＯＶとのなす角度θが０°≦θ≦９０°の範囲で変化すると、倍率は２〜２．５の値域で変化することになる。
【０１０６】
このようにすれば、画面中央部に近づくほどオブジェクトが２．５倍の大きさで拡大され、画面端部になるほど２倍の大きさで拡大されるような画像を生成することができる。
【０１０７】
さらに、図６（Ａ）（Ｂ）を用いて、スケーリング処理を行わない場合と、スケーリング処理を行う場合とを対比して説明する。
【０１０８】
まず、図６（Ａ）は、スケーリング処理を行わずに画像を生成する場合の例を示す。例えば、オブジェクトＯＢ１が、倍率１のまま視線方向ＣＶ上の配置位置Ｐ１１に配置されている場合、生成される画像Ｆ１においてオブジェクトＯＢ１は画面中央に表示される。そして、オブジェクトＯＢ１が、倍率１のまま視線方向ＣＶからθ１だけずれた角度の方向に移動して配置位置Ｐ１２に位置されると、生成される画像Ｆ２においてオブジェクトＯＢ１は画面右端に表示される。そして、オブジェクトＯＢ１が倍率１のまま視線方向ＣＶからθ２だけずれた角度方向に移動して配置位置Ｐ１３に位置されると仮想カメラＣの視野範囲ＣＡの外に配置されてしまうので、生成される画像Ｆ３においてオブジェクトＯＢ１は、表示されなくなる。つまり、仮想カメラＣの視野範囲（ビューボリューム、視錘台）の外にオブジェクトＯＢ１が配置されるので、画像Ｆ３においてオブジェクトは表示されなくなる。
【０１０９】
一方、図６（Ｂ）は、仮想カメラの視線方向と、仮想カメラからオブジェクトに向く方向とに基づいて倍率を算出し、算出された倍率に基づいてスケーリング処理を行い画像を生成する場合の例を示す。例えば、オブジェクトＯＢ１が、視線方向ＣＶ上の配置位置Ｐ１１に配置されている場合、オブジェクトＯＢ１は最大の倍率で（例えば、２．５倍）で拡大される。したがって、生成される画像Ｆ４においてオブジェクトＯＢ１は画面中央に拡大されて表示される。例えば、図６（Ａ）の画像Ｆ１と比較すると、より大きく画面中央に表示されることになる。
【０１１０】
そして、オブジェクトＯＢ１が、視線方向ＣＶからθ１だけずれた角度の方向に移動して配置位置Ｐ１２に位置されると、Ｐ１１に位置していたときよりも倍率が減少され、例えば、オブジェクトがＰ１２に位置している場合において生成される画像Ｆ５では、画像Ｆ４よりも小さいサイズでオブジェクトＯＢ１が画面右端に表示される。しかし、図６（Ａ）の画像Ｆ２よりも、大きくオブジェクトＯＢ１が表示される。
【０１１１】
そして、オブジェクトＯＢ１が視線方向ＣＶからθ２だけずれた角度方向に移動して配置位置Ｐ１３に位置されると、オブジェクトＯＢ１の倍率は、Ｐ１２に位置していたときよりも減少されるが、オブジェクトＯＢ１は、視野範囲外に位置するので画像Ｆ６において表示されなくなる。
【０１１２】
このように、図６（Ｂ）に示すように、仮想カメラの視線方向と、仮想カメラからオブジェクトに向く方向とに基づいて、倍率を算出してスケーリング処理を行うと、画面中央部に表示されるほどオブジェクトＯＢ１が拡大して表示される。通常、画面中央部は、プレーヤの意識が最も集中しやすい箇所である。したがって、画面端部よりも画面中央部に近づくほどオブジェクトＯＢ１を大きくした方が、オブジェクトＯＢ１の大きさの変化に抑揚をつけることができ、迫力感、スピード感のある画像を生成することができる。つまり、プレーヤがあまり意識しない画面端部では、画面中央部よりもオブジェクトＯＢ１の大きさを小さくすることで、画面中央部にオブジェクトＯＢ１が表示される際の迫力、スピード感をより増大させることができる。
【０１１３】
（３）仮想カメラとオブジェクトとの距離に応じて倍率を算出する手法
本実施形態では、仮想カメラの視点位置からスケーリング対象のオブジェクトの位置までの距離に基づいて、倍率を求めてもよい。なお、仮想カメラの視点位置からスケーリング対象のオブジェクトの位置までの距離は、仮想カメラの視点位置からオブジェクトの位置までの直線距離でもよいし、仮想カメラの視点位置から、オブジェクトまでの視線方向についての距離でもよい（カメラ座標系におけるＺ方向への距離でもよい）。
【０１１４】
例えば、仮想カメラの位置からスケーリング対象のオブジェクトの位置までの距離をＤとし、距離Ｄが０以上であってＬｍａｘ以下にあるとき（０≦Ｄ≦Ｌｍａｘ）は、仮想カメラとオブジェクトとの距離Ｄが増加するに従って、倍率を増加させるように変化させる。
【０１１５】
例えば、シューティングゲームにおける画像を生成する場合には、Ｌｍａｘは、プレーヤがターゲットオブジェクトを射撃可能な範囲の値とすることが望ましい。このようにすれば、射撃可能なターゲットオブジェクトを拡大して表示させることができ、識別し易いからである。
【０１１６】
より具体的に、図７（Ａ）（Ｂ）を用いて、スケーリング処理を行わない場合と、仮想カメラからオブジェクトまでの距離Ｄに基づいて倍率を制御してスケーリング処理を行う場合とを対比して説明する。
【０１１７】
図７（Ａ）は、スケーリング処理を行わずに画像を生成する場合の例を示す。例えば、オブジェクトＯＢ１が、倍率１のまま視線方向ＣＶ上の配置位置Ｐ１４に配置されている場合、生成される画像Ｆ７においてオブジェクトＯＢ１は画面中央に表示される。しかし、Ｐ１４が視点ＣＰからあまりに遠いところにある場合には、画像Ｆ７に示すように、表示されるオブジェクトＯＢ１は数ドットで表示されるので識別しづらいものとなっている。
【０１１８】
そして、オブジェクトＯＢ１が、倍率１のまま仮想カメラＣから相対的に遠ざかりＰ１５に位置する。すると、生成される画像Ｆ８においてオブジェクトＯＢ１は画面中央に表示されるが、数ドットで表示されたままであり、識別しづらいものとなっている。
【０１１９】
さらに、オブジェクトＯＢ１が、倍率１のまま仮想カメラＣから相対的に遠ざかりＰ１６に位置する。すると、生成される画像Ｆ９においてオブジェクトＯＢ１は画面中央に表示されるが、表示されるオブジェクトＯＢ１の大きさに変化はなく、識別しづらいものとなっている。
【０１２０】
一方、図７（Ｂ）は、仮想カメラの位置ＣＰからオブジェクトＯＢ１までの距離に基づいてスケーリング処理を行い画像を生成する場合の例を示す。例えば、オブジェクトＯＢ１が、１倍より大きな倍率（例えば、２〜２．５の値域で変化するの倍率）でスケーリングされて配置位置Ｐ１４に配置されている場合、生成される画像Ｆ１０においてオブジェクトＯＢ１は画面中央に拡大されて表示される。例えば、図７（Ａ）の画像Ｆ７と対比すると、識別し易くなる。
【０１２１】
そして、オブジェクトＯＢ１が、仮想カメラＣから相対的に遠ざかりＰ１５に位置すると、Ｐ１４に位置していたときよりも、倍率が増加するのでオブジェクトＯＢ１が拡大されてオブジェクト空間に配置される。そして、生成される画像Ｆ１１においては、オブジェクトＯＢ１は画像Ｆ１０よりも小さく表示され、オブジェクトＯＢ１が識別されつつも遠ざかっていく様子を視認できるようになる。例えば、図７（Ａ）の画像Ｆ８と比較すると、識別し易くなる。
【０１２２】
さらに、オブジェクトＯＢ１が、仮想カメラＣから相対的に遠ざかりＰ１６に位置すると、Ｐ１５に位置していたときよりも、倍率が増加するのでオブジェクトＯＢ１がさらに拡大されてオブジェクト空間に配置される。そして、生成される画像Ｆ１２において、オブジェクトＯＢ１は画像Ｆ１１よりも小さく表示され、オブジェクトＯＢ１が識別されつつも遠ざかっていく様子を視認できるようになる。例えば、図７（Ａ）の画像Ｆ９と比較すると、識別し易くなる。
【０１２３】
このように、図７（Ｂ）では、図７（Ａ）よりも、オブジェクトＯＢ１を視認し易いものとなっており、さらにオブジェクトＯＢ１が仮想カメラＣから相対的に遠ざかっていく様子を確認することができる。
【０１２４】
（４）倍率の変化
本実施形態では、仮想カメラからオブジェクトまでの距離に基づいて、倍率を変化させる場合には、その変化が緩やかになるように制御している。
【０１２５】
例えば、本実施形態では、０≦Ｄ≦Ｌｍａｘにおいて仮想カメラからオブジェクトまでの距離Ｄが増加するに従って、倍率を所定値域（２から２．５の値域）の最小値から最大値にかけて増加させる処理を行っている。このようにすれば、スケーリング処理を行っても遠近感に矛盾が生じないような画像を生成することができるからである。
【０１２６】
具体的に、図８（Ａ）、（Ｂ）を用いて説明する。例えば、図８（Ａ）は、仮想カメラの視点位置ＣＰから、スケーリング対象のオブジェクトの位置までの距離Ｄと、倍率との関係を示す。図８（Ａ）に示すように、視点位置からオブジェクトまでの距離Ｄが０のときは倍率＝２であり、０≦Ｄ≦Ｌｍａｘ（例えば、Ｌｍａｘ＝３００メートル）では、距離Ｄが増加するに従って倍率が２〜２．５の値域で増加する。
【０１２７】
仮に、図８（Ｂ）に示すように、０≦Ｄ≦Ｌｍａｘにおいて、倍率を０〜２．５の値域で変化させようとすると、倍率の変化が急になり、遠近感に矛盾が生じる画像を生成してしまうことになる。
【０１２８】
例えば、図９に示すように、オブジェクトＯＢ１がＰ１４、Ｐ１５、Ｐ１６というように、仮想カメラＣから相対的に遠ざかる場合であっても、生成される画像では、画像Ｆ１３、Ｆ１４、Ｆ１５に示すように、徐々にオブジェクトＯＢ１が大きく表示されてしまう。つまり、オブジェクト空間においては仮想カメラからオブジェクトＯＢ１が遠ざかっているにもかかわらず、生成される画像Ｆ１３、１４、１５では、仮想カメラＣは相対的に、オブジェクトＯＢ１に近づいているように表示されてしまう。
【０１２９】
そこで、本実施形態では、このような矛盾が生じないようにするために、所定値域である２〜２．５の値域で、距離Ｄの増加に応じて、倍率を増加させる処理を行い、遠近感に違和感のない画像を生成するようにしている。つまり、３次元画像を生成する処理では、透視投影変換処理でスケーリング処理（ビューボリュームを正規化するためのスケーリング処理）を行っている。つまり、透視投影変換処理に影響を及ぼさない範囲で、仮想カメラからオブジェクトまでの距離Ｄに基づいて倍率を変化させる必要がある。したがって、本実施形態では、遠近感に矛盾が生じないような画像を生成するために、これらの透視投影変換に伴うスケーリングの倍率を考慮して、０≦Ｄ≦Ｌｍａｘにおいて仮想カメラからオブジェクトまでの距離Ｄに基づいて変化させる倍率の所定値域（例えば、２．０〜２．５）を設定している。
【０１３０】
このように、仮想カメラからオブジェクトまでの距離に基づいて、スケーリングを行う際には、遠近感に違和感のない画像を生成するために、倍率の変化を緩やかにする必要がある。しかし、倍率の変化を緩やかにすると迫力やスピード感が乏しくなってしまう。本実施形態では、上述したように、仮想カメラの方向ＣＶと、仮想カメラからオブジェクトに向かう方向ＯＶとに基づいて、算出される倍率を用いてスケーリング処理を行うことで、この問題を解決できる。
【０１３１】
例えば、仮想カメラとオブジェクトとの距離に応じて算出する第１の倍率Ｋ１（２≦Ｋ１≦２．５）と、仮想カメラの方向ＣＶと、仮想カメラからオブジェクトに向かう方向ＯＶとに基づいて算出される第２の倍率Ｋ２（０≦Ｋ２≦０．５）とに基づいて、スケーリング処理で用いる倍率を求める。例えば、Ｋ１とＫ２とを加算した値Ｋ（Ｋ＝Ｋ１＋Ｋ２）を、スケーリング処理で用いる倍率とする。このようにすれば、遠近感に矛盾のない画像を生成することができるとともに、画面中央部では拡大されたオブジェクトが表示されるので、迫力やスピード感の得られる画像を生成することができる。
【０１３２】
（５）倍率の補正
本実施形態では、スケーリング対象のオブジェクトが仮想カメラに接近している場合には、より自然な大きさに見えるように、オブジェクトの倍率を元の大きさになるように補正する処理を行っている。
【０１３３】
図１０は、仮想カメラＣを自機ＰＯＢの後方視点で制御する場合における、画像Ｆ２０の一例を示す。
【０１３４】
例えば、倍率＝１のときの、自機ＰＯＢと敵機ＮＰＣとのオブジェクトの大きさがほぼ同じであり、敵機ＮＰＣがスケーリング対象のオブジェクト、自機ＰＯＢがスケーリング対象ではないオブジェクトであるとする。そして、敵機ＮＰＣが約２倍の大きさでオブジェクト空間に配置されると、図１０に示すように、画像Ｆ２０では敵機ＮＰＣが自機ＰＯＢよりも大きく見える画像が生成される。
【０１３５】
本来ならば、自機ＰＯＢと敵機ＮＰＣは同じ大きさの機体であるにもかかわらず、仮想カメラＣから近距離に敵機ＥＯＢが位置することになると、スケーリング対象外の自機ＰＯＢと、スケーリング対象の敵機ＥＯＢとの大きさの違いが目立ってしまう。
【０１３６】
そこで、本実施形態では、図１１に示すように、仮想カメラＣを中心に半径Ｒ以内（例えば５０メートル以内）にある所定範囲内にスケーリング対象のオブジェクト（例えば敵機ＮＰＣ）が位置する場合には、仮想カメラＣとそのオブジェクトとの距離が零のときに１倍になるように、倍率を補正する処理を行う。そして、補正された倍率に基づいて、オブジェクトをスケーリングする処理を行う。例えば、半径Ｒに対する仮想カメラの視点位置ＣＰからオブジェクトＯＢ１までの距離の割合に基づいて、１倍と、算出した倍率Ｋとを線形合成する。
【０１３７】
このようにすれば、スケーリング対象のオブジェクトが仮想カメラに近づくほど、本来の大きさ（１倍の大きさ）になるようにスケーリングされるので、より自然な画像を生成することができる。
【０１３８】
例えば、図１１に示すように、敵機ＮＰＣが所定範囲内に位置する場合には、敵機ＮＰＣは、仮想カメラＣとそのオブジェクトとの距離が零のときに１倍になるように倍率が補正され、補正された倍率に基づきスケーリングされた敵機ＮＰＣがオブジェクト空間に配置される。そして、生成される画像Ｆ２１では、敵機ＮＰＣと自機ＰＯＢとの大きさがほぼ同じになり、大きさ差異が目立たなくなり自然な画像が生成される。
【０１３９】
（６）リプレイ（再生処理）
本実施形態では、リプレイ用仮想カメラに基づいて、スケーリング処理を行うようにしてもよい。つまり、本実施形態では、各仮想カメラのローカル座標系で、スケーリング処理を行うようにする。
【０１４０】
例えば、リプレイ用仮想カメラでレンダリングするための情報として、ゲーム処理中に、ワールド座標系における自機や敵機などの各オブジェクトの位置情報や、動作情報（回転情報）を、リプレイ用のデータとして記憶部に記憶する。
【０１４１】
そして、リプレイ時では、リプレイ用のデータに基づいて、各オブジェクトの位置、動作演算を行い、リプレイ用仮想カメラから見える画像を生成する。リプレイ時に、スケーリング処理を行う場合には、各オブジェクトの位置情報とリプレイ用仮想カメラの位置情報とに基づいて、１倍の大きさのオブジェクトに対してスケーリング処理を行えばよい。
【０１４２】
（７）フローチャート
図１２を用いて、スケーリングの処理のフローチャートの一例について説明する。まず、スケーリング対象のオブジェクトか否かを判断する処理を行う（ステップＳ１）。スケーリング対象のオブジェクトでない場合は（ステップＳ１のＮ）、ステップＳ１３に進み、スケーリング対象のオブジェクトであると判断されると（ステップＳ１のＹ）、そのオブジェクトをワールド座標に配置する処理を行う（ステップＳ２）。
【０１４３】
そして、仮想カメラの視点位置と当該オブジェクトの位置との距離Ｄの２乗（Ｄ２）を求める（ステップＳ３）。そして、Ｄ２≦０である場合には、ｒ０に０．０を代入する（ステップＳ４）。一方、０＜Ｄ２＜３００２である場合には、ｒ０にＤ２／３００２を代入する（ステップＳ５）。一方、Ｄ２≧３００２である場合には、ｒ０に１．０を代入する（ステップＳ６）。
【０１４４】
次に、仮想カメラの視線ベクトルの単位ベクトルをＥｃ、仮想カメラの視点位置からオブジェクトの位置へのベクトルの単位ベクトルをＥｏとし、これらの内積から２ベクトルのｃｏｓθの値を求める。つまり、ｃｏｓθ＝Ｅｃ・Ｅｏを求める（ステップＳ７）。
【０１４５】
次に、ｒ１に（ｃｏｓθ）２を代入し（ステップＳ８）、処理対象のオブジェクトが通常オブジェクト（属性が通常である場合）は、ｓｃａｌｅに２．０＋０．５＊ｒ０＋０．５＊ｒ１を代入する（ステップＳ９）、処理対象のオブジェクトがエフェクトオブジェクト（属性がエフェクトである場合）は、ｓｃａｌｅに１．０＋０．５＊ｒ０を代入する（ステップＳ１０）。
【０１４６】
次に、Ｄ２＜５０２である場合には、ステップＳ１１に進み、ｓｃａｌｅを補正する処理を行う。つまり、ｒ２にＤ２／５０２を代入し、１．０＊（１．０−ｒ２）＋ｓｃａｌｅ＊ｒ２の値を、新たなｓｃａｌｅ値として代入する処理を行う（ステップＳ１１）。
【０１４７】
次に、求めたｓｃａｌｅ値に基づき、オブジェクトをスケーリングする処理を行う（ステップＳ１２）。
【０１４８】
そして、フラスタムチェック（視野範囲ＣＡ（ビューボリューム、視錘台）にオブジェクトが属するか否かのチェック）を行い（ステップＳ１３）、偽判定である場合にはステップＳ１５に進み、真判定である場合には、拡大されたオブジェクトを描画処理に回すための処理を行う（ステップＳ１４）、そして、次のオブジェクトについて、スケーリング処理を行う。以上で処理が終了する。
【０１４９】
３．エフェクトオブジェクトを配置する手法
本実施形態では、自機から発射されたミサイルや機関砲などが敵機にヒットすると敵機が爆発するエフェクトを発生させる処理を行っている。例えば、エフェクトが発生すると爆発、炎、煙などのエフェクトオブジェクトをオブジェクト空間に配置している。本実施形態においてエフェクトオブジェクトを配置する手法について、以下、詳細に説明する。
【０１５０】
なお、本実施形態では、戦闘機を移動させるフライトシミュレーションに関する画像生成処理を行うものであるので、自機が移動する場合には、自機の移動に追従（連動）するように仮想カメラの移動制御を行っている。例えば、図３（Ａ）〜（Ｃ）に示すように、自機の移動速度ベクトルＰＶと、仮想カメラの移動速度ベクトルＣＭＶとが、所定の関係（例えば、速度が同一、移動方向が同一）になるように制御する。ここで移動速度ベクトルとは、その大きさ（長さ）によって移動速度を示し、その向きによって移動方向を示すベクトルである。
【０１５１】
また、フライトシューティングゲームで登場する戦闘機（飛行機など）は前進することによって飛行を行うものであるので、仮想カメラの視線方向と仮想カメラの移動方向とが同一になる傾向にある。本実施形態においては、説明を簡易にするために、特に指摘しない限り、仮想カメラの視線方向ＣＶと仮想カメラの移動速度ベクトルＣＭＶとが同一方向であるものとして説明する。
【０１５２】
（１）エフェクトの発生
本実施形態では、オブジェクト空間の所与の位置でエフェクトを発生させるための所定条件を満たしたか否かを判断し、所定条件を満たした場合にエフェクトを発生させる処理を行う。例えば、敵機などの移動体が撃墜したと判断された場合、すなわち、敵機の耐久値が０になった場合（敵機のダメージ率が１００％になった場合）に、所定条件を満たすと判断する。なお、プログラムの進行に伴い、イベントを発生させるタイミングが到来した場合に、エフェクトを発生させるための所定条件を満たしたと判断してもよい。
【０１５３】
本実施形態のエフェクト発生についてより具体的に説明する。図１３（Ａ）は、ミサイル発射の入力情報を受け付けてミサイルＭＩが発射されるときの自機ＰＯＢ、敵機ＮＰＣの例を示す。例えば、自機ＰＯＢの移動に追従する仮想カメラＣから見える画像Ｆ３０が生成される。画像Ｆ３０では、敵機ＮＰＣに向かってミサイルＭＩが飛ぶ様子が表示されることになる。
【０１５４】
そして、図１３（Ｂ）に示すように、自機ＰＯＢが左方向に移動すると、自機ＰＯＢに追従する仮想カメラＣから見える画像Ｆ３１では、画面右寄りに、敵機ＮＰＣ、ミサイルＭＩが表示されることになる。
【０１５５】
そして、図１３（Ｃ）に示すように、自機ＰＯＢが前方に移動すると、自機ＰＯＢの視野範囲外で、ミサイルＭＩが敵機ＮＰＣにヒットし（交差し）、ミサイルＭＩのヒットによって敵機ＮＰＣの耐久値が０となると、エフェクトが発生したと判断する。
【０１５６】
本実施形態では、エフェクト発生時において、敵機ＮＰＣ及びミサイルＭＩをオブジェクト空間から削除（消去）し、爆発オブジェクトＢＯ（エフェクトオブジェクトの一例）を、エフェクト発生位置ＥＰに配置する処理を行う。なお、エフェクト発生位置ＥＰは、例えば、ミサイルＭＩが敵機ＮＰＣにヒットしたときの敵機ＮＰＣの配置位置、或いは、ミサイルＭＩと敵機ＮＰＣとのヒット位置とすることができる。なお、図１３（Ｃ）に示すように、爆発オブジェクトＢＯが仮想カメラＣの視野範囲外にあるので、画像Ｆ３２に示すように、爆発オブジェクトＢＯを描画することができない。
【０１５７】
（２）エフェクトオブジェクトの配置手法の例１
まず、エフェクト発生位置ＥＰに基づいて、エフェクトオブジェクトの配置手法について説明する。
【０１５８】
図１４（Ａ）は、エフェクト発生時のエフェクトオブジェクトの例を示す。本実施形態では、エフェクト発生時に、エフェクト発生位置ＥＰに爆発オブジェクトＢＯを配置させる処理を行う。なお、図１４（Ａ）に示すように、エフェクト発生位置ＥＰが仮想カメラＣの視野範囲外にある場合には、エフェクト発生時において生成される画像Ｆ３２では、爆発する様子を表現することができない。
【０１５９】
図１４（Ｂ）は、自機が前方に移動したとき（例えば、エフェクト発生時から１秒後）のエフェクトオブジェクトの例を示す。本実施形態では、時間経過に伴い、煙オブジェクト（エフェクトオブジェクトの一例）ＥＯＢを、エフェクト発生位置ＥＰを中心に放射状に配置させる。つまり、爆発の後、黒煙などが発生する演出画像を生成している。しかし、図１４（Ｂ）に示すように、仮想カメラＣの視野範囲外において、煙オブジェクトＥＯＢが配置されている場合には、生成される画像Ｆ３３では煙が発生する様子を表現することができない。
【０１６０】
図１４（Ｃ）は、自機が更に前方に移動したとき（例えば、エフェクト発生時から２秒後）の煙オブジェクトＥＯＢの例を示す。本実施形態では、さらに時間が経過すると、煙オブジェクトが更に、エフェクト発生位置ＥＰを中心に、放射状に拡散されるように各煙オブジェクトが配置される。つまり、各煙オブジェクトの、ＥＰを中心に放射状に向く移動速度ベクトルＥＶに基づき、各煙オブジェクトＥＯＢが配置される。しかし、図１４（Ｃ）に示すように、仮想カメラの視野範囲外において、煙オブジェクトＥＯＢが配置されている場合には、生成される画像Ｆ３４では、煙が拡散されていく様子を表現することができない。
【０１６１】
なお、これらの煙オブジェクトＥＯＢは、各煙オブジェクトの移動速度ベクトルＥＶに基づいて配置されるが、エフェクト発生時から３秒後にオブジェクト空間から消去される。
【０１６２】
（３）エフェクトオブジェクトの配置手法の例２
エフェクトオブジェクトの配置手法の例１によれば、仮想カメラの視野範囲外にエフェクトオブジェクトが配置されてしまうと、エフェクトを表現した画像を生成できなくなってしまう。そこで、本実施形態では、特定位置を算出し、エフェクト発生位置から特定位置に向かって、エフェクトオブジェクトを配置する手法を採用する。このようにすれば、仮想カメラの視野範囲内にエフェクトを配置する可能性を高くすることができる。また、何れの方向において、エフェクトが発生したのかを有る程度予測することができ、より臨場感のあるエフェクトを表現することができる。
【０１６３】
まず、本実施形態の特定位置の算出手法について説明する。本実施形態では、エフェクト発生時に、自機ＰＯＢの移動情報に基づいて、自機ＰＯＢの１０秒後（所定期間後）の推定位置（予測位置）を、特定位置として算出する処理を行う。例えば、図１５（Ａ）に示すように、エフェクト発生時において、自機ＰＯＢの移動速度ベクトルＰＶに基づいて、１０秒後の特定位置Ｑを推定する。
【０１６４】
なお、本実施形態では、自機ＰＯＢの移動に追従する仮想カメラＣの移動方向に基づいて、仮想カメラＣの１０秒後の推定位置を、特定位置として算出してもよい。
【０１６５】
そして、本実施形態では、オブジェクト空間において、エフェクト発生位置ＥＰから特定位置Ｑに向かって、煙オブジェクトＥＯＢを配置する処理を行う。つまり、エフェクト発生位置ＥＰから特定位置Ｑに向く方向（特定方向）ＥＱＶに、煙オブジェクトＥＯＢを配置する処理を行う。
【０１６６】
図１５（Ｂ）は、エフェクト発生時から１秒後の煙オブジェクトＥＯＢの例を示す。例えば、本実施形態では、時間が経過するにつれて、煙オブジェクトＥＯＢが、特定位置Ｑに向かうように順次配置される。
【０１６７】
図１５（Ｃ）は、エフェクト発生時から２秒後の煙オブジェクトＥＯＢの例を示す。例えば、自機ＰＯＢが移動速度ベクトルＰＶの方向（推定位置Ｑの方向）に移動すると、煙オブジェクトＥＯＢが、仮想カメラＣの視野範囲内に配置されるようになる。例えば、エフェクト発生時から２秒後において生成される画像Ｆ３６では、煙オブジェクトＥＯＢが描画されているので、敵機などの戦闘機が撃墜された様子を表現することができる。
【０１６８】
本実施形態では、エフェクト発生時から３秒間経過するまで、煙オブジェクトＥＯＢを、特定位置Ｑに向かって配置する処理を行っている。そして、エフェクト発生時から３秒後に大爆発エフェクトオブジェクトを配置した後、エフェクトオブジェクトを消去する処理を行う。
【０１６９】
また、図１５（Ｃ）に示すように画像Ｆ３６では、煙オブジェクトＥＯＢが、画面右側に描画されているので、自機ＰＯＢの右側（仮想カメラＣの右側）でエフェクトが発生している様子を表現することができる。
【０１７０】
このように、本実施形態では、特定位置を算出し、エフェクト発生位置から特定位置に向かって、エフェクトオブジェクトを配置する手法を採用すると、エフェクトオブジェクトが画面に表示される（フレームインする）可能性が高くなり、エフェクト発生の演出効果をより高めることができる。
【０１７１】
次に、移動体が複数ある場合について説明する。本実施形態では、特定の移動体の移動に追従する仮想カメラから見える画像を生成する場合には、その特定の移動体の移動情報に基づいて、特定位置を算出する処理を行う。
【０１７２】
例えば、図１６に示すように、自機ＰＯＢ１、戦闘機ＰＯＢ２、戦闘機ＰＯＢ３がオブジェクト空間に存在し、自機ＰＯＢ１に追従する仮想カメラＣ１から見える画像を生成する場合には、自機ＰＯＢ１の移動方向ベクトルＰＶ１に基づいて、自機ＰＯＢ１のエフェクト発生時から１０秒後の推定位置Ｑ１を、特定位置として算出する処理を行う。そして、本実施形態では、図１７（Ａ）に示すように、エフェクト発生位置ＥＰから特定位置Ｑ１に向かって、エフェクトオブジェクトを配置する処理を行う。このようにすれば、自機ＰＯＢ１が推定に近い移動をしている場合には、図１７（Ａ）に示すように、自機ＰＯＢ１の移動に追従する仮想カメラＣ１の視野範囲に、エフェクトオブジェクトが配置されるようになり、プレーヤはエフェクト演出のある画像を生成することができる。
【０１７３】
言い換えると、本実施形態では、仮想カメラＣ１で画像を生成する場合には、他の仮想カメラＣ２、Ｃ３に追従する戦闘機ＰＯＢ２、ＰＯＢ３の移動速度ベクトルＰＶ２、ＰＶ３に基づいて算出された特定位置Ｑ２、Ｑ３に向かってエフェクトオブジェクトを配置させないように制御する。仮に、仮想カメラＣ２、Ｃ３に追従する戦闘機ＰＯＢ２、ＰＯＢ３の移動方向に基づいて算出された特定位置Ｑ２、Ｑ３に向かってエフェクトオブジェクトを配置させてしまうと、不自然な画像が生成されてしまう可能性があるからである。例えば、煙オブジェクトＥＯＢが戦闘機ＰＯＢ２の移動方向上に向かって移動してしまう様子を、仮想カメラＣ１が撮影することになった場合、煙が不自然に曲がるなど、現実世界では生じ得ない画像が生成されてしまう。したがって、本実施形態では、描画する際に用いられる仮想カメラが追従するオブジェクトの移動方向に基づいて、特定位置を算出し、その特定位置に向かってエフェクトオブジェクトを配置する。
【０１７４】
したがって、図１７（Ｂ）に示すように、仮想カメラＣ２に基づいて画像を生成する場合には、その仮想カメラＣ２が追従する戦闘機ＰＯＢ２の移動方向ベクトルＰＶ２に基づいて特定位置Ｑ２を算出し、エフェクト発生位置ＥＰから特定位置Ｑ２に向かって、エフェクトオブジェクトを配置する処理を行う。つまり、エフェクト発生位置ＥＰから特定位置Ｑ２の方向に向かってエフェクトオブジェクトが配置されたオブジェクト空間において、仮想カメラＣ２から見える画像を生成する。このようにすれば、自然な画像を生成することができる。
【０１７５】
同様に、図１７（Ｃ）に示すように、仮想カメラＣ３に基づいて画像を生成する場合には、その仮想カメラＣ３が追従する戦闘機ＰＯＢ３の移動方向ベクトルＰＶ３に基づいて特定位置Ｑ３を算出し、エフェクト発生位置ＥＰから特定位置Ｑ３に向かって、エフェクトオブジェクトを配置する処理を行う。つまり、エフェクト発生位置ＥＰから特定位置Ｑ３の方向に向かってエフェクトオブジェクトが配置されたオブジェクト空間において、仮想カメラＣ３から見える画像を生成する。このようにすれば、自然な画像を生成することができる。
【０１７６】
また、仮想カメラが複数存在する場合において仮想カメラの移動速度ベクトルＣＭＶに基づいて特定位置を算出する場合には、描画部１２０の画像生成で用いられる仮想カメラの移動方向に基づいて特定位置を算出し、算出された特定位置に向かってエフェクトオブジェクトを配置する。現実世界では生じ得ない不自然な画像が生成されてしまう事態を回避するためである。例えば、描画部１２０の画像生成で用いられる仮想カメラとは、描画するフレーム（タイミング）で、レンダリング処理、頂点シェーダで用いられる仮想カメラのことをいう。
【０１７７】
例えば、図１７（Ａ）に示すように、仮想カメラＣ１〜Ｃ３が存在する場合において、仮想カメラＣ１に基づいて画像を生成する場合には、その仮想カメラＣ１の移動速度ベクトルＣＭＶ１に基づいて所定期間後の仮想カメラＣ１の推定位置を特定位置を算出し、算出された特定位置に向かってエフェクトオブジェクトを配置する。言い換えると、仮想カメラＣ１に基づいて画像を生成する場合には、仮想カメラＣ２の移動速度ベクトルＣＭＶ２に基づいて算出された（或いは仮想カメラＣ３の移動速度ベクトルＣＭＶ３に基づいて算出された位置）に向かって、エフェクトオブジェクトを配置しないように制御する。
【０１７８】
なお、本実施形態では、オブジェクト空間に存在する移動体（自機、敵機、戦闘機など）の移動に追従せずに、ワールド座標に配置される仮想カメラに基づいて画像を生成する場合がある。かかる場合には、特定位置に向かって、エフェクトオブジェクトを配置する手法を採用してもよいし、エフェクト発生位置に基づいて、エフェクトオブジェクトを配置する手法（例１）を採用してもよい。
【０１７９】
また、エフェクト発生位置を注視するように制御されているターゲット仮想カメラに基づいて、画像を生成する場合には、特定位置に向かって、エフェクトオブジェクトを配置する手法を採用せずに、エフェクト発生位置に基づいて、エフェクトオブジェクトを配置する手法（例１）を採用することが望ましい。自然なエフェクト画像を生成できるからである。
【０１８０】
また、仮想カメラが移動体の移動に追従するものでなくても、その仮想カメラが移動するものであれば、仮想カメラの移動速度ベクトルに基づいて、仮想カメラの所定期間後（例えば１０秒後）の推定位置を特定位置として算出し、算出された特定位置に向かってエフェクトオブジェクトを配置するようにしてもよい。
【０１８１】
また、リプレイ用の画像生成処理の際を考慮すると、特定位置に向かってエフェクトオブジェクトを配置する処理を行う場合には、通常オブジェクトの位置情報、動作情報をリプレイ用のデータとして記憶部に記憶してもよいが、各エフェクトオブジェクトの位置情報、動作情報（回転情報）をリプレイ用のデータとして記憶部に記憶させないように制御してもよい。ゲームプレイ中に配置されたエフェクトオブジェクトをリプレイ用仮想カメラで撮影してしまうと、不自然な画像を生成してしまうことになるからである。
【０１８２】
なお、リプレイ用仮想カメラで、リプレイ画像を生成する場合には、エフェクトオブジェクトを、そのリプレイ用仮想カメラの移動情報（リプレイ用仮想カメラが移動体に追従している場合には、リプレイ用仮想カメラが追従する移動体の移動情報でもよい）に基づいて特定位置を算出し、その特定位置に向かって配置するようにしてもよい。
【０１８３】
（４）エフェクトオブジェクトを配置する速度
本実施形態では、特定位置に向かってエフェクトオブジェクトを配置する場合に、予め定義された配置速度（一定期間あたりに進むエフェクトオブジェクトの配置距離）に基づいて、エフェクトオブジェクトをエフェクト発生位置から特定位置に向かって配置するようにしてもよい。
【０１８４】
また、自機ＰＯＢの移動速度（自機ＰＯＢに追従する仮想カメラＣの移動速度）に基づいて算出された特定位置Ｑに向かってエフェクトオブジェクトを配置する場合には、その配置速度を、自機ＰＯＢの移動速度又は仮想カメラＣの移動速度に基づいて算出するようにしてもよい。
【０１８５】
また、エフェクト発生時からエフェクト終了時までのエフェクトイベント期間（３秒間）に、確実に特定位置にエフェクトオブジェクトを到達させるために、エフェクトイベント期間あたりの、エフェクト発生位置ＥＰから特定位置Ｑまでの距離を、配置速度としてもよい。例えば、エフェクト発生位置ＥＰが東京であり、特定位置Ｑが大阪であるように、明らかに３秒間にエフェクトオブジェクトを特定位置に向かって配置させることが現実的で無い場合もあるので、物理法則に基づき配置速度を求めるようにしてもよい。
【０１８６】
また、配置速度は、ミサイルが敵機に衝突したときのミサイルの移動速度（ミサイルの移動速度ベクトルＭＩＶの大きさ）、敵機の移動速度（敵機の移動速度ベクトルＮＶの大きさ）に基づいて、求めてもよい。
【０１８７】
（５）特定位置をリアルタイムに求める手法
本実施形態では、特定位置に向かってエフェクトオブジェクトを配置する場合には、リアルタイム（フレーム毎）に、特定位置を算出するようにしてもよい。このようにすれば、エフェクトオブジェクトが画面に表示される可能性が高くなるからである。
【０１８８】
例えば、図１８（Ａ）に示すように、エフェクト発生時に、第Ｎフレームの自機の移動速度ベクトルＰＶａ（或いは自機の移動に追従する仮想カメラの移動速度ベクトルＣＭＶａ）に基づいて、特定位置Ｑａを算出し、エフェクトオブジェクトを特定位置Ｑａに向かって配置する。そして、第Ｎ＋１フレームの自機の移動速度ベクトルＰＶｂ（或いは自機の移動に追従する仮想カメラの移動速度ベクトルＣＭＶｂ）に基づいて、特定位置Ｑｂを算出し、エフェクトオブジェクトを特定位置Ｑｂに向かって配置する。そして、第Ｎ＋２フレームの自機の移動速度ベクトルＰＶｃ（或いは自機の移動に追従する仮想カメラの移動速度ベクトルＣＭＶｃ）に基づいて、特定位置Ｑｃを算出し、エフェクトオブジェクトを特定位置Ｑｃに向かって配置する。このようにすれば、移動体に追従する仮想カメラの視野範囲ＣＡに、エフェクトオブジェクトが配置される可能性を高くすることができる。例えば、図１８（Ｂ）に示すように、エフェクトオブジェクトＥＯＢが、エフェクト発生位置ＥＰから、フレーム単位で更新される特定位置に向かって配置されるようになる。
【０１８９】
（６）視線方向に基づいて特定位置を求める手法
本実施形態では、特定位置に向かってエフェクトオブジェクトを配置する場合には、仮想カメラの視線方向ＣＶに基づいて、特定位置を算出するようにしてもよい。このようにすれば、エフェクトオブジェクトが画面に表示される可能性が高くなるからである。
【０１９０】
例えば、ヘリコプターなどのホバリング（空中で停止可能な状態）や、ホバリング状態から垂直、水平移動が可能な移動体の場合、視線方向ＣＶと移動体の移動速度ベクトルＰＶの方向が異なる場合がある（視線方向ＣＶと仮想カメラの移動速度ベクトルＣＭＶの方向が異なる場合がある）。かかる場合に、エフェクトオブジェクトが表示されるように視線方向ＣＶに基づいて特定位置を算出することが望ましい。
【０１９１】
より具体的に、図１９（Ａ）を用いて説明する。例えば、図１９（Ａ）に示すように、仮想カメラＣの視線方向ＣＶと、仮想カメラＣが追従する自機ＰＯＢの移動速度ベクトルＰＶの方向が異なる場合、自機ＰＯＢの移動速度ベクトルＰＶに基づいて算出された１０秒後の推定位置を特定位置Ｑとすると、エフェクトオブジェクトＥＯＢは、エフェクト発生位置ＥＰから特定位置Ｑに向かって配置される。しかし、図１９（Ｂ）に示すように、エフェクトイベント期間が経過するまでに（エフェクト発生時から３秒経過するまで）に、移動体が移動速度ベクトルＰＶの方向（仮想カメラＣの移動速度ベクトルＣＭＶの方向）に上昇したとしてもエフェクトオブジェクトＥＯＢが仮想カメラＣの視野範囲に配置されず、エフェクト演出のある画像を生成することができない。
【０１９２】
そこで、本実施形態では、特定位置を次のように算出する処理を行う。例えば、図１９（Ｃ）に示すように、エフェクト発生時の自機の移動速度ベクトルＰＶ（或いは仮想カメラＣの移動速度ベクトルＣＭＶ）に基づいて、所定期間後（例えば、１０秒後）の推定位置Ｑを算出する。そして、エフェクト発生時の視線方向ＣＶに基づいて、推定位置Ｑを視点としたときの推定視線方向ＣＶ´に基づく位置Ｉを、特定位置として算出する。例えば、視線方向ＣＶ´は、エフェクト発生時の視線方向ＣＶと同じ方向に設定する。例えば、推定位置Ｑを視点としたときの推定視野範囲ＣＡ´内の位置（例えば注視点）を、特定位置として算出してもよい。
【０１９３】
このようにすれば、視線方向ＣＶと移動体の移動速度ベクトルＰＶの方向が異なる場合、或いは、視線方向ＣＶと仮想カメラの移動速度ベクトルＣＭＶの方向が異なる場合においても、よりエフェクトオブジェクトが画面に表示されるような画像を生成することができる。
【０１９４】
（７）ネットワークシステム
本実施形態では、複数の端末とネットワークを介して相互にデータの送受信を行い、オンラインフライトシューティングゲームを実現可能としている。
【０１９５】
図２０及び図２１は、本実施形態のネットワークシステムの構成を示す図である。例えば、本実施形態のネットワークシステムでは、複数の端末ＧＴ１〜ＧＴ３の間で無線通信を行って、各端末ＧＴ１〜ＧＴ３の所有者が対戦プレイや協力プレイを行うことができる。
【０１９６】
無線通信の態様としては、図２０に示すように、各端末ＧＴ１〜ＧＴ３が自律分散的にネットワークを構築し、直接的にゲーム情報等を含むパケットの送受信を行うアドホックモードと、図２１に示すように、各端末ＧＴ１〜ＧＴ３がアクセスポイントＡＣＳＰを介して間接的にゲーム情報等を含むパケットの送受信を行うインフラストラクチャモードとがある。インフラストラクチャモードでは、アクセスポイントＡＣＳＰを介してインターネットＩｎｅｔ（公衆通信網）にアクセスすることができる。そして、各端末ＧＴ１〜ＧＴ３は、インターネットＩｎｅｔに接続されたゲームサーバＧＳとの間でゲーム情報あるいはファームウェアのアップデート情報等を含むパケットをアクセスポイントＡＣＳＰを介して送受信することができる。
【０１９７】
特に、本実施形態では、各端末が相互にエフェクト発生情報を送受信する処理を行う。例えば、端末ＧＴ１において、端末ＧＴ１の操作対象の移動体ＰＯＢ１（プレーヤ１が操作する移動体）が、敵機ＮＰＣにミサイル攻撃を行い敵機ＮＰＣを撃墜したと判断されると、敵機ＮＰＣのＩＤと共に、敵機ＮＰＣを撃墜したという情報を、エフェクト発生情報として、他の端末ＧＴ２、ＧＴ３に送信する処理を行う。
【０１９８】
例えば、端末ＧＴ１は、端末ＧＴ１で制御している敵機ＮＰＣの撃墜に伴って発生したエフェクト発生位置ＧＴ１＿ＥＰや、端末ＧＴ１で制御している自機ＰＯＢ１の移動速度ベクトルＧＴ１＿ＰＶ（或いは自機ＰＯＢ１の移動に追従する仮想カメラＣ１の移動速度ベクトルＧＴ１＿ＣＭＶ）に基づいて、端末ＧＴ１のオブジェクト空間における特定位置ＧＴ１＿Ｑを算出する処理を行う。そして、端末ＧＴ１のオブジェクト空間において、エフェクト発生位置ＧＴ１＿ＥＰから特定位置ＧＴ１＿Ｑに向かって、エフェクトオブジェクトを配置する処理を行う。
【０１９９】
また、端末ＧＴ２は、端末ＧＴ１からエフェクト発生情報を受信すると、エフェクト発生情報を解析し、敵機ＮＰＣが撃墜したと判断する。そして、敵機ＮＰＣの配置位置をエフェクト発生位置ＧＴ２＿ＥＰとして、端末ＧＴ２のオブジェクト空間において、エフェクトオブジェクトを配置する処理を行う。
【０２００】
例えば、端末ＧＴ２は、端末ＧＴ２で制御している自機ＰＯＢ２（プレーヤ２が操作する移動体）の移動速度ベクトルＧＴ２＿ＰＶ（或いは自機ＰＯＢ２の移動に追従する仮想カメラＣ２の移動速度ベクトルＧＴ２＿ＣＭＶ）に基づいて、端末ＧＴ２のオブジェクト空間における特定位置ＧＴ２＿Ｑを算出する処理を行う。そして、端末ＧＴ２のオブジェクト空間において、エフェクト発生位置ＧＴ２＿ＥＰから特定位置ＧＴ２＿Ｑに向かって、エフェクトオブジェクトを配置する処理を行う。
【０２０１】
また、端末ＧＴ３においても、端末ＧＴ３のオブジェクト空間において、端末ＧＴ３で制御している自機ＰＯＢ３（プレーヤ３が操作する移動体）の移動速度ベクトルＧＴ３＿ＰＶ（或いは自機ＰＯＢ３の移動に追従する仮想カメラＣ３の移動速度ベクトルＧＴ３＿ＣＭＶ）に基づいて、端末ＧＴ３のオブジェクト空間における特定位置ＧＴ３＿Ｑを算出する処理を行う。そして、端末ＧＴ３のオブジェクト空間において、エフェクト発生位置ＧＴ３＿ＥＰから特定位置ＧＴ３＿Ｑに向かって、エフェクトオブジェクトを配置する処理を行う。
【０２０２】
このように、本実施形態のネットワークシステムでは、各端末が、エフェクトの発生情報を互いに送受信し、各端末において特定位置の算出処理、エフェクトの配置処理、描画処理を独立して制御する。つまり、各端末は、エフェクトオブジェクトの配置位置を共有していないので、各端末に応じた自然なエフェクト演出処理を行うことができる。
【０２０３】
（８）エフェクトオブジェクトの例
本実施形態では、爆発、炎、煙などのエフェクトオブジェクトを配置する手法について説明したが、例えば、戦闘機が破壊される様子を演出するための破片オブジェクト（パーティクルなど）を、特定位置に向かって移動させるようにしてもよい。つまり、破片オブジェクトを、移動させて配置する手法も、本実施形態のエフェクトオブジェクトの配置に含まれる。また、本実施形態では、戦闘機が撃墜された場合には、撃墜された戦闘機そのものを、エフェクトオブジェクトとしてオブジェクト空間に配置してもよい。つまり、撃墜された戦闘機を、特定位置に向かって移動させて配置する手法も、本実施形態のエフェクトオブジェクトの配置に含まれる。なお、戦闘機が撃墜された場合には、正常時（破壊前）の戦闘機から、破壊用の戦闘機（一部が破壊されているような戦闘機）に切り替えて、破壊用の戦闘機を、特定位置に向かって移動させて配置するようにしてもよい。
【０２０４】
また、いわゆる、ビルボード表示を行う場合には、オブジェクト（スプライト、ポリゴン）に、エフェクト（爆発、炎、煙など）を表現するテクスチャをマッピングし、エフェクトテクスチャがマッピングされたオブジェクトを、仮想カメラＣの視線方向ＣＶに正対するように（オブジェクトの向きが、視線方向ＣＶと逆方向になるように）、オブジェクト空間に配置する。
【０２０５】
（９）フローチャート
仮想カメラが自機ＰＯＢの移動に追従し、自機ＰＯＢから発射されたミサイルＭＩが敵機ＮＰＣを撃墜した場合における、エフェクトオブジェクトを配置する処理の流れについて、図２２を用いて説明する。
【０２０６】
まず、敵機ＮＰＣの耐久値が０であるか否かを判断する（ステップＳ３１）。敵機ＮＰＣの耐久値が０である場合には（ステップＳ３１のＹ）、エフェクト発生時の自機ＰＯＢの移動速度ベクトルＰＶに基づいて、１０秒後の自機ＰＯＢの位置Ｑを算出（推定）する（ステップＳ３２）。そして、エフェクトオブジェクトを、エフェクト発生位置ＥＰから位置Ｑに向かって、配置する処理を行う（ステップＳ３３）。
【０２０７】
（１０）スケーリング処理との併用
なお、本実施形態のエフェクトオブジェクトは、仮想カメラの位置ＣＰと、エフェクトオブジェクトの位置とに基づいて倍率を算出し、算出された倍率に基づいてスケーリング処理を行い、スケーリングされたエフェクトオブジェクトをオブジェクト空間に配置するようにしてもよい。このようにすれば、より迫力のある画像を生成することができる。
【０２０８】
４．ゲーム処理
本実施形態では、フライトシューティングゲームの処理を行う。例えば、本実施形態では、プレーヤの射撃入力情報に基づいて、機関砲が発射されると機関砲の移動ベクトル方向へのレイと、敵機のヒットボリュームとの交差判定がなされ、交差されると判定されると敵機にヒットしたと判定される。
【０２０９】
なお、本実施形態では交差判定で用いられる敵機のヒットボリュームについては、スケーリング処理を行っていないが、スケーリング処理で用いられる倍率に基づいて、ヒットボリュームをスケーリングしてもよい。つまり、倍率制御部１１３から受け取った倍率を、オブジェクトのモデルデータに適用するとともに、対応するヒットモデルに対しても適用してもよい。このようにすれば、簡易に敵機を撃ち落とすことができるので、初心者用などの技量のないプレーヤに適切なゲーム環境を提供することができる。
【０２１０】
５．応用例
本実施形態において、スケーリング処理を行う場合には、視線方向と仮想カメラからオブジェクトに向く方向の角度の履歴、または仮想カメラとオブジェクトとの距離の履歴に基づいて、倍率を算出してもよい。例えば、描画フレームから所定期間前までの各フレーム（例えば、描画フレームを第Ｎフレームとすると、第Ｎフレームから６０フレーム前までの各フレーム）の「視線方向と仮想カメラからオブジェクトに向く方向の角度」を角度履歴情報として記憶部に記憶する。そして、角度履歴情報に基づいて、倍率を算出してもよい。また、描画フレームから所定期間前までの各フレームの「仮想カメラとオブジェクトとの距離」を、距離履歴情報として記憶部に記憶する。そして、距離履歴情報に基づいて、倍率を算出してもよい。
【０２１１】
例えば、角度履歴情報を参照し、視線方向と仮想カメラからオブジェクトに向く方向の角度が、所定期間（例えば、描画フレームを第Ｎフレームとすると、第Ｎフレームから６０フレーム前までの間）、所定範囲内（例えば、当該角度が１５度以内）である場合には、当該オブジェクトの倍率が大きくなるように変化させてもよい。このようにすれば、オブジェクトを画面中心に捕らえ続けることによって拡大させ、狙いやすくすることができる。
【０２１２】
また、角度履歴情報を参照し、複数フレーム（例えば、描画フレームを第Ｎフレームとすると、第Ｎフレームから６０フレーム前までの各フレーム）における、視線方向と仮想カメラからオブジェクトに向く方向の角度の平均値に基づいて倍率を算出してもよい。また、距離履歴情報を参照し、複数フレームにおける、仮想カメラとオブジェクトの距離の平均値に基づいて倍率を算出してもよい。このようにすれば、オブジェクトの位置が急激に変化した場合でも、倍率の変化を緩やかにすることができる。
【０２１３】
また、角度履歴情報を参照し、所定フレーム前（例えば、描画フレームから３０フレーム前）の視線方向と、仮想カメラからオブジェクトに向く方向の角度に基づいて、倍率を算出してもよい。また、距離履歴情報を参照し、所定フレーム前（例えば、描画フレームから３０フレーム前）の仮想カメラとオブジェクトとの距離に基づいて、倍率を算出してもよい。また、角度履歴情報又は距離履歴情報を基に所定フレーム後の角度又は距離を予測し、予測した角度又は距離に基づいて倍率を決定してもよい。
【符号の説明】
【０２１４】
１００  処理部、１１０  受け付け部、１１１  オブジェクト配置部、
１１１ａ  エフェクトオブジェクト配置部、
１１２  移動・動作処理部、１１２ａ  移動処理部、
１１３  倍率制御部、１１４  スケーリング処理部、１１５  ゲーム演算部、
１１６  判断部、１１７  算出部、１１８  仮想カメラ制御部、１１９  通信制御部、
１２０  描画部、１３０  音処理部、１６０  入力部、１６２  検出部、
１７０  記憶部、１７１  主記憶部、１７２  画像バッファ、
１７３  オブジェクトデータ記憶部、１８０  情報記憶媒体、１９０  表示部、
１９２  音出力部、１９６  通信部、
Ｃ  仮想カメラ、Ｃ１〜Ｃ３  仮想カメラ、ＣＰ  視点位置、ＣＶ  視線方向、
ＣＡ  視野範囲、
ＣＭＶ  仮想カメラの移動速度ベクトル、Ｅｃ  視線方向の単位ベクトル、
ＯＢ１〜ＯＢ６  オブジェクト、ＮＰＣ  敵機（移動体の一例）、
ＰＯＢ  自機（移動体の一例）、
ＰＶ  自機の移動速度ベクトル、Ｐ０  自機の代表点（中心位置）、
ＯＶ  仮想カメラからオブジェクトに向く方向、
Ｅｏ  仮想カメラからオブジェクトに向くベクトルの単位ベクトル、
Ｐ１、Ｐ２、Ｐ１０〜Ｐ１６  配置位置、
θ、θ１、θ２  視線方向と、仮想カメラからオブジェクトに向く方向とのなす角、
Ｋ  倍率、
Ｋ１  視線方向と、視点からオブジェクトへ向く方向とに基づいて算出される倍率、
Ｋ２  仮想カメラからオブジェクトまでの距離に基づいて算出される倍率、
Ｄ  仮想カメラの視点位置からオブジェクトまでの距離、
Ｆ１〜１５、Ｆ２０、Ｆ２１、Ｆ３０〜Ｆ３６  画像、
ＢＯ  爆発オブジェクト（エフェクトオブジェクトの一例）、
ＥＯＢ  煙オブジェクト（エフェクトオブジェクトの一例）、
ＥＶ  煙オブジェクトの移動速度ベクトル、
ＥＰ  エフェクト発生位置、
Ｑ、Ｑ１〜Ｑ３  特定位置、
ＥＱＶ、ＥＱＶ１、ＥＱＶ２、ＥＱＶ３  特定方向、
ＭＩ  ミサイルオブジェクト、ＭＩＶ  ミサイルオブジェクトの移動速度ベクトル
【図１】
0005443129.tif 000002
【図２】
0005443129.tif 000003
【図４】
0005443129.tif 000004
【図５】
0005443129.tif 000005
【図６（Ａ）】
0005443129.tif 000006
【図６（Ｂ）】
0005443129.tif 000007
【図７（Ａ）】
0005443129.tif 000008
【図７（Ｂ）】
0005443129.tif 000009
【図８】
0005443129.tif 000010
【図９】
0005443129.tif 000011
【図１０】
0005443129.tif 000012
【図１１】
0005443129.tif 000013
【図１２】
0005443129.tif 000014
【図１３】
0005443129.tif 000015
【図１４】
0005443129.tif 000016
【図１５】
0005443129.tif 000017
【図１６】
0005443129.tif 000018
【図１７（Ａ）】
0005443129.tif 000019
【図１７（Ｂ）】
0005443129.tif 000020
【図１７（Ｃ）】
0005443129.tif 000021
【図１８】
0005443129.tif 000022
【図１９】
0005443129.tif 000023
【図２２】
0005443129.tif 000024
【図３】
0005443129.tif 000025
【図２０】
0005443129.tif 000026
【図２１】
0005443129.tif 000027