情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法
【課題】異なる方向に存在する音源からの音声を区別することが可能な情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供する。
【解決手段】ゲーム装置は、仮想カメラの後方に存在する音源に対して、周波数フィルタを適用して、当該音源の音声を補正する。具体的には、仮想カメラの撮像方向と仮想カメラから音源に向かう方向との角度を算出する。当該角度の絶対値が90度以上の場合、当該角度に応じてフィルタ値を算出する。また、ゲーム装置は、当該フィルタ値を仮想カメラと音源との距離に応じて補正する。そして、ゲーム装置は、フィルタ値に応じたローパスフィルタを音源の音声に適用する。
【解決手段】ゲーム装置は、仮想カメラの後方に存在する音源に対して、周波数フィルタを適用して、当該音源の音声を補正する。具体的には、仮想カメラの撮像方向と仮想カメラから音源に向かう方向との角度を算出する。当該角度の絶対値が90度以上の場合、当該角度に応じてフィルタ値を算出する。また、ゲーム装置は、当該フィルタ値を仮想カメラと音源との距離に応じて補正する。そして、ゲーム装置は、フィルタ値に応じたローパスフィルタを音源の音声に適用する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、音声の制御を行う情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関する。
【背景技術】
【0002】
従来、仮想3次元空間に配置された音声を発生するオブジェクト(音源)が表示され、当該オブジェクトが存在する方向から音が聞こえるような処理が行われていた(一例として、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−195210号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術では、例えば複数の音源に囲まれているような状況において、異なる方向に存在する音源からの音声を区別するためには改善の余地があった。
【0005】
それ故、本発明の目的は、異なる方向に存在する音源からの音声を区別することが可能な情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【0007】
本発明の一例は、仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理装置のコンピュータにおいて実行される情報処理プログラムである。当該情報処理プログラムは、方向算出手段と、補正手段と、音声出力手段として、上記コンピュータを機能させる。方向算出手段は、上記仮想カメラまたは上記所定のキャラクタから見た上記音源の方向を算出する。補正手段は、上記音源の方向が所定の方向の場合、上記音源の音声に対して所定のフィルタを適用して当該音声を補正する。音声出力手段は、上記補正手段で補正した音声を出力する。
【0008】
上記によれば、音源が仮想カメラから見て所定の方向(例えば、後方や右方向等)に存在する場合、当該音源の音声に対して所定のフィルタを適用することができる。例えば、音源が仮想カメラの後方に存在する場合に、当該音源の音声が籠るようにして周波数フィルタを適用することができる。
【0009】
また、他の構成では、上記方向算出手段は、上記仮想カメラの撮像方向または上記所定のキャラクタを基準とした方向と、上記音源の方向との角度を算出してもよい。
【0010】
上記によれば、例えば仮想カメラの撮像方向と音源の方向との角度を算出することができる。
【0011】
また、他の構成では、上記補正手段は、上記方向算出手段が算出した角度が第1の閾値よりも大きい場合、上記音声を補正してもよい。
【0012】
上記によれば、上記角度が所定の閾値より大きい場合に、音声を補正することができる。
【0013】
また、他の構成では、上記補正手段は、上記方向算出手段が算出した角度が大きいほど上記音声の補正の度合を高くしてもよい。
【0014】
上記によれば、上記角度が大きいほど補正の度合を高くすることができる。
【0015】
また、他の構成では、上記補正手段は、上記音源の方向が上記仮想カメラまたは上記所定のキャラクタの後方である場合、上記音声を補正してもよい。
【0016】
上記によれば、仮想カメラまたは所定のキャラクタの後方に音源が存在する場合に、音声を補正することができる。
【0017】
また、他の構成では、上記補正手段は、上記仮想カメラまたは上記所定のキャラクタと、上記音源との距離にも基づいて上記音声を補正してもよい。
【0018】
上記によれば、さらに、仮想カメラまたは所定のキャラクタと、音源との距離にも基づいて、音声を補正することができる。
【0019】
また、他の構成では、上記補正手段は、上記仮想カメラまたは上記所定のキャラクタと、上記音源との距離が第2の閾値よりも大きい場合、上記音声を補正してもよい。
【0020】
上記によれば、例えば仮想カメラと音源との距離が第2の閾値よりも大きい場合、音声を補正することができる。すなわち、仮想カメラの近傍存在する音源については音声の補正は行われず、仮想カメラから第2の閾値より離れた音源を補正することができる。
【0021】
また、他の構成では、上記補正手段は、上記距離が大きいほど上記音声の補正の度合を高くしてもよい。
【0022】
上記によれば、上記距離が大きいほど補正の度合を高くすることができる。
【0023】
また、他の構成では、上記補正手段は、上記角度に応じて補正の度合の最大値を設定してもよい。そして、補正手段は、上記仮想カメラまたは上記所定のキャラクタと、上記音源との距離に基づいて当該最大値の範囲内で補正の度合を決定し、当該補正の度合で上記音声を補正してもよい。
【0024】
上記によれば、上記角度に基づいて補正の度合の最大値が定められ、当該最大値の範囲内で上記距離に基づいて補正の度合を決定することができる。
【0025】
また、他の構成では、上記補正手段は、上記音声の所定の周波数成分の音量を減衰させる度合を大きくすることにより、上記音声の補正の度合を高くしてもよい。
【0026】
上記によれば、所定の周波数成分の減衰の度合を大きくすることで、補正の度合を高くすることができる。
【0027】
また、他の構成では、上記補正手段は、上記音声の所定の周波数成分を減衰させることにより上記音声を補正してもよい。
【0028】
上記によれば、所定の周波数成分を減衰させることで、音声を補正することができる。
【0029】
また、他の構成では、上記音源または上記音源の音声の種類に応じて上記音声の補正を行うか否かを判定する判定手段として、上記コンピュータをさらに機能させてもよい。上記補正手段は、上記判定手段によって上記音声の補正を行うと判定された場合のみ、上記音声の補正を行う。
【0030】
上記によれば、音源または音声の種類に応じて補正する/しないを判定することができる。
【0031】
また、他の構成では、上記補正手段は、上記音源または上記音源の音声の種類に応じて上記音声の補正の度合を設定し、当該補正の度合で上記音声を補正してもよい。
【0032】
上記によれば、音源または音声の種類に応じて補正の度合を設定することができる。
【0033】
また、他の構成では、上記所定のフィルタは、周波数フィルタであってもよい。
【0034】
上記によれば、周波数フィルタを用いて容易に音声を補正することができる。
【0035】
また、他の構成では、上記周波数フィルタは、ローパスフィルタおよびバンドパスフィルタの少なくとも一方であってもよい。
【0036】
上記によれば、周波数フィルタとしてローパスフィルタおよびバンドパスフィルタの少なくとも一方を用いることができる。
【0037】
なお、本発明の別の一例は、上記情報処理プログラムを実行する情報処理装置(情報処理システム)であってもよい。情報処理システムは、1つの装置によって構成されてもよいし、複数の装置が互いに協働することによって構成されてもよい。さらに、本発明の別の一例は、上記情報処理システムにおいて行われる情報処理方法であってもよい。
【発明の効果】
【0038】
本発明によれば、異なる方向に存在する音源からの音声を区別することができる。
【図面の簡単な説明】
【0039】
【図1】ゲームシステム1の構成を示すブロック図
【図2】本実施形態のゲームが実行された場合におけるテレビ2に表示される映像(画像)の一例を示す図
【図3】図2に示す画像が表示された場合における各オブジェクトをゲーム空間の上方から見た図であり、ゲーム空間に配置された各オブジェクトの位置関係を示す図
【図4】本実施形態のゲームが実行された場合におけるテレビ2に表示される映像(画像)の他の例を示す図
【図5】図4に示す画像が表示された場合における各オブジェクトをゲーム空間の上方から見た図であり、ゲーム空間に配置された各オブジェクトの位置関係を示す図
【図6】音量計算用マイク62と音源53との距離に基づく、当該音源53からの音声の音量を示す図
【図7】音源53の左右方向の定位(左右定位)を示す図
【図8】音源53の前後方向の定位(前後定位)を示す図
【図9】定位計算用マイク61、音量計算用マイク62および音源53が所定の位置関係で配置された場合の、音源53の左右定位、前後定位および音量を示す図
【図10】矢オブジェクト(音源54)がゲーム空間を仮想カメラ60に向かって移動している様子をゲーム空間の上方から見た図
【図11】仮想カメラ60の後方に音源52が存在する場合において、各オブジェクトをゲーム空間の上方から見た図
【図12】後方フィルタ用マイク64と音源52との位置関係に基づいたフィルタ値を示す図
【図13】フィルタ値の違いによる周波数フィルタリングを示す図
【図14】ゲーム処理において用いられる各種データを示す図
【図15】ゲーム装置3において実行されるメイン処理の流れを示すメインフローチャート
【図16】図15に示す定位・音量算出処理(ステップS4)の詳細な流れを示すフローチャート
【図17】図15に示すフィルタ処理(ステップS5)の詳細な流れを示すフローチャート
【発明を実施するための形態】
【0040】
(ゲームシステムの全体構成)
以下、図面を参照して、本発明の一実施形態に係るゲームシステム1について説明する。図1は、ゲームシステム1の構成を示すブロック図である。図1において、ゲームシステム1は、表示装置(例えば、テレビジョン受像器等(以下、「テレビ」)と記載する)2、ゲーム装置3、光ディスク4、コントローラ5を含む。ゲームシステム1は、コントローラ5を用いたゲーム操作に基づいてゲーム装置3においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ2に表示するものである。
【0041】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるための情報処理プログラム(典型的にはゲームプログラム)が記憶されている。
【0042】
ゲーム装置3には、テレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ2はスピーカ2aを有しており、スピーカ2aは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、スピーカ2aはテレビ2とは別に設けられてもよい。ゲーム音声は、モノラルスピーカから出力されてもよいし、ステレオスピーカから出力されてもよい。また、ゲーム音声は、5.1チャンネルサラウンドスピーカから出力されてもよい。
【0043】
コントローラ5は、自機に対する操作に基づく操作データをゲーム装置3に与えるものである。コントローラ5とゲーム装置3とは無線(有線でもよい)によって通信可能である。また、図1では、ゲームシステム1に含まれるコントローラ5は1つとするが、ゲームシステム1は複数のコントローラ5を含んでいてもよい。
【0044】
コントローラ5には、複数の操作ボタン(方向指示のための十字ボタンや複数のプッシュボタン等)が設けられ、ユーザによる当該操作ボタンに対する操作情報が操作データとしてコントローラ5からゲーム装置3に送信される。
【0045】
ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ディスクドライブ14、およびAV−IC15等を有する。
【0046】
CPU10は、上記ゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ディスクドライブ14、AV−IC15およびコントローラ通信モジュール19が接続される。システムLSI11は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ディスクドライブ14は、光ディスク4からプログラムデータや音声データ等を読み出し、内部メインメモリ11dまたは外部メインメモリ12に読み出したデータを書き込む。
【0047】
システムLSI11には、GPU(Graphics Processor Unit)11a、DSP(Digital Signal Processor)11b、VRAM(Video RAM)11c、および内部メインメモリ11dが設けられる。図示は省略するが、これらは内部バスによって互いに接続される。
【0048】
GPU11aは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11cは、GPU11aがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。
【0049】
DSP11bは、オーディオプロセッサとして機能し、内部メインメモリ11dや外部メインメモリ12に記憶される音声データや音色データを用いて、再生用の音声データを生成する。
【0050】
ゲーム装置3において生成される画像および音声のデータは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、テレビ2に画像が表示されるとともにスピーカ2aから音が出力される。
【0051】
ゲーム装置3は、コントローラ5からの操作データを受信することが可能である。すなわち、システムLSI11は、コントローラ5から送信される操作データをアンテナ23およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11dまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0052】
なお、ゲームシステム1は単なる一例であり、後述するゲーム処理(情報処理)はどのようなシステムにおいて行われてもよい。
【0053】
(ゲーム処理の概要)
次に、本実施形態のゲームシステム1において実行されるゲーム処理の概要について説明する。図2は、本実施形態のゲームが実行された場合におけるテレビ2に表示される映像(画像)の一例を示す図である。図2に示すように、テレビ2には、プレイヤキャラクタ51、音源52a、音源52b、および、音源52c(以下では単に「音源52」と総称することがある)が表示される。本実施形態では、プレイヤキャラクタ51が3次元のゲーム空間(仮想空間)に配置され、当該プレイヤキャラクタ51の背後に設定された仮想カメラでゲーム空間を撮像することにより、当該プレイヤキャラクタ51を含む画像がテレビ2に表示される。仮想カメラの注視点は、プレイヤキャラクタ51の頭部に設定される。プレイヤはコントローラ5を用いて当該プレイヤキャラクタ51をゲーム空間内で移動させたり、ゲーム空間に登場する敵キャラクタを倒したりしながら、ゲームを進行させる。本実施形態のゲームでは、様々なゲームシーンが用意されており、例えば、図2に示すようなプレイヤキャラクタ51が滝および川に囲まれたようなゲームシーンや洞窟内のゲームシーン等が用意される。
【0054】
音源52は、音声(サウンド)を発する滝オブジェクトであり、ゲーム空間に配置された仮想オブジェクトである。音声は、音源52の位置(滝オブジェクトが表示された領域の所定位置)から発生し、ゲーム装置3は、当該音声をゲーム空間に配置された仮想マイクで集音することで、音源52からの音声をスピーカから出力させる。
【0055】
図3は、図2に示す画像が表示された場合における各オブジェクトをゲーム空間の上方から見た図であり、ゲーム空間に配置された各オブジェクトの位置関係を示す図である。図3に示すように、プレイヤキャラクタ51の周囲には、音源52a〜52cが配置され、仮想カメラ60は、プレイヤキャラクタ51から所定距離離れた位置に配置される。また、ゲーム空間には、定位計算用マイク61と、音量計算用マイク62とが配置される。定位計算用マイク61は、仮想カメラ60の位置に配置される。音量計算用マイク62は、仮想カメラ60の撮像軸上の位置であって、仮想カメラ60の注視点(プレイヤキャラクタ51の位置)と仮想カメラ60との間の所定位置(例えば、中間)に配置される。プレイヤがコントローラ5を用いて(例えば、コントローラ5の十字ボタンを用いて)プレイヤキャラクタ51をゲーム空間内で移動させたり、プレイヤキャラクタ51の姿勢を変化させると、仮想カメラ60の位置および姿勢が変化する。図3に示す例では、仮想カメラ60の注視点は、プレイヤキャラクタ51の頭部に固定され、プレイヤキャラクタ51の移動に伴って、仮想カメラ60の注視点も移動する。
【0056】
定位計算用マイク61は、音源52の定位を計算するための仮想マイクであり、テレビ2には表示されない。ここで、音源52の定位は、定位計算用マイク61(仮想カメラ60)と音源52との位置関係を示す情報であり、定位計算用マイク61を基準とした音源52の相対的な位置を示すものである。音源52の定位は、定位計算用マイク61を基準とした音源52の方向を示す情報であってもよいし、音源52の方向および距離を示す情報であってもよい。本実施形態においては、音源52の定位は、定位計算用マイク61を基準とした(定位計算用マイク61から見た)音源52の方向を示す情報であり、具体的には、後述する左右定位および前後定位として表される。音量計算用マイク62は、音源からの音声の音量(音の大きさ)を計算するための仮想マイクであり、テレビ2には表示されない。定位の計算および音量の計算については、後述する。
【0057】
図4は、本実施形態のゲームが実行された場合におけるテレビ2に表示される映像(画像)の他の例を示す図である。図4に示すように、本実施形態のゲームの他のシーンでは、キャラクタ55は、壁オブジェクトに囲まれたゲーム空間を移動する。図4に示す例では、キャラクタ55、仮想カメラ60の位置および姿勢、注視点、その他ゲーム空間に配置された他のオブジェクトは、プレイヤの操作によらず、ゲーム装置3によって自動で制御される。本実施形態のゲームでは、プレイヤの操作によってプレイヤキャラクタ51が制御されてゲームが進行するプレイヤ操作モード(図2)と、プレイヤの操作によらずに自動でキャラクタ55が移動したり、仮想カメラの注視点が変化したりしてゲームが進行するデモモード(図4)とで実行可能である。なお、キャラクタ55はプレイヤキャラクタ51と同じキャラクタであってもよいし、異なるキャラクタであってもよい。また、デモモードにおいては、キャラクタ55は表示されずに、ゲーム空間を仮想カメラ60が自動で移動することにより、ゲーム空間の他のオブジェクトの映像や音声を視聴者に視聴させてもよい。
【0058】
例えば、図4に示すゲームシーンでは、音源としてのドアオブジェクト(音源53)が自動で開く様子が表示される。ここで、ドアオブジェクト(音源53)が開くことに伴って、実際にドアが開くときに発生するような音声が発生する。すなわち、音源53は、音声を発生する音源となる仮想オブジェクトである。また、ドアオブジェクト(音源53)が自動で開く際、仮想カメラ60の注視点がキャラクタ55の頭部から音源53の近傍に移動する。
【0059】
図5は、図4に示す画像が表示された場合における各オブジェクトをゲーム空間の上方から見た図であり、ゲーム空間に配置された各オブジェクトの位置関係を示す図である。図5に示すように、仮想カメラ60の注視点は音源53の近傍に位置し、当該注視点の近傍には、音量計算用マイク62が配置される。音源53からの音声の音量は、音量計算用マイク62と音源53との距離によって定められる。音量計算用マイク62は音源53の近傍に位置するため、スピーカからは比較的大きな音量の音声(ドアが開くときに発生するような効果音)が出力される。音量計算用マイク62は、仮想カメラ60の注視点近傍の所定位置に固定される。仮に、図4に示すシーンにおいて仮想カメラ60の注視点がキャラクタ55の頭部に位置する場合、音量計算用マイク62もキャラクタ55の近傍に位置するため、音量計算用マイク62と音源53との距離は比較的遠くなる。このため、仮想カメラ60の注視点がキャラクタ55の頭部に位置する場合は、スピーカからは比較的小さな音量の音声が出力される。しかしながら、実際には、図4および図5に示すように仮想カメラ60の注視点は音源53の近傍に設定されるため、ドアオブジェクト(音源53)が開く際には比較的大きな音量の音声がスピーカから出力される。
【0060】
仮想カメラ60の注視点は、プレイヤによる操作に応じて変化したり、ゲーム装置3によって自動で変化したりする。例えば、上記プレイヤ操作モード(図2)では、仮想カメラ60の注視点は、プレイヤキャラクタ51の頭部に固定されるため、プレイヤがコントローラ5を用いてプレイヤキャラクタ51を移動させると、仮想カメラ60の注視点も移動する。また、上記音量計算用マイク62は、仮想カメラ60とプレイヤキャラクタ51との間に設定され、仮想カメラ60の注視点に基づいた位置に設定される。プレイヤの操作によってプレイヤキャラクタ51が移動することに伴って、音量計算用マイク62も移動するため、プレイヤキャラクタ51の周辺に存在する音源からの音声の音量を比較的大きくすることができる。
【0061】
また、上記デモモード(図4)では、仮想カメラ60の注視点はゲーム装置3によって自動で変化し、音量計算用マイク62は、仮想カメラ60の注視点の近傍に固定される。デモモードにおいては、ゲーム製作者は、ゲームシーンによってプレイヤ(視聴者)に特定のオブジェクトに注目させたい場合があり、ゲーム製作者は、当該特定のオブジェクトに仮想カメラ60の注視点が移動するように、プログラムする。例えば、図4に示すように、ドアオブジェクト(音源53)が自動で開いてキャラクタ55を音源53の先の進路に誘導させるようなゲームシーンでは、視聴者をドアオブジェクトに注目させるため、仮想カメラ60の注視点を当該音源53の近傍に設定する。このようなゲームシーンでは、仮想カメラ60の注視点をドアオブジェクトの近傍に設定するとともに、スピーカから出力される音源53からの音声の音量を比較的大きくする。これにより、視聴者をドアオブジェクトに注目させることができる。
【0062】
また、プレイヤ操作モードやデモモードにおいて、プレイヤ(または視聴者)による操作に応じて仮想カメラ60の注視点を特定のオブジェクトに設定することが可能であってもよい。プレイヤ(または視聴者)による操作に応じて仮想カメラ60の注視点が特定のオブジェクトに設定されるということは、プレイヤ(または視聴者)が当該オブジェクトに注目したいためであると考えられる。このため、スピーカから出力される当該特定のオブジェクトからの音声の音量を比較的大きくすることにより、プレイヤ(または視聴者)を当該オブジェクトにより注目させることができる。
【0063】
次に、定位の計算および音量の計算について、図6から図9を参照して説明する。図6は、音量計算用マイク62と音源53との距離に基づく、当該音源53からの音声の音量を示す図である。図6に示すように、音源53からの音声の音量は、音量計算用マイク62と音源53との距離に応じて変化する。音源53からの音声の音量は、例えば、0〜1.0の範囲で定められる。例えば、音源53の位置が音量計算用マイク62の位置と一致している場合、当該音源53からの音声の音量は、最大値である1.0に設定される。また、音源53が所定距離以上離れている場合、当該音源53からの音声の音量は0に設定され、この場合、スピーカから当該音声は出力されない。例えば、音源53からの音声の音量は、音量計算用マイク62と音源53との距離に比例して定められてもよい。例えば、図6に示すように、音量計算用マイク62と音源53との距離がL1である場合、音源53からの音声の音量は0.9に設定される。すなわち、音源53が、音量計算用マイク62から半径L1の円上の任意の位置に存在する場合、音源53からの音声の音量は0.9に設定される。また、上述の音源52(滝オブジェクト)からの音声の音量についても、同様に、音源52と音量計算用マイク62との距離に応じて変化する。なお、同じ音源からの同じ音声の音量は、音量計算用マイク62と当該音源との距離に応じて定められるが、異なる音源からの音声の音量は、音源毎に定められてもよい。例えば、音源52と音源53とが音量計算用マイク62から等距離にある場合、スピーカから出力された際の、音源52からの音声の音量の方が音源53からの音声の音量よりも大きくてもよい。例えば、各音源には基本的な音量(基本音量)が設定され、ゲーム装置3は、当該基本音量に、音源と音量計算用マイク62との距離に応じた係数(当該距離に応じて0〜1.0の範囲で変化する係数)をかけることにより、距離に応じた音量を計算してもよい。また、同じ音源から異なる種類の音声が出力され、音声の種類毎に基本音量が異なっていてもよい。この場合、ゲーム装置3は、音声の種類毎の基本音量に、音源と音量計算用マイク62との距離に応じた係数をかけることにより、距離に応じた音量を計算してもよい。
【0064】
図7は、音源53の左右方向の定位(左右定位)を示す図である。音源53の定位は、音源53と定位計算用マイク61との位置関係によって定められる。すなわち、音源53の定位は、マイク61から見た(マイク61を基準とした)音源53の相対的な位置および姿勢を示す。具体的には、音源53の定位は、左右定位と前後定位とによって表される。
【0065】
音源53の左右定位は、定位計算用マイク61(仮想カメラ60)を基準として、音源53が左右方向にどの程度ずれているかを示すものである。具体的には、音源53の左右定位は、仮想カメラ60の撮像方向ベクトルと、定位計算用マイク61から音源53に向かうベクトルとの角度D1によって定められる。仮想カメラ60の撮像方向を0度として時計回りを正の角度とした場合において、例えば、60度〜120度の範囲に音源53が存在する場合、音源53の左右定位は1.0に定められる。また、例えば、−60度〜−120度の範囲に音源53が存在する場合、音源53の左右定位は−1.0に定められる。また、角度D1が0度〜60度である場合は、音源53の左右定位は0〜1.0の範囲で定められる。例えば、音源53の左右定位は、角度D1をパラメータとする正弦関数によって定められてもよいし、角度D1の値に比例して定められてもよい。また、角度D1が0度〜−60度である場合は、音源53の左右定位は0〜−1.0の範囲で定められ、例えば、左右定位は、角度D1をパラメータとする正弦関数によって定められてもよいし、角度D1の値に比例して定められてもよい。また、角度D1が120度〜180度である場合は、音源53の左右定位は1.0〜0の範囲で定められ、角度D1が−120度〜−180度である場合は、音源53の左右定位は−1.0〜0の範囲で定められる。例えば、図7に示す場合、音源53は、定位計算用マイク61の左右方向に関して、左側にわずかにずれているため、音源53の左右定位は、−0.1となる。
【0066】
図8は、音源53の前後方向の定位(前後定位)を示す図である。音源53の前後定位は、定位計算用マイク61(仮想カメラ60)を基準として、音源53が前後方向にどの程度ずれているかを示すものである。具体的には、音源53の前後定位は、仮想カメラ60の撮像方向に対して右向きのベクトル(右向きベクトル)と、定位計算用マイク61から音源53に向かうベクトルとの角度D2によって定められる。右向きベクトルの方向を0度として時計回りを正の角度とした場合において、例えば、60度〜120度の範囲に音源53が存在する場合、音源53の前後定位は1.0に定められる。また、例えば、−60度〜−120度の範囲に音源53が存在する場合、音源53の前後定位は−1.0に定められる。角度D2が0度〜60度である場合は、音源53の前後定位は0〜1.0の範囲で定められる。例えば、音源53の前後定位は、角度D2をパラメータとする正弦関数によって定められてもよいし、角度D2の値に比例して定められてもよい。また、角度D2が0度〜−60度である場合は、音源53の前後定位は0〜−1.0の範囲で定められ、例えば、前後定位は、角度D2をパラメータとする正弦関数によって定められてもよいし、角度D2の値に比例して定められてもよい。また、角度D2が120度〜180度である場合は、音源53の前後定位は1.0〜0の範囲で定められ、角度D2が−120度〜−180度である場合は、音源53の前後定位は−1.0〜0の範囲で定められる。例えば、図8に示す場合、音源53は定位計算用マイク61の前方に位置するため、音源53の前後定位は、−1.0となる。
【0067】
なお、ゲーム空間の上下方向(垂直方向)に関しては、音源53の定位は変化しないものとする。すなわち、音源53およびマイク61がゲーム空間内の所定の平面(地面)上に存在する場合において、音源53またはマイク61をゲーム空間の上下方向(所定の平面に対して垂直方向)に移動させた場合も、音源53の定位は変化しないものとする。
【0068】
図9は、定位計算用マイク61、音量計算用マイク62および音源53が所定の位置関係で配置された場合の、音源53の左右定位、前後定位および音量を示す図である。図9に示すように、音源53が、仮想カメラ60のほぼ正面に位置し、かつ、当該仮想カメラ60の撮像方向に対してわずかに左にずれている場合、音源53の前後定位は−1.0となり、左右定位は−0.1となる。また、音源53が音量計算用マイク62から比較的近い場合は、音量は0.9となる。
【0069】
音源53の音声がスピーカから出力される場合、音源53の定位によってプレイヤが感じる音源の位置が異なる。例えば、左右定位が0で前後定位が−1の場合、プレイヤは前方から音声が発生したと感じ、左右定位が0で前後定位が1の場合、プレイヤは後方から音声が発生したと感じる。また、例えば、左右定位が1で前後定位が0の場合、プレイヤは右方向から音声が発生したと感じ、左右定位が−1で前後定位が0の場合、プレイヤは左方向から音声が発生したと感じる。図9に示すように、定位計算用マイク61は、仮想カメラ60の位置に設定されるため、プレイヤは、仮想カメラ60から見た音源53の方向から当該音源53の音声が発生したと感じることができる。
【0070】
一方、音量計算用マイク62は、仮想カメラ60の注視点に基づいて設定され、図9に示す例では、音源53の近傍に位置する。このため、音源53からの音声が比較的大きな音量でスピーカから出力される。例えば、音量計算用マイク62と定位計算用マイク61とが一致する場合において、音量計算用マイク62が仮想カメラ60の位置に設定されると、音源53と音量計算用マイク62(定位計算用マイク61)との距離が大きくなってしまう。このため、音源53からの音声は比較的小さな音量となってしまう。一方で、音量計算用マイク62と定位計算用マイク61とが一致する場合において、音源53の音量を大きくするために、音量計算用マイク62(定位計算用マイク61)を音源53の近傍に設定すると、音源53の定位が変化してしまう。例えば、図9に示す音量計算用マイク62と同じ位置に定位計算用マイク61が位置する場合、定位計算用マイク61の略左方向に音源53が位置することになるため、当該定位計算用マイク61から見た音源53の前後定位は、0となり、左右定位は、−1.0となる。このため、プレイヤが、仮想カメラ60で撮像された画像を見ながら音源53からの音声を聞くと、プレイヤは、テレビ2に表示された音源53とは異なる方向(左方向)から当該音源53の音声が発生したかのように感じることになる。従って、定位計算用マイク61を音源53に近づけるとプレイヤは違和感を感じることがある。しかしながら、本実施形態のゲームでは、音量計算用マイク62と定位計算用マイク61とが別々に設けられて、音量計算用マイク62を音源に近づけることにより、音源の定位を変化させることなく、音源の音量を変化させることができる。
【0071】
また、音量計算用マイク62が定位計算用マイク61(仮想カメラ60)と同じ位置に存在する場合、仮想カメラ60によって撮像されない他のオブジェクトが仮想カメラ60の近傍に存在すると、テレビ2には表示されないオブジェクトの音声の音量が大きくなってしまう。テレビ2には表示されないオブジェクトの音声の音量が大きいと、プレイヤは違和感を感じたり、混乱したりすることがある。しかしながら、本実施形態では、音量計算用マイク62と定位計算用マイク61とが別々に設けられる。上記デモモードでは、音量計算用マイク62は、仮想カメラ60の注視点の近傍に配置される。また、上記プレイヤ操作モードでは、プレイヤキャラクタ51と仮想カメラ60との間に、音量計算用マイク62が配置される。このため、仮想カメラ60によって撮像されないオブジェクトの音量を抑え、仮想カメラ60の注視点近傍に存在するオブジェクト、あるいは、プレイヤキャラクタ51および仮想カメラ60の周辺に存在するオブジェクトからの音声の音量を大きくすることができる。
【0072】
次に、ゲーム空間内を移動するオブジェクトが発する音声の処理について説明する。図10は、矢オブジェクト(音源54)がゲーム空間を仮想カメラ60に向かって移動している様子をゲーム空間の上方から見た図である。図10に示すように、本実施形態のゲームでは、定位計算用マイク61、音量計算用マイク62に加えて、ドップラー効果用マイク63がゲーム空間内に設定される。ドップラー効果用マイク63は、テレビ2には表示されない仮想マイクである。なお、図10においてはドップラー効果用マイク63は、定位計算用マイク61から離れた位置に表示されているが、本実施形態においては、ドップラー効果用マイク63は、定位計算用マイク61の位置に設定される。したがって、ドップラー効果用マイク63は、内部的には定義されなくてもよく、定位計算用マイク61をドップラー効果用マイク63として後述の処理が行われてもよい。
【0073】
矢オブジェクトは、矢が空気中を移動する際に矢と空気との摩擦によって発生するような音声(効果音)を発しながら、ゲーム空間を移動速度vで移動する移動オブジェクトである。本実施形態のゲームでは、矢オブジェクトの移動によるドップラー効果を考慮して、矢オブジェクト(音源54)から発せられる音声の周波数を補正する。また、ドップラー効果用マイク63(仮想カメラ60)がゲーム空間を移動する場合にも、ドップラー効果による音声の補正が行われる。すなわち、音源54とマイク63との相対運動に応じて、音源54の音声が補正される。具体的には、音源54の速度とドップラー効果用マイク63の速度とに応じて音源54の音声の周波数が変化する。従って、例えば、音源54がドップラー効果用マイク63に近づいてきて通り過ぎる際に当該音源54の音声が変化する。
【0074】
なお、本実施形態では、ドップラー効果用マイク63は、定位計算用マイク61(仮想カメラ60)の位置に配置されるものとしたが、ドップラー効果用マイク63は、定位計算用マイク61から離れた位置に配置されてもよい。例えば、図10に示すように、ドップラー効果用マイク63は、仮想カメラ60の撮像方向の所定位置に配置されてもよい。この場合、仮想カメラ60に向かって移動する音源54が、ドップラー効果用マイク63を通り過ぎる際に当該音源54からの音声の周波数が変化するが、その時点では、当該音源54は、仮想カメラ60の前方に位置することになる。すなわち、聴覚による音源54の通過のタイミングが視覚による音源54の通過のタイミングよりも早くなる。また、ドップラー効果用マイク63は、プレイヤキャラクタ51の近傍に設けられてもよい。この場合、プレイヤキャラクタ51の位置で感じられるドップラー効果を再現することができる。
【0075】
(後方からの音声に対する処理)
次に、音源が仮想カメラ60の後方に位置する場合の音声の処理について、図11から図13を参照して説明する。図11は、仮想カメラ60の後方に音源52が存在する場合において、各オブジェクトをゲーム空間の上方から見た図である。図11に示すように、仮想カメラ60(定位計算用マイク61)の位置には、後方フィルタ用マイク64が配置される。本実施形態では、音源52が仮想カメラ60の後方に位置する場合(仮想カメラ60の撮像方向と反対側に位置する場合)、当該音源52からの音声に対してフィルタ処理が行われる。フィルタ処理は、音声に対して周波数フィルタ(ローパスフィルタ、バンドパスフィルタ、ハイパスフィルタ等)を適用することによって、特定の周波数成分の音量を下げる、または、特定の周波数成分をカットする処理である。例えば、ローパスフィルタを用いたフィルタ処理では、所定の周波数以上の成分はカットされる。本実施形態では、ローパスフィルタまたはバンドパスフィルタを用いて、高い周波数成分をカットすることにより、仮想カメラ60の後方からの音声を籠らせる。
【0076】
図12は、後方フィルタ用マイク64と音源52との位置関係に基づいたフィルタ値を示す図である。図12に示すように、仮想カメラ60(後方フィルタ用マイク64)の前方に音源52が位置する場合は、フィルタ値は0に設定される。この場合、音源52からの音声にはフィルタは適用されないため、当該音声はそのままスピーカから出力される。フィルタ値は、音声に対するフィルタの度合(補正の度合)を示す値である。フィルタ値については後述する。
【0077】
一方、仮想カメラ60の後方に音源52が位置する場合は、フィルタ値は0〜1の範囲で設定される。具体的には、まず、仮想カメラ60の撮像方向のベクトルと、後方フィルタ用マイク64から音源52に向かうベクトルとの角度D1が算出される。また、後方フィルタ用マイク64と音源52との距離L2が算出される。そして、角度D1と距離L2とに基づいて、フィルタ値が算出される。具体的には、角度D1の絶対値が0度から90度の場合、フィルタ値は0に設定される。角度D1の絶対値が90度から180度の場合において、距離L2が閾値Lm以上の場合は、当該角度D1の絶対値に応じた最大値(1以下の値)に設定される。角度D1の絶対値が90度から180度の場合において、距離L2が閾値Lm未満の場合は、当該角度D1に応じた最大値を距離L2に応じて補正する(減ずる)ことにより、フィルタ値が算出される。例えば、角度D1に応じた最大値は、角度D1に比例して定められてもよし、角度D1をパラメータとする正弦関数によって定められてもよい。また、例えば、角度D1の絶対値が180度である場合、フィルタ値の最大値は1に設定される。そして、距離L2が上記閾値Lm未満である場合は、例えば、距離L2を上記閾値Lmで割った値が、フィルタ値として算出されてもよい。また、例えば、角度D1の絶対値が135度である場合の最大値は0.5に設定され、距離L2が上記閾値Lmの1/2である場合は、フィルタ値は、当該最大値の1/2、すなわち、0.25に設定されてもよい。
【0078】
なお、後方フィルタ用マイク64と音源52との距離L2が閾値L0(<Lm)よりも小さい場合、上記角度D1の絶対値が90度より大きくても、すなわち、音源52が仮想カメラ60の後方に存在していても、フィルタ値は0に設定される。従って、音源52が後方フィルタ用マイク64から閾値L0の範囲内に存在する場合、当該音源52からの音声はフィルタリングされずに、そのままスピーカから出力される。
【0079】
ここで、「フィルタ値」は、音源の音声を補正する度合を示すものである。図13は、フィルタ値の違いによる周波数フィルタリングを示す図である。図13において、横軸は周波数を示し、縦軸は音量の割合を示す。図13に示すように、フィルタ値が0の場合、全周波数において音量の割合は1になる。このため、音声の各周波数成分の音量は維持され、音源からの音声がそのままスピーカから出力される。一方、フィルタ値が例えば0.5である場合、特定の周波数F0よりも高い周波数成分の音量は、フィルタ値0.5で示される曲線に従って補正される。例えば、図13に示すように、フィルタ値が0.7である場合において、周波数F1の成分の音量は補正前の音量の0.7倍に設定される。また、例えば、フィルタ値が1である場合、周波数F0以上の成分の音量は0に設定されるため、周波数F0以上の成分はカットされる。このように、フィルタ値によって音声が補正され、補正された後の音声がスピーカから出力される。具体的には、図13に示すようなローパスフィルタが適用されると、補正後の音声は補正前の音声よりも高周波数成分がカットあるいは減衰されるため、籠ったような音声が出力される。なお、図13に示すフィルタの曲線(周波数F0以上の曲線部分)の形状は、どのような形状でもよい。例えば、周波数F0以上の部分は、直線であってもよいし、所定の音量(割合)に収束するような曲線であってもよい。また、図13では、縦軸は音量の割合を示したが、縦軸は音量を減少させる値を示してもよい。
【0080】
以上のように、本実施形態では、音源が仮想カメラ60の後方(角度D1の絶対値が90度から180度の範囲)に存在する場合、音源からの音声に対して周波数フィルタが適用される。具体的には、音源が仮想カメラ60の後方に存在するほど、フィルタ値が大きくなる(補正の度合が高くなる)。また、音源が仮想カメラ60から離れるほど、フィルタ値が大きくなる(補正の度合が高くなる)。これにより、より後方に存在する音源ほど音が籠り、より遠方に存在する音源ほど音が籠る。従って、プレイヤは、音源がどの方向に存在するか(仮想カメラ60の撮像方向と反対方向のどの位置に存在するか)を認識することができる。また、仮想カメラ60の後方に存在する音源は、テレビ2には表示されないため、そのような表示されないオブジェクトからの音声を籠らせることで、プレイヤはテレビ2に表示されるオブジェクトに注意することができる。また、複数の同じ種類の音源がゲーム空間に存在する場合でもプレイヤは混乱せずにテレビ2に表示されるオブジェクトの音声を聞くことができる。
【0081】
(ゲーム処理の詳細)
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図14は、ゲーム処理において用いられる各種データを示す図である。図14において、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11d)に記憶される主なデータが示されている。図14に示すように、ゲーム装置3のメインメモリには、ゲームプログラム100、および処理用データ110が含まれる。なお、メインメモリには、図14に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームのBGMの音声データ等、ゲームに必要なデータが記憶される。
【0082】
ゲームプログラム100は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム100は、光ディスク4に代えて、フラッシュメモリやゲーム装置3の外部装置から(例えばインターネットを介して)取得されてもよい。また、ゲームプログラム100に含まれる一部のプログラムについては、ゲーム装置3内に予め記憶されていてもよい。
【0083】
処理用データ110は、後述するメイン処理(図15)において用いられるデータである。処理用データ110は、キャラクタデータ111、音源データ112、仮想カメラデータ113、マイクデータ114を含む。
【0084】
キャラクタデータ111は、プレイヤキャラクタ51のゲーム空間における位置および姿勢を示すデータを含む。また、キャラクタデータ111は、キャラクタ55のゲーム空間のおける位置および姿勢を示すデータを含む。
【0085】
音源データ112は、音源となる各オブジェクトに関するデータである。音源データ112には、音源52(滝オブジェクト)、音源53(ドアオブジェクト)、音源54(矢オブジェクト)等に関するデータが含まれる。具体的には、音源に関するデータには、各音源の位置および姿勢を示すデータ、各音源の定位を示すデータ、各音源の音声データ(音声の波形を示すデータ)、各音源の音声の音量を示すデータ等が含まれる。
【0086】
仮想カメラデータ113は、仮想カメラ60の位置、姿勢、注視点を示すデータを含む。
【0087】
マイクデータ114は、各マイクに関するデータである。具体的には、マイクデータ114には、定位計算用マイク61、音量計算用マイク62、ドップラー効果用マイク63、および後方フィルタ用マイク64に関するデータが含まれる。すなわち、マイクデータ114には、定位計算用マイク61の位置および姿勢を示すデータ、音量計算用マイク62の位置および姿勢(位置のみでもよい)を示すデータ、ドップラー効果用マイク63の位置および姿勢(位置のみでもよい)を示すデータ、および、後方フィルタ用マイク64の位置および姿勢を示すデータが含まれる。なお、本実施形態では、定位計算用マイク61の位置および姿勢は、仮想カメラ60の位置および姿勢と一致する。また、ドップラー効果用マイク63の位置および姿勢は、定位計算用マイク61の位置および姿勢と一致する。さらに、後方フィルタ用マイク64の位置および姿勢は、定位計算用マイク61の位置および姿勢と一致する。すなわち、これらマイク61、63、64の位置および姿勢は仮想カメラ60の位置および姿勢と一致する。したがって、定位計算用マイク61、ドップラー効果用マイク63、および後方フィルタ用マイク64に関するデータは、メインメモリに記憶されなくてもよい。すなわち、仮想カメラデータ113が、これらマイクに関するデータとして後述するメイン処理において用いられてもよい。
【0088】
(フローチャートの説明)
次に、ゲーム装置3において実行されるゲーム処理の詳細を、図15〜図17を参照して説明する。図15は、ゲーム装置3において実行されるメイン処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。また、CPU10は、光ディスク4に記憶された音源の音声データを読み込み、メインメモリに記憶する。図15のフローチャートに示す処理は、以上の処理が完了した後に行われる。
【0089】
なお、図15〜図17に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数や定数の値等も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU10が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU10以外のプロセッサや専用回路が実行するようにしてもよい。
【0090】
まず、ステップS1において、CPU10は初期処理を実行する。初期処理では、CPU10は、プレイヤによる選択に応じてゲームのモードをプレイヤ操作モードまたはデモモードに設定する。また、CPU10は、3次元のゲーム空間を構築し、ゲーム空間に登場するプレイヤキャラクタ51やキャラクタ55、音源52〜54、マイク61〜64、仮想カメラ60、その他ゲーム空間に配置されるオブジェクト等を初期位置に配置する。また、CPU10は、ゲーム処理で用いる各種パラメータの初期値を設定する。CPU10は、ステップS1の処理の後、ステップS2の処理を実行する。以降、ステップS2〜S9の一連の処理からなる処理ループが所定時間(1フレーム時間。例えば1/60秒)に1回の割合で繰り返し実行される。
【0091】
ステップS2において、CPU10は、コントローラ5から送信されてメインメモリに記憶された操作データを取得する。コントローラ5は操作データ(各ボタン操作に関するデータ等)を所定の時間間隔でゲーム装置3へ繰り返し送信する。ゲーム装置3においては、コントローラ通信モジュール19が操作データを逐次受信し、受信された操作データがメインメモリに逐次記憶される。ステップS2においては、CPU10は、最新の操作データをメインメモリから読み出す。ステップS2の処理の後、ステップS3の処理が実行される。
【0092】
ステップS3において、CPU10はゲーム処理を実行する。当該ゲーム処理では、CPU10は、ステップS2で取得した操作データに基づいて、プレイヤキャラクタ51をゲーム空間内で移動させたり、プレイヤキャラクタ51の姿勢を変化させたり、仮想カメラ60の位置および/または姿勢を変化させたりする。また、CPU10は、各マイク(61〜63)の位置および/または姿勢を変化させる。また、CPU10は、音源54を移動させたり、他のオブジェクト(例えば、敵キャラクタ等)を移動させたりする。なお、デモモードでゲーム装置3が動作している場合には、CPU10は、所定のアルゴリズムに従ってキャラクタ55を移動させたり、仮想カメラ60の位置および姿勢を変化させたりする。次に、CPU10は、ステップS4の処理を実行する。
【0093】
ステップS4において、CPU10は、定位・音量算出処理を実行する。定位・音量算出処理では、CPU10は、各音源の定位および音量を算出する。以下、図16を参照して、定位・音量算出処理の詳細について説明する。
【0094】
図16は、図15に示す定位・音量算出処理(ステップS4)の詳細な流れを示すフローチャートである。
【0095】
ステップS11において、CPU10は、ゲーム空間に配置された複数の音源の中から、処理する1つの音源(例えば、音源52a)を選択する。CPU10は、ステップS11の後、ステップS12の処理を実行する。なお、ゲーム空間内に音源のオブジェクトが無い場合は、CPU10は、当該定位・音量算出処理を終了する。
【0096】
ステップS12において、CPU10は、ステップS11で選択した音源と、音量計算用マイク62との距離より、音量を算出する。具体的には、CPU10は、メインメモリを参照して、音源の位置と音量計算用マイク62の位置とに基づいて、音源と音量計算用マイク62との距離を算出する。そして、CPU10は、当該距離に応じて、音量を算出する。より具体的には、上述したように、CPU10は、距離が大きいほど音量が小さくなるように(距離に比例して音量が小さくなるように)、音量を算出する。算出された音量は、メインメモリに記憶される。次に、CPU10は、ステップS13の処理を実行する。
【0097】
ステップS13において、CPU10は、ステップS11で選択した音源と、定位計算用マイク61との角度より、定位を算出する。具体的には、CPU10は、メインメモリを参照して、定位計算用マイク61の位置および姿勢と、音源の位置とに基づいて、当該音源の定位(左右定位および前後定位)を算出する。より具体的には、CPU10は、上記角度D1(図7)および上記角度D2を算出して、音源の左右定位および前後定位を算出する。算出した定位はメインメモリに記憶される。次に、CPU10は、ステップS14の処理を実行する。
【0098】
ステップS14において、CPU10は、ステップS11で選択した音源と、ドップラー効果用マイク63との相対速度より、ドップラー効果を算出する。具体的には、CPU10は、選択した音源の音声の各周波数成分を、相対速度に基づいて補正する。ドップラー効果の計算結果は、メインメモリに記憶される。次に、CPU10は、ステップS15の処理を実行する。
【0099】
ステップS15において、CPU10は、すべての音源について処理済みか否かを判定する。上記ステップS11からステップS15の処理が繰り返し実行されることにより、ゲーム空間に存在するすべての音源について、処理が行われる。判定結果が否定の場合、CPU10は、ステップS11の処理を再び実行する。一方、判定結果が肯定の場合、CPU10は、定位・音量算出処理を終了する。
【0100】
図15に戻り、CPU10は、次にステップS5において、フィルタ処理を実行する。ステップS5のフィルタ処理では、CPU10は、仮想カメラ60(後方フィルタ用マイク64)の後方に存在する音源からの音声について周波数フィルタを適用する。以下、図17を参照して、フィルタ処理の詳細について説明する。
【0101】
図17は、図15に示すフィルタ処理(ステップS5)の詳細な流れを示すフローチャートである。
【0102】
ステップS21において、CPU10は、ゲーム空間に配置された複数の音源の中から、処理する1つの音源(例えば、音源52a)を選択する。CPU10は、ステップS21の後、ステップS22の処理を実行する。なお、ゲーム空間内に音源のオブジェクトが無い場合は、CPU10は、当該フィルタ処理を終了する。
【0103】
ステップS22において、CPU10は、ステップS21で選択した音源がフィルタを適用する音源か否かを判定する。フィルタを適用する音源か否かは予め定められており、例えば、音源の種類によって定められる。例えば、CPU10は、ステップS21で選択した音源が音源52(滝オブジェクト)である場合、フィルタを適用する音源であると判定する。なお、1つの音源から複数種類の音声が出力される場合、音声の種類毎にフィルタを適用する音声か否かが判定されてもよい。この場合、音声の種類によって、フィルタを適用する音声か否かが予め定められる。判定結果が肯定の場合、CPU10は、次にステップS23の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS31の処理を実行する。
【0104】
ステップS23において、CPU10は、音源とマイクとの角度を算出する。具体的には、CPU10は、メインメモリを参照して、後方フィルタ用マイク64(仮想カメラ60)の位置および姿勢と、音源の位置とに基づいて、音源とマイク64(仮想カメラ60)との角度D1(図12参照)を算出する。CPU10は、次にステップS24の処理を実行する。
【0105】
ステップS24において、CPU10は、音源が後方フィルタ用マイク64の後方に存在するか否かを判定する。具体的には、CPU10は、ステップS23で算出した音源とマイク64との角度D1の絶対値が90度より大きいか否かを判定する。判定結果が肯定の場合、CPU10は、次にステップS25の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS29の処理を実行する。
【0106】
ステップS25において、CPU10は、音源とマイク64との角度に基づいて、フィルタ値を算出する。ここでは、CPU10は、図12に示すように、音源とマイク64との角度D1に応じたフィルタ値の最大値(0〜1.0までの範囲の値)を算出する。例えば、CPU10は、角度D1に比例してフィルタ値の最大値を算出する。CPU10は、次にステップS26の処理を実行する。
【0107】
ステップS26において、CPU10は、音源とマイク64との距離を算出する。具体的には、CPU10は、メインメモリを参照して、音源とマイク64との間の距離L2(図12参照)を算出する。CPU10は、次にステップS27の処理を実行する。
【0108】
ステップS27において、CPU10は、ステップS26で算出した音源とマイク64との距離L2が閾値L0(図12参照)以上か否かを判定する。判定結果が肯定の場合、CPU10は、次にステップS28の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS29の処理を実行する。
【0109】
ステップS28において、CPU10は、ステップS26で算出した音源とマイク64との距離L2に基づいて、フィルタ値を補正する。ここでは、CPU10は、ステップS25で算出したフィルタ値の最大値を距離L2に応じて補正する。CPU10は、音源とマイク64との距離L2が閾値Lm(図12参照)以上の場合、ステップS25で算出した最大値を、フィルタ値として設定する。また、音源とマイク64との距離L2が閾値Lm未満の場合、例えば、CPU10は、ステップS25で算出した最大値に、距離L2を閾値Lmで除した値をかけることにより、ステップS25で算出したフィルタ値の最大値を補正する。補正されたフィルタ値は、メインメモリに記憶される。CPU10は、次にステップS30の処理を実行する。
【0110】
一方、ステップS29において、CPU10は、フィルタ値を0に設定する。ここでは、音源がマイク64の後方にないか、または、音源とマイク64との距離が閾値L0未満であるため、フィルタ値を0に設定する。これにより、音声が再生される際には、フィルタが全くかからない音声がスピーカから出力される。ステップS29の処理の後、CPU10は、次にステップS30の処理を実行する。
【0111】
ステップS30において、CPU10は、音声に周波数フィルタを適用する。ここでは、CPU10は、音源の音声に対して、ステップS28で算出されたフィルタ値に応じたフィルタ(図13参照)が適用される。これにより、所定の周波数以上の成分がカットされたり(音量が0にされたり)、所定の周波数以上の成分の音量が減衰されたりする。ステップS30の処理の後、CPU10は、次にステップS31の処理を実行する。
【0112】
ステップS31において、CPU10は、すべての音源について処理済みか否かを判定する。上記ステップS21からステップS31の処理が繰り返し実行されることにより、ゲーム空間に存在するすべての音源について、処理が行われる。判定結果が否定の場合、CPU10は、ステップS21の処理を再び実行する。一方、判定結果が肯定の場合、CPU10は、図17に示すフィルタ処理を終了する。
【0113】
図15に戻り、CPU10は、次にステップS6において、画像データ生成処理を実行する。ステップS6においては、テレビ2に表示される画像が生成される。具体的には、CPU10は、仮想カメラ60でゲーム空間を撮像することにより、画像データを生成する。CPU10は、次にステップS7の処理を実行する。
【0114】
ステップS7において、CPU10は、画像出力処理を実行する。ここでは、ステップS6で生成された画像データが、テレビ2に出力される。これにより、テレビ2の画面にはゲーム画像が表示される。CPU10は、次にステップS8の処理を実行する。
【0115】
ステップS8において、CPU10は、音声出力処理を実行する。ステップS8が実行されることにより、ステップS4およびステップS5の処理結果に応じた音声がスピーカから出力される。具体的には、ステップS4で算出された音源の定位、音量、およびドップラー効果の計算結果に基づいて音声データが生成され、さらに、ステップS5のフィルタ処理の結果に応じて音声データが補正される。そして、CPU10は、音声データをシステムLSI11を介してAV−IC15に出力する。これにより、スピーカから音声が出力される。CPU10は、次にステップS9の処理を実行する。
【0116】
ステップS9において、CPU10は、ゲームを終了するか否かを判定する。ステップS9の判定は、例えば、ゲームオーバー(あるいはゲームクリア)になったか否か、あるいは、ユーザがゲームを中止する指示を行ったか否か等によって行われる。ステップS9の判定結果が否定の場合、ステップS2の処理が再度実行される。一方、ステップS9の判定結果が肯定の場合、CPU10は図15に示すメイン処理を終了する。
【0117】
以上のように、本実施形態におけるゲームでは、ゲーム空間に存在する音源からの音声が補正されて、スピーカから出力される。具体的には、定位計算用マイク61(仮想カメラ60)の位置を基準とした音源の定位(音源の方向)が算出される。また、定位計算用マイク61とは別に設けられた音量計算用マイク62と音源との距離に応じて、音量が算出される。そして、算出された音源の定位および音量に応じた音声が、スピーカから出力される。本実施形態では、仮想カメラ60の位置に定位計算用マイク61が配置され、仮想カメラ60の注視点近傍(仮想カメラ60の撮像方向の所定位置)に音量計算用マイク62が配置される。このため、テレビ2の中央付近に表示された音源の仮想カメラ60に対する定位が維持されながら、当該音源からの音声の音量を大きくすることができる。これにより、視覚と聴覚による両面からゲーム空間内の所定のオブジェクトを注目させたり、音声を発する多数のオブジェクトがゲーム空間に配置される場合でも、プレイヤを混乱させることなく特定のオブジェクトに注目させることができる。
【0118】
また、プレイヤ操作モードでは、音量計算用マイク62がプレイヤキャラクタ51と仮想カメラ60との間に配置される。このため、プレイヤキャラクタ51周辺の音源からの音声の音量をより大きくすることができる。例えば、音量計算用マイク62が仮想カメラ60の位置に配置されると(マイク61とマイク62とが一致すると)、仮想カメラ60で撮像されないオブジェクトの音量が大きくなり、プレイヤキャラクタ51周辺の音声の音量が小さくなってしまうことがある。このため、プレイヤは違和感を感じたり、多数の音源が存在すると、混乱したりする。しかしながら、上記実施形態では、音量計算用マイク62がプレイヤキャラクタ51と仮想カメラ60との間に配置されるため、プレイヤキャラクタ51周辺からの音声をより大きな音量で再生することができ、プレイヤは違和感を感じることなくゲームを行うことができる。
【0119】
また、デモモードにおいては、音量計算用マイク62は、仮想カメラ60の注視点近傍に配置される。このため、仮想カメラ60で注視したオブジェクトまたは領域からの音声の音量を大きくして、他の領域からの音声の音量を小さくすることができ、視聴者を当該オブジェクトに注目させることができる。
【0120】
また、本実施形態では、仮想カメラ60の後方に存在する音源からの音声に対して、フィルタ処理が行われる。具体的には、音源が仮想カメラ60の真後ろに近いほど、当該音源からの音声に対して高い度合で補正される。また、音源が仮想カメラ60から離れるほど、当該音源からの音声に対して高い度合で補正される。すなわち、本実施形態では、音源と仮想カメラ60との角度が大きいほど(当該角度が180度に近いほど)、また、仮想カメラ60と音源との距離が大きいほど、より高い度合で補正される(より減衰の度合が高くなる)。これにより、仮想カメラ60の後方に存在してテレビ2に表示されないオブジェクトからの音声を籠らせることができ、マイクの前方からの音声と後方からの音声とを区別することができる。
【0121】
例えば、仮想3次元空間の前後方向からの音に違いを出す場合、2つのスピーカ(ステレオスピーカ)からの音の位相差や時間差等を利用するバーチャルサラウンドや、実際に視聴者の前方と後方とにスピーカを配置する5.1チャンネルサラウンド等の技術が考えられる。しかしながら、バーチャルサラウンドの技術や5.1チャンネルサラウンドの技術では、2以上のスピーカが必要であったり、スピーカ間の距離やスピーカと視聴者との位置関係が所定の条件を満たす必要があったりする。また、5.1チャンネルサラウンドでは専用のハードウェアが必要であったり、バーチャルサラウンドでは、複雑な計算が必要であったりする。しかしながら、本実施形態のフィルタ処理では、複雑な計算を必要とすることなく、比較的低負荷で音声の補正を行うことができ、また、モノラルスピーカでも前後方向からの音に違いを出すことができる。
【0122】
(変形例)
なお、上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成であってもよい。
【0123】
例えば、上記実施形態では、定位計算用マイク61と音量計算用マイク62とを別々に設け、音量計算用マイク62を仮想カメラ60の撮像軸上の所定位置に配置した。他の実施形態では、音量計算用マイク62は、仮想カメラ60の撮像軸上に限らず、仮想カメラ60の撮像軸に垂直な面上の所定位置に配置されてもよい。すなわち、音量計算用マイク62は、仮想カメラ60の撮像範囲の所定位置(撮像軸上に限らない撮像範囲)に配置されてもよい。
【0124】
また、上記実施形態では、音量計算用マイク62は定位計算用マイク61(仮想カメラ60)と仮想カメラ60の注視点(プレイヤキャラクタ51の位置)との間の所定位置に配置された。他の実施形態では、音量計算用マイク62は、仮想カメラ60の注視点と一致して配置されてもよいし、注視点よりも仮想カメラ60の撮像方向側に配置されてもよい。
【0125】
また、上記実施形態では、定位計算用マイク61は仮想カメラ60に一致して配置されたが、他の実施形態では、必ずしも定位計算用マイク61は仮想カメラ60の位置に配置される必要はない。例えば、定位計算用マイク61は、プレイヤオブジェクトの位置に基づいて配置されてもよい(プレイヤオブジェクトの位置に一致して配置されてもよいし、プレイヤオブジェクトの位置と所定の関係を有する位置に配置されてもよい)。
【0126】
また、上記実施形態では、音量計算用マイク62は仮想カメラ60の注視点に基づいて配置された。すなわち、プレイヤ操作モードでは、プレイヤキャラクタ51に注視点が設定され、音量計算用マイク62は当該プレイヤキャラクタ51と仮想カメラ60との間に設定された。また、デモモードでは、仮想カメラ60の注視点近傍に音量計算用マイク62が配置された。他の実施形態では、音量計算用マイク62は、仮想カメラ60の注視点とは離れた位置に配置されてもよく、例えば、プレイヤの操作によって移動されてもよい。例えば、音量計算用マイク62を示すマイクオブジェクトがテレビ2に表示され、プレイヤの操作によって当該マイクオブジェクトがゲーム空間内を移動してもよい。プレイヤは、特定の音源からの音声に注目したい場合、当該マイクオブジェクトを移動させることで、特定の音源の音量を大きくすることができる。
【0127】
また、上記実施形態では、ドップラー効果用マイク63は定位計算用マイク61と一致して配置されたが、他の実施形態では、これらの位置は一致しなくてもよい。例えば、ドップラー効果用マイク63をプレイヤキャラクタ51の近傍に配置してもよい。
【0128】
また、上記実施形態では、音源の定位として、音源と定位計算用マイク61との角度に応じて左右定位および前後定位が所定の値(−1.0〜1.0の範囲の値)で表された。他の実施形態では、音源と定位計算用マイク61との位置関係を表すものであればどのような方法で音源の定位が算出されてもよい。例えば、定位計算用マイク61に固定の座標系の座標値によって定位が表されてもよい。また、音源の定位は、定位計算用マイク61を基準とした音源の方向を示すものであってもよいし、音源の方向および距離を示すものであってもよい。
【0129】
また、上記実施形態では、音源の定位は、左右方向および前後方向に関してのみ算出された。すなわち、上記実施形態では、2次元平面(地面)における定位が算出され、仮想空間の上下方向に音源あるいは定位計算用マイク61が移動した場合も、音源の定位は変化しないものとした。他の実施形態では、上下方向に関しても定位が算出されてもよい。すなわち、他の実施形態では、音源と定位計算用マイク61との仮想3次元空間における位置関係に基づいて、音源の定位が3次元で算出されてもよい。そして、実空間において上下方向にもスピーカが配置された環境(例えば、7.1チャンネルサラウンド)において、算出された音源の定位に基づいて、音声が再生されてもよい。
【0130】
また、上記実施形態では、音源からの音声の音量は、音源からの距離に応じて変化し、音源を中心とした所定の半径の円上では音量は同じであるとした。他の実施形態では、音量は、音源からの距離および音源の向きに応じて変化してもよい。
【0131】
また、上記実施形態では、周波数フィルタとしてローパスフィルタを用いて、所定の周波数以上の成分の音量を減少させることにより、音声を補正した。他の実施形態では、周波数フィルタとしてバンドパスフィルタやハイパスフィルタ、バンドエリミネーションフィルタが用いられて、音声が補正されてもよい。また、他の実施形態では、周波数フィルタを用いて、所定以下(所定以上あるいは所定範囲)の周波数の成分の音量を増加させることで所定以上の周波数の成分の音量を相対的に下げることにより、音声を補正してもよい。
【0132】
また、他の実施形態では、上記周波数フィルタ―に限らず、イコライザーのような特定の周波数特性を変更するものや、マルチバンドコンプレッサ、エフェクター等を用いて、音声を補正してもよい。
【0133】
また、上述した音声に対する処理は、他の任意の音声(例えば、所定のキャラクタの声等)に対して行われてもよい。
【0134】
また、上記実施形態では、仮想カメラ60の後方に存在する音源の音声を周波数フィルタを用いて補正した。他の実施形態では、仮想カメラ60から見た所定の方向(前方向、右方向等)の音源からの音声について、周波数フィルタを適用して補正してもよい。また、他の実施形態では、仮想カメラ60から見た所定の方向ではなく、プレイヤキャラクタから見た所定の方向(前方向、右方向等)の音源からの音声を補正してもよい。すなわち、仮想カメラまたは仮想空間内の所定のキャラクタから見た音源の方向(仮想カメラまたは所定のキャラクタを基準とした音源の方向)を算出し、当該算出した方向が所定の方向の場合に、当該音源の音声を補正してもよい。
【0135】
また、上記音声に対する処理(複数のマイクを用いた処理やフィルタを用いた処理)は、上述のようなゲームに限らず、他の任意のゲームにおいても行われてもよい。また、上記音声に対する処理は、ゲームに限らず特定のシミュレーションシステムにおいて行われてもよい。
【0136】
また、本実施形態では、上記ゲーム装置3において上記ゲームプログラムが実行されたが、他の実施形態では、ゲーム専用装置に限らず、一般的な情報処理装置(パーソナルコンピュータやスマートフォン等)において上記プログラムが実行されてもよい。すなわち、他の実施形態では、一般的な情報処理装置において上記プログラムが実行されることにより、当該情報処理装置をゲーム装置として機能させてもよい。
【0137】
また、上記ゲームプログラムは、光ディスクに限らず、磁気ディスク、不揮発性メモリ等の記憶媒体に記憶されてもよく、ネットワークに接続されたサーバ上のRAMや磁気ディスク等のコンピュータ読み取り可能な記憶媒体に記憶されて、ネットワークを介して当該プログラムが提供されてもよい。また、上記ゲームプログラムは、ソースコードとして情報処理装置に読み込まれて、プログラムの実行の際にコンパイルされて実行されてもよい。
【0138】
また、上記実施形態においては、ゲーム装置3のCPU10が上記ゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置3が備える専用回路によって行われてもよし、他の汎用プロセッサによって行われてもよい。少なくとも1つのプロセッサが、上記処理を実行するための「プログラムされた論理回路」として動作するものであってもよい。
【0139】
さらに、他の実施形態では、互いに通信可能な複数の情報処理装置を有する情報処理システムにおいて、当該複数の情報処理装置が、上述のようなゲーム装置3において実行されたゲーム処理を分担して実行するようにしてもよい。例えば、インターネットのようなネットワークに接続された複数の情報処理装置によって上述のような情報処理システムが構成されてもよい。具体的には、例えば、ネットワーク上のサーバが上記ゲーム装置3において行われた処理を行ってもよい。そして、ネットワーク上の端末がサーバからの処理結果を受信し、当該端末に接続された表示装置においてゲーム画像が表示され、当該端末に接続されたスピーカからゲーム音声が出力されてもよい。
【符号の説明】
【0140】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
10 CPU
11d 内部メインメモリ
12 外部メインメモリ
51 プレイヤキャラクタ
52、53、54 音源
55 キャラクタ
60 仮想カメラ
61 定位計算用マイク
62 音量計算用マイク
63 ドップラー効果用マイク
64 後方フィルタ用マイク
【技術分野】
【0001】
本発明は、音声の制御を行う情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法に関する。
【背景技術】
【0002】
従来、仮想3次元空間に配置された音声を発生するオブジェクト(音源)が表示され、当該オブジェクトが存在する方向から音が聞こえるような処理が行われていた(一例として、特許文献1)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−195210号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術では、例えば複数の音源に囲まれているような状況において、異なる方向に存在する音源からの音声を区別するためには改善の余地があった。
【0005】
それ故、本発明の目的は、異なる方向に存在する音源からの音声を区別することが可能な情報処理プログラム、情報処理装置、情報処理システム、および情報処理方法を提供することである。
【課題を解決するための手段】
【0006】
本発明は、上記の課題を解決するために、以下の構成を採用した。
【0007】
本発明の一例は、仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理装置のコンピュータにおいて実行される情報処理プログラムである。当該情報処理プログラムは、方向算出手段と、補正手段と、音声出力手段として、上記コンピュータを機能させる。方向算出手段は、上記仮想カメラまたは上記所定のキャラクタから見た上記音源の方向を算出する。補正手段は、上記音源の方向が所定の方向の場合、上記音源の音声に対して所定のフィルタを適用して当該音声を補正する。音声出力手段は、上記補正手段で補正した音声を出力する。
【0008】
上記によれば、音源が仮想カメラから見て所定の方向(例えば、後方や右方向等)に存在する場合、当該音源の音声に対して所定のフィルタを適用することができる。例えば、音源が仮想カメラの後方に存在する場合に、当該音源の音声が籠るようにして周波数フィルタを適用することができる。
【0009】
また、他の構成では、上記方向算出手段は、上記仮想カメラの撮像方向または上記所定のキャラクタを基準とした方向と、上記音源の方向との角度を算出してもよい。
【0010】
上記によれば、例えば仮想カメラの撮像方向と音源の方向との角度を算出することができる。
【0011】
また、他の構成では、上記補正手段は、上記方向算出手段が算出した角度が第1の閾値よりも大きい場合、上記音声を補正してもよい。
【0012】
上記によれば、上記角度が所定の閾値より大きい場合に、音声を補正することができる。
【0013】
また、他の構成では、上記補正手段は、上記方向算出手段が算出した角度が大きいほど上記音声の補正の度合を高くしてもよい。
【0014】
上記によれば、上記角度が大きいほど補正の度合を高くすることができる。
【0015】
また、他の構成では、上記補正手段は、上記音源の方向が上記仮想カメラまたは上記所定のキャラクタの後方である場合、上記音声を補正してもよい。
【0016】
上記によれば、仮想カメラまたは所定のキャラクタの後方に音源が存在する場合に、音声を補正することができる。
【0017】
また、他の構成では、上記補正手段は、上記仮想カメラまたは上記所定のキャラクタと、上記音源との距離にも基づいて上記音声を補正してもよい。
【0018】
上記によれば、さらに、仮想カメラまたは所定のキャラクタと、音源との距離にも基づいて、音声を補正することができる。
【0019】
また、他の構成では、上記補正手段は、上記仮想カメラまたは上記所定のキャラクタと、上記音源との距離が第2の閾値よりも大きい場合、上記音声を補正してもよい。
【0020】
上記によれば、例えば仮想カメラと音源との距離が第2の閾値よりも大きい場合、音声を補正することができる。すなわち、仮想カメラの近傍存在する音源については音声の補正は行われず、仮想カメラから第2の閾値より離れた音源を補正することができる。
【0021】
また、他の構成では、上記補正手段は、上記距離が大きいほど上記音声の補正の度合を高くしてもよい。
【0022】
上記によれば、上記距離が大きいほど補正の度合を高くすることができる。
【0023】
また、他の構成では、上記補正手段は、上記角度に応じて補正の度合の最大値を設定してもよい。そして、補正手段は、上記仮想カメラまたは上記所定のキャラクタと、上記音源との距離に基づいて当該最大値の範囲内で補正の度合を決定し、当該補正の度合で上記音声を補正してもよい。
【0024】
上記によれば、上記角度に基づいて補正の度合の最大値が定められ、当該最大値の範囲内で上記距離に基づいて補正の度合を決定することができる。
【0025】
また、他の構成では、上記補正手段は、上記音声の所定の周波数成分の音量を減衰させる度合を大きくすることにより、上記音声の補正の度合を高くしてもよい。
【0026】
上記によれば、所定の周波数成分の減衰の度合を大きくすることで、補正の度合を高くすることができる。
【0027】
また、他の構成では、上記補正手段は、上記音声の所定の周波数成分を減衰させることにより上記音声を補正してもよい。
【0028】
上記によれば、所定の周波数成分を減衰させることで、音声を補正することができる。
【0029】
また、他の構成では、上記音源または上記音源の音声の種類に応じて上記音声の補正を行うか否かを判定する判定手段として、上記コンピュータをさらに機能させてもよい。上記補正手段は、上記判定手段によって上記音声の補正を行うと判定された場合のみ、上記音声の補正を行う。
【0030】
上記によれば、音源または音声の種類に応じて補正する/しないを判定することができる。
【0031】
また、他の構成では、上記補正手段は、上記音源または上記音源の音声の種類に応じて上記音声の補正の度合を設定し、当該補正の度合で上記音声を補正してもよい。
【0032】
上記によれば、音源または音声の種類に応じて補正の度合を設定することができる。
【0033】
また、他の構成では、上記所定のフィルタは、周波数フィルタであってもよい。
【0034】
上記によれば、周波数フィルタを用いて容易に音声を補正することができる。
【0035】
また、他の構成では、上記周波数フィルタは、ローパスフィルタおよびバンドパスフィルタの少なくとも一方であってもよい。
【0036】
上記によれば、周波数フィルタとしてローパスフィルタおよびバンドパスフィルタの少なくとも一方を用いることができる。
【0037】
なお、本発明の別の一例は、上記情報処理プログラムを実行する情報処理装置(情報処理システム)であってもよい。情報処理システムは、1つの装置によって構成されてもよいし、複数の装置が互いに協働することによって構成されてもよい。さらに、本発明の別の一例は、上記情報処理システムにおいて行われる情報処理方法であってもよい。
【発明の効果】
【0038】
本発明によれば、異なる方向に存在する音源からの音声を区別することができる。
【図面の簡単な説明】
【0039】
【図1】ゲームシステム1の構成を示すブロック図
【図2】本実施形態のゲームが実行された場合におけるテレビ2に表示される映像(画像)の一例を示す図
【図3】図2に示す画像が表示された場合における各オブジェクトをゲーム空間の上方から見た図であり、ゲーム空間に配置された各オブジェクトの位置関係を示す図
【図4】本実施形態のゲームが実行された場合におけるテレビ2に表示される映像(画像)の他の例を示す図
【図5】図4に示す画像が表示された場合における各オブジェクトをゲーム空間の上方から見た図であり、ゲーム空間に配置された各オブジェクトの位置関係を示す図
【図6】音量計算用マイク62と音源53との距離に基づく、当該音源53からの音声の音量を示す図
【図7】音源53の左右方向の定位(左右定位)を示す図
【図8】音源53の前後方向の定位(前後定位)を示す図
【図9】定位計算用マイク61、音量計算用マイク62および音源53が所定の位置関係で配置された場合の、音源53の左右定位、前後定位および音量を示す図
【図10】矢オブジェクト(音源54)がゲーム空間を仮想カメラ60に向かって移動している様子をゲーム空間の上方から見た図
【図11】仮想カメラ60の後方に音源52が存在する場合において、各オブジェクトをゲーム空間の上方から見た図
【図12】後方フィルタ用マイク64と音源52との位置関係に基づいたフィルタ値を示す図
【図13】フィルタ値の違いによる周波数フィルタリングを示す図
【図14】ゲーム処理において用いられる各種データを示す図
【図15】ゲーム装置3において実行されるメイン処理の流れを示すメインフローチャート
【図16】図15に示す定位・音量算出処理(ステップS4)の詳細な流れを示すフローチャート
【図17】図15に示すフィルタ処理(ステップS5)の詳細な流れを示すフローチャート
【発明を実施するための形態】
【0040】
(ゲームシステムの全体構成)
以下、図面を参照して、本発明の一実施形態に係るゲームシステム1について説明する。図1は、ゲームシステム1の構成を示すブロック図である。図1において、ゲームシステム1は、表示装置(例えば、テレビジョン受像器等(以下、「テレビ」)と記載する)2、ゲーム装置3、光ディスク4、コントローラ5を含む。ゲームシステム1は、コントローラ5を用いたゲーム操作に基づいてゲーム装置3においてゲーム処理を実行し、ゲーム処理によって得られるゲーム画像をテレビ2に表示するものである。
【0041】
ゲーム装置3には、当該ゲーム装置3に対して交換可能に用いられる情報記憶媒体の一例である光ディスク4が脱着可能に挿入される。光ディスク4には、ゲーム装置3において実行されるための情報処理プログラム(典型的にはゲームプログラム)が記憶されている。
【0042】
ゲーム装置3には、テレビ2が接続コードを介して接続される。テレビ2は、ゲーム装置3において実行されるゲーム処理によって得られるゲーム画像を表示する。テレビ2はスピーカ2aを有しており、スピーカ2aは、上記ゲーム処理の結果得られるゲーム音声を出力する。なお、他の実施形態においては、スピーカ2aはテレビ2とは別に設けられてもよい。ゲーム音声は、モノラルスピーカから出力されてもよいし、ステレオスピーカから出力されてもよい。また、ゲーム音声は、5.1チャンネルサラウンドスピーカから出力されてもよい。
【0043】
コントローラ5は、自機に対する操作に基づく操作データをゲーム装置3に与えるものである。コントローラ5とゲーム装置3とは無線(有線でもよい)によって通信可能である。また、図1では、ゲームシステム1に含まれるコントローラ5は1つとするが、ゲームシステム1は複数のコントローラ5を含んでいてもよい。
【0044】
コントローラ5には、複数の操作ボタン(方向指示のための十字ボタンや複数のプッシュボタン等)が設けられ、ユーザによる当該操作ボタンに対する操作情報が操作データとしてコントローラ5からゲーム装置3に送信される。
【0045】
ゲーム装置3は、CPU10、システムLSI11、外部メインメモリ12、ディスクドライブ14、およびAV−IC15等を有する。
【0046】
CPU10は、上記ゲームプログラムを実行することによってゲーム処理を実行するものであり、ゲームプロセッサとして機能する。CPU10は、システムLSI11に接続される。システムLSI11には、CPU10の他、外部メインメモリ12、ディスクドライブ14、AV−IC15およびコントローラ通信モジュール19が接続される。システムLSI11は、それに接続される各構成要素間におけるデータ転送の制御、表示すべき画像の生成、外部装置からのデータの取得等の処理を行う。揮発性の外部メインメモリ12は、光ディスク4から読み出されたゲームプログラムを記憶したり、各種データを記憶したりするものであり、CPU10のワーク領域やバッファ領域として用いられる。ディスクドライブ14は、光ディスク4からプログラムデータや音声データ等を読み出し、内部メインメモリ11dまたは外部メインメモリ12に読み出したデータを書き込む。
【0047】
システムLSI11には、GPU(Graphics Processor Unit)11a、DSP(Digital Signal Processor)11b、VRAM(Video RAM)11c、および内部メインメモリ11dが設けられる。図示は省略するが、これらは内部バスによって互いに接続される。
【0048】
GPU11aは、描画手段の一部を形成し、CPU10からのグラフィクスコマンド(作画命令)に従って画像を生成する。VRAM11cは、GPU11aがグラフィクスコマンドを実行するために必要なデータ(ポリゴンデータやテクスチャデータ等のデータ)を記憶する。
【0049】
DSP11bは、オーディオプロセッサとして機能し、内部メインメモリ11dや外部メインメモリ12に記憶される音声データや音色データを用いて、再生用の音声データを生成する。
【0050】
ゲーム装置3において生成される画像および音声のデータは、AV−IC15によって読み出される。AV−IC15は、読み出した画像データをAVコネクタ16を介してテレビ2に出力するとともに、読み出した音声データを、テレビ2に内蔵されるスピーカ2aに出力する。これによって、テレビ2に画像が表示されるとともにスピーカ2aから音が出力される。
【0051】
ゲーム装置3は、コントローラ5からの操作データを受信することが可能である。すなわち、システムLSI11は、コントローラ5から送信される操作データをアンテナ23およびコントローラ通信モジュール19を介して受信し、内部メインメモリ11dまたは外部メインメモリ12のバッファ領域に記憶(一時記憶)する。
【0052】
なお、ゲームシステム1は単なる一例であり、後述するゲーム処理(情報処理)はどのようなシステムにおいて行われてもよい。
【0053】
(ゲーム処理の概要)
次に、本実施形態のゲームシステム1において実行されるゲーム処理の概要について説明する。図2は、本実施形態のゲームが実行された場合におけるテレビ2に表示される映像(画像)の一例を示す図である。図2に示すように、テレビ2には、プレイヤキャラクタ51、音源52a、音源52b、および、音源52c(以下では単に「音源52」と総称することがある)が表示される。本実施形態では、プレイヤキャラクタ51が3次元のゲーム空間(仮想空間)に配置され、当該プレイヤキャラクタ51の背後に設定された仮想カメラでゲーム空間を撮像することにより、当該プレイヤキャラクタ51を含む画像がテレビ2に表示される。仮想カメラの注視点は、プレイヤキャラクタ51の頭部に設定される。プレイヤはコントローラ5を用いて当該プレイヤキャラクタ51をゲーム空間内で移動させたり、ゲーム空間に登場する敵キャラクタを倒したりしながら、ゲームを進行させる。本実施形態のゲームでは、様々なゲームシーンが用意されており、例えば、図2に示すようなプレイヤキャラクタ51が滝および川に囲まれたようなゲームシーンや洞窟内のゲームシーン等が用意される。
【0054】
音源52は、音声(サウンド)を発する滝オブジェクトであり、ゲーム空間に配置された仮想オブジェクトである。音声は、音源52の位置(滝オブジェクトが表示された領域の所定位置)から発生し、ゲーム装置3は、当該音声をゲーム空間に配置された仮想マイクで集音することで、音源52からの音声をスピーカから出力させる。
【0055】
図3は、図2に示す画像が表示された場合における各オブジェクトをゲーム空間の上方から見た図であり、ゲーム空間に配置された各オブジェクトの位置関係を示す図である。図3に示すように、プレイヤキャラクタ51の周囲には、音源52a〜52cが配置され、仮想カメラ60は、プレイヤキャラクタ51から所定距離離れた位置に配置される。また、ゲーム空間には、定位計算用マイク61と、音量計算用マイク62とが配置される。定位計算用マイク61は、仮想カメラ60の位置に配置される。音量計算用マイク62は、仮想カメラ60の撮像軸上の位置であって、仮想カメラ60の注視点(プレイヤキャラクタ51の位置)と仮想カメラ60との間の所定位置(例えば、中間)に配置される。プレイヤがコントローラ5を用いて(例えば、コントローラ5の十字ボタンを用いて)プレイヤキャラクタ51をゲーム空間内で移動させたり、プレイヤキャラクタ51の姿勢を変化させると、仮想カメラ60の位置および姿勢が変化する。図3に示す例では、仮想カメラ60の注視点は、プレイヤキャラクタ51の頭部に固定され、プレイヤキャラクタ51の移動に伴って、仮想カメラ60の注視点も移動する。
【0056】
定位計算用マイク61は、音源52の定位を計算するための仮想マイクであり、テレビ2には表示されない。ここで、音源52の定位は、定位計算用マイク61(仮想カメラ60)と音源52との位置関係を示す情報であり、定位計算用マイク61を基準とした音源52の相対的な位置を示すものである。音源52の定位は、定位計算用マイク61を基準とした音源52の方向を示す情報であってもよいし、音源52の方向および距離を示す情報であってもよい。本実施形態においては、音源52の定位は、定位計算用マイク61を基準とした(定位計算用マイク61から見た)音源52の方向を示す情報であり、具体的には、後述する左右定位および前後定位として表される。音量計算用マイク62は、音源からの音声の音量(音の大きさ)を計算するための仮想マイクであり、テレビ2には表示されない。定位の計算および音量の計算については、後述する。
【0057】
図4は、本実施形態のゲームが実行された場合におけるテレビ2に表示される映像(画像)の他の例を示す図である。図4に示すように、本実施形態のゲームの他のシーンでは、キャラクタ55は、壁オブジェクトに囲まれたゲーム空間を移動する。図4に示す例では、キャラクタ55、仮想カメラ60の位置および姿勢、注視点、その他ゲーム空間に配置された他のオブジェクトは、プレイヤの操作によらず、ゲーム装置3によって自動で制御される。本実施形態のゲームでは、プレイヤの操作によってプレイヤキャラクタ51が制御されてゲームが進行するプレイヤ操作モード(図2)と、プレイヤの操作によらずに自動でキャラクタ55が移動したり、仮想カメラの注視点が変化したりしてゲームが進行するデモモード(図4)とで実行可能である。なお、キャラクタ55はプレイヤキャラクタ51と同じキャラクタであってもよいし、異なるキャラクタであってもよい。また、デモモードにおいては、キャラクタ55は表示されずに、ゲーム空間を仮想カメラ60が自動で移動することにより、ゲーム空間の他のオブジェクトの映像や音声を視聴者に視聴させてもよい。
【0058】
例えば、図4に示すゲームシーンでは、音源としてのドアオブジェクト(音源53)が自動で開く様子が表示される。ここで、ドアオブジェクト(音源53)が開くことに伴って、実際にドアが開くときに発生するような音声が発生する。すなわち、音源53は、音声を発生する音源となる仮想オブジェクトである。また、ドアオブジェクト(音源53)が自動で開く際、仮想カメラ60の注視点がキャラクタ55の頭部から音源53の近傍に移動する。
【0059】
図5は、図4に示す画像が表示された場合における各オブジェクトをゲーム空間の上方から見た図であり、ゲーム空間に配置された各オブジェクトの位置関係を示す図である。図5に示すように、仮想カメラ60の注視点は音源53の近傍に位置し、当該注視点の近傍には、音量計算用マイク62が配置される。音源53からの音声の音量は、音量計算用マイク62と音源53との距離によって定められる。音量計算用マイク62は音源53の近傍に位置するため、スピーカからは比較的大きな音量の音声(ドアが開くときに発生するような効果音)が出力される。音量計算用マイク62は、仮想カメラ60の注視点近傍の所定位置に固定される。仮に、図4に示すシーンにおいて仮想カメラ60の注視点がキャラクタ55の頭部に位置する場合、音量計算用マイク62もキャラクタ55の近傍に位置するため、音量計算用マイク62と音源53との距離は比較的遠くなる。このため、仮想カメラ60の注視点がキャラクタ55の頭部に位置する場合は、スピーカからは比較的小さな音量の音声が出力される。しかしながら、実際には、図4および図5に示すように仮想カメラ60の注視点は音源53の近傍に設定されるため、ドアオブジェクト(音源53)が開く際には比較的大きな音量の音声がスピーカから出力される。
【0060】
仮想カメラ60の注視点は、プレイヤによる操作に応じて変化したり、ゲーム装置3によって自動で変化したりする。例えば、上記プレイヤ操作モード(図2)では、仮想カメラ60の注視点は、プレイヤキャラクタ51の頭部に固定されるため、プレイヤがコントローラ5を用いてプレイヤキャラクタ51を移動させると、仮想カメラ60の注視点も移動する。また、上記音量計算用マイク62は、仮想カメラ60とプレイヤキャラクタ51との間に設定され、仮想カメラ60の注視点に基づいた位置に設定される。プレイヤの操作によってプレイヤキャラクタ51が移動することに伴って、音量計算用マイク62も移動するため、プレイヤキャラクタ51の周辺に存在する音源からの音声の音量を比較的大きくすることができる。
【0061】
また、上記デモモード(図4)では、仮想カメラ60の注視点はゲーム装置3によって自動で変化し、音量計算用マイク62は、仮想カメラ60の注視点の近傍に固定される。デモモードにおいては、ゲーム製作者は、ゲームシーンによってプレイヤ(視聴者)に特定のオブジェクトに注目させたい場合があり、ゲーム製作者は、当該特定のオブジェクトに仮想カメラ60の注視点が移動するように、プログラムする。例えば、図4に示すように、ドアオブジェクト(音源53)が自動で開いてキャラクタ55を音源53の先の進路に誘導させるようなゲームシーンでは、視聴者をドアオブジェクトに注目させるため、仮想カメラ60の注視点を当該音源53の近傍に設定する。このようなゲームシーンでは、仮想カメラ60の注視点をドアオブジェクトの近傍に設定するとともに、スピーカから出力される音源53からの音声の音量を比較的大きくする。これにより、視聴者をドアオブジェクトに注目させることができる。
【0062】
また、プレイヤ操作モードやデモモードにおいて、プレイヤ(または視聴者)による操作に応じて仮想カメラ60の注視点を特定のオブジェクトに設定することが可能であってもよい。プレイヤ(または視聴者)による操作に応じて仮想カメラ60の注視点が特定のオブジェクトに設定されるということは、プレイヤ(または視聴者)が当該オブジェクトに注目したいためであると考えられる。このため、スピーカから出力される当該特定のオブジェクトからの音声の音量を比較的大きくすることにより、プレイヤ(または視聴者)を当該オブジェクトにより注目させることができる。
【0063】
次に、定位の計算および音量の計算について、図6から図9を参照して説明する。図6は、音量計算用マイク62と音源53との距離に基づく、当該音源53からの音声の音量を示す図である。図6に示すように、音源53からの音声の音量は、音量計算用マイク62と音源53との距離に応じて変化する。音源53からの音声の音量は、例えば、0〜1.0の範囲で定められる。例えば、音源53の位置が音量計算用マイク62の位置と一致している場合、当該音源53からの音声の音量は、最大値である1.0に設定される。また、音源53が所定距離以上離れている場合、当該音源53からの音声の音量は0に設定され、この場合、スピーカから当該音声は出力されない。例えば、音源53からの音声の音量は、音量計算用マイク62と音源53との距離に比例して定められてもよい。例えば、図6に示すように、音量計算用マイク62と音源53との距離がL1である場合、音源53からの音声の音量は0.9に設定される。すなわち、音源53が、音量計算用マイク62から半径L1の円上の任意の位置に存在する場合、音源53からの音声の音量は0.9に設定される。また、上述の音源52(滝オブジェクト)からの音声の音量についても、同様に、音源52と音量計算用マイク62との距離に応じて変化する。なお、同じ音源からの同じ音声の音量は、音量計算用マイク62と当該音源との距離に応じて定められるが、異なる音源からの音声の音量は、音源毎に定められてもよい。例えば、音源52と音源53とが音量計算用マイク62から等距離にある場合、スピーカから出力された際の、音源52からの音声の音量の方が音源53からの音声の音量よりも大きくてもよい。例えば、各音源には基本的な音量(基本音量)が設定され、ゲーム装置3は、当該基本音量に、音源と音量計算用マイク62との距離に応じた係数(当該距離に応じて0〜1.0の範囲で変化する係数)をかけることにより、距離に応じた音量を計算してもよい。また、同じ音源から異なる種類の音声が出力され、音声の種類毎に基本音量が異なっていてもよい。この場合、ゲーム装置3は、音声の種類毎の基本音量に、音源と音量計算用マイク62との距離に応じた係数をかけることにより、距離に応じた音量を計算してもよい。
【0064】
図7は、音源53の左右方向の定位(左右定位)を示す図である。音源53の定位は、音源53と定位計算用マイク61との位置関係によって定められる。すなわち、音源53の定位は、マイク61から見た(マイク61を基準とした)音源53の相対的な位置および姿勢を示す。具体的には、音源53の定位は、左右定位と前後定位とによって表される。
【0065】
音源53の左右定位は、定位計算用マイク61(仮想カメラ60)を基準として、音源53が左右方向にどの程度ずれているかを示すものである。具体的には、音源53の左右定位は、仮想カメラ60の撮像方向ベクトルと、定位計算用マイク61から音源53に向かうベクトルとの角度D1によって定められる。仮想カメラ60の撮像方向を0度として時計回りを正の角度とした場合において、例えば、60度〜120度の範囲に音源53が存在する場合、音源53の左右定位は1.0に定められる。また、例えば、−60度〜−120度の範囲に音源53が存在する場合、音源53の左右定位は−1.0に定められる。また、角度D1が0度〜60度である場合は、音源53の左右定位は0〜1.0の範囲で定められる。例えば、音源53の左右定位は、角度D1をパラメータとする正弦関数によって定められてもよいし、角度D1の値に比例して定められてもよい。また、角度D1が0度〜−60度である場合は、音源53の左右定位は0〜−1.0の範囲で定められ、例えば、左右定位は、角度D1をパラメータとする正弦関数によって定められてもよいし、角度D1の値に比例して定められてもよい。また、角度D1が120度〜180度である場合は、音源53の左右定位は1.0〜0の範囲で定められ、角度D1が−120度〜−180度である場合は、音源53の左右定位は−1.0〜0の範囲で定められる。例えば、図7に示す場合、音源53は、定位計算用マイク61の左右方向に関して、左側にわずかにずれているため、音源53の左右定位は、−0.1となる。
【0066】
図8は、音源53の前後方向の定位(前後定位)を示す図である。音源53の前後定位は、定位計算用マイク61(仮想カメラ60)を基準として、音源53が前後方向にどの程度ずれているかを示すものである。具体的には、音源53の前後定位は、仮想カメラ60の撮像方向に対して右向きのベクトル(右向きベクトル)と、定位計算用マイク61から音源53に向かうベクトルとの角度D2によって定められる。右向きベクトルの方向を0度として時計回りを正の角度とした場合において、例えば、60度〜120度の範囲に音源53が存在する場合、音源53の前後定位は1.0に定められる。また、例えば、−60度〜−120度の範囲に音源53が存在する場合、音源53の前後定位は−1.0に定められる。角度D2が0度〜60度である場合は、音源53の前後定位は0〜1.0の範囲で定められる。例えば、音源53の前後定位は、角度D2をパラメータとする正弦関数によって定められてもよいし、角度D2の値に比例して定められてもよい。また、角度D2が0度〜−60度である場合は、音源53の前後定位は0〜−1.0の範囲で定められ、例えば、前後定位は、角度D2をパラメータとする正弦関数によって定められてもよいし、角度D2の値に比例して定められてもよい。また、角度D2が120度〜180度である場合は、音源53の前後定位は1.0〜0の範囲で定められ、角度D2が−120度〜−180度である場合は、音源53の前後定位は−1.0〜0の範囲で定められる。例えば、図8に示す場合、音源53は定位計算用マイク61の前方に位置するため、音源53の前後定位は、−1.0となる。
【0067】
なお、ゲーム空間の上下方向(垂直方向)に関しては、音源53の定位は変化しないものとする。すなわち、音源53およびマイク61がゲーム空間内の所定の平面(地面)上に存在する場合において、音源53またはマイク61をゲーム空間の上下方向(所定の平面に対して垂直方向)に移動させた場合も、音源53の定位は変化しないものとする。
【0068】
図9は、定位計算用マイク61、音量計算用マイク62および音源53が所定の位置関係で配置された場合の、音源53の左右定位、前後定位および音量を示す図である。図9に示すように、音源53が、仮想カメラ60のほぼ正面に位置し、かつ、当該仮想カメラ60の撮像方向に対してわずかに左にずれている場合、音源53の前後定位は−1.0となり、左右定位は−0.1となる。また、音源53が音量計算用マイク62から比較的近い場合は、音量は0.9となる。
【0069】
音源53の音声がスピーカから出力される場合、音源53の定位によってプレイヤが感じる音源の位置が異なる。例えば、左右定位が0で前後定位が−1の場合、プレイヤは前方から音声が発生したと感じ、左右定位が0で前後定位が1の場合、プレイヤは後方から音声が発生したと感じる。また、例えば、左右定位が1で前後定位が0の場合、プレイヤは右方向から音声が発生したと感じ、左右定位が−1で前後定位が0の場合、プレイヤは左方向から音声が発生したと感じる。図9に示すように、定位計算用マイク61は、仮想カメラ60の位置に設定されるため、プレイヤは、仮想カメラ60から見た音源53の方向から当該音源53の音声が発生したと感じることができる。
【0070】
一方、音量計算用マイク62は、仮想カメラ60の注視点に基づいて設定され、図9に示す例では、音源53の近傍に位置する。このため、音源53からの音声が比較的大きな音量でスピーカから出力される。例えば、音量計算用マイク62と定位計算用マイク61とが一致する場合において、音量計算用マイク62が仮想カメラ60の位置に設定されると、音源53と音量計算用マイク62(定位計算用マイク61)との距離が大きくなってしまう。このため、音源53からの音声は比較的小さな音量となってしまう。一方で、音量計算用マイク62と定位計算用マイク61とが一致する場合において、音源53の音量を大きくするために、音量計算用マイク62(定位計算用マイク61)を音源53の近傍に設定すると、音源53の定位が変化してしまう。例えば、図9に示す音量計算用マイク62と同じ位置に定位計算用マイク61が位置する場合、定位計算用マイク61の略左方向に音源53が位置することになるため、当該定位計算用マイク61から見た音源53の前後定位は、0となり、左右定位は、−1.0となる。このため、プレイヤが、仮想カメラ60で撮像された画像を見ながら音源53からの音声を聞くと、プレイヤは、テレビ2に表示された音源53とは異なる方向(左方向)から当該音源53の音声が発生したかのように感じることになる。従って、定位計算用マイク61を音源53に近づけるとプレイヤは違和感を感じることがある。しかしながら、本実施形態のゲームでは、音量計算用マイク62と定位計算用マイク61とが別々に設けられて、音量計算用マイク62を音源に近づけることにより、音源の定位を変化させることなく、音源の音量を変化させることができる。
【0071】
また、音量計算用マイク62が定位計算用マイク61(仮想カメラ60)と同じ位置に存在する場合、仮想カメラ60によって撮像されない他のオブジェクトが仮想カメラ60の近傍に存在すると、テレビ2には表示されないオブジェクトの音声の音量が大きくなってしまう。テレビ2には表示されないオブジェクトの音声の音量が大きいと、プレイヤは違和感を感じたり、混乱したりすることがある。しかしながら、本実施形態では、音量計算用マイク62と定位計算用マイク61とが別々に設けられる。上記デモモードでは、音量計算用マイク62は、仮想カメラ60の注視点の近傍に配置される。また、上記プレイヤ操作モードでは、プレイヤキャラクタ51と仮想カメラ60との間に、音量計算用マイク62が配置される。このため、仮想カメラ60によって撮像されないオブジェクトの音量を抑え、仮想カメラ60の注視点近傍に存在するオブジェクト、あるいは、プレイヤキャラクタ51および仮想カメラ60の周辺に存在するオブジェクトからの音声の音量を大きくすることができる。
【0072】
次に、ゲーム空間内を移動するオブジェクトが発する音声の処理について説明する。図10は、矢オブジェクト(音源54)がゲーム空間を仮想カメラ60に向かって移動している様子をゲーム空間の上方から見た図である。図10に示すように、本実施形態のゲームでは、定位計算用マイク61、音量計算用マイク62に加えて、ドップラー効果用マイク63がゲーム空間内に設定される。ドップラー効果用マイク63は、テレビ2には表示されない仮想マイクである。なお、図10においてはドップラー効果用マイク63は、定位計算用マイク61から離れた位置に表示されているが、本実施形態においては、ドップラー効果用マイク63は、定位計算用マイク61の位置に設定される。したがって、ドップラー効果用マイク63は、内部的には定義されなくてもよく、定位計算用マイク61をドップラー効果用マイク63として後述の処理が行われてもよい。
【0073】
矢オブジェクトは、矢が空気中を移動する際に矢と空気との摩擦によって発生するような音声(効果音)を発しながら、ゲーム空間を移動速度vで移動する移動オブジェクトである。本実施形態のゲームでは、矢オブジェクトの移動によるドップラー効果を考慮して、矢オブジェクト(音源54)から発せられる音声の周波数を補正する。また、ドップラー効果用マイク63(仮想カメラ60)がゲーム空間を移動する場合にも、ドップラー効果による音声の補正が行われる。すなわち、音源54とマイク63との相対運動に応じて、音源54の音声が補正される。具体的には、音源54の速度とドップラー効果用マイク63の速度とに応じて音源54の音声の周波数が変化する。従って、例えば、音源54がドップラー効果用マイク63に近づいてきて通り過ぎる際に当該音源54の音声が変化する。
【0074】
なお、本実施形態では、ドップラー効果用マイク63は、定位計算用マイク61(仮想カメラ60)の位置に配置されるものとしたが、ドップラー効果用マイク63は、定位計算用マイク61から離れた位置に配置されてもよい。例えば、図10に示すように、ドップラー効果用マイク63は、仮想カメラ60の撮像方向の所定位置に配置されてもよい。この場合、仮想カメラ60に向かって移動する音源54が、ドップラー効果用マイク63を通り過ぎる際に当該音源54からの音声の周波数が変化するが、その時点では、当該音源54は、仮想カメラ60の前方に位置することになる。すなわち、聴覚による音源54の通過のタイミングが視覚による音源54の通過のタイミングよりも早くなる。また、ドップラー効果用マイク63は、プレイヤキャラクタ51の近傍に設けられてもよい。この場合、プレイヤキャラクタ51の位置で感じられるドップラー効果を再現することができる。
【0075】
(後方からの音声に対する処理)
次に、音源が仮想カメラ60の後方に位置する場合の音声の処理について、図11から図13を参照して説明する。図11は、仮想カメラ60の後方に音源52が存在する場合において、各オブジェクトをゲーム空間の上方から見た図である。図11に示すように、仮想カメラ60(定位計算用マイク61)の位置には、後方フィルタ用マイク64が配置される。本実施形態では、音源52が仮想カメラ60の後方に位置する場合(仮想カメラ60の撮像方向と反対側に位置する場合)、当該音源52からの音声に対してフィルタ処理が行われる。フィルタ処理は、音声に対して周波数フィルタ(ローパスフィルタ、バンドパスフィルタ、ハイパスフィルタ等)を適用することによって、特定の周波数成分の音量を下げる、または、特定の周波数成分をカットする処理である。例えば、ローパスフィルタを用いたフィルタ処理では、所定の周波数以上の成分はカットされる。本実施形態では、ローパスフィルタまたはバンドパスフィルタを用いて、高い周波数成分をカットすることにより、仮想カメラ60の後方からの音声を籠らせる。
【0076】
図12は、後方フィルタ用マイク64と音源52との位置関係に基づいたフィルタ値を示す図である。図12に示すように、仮想カメラ60(後方フィルタ用マイク64)の前方に音源52が位置する場合は、フィルタ値は0に設定される。この場合、音源52からの音声にはフィルタは適用されないため、当該音声はそのままスピーカから出力される。フィルタ値は、音声に対するフィルタの度合(補正の度合)を示す値である。フィルタ値については後述する。
【0077】
一方、仮想カメラ60の後方に音源52が位置する場合は、フィルタ値は0〜1の範囲で設定される。具体的には、まず、仮想カメラ60の撮像方向のベクトルと、後方フィルタ用マイク64から音源52に向かうベクトルとの角度D1が算出される。また、後方フィルタ用マイク64と音源52との距離L2が算出される。そして、角度D1と距離L2とに基づいて、フィルタ値が算出される。具体的には、角度D1の絶対値が0度から90度の場合、フィルタ値は0に設定される。角度D1の絶対値が90度から180度の場合において、距離L2が閾値Lm以上の場合は、当該角度D1の絶対値に応じた最大値(1以下の値)に設定される。角度D1の絶対値が90度から180度の場合において、距離L2が閾値Lm未満の場合は、当該角度D1に応じた最大値を距離L2に応じて補正する(減ずる)ことにより、フィルタ値が算出される。例えば、角度D1に応じた最大値は、角度D1に比例して定められてもよし、角度D1をパラメータとする正弦関数によって定められてもよい。また、例えば、角度D1の絶対値が180度である場合、フィルタ値の最大値は1に設定される。そして、距離L2が上記閾値Lm未満である場合は、例えば、距離L2を上記閾値Lmで割った値が、フィルタ値として算出されてもよい。また、例えば、角度D1の絶対値が135度である場合の最大値は0.5に設定され、距離L2が上記閾値Lmの1/2である場合は、フィルタ値は、当該最大値の1/2、すなわち、0.25に設定されてもよい。
【0078】
なお、後方フィルタ用マイク64と音源52との距離L2が閾値L0(<Lm)よりも小さい場合、上記角度D1の絶対値が90度より大きくても、すなわち、音源52が仮想カメラ60の後方に存在していても、フィルタ値は0に設定される。従って、音源52が後方フィルタ用マイク64から閾値L0の範囲内に存在する場合、当該音源52からの音声はフィルタリングされずに、そのままスピーカから出力される。
【0079】
ここで、「フィルタ値」は、音源の音声を補正する度合を示すものである。図13は、フィルタ値の違いによる周波数フィルタリングを示す図である。図13において、横軸は周波数を示し、縦軸は音量の割合を示す。図13に示すように、フィルタ値が0の場合、全周波数において音量の割合は1になる。このため、音声の各周波数成分の音量は維持され、音源からの音声がそのままスピーカから出力される。一方、フィルタ値が例えば0.5である場合、特定の周波数F0よりも高い周波数成分の音量は、フィルタ値0.5で示される曲線に従って補正される。例えば、図13に示すように、フィルタ値が0.7である場合において、周波数F1の成分の音量は補正前の音量の0.7倍に設定される。また、例えば、フィルタ値が1である場合、周波数F0以上の成分の音量は0に設定されるため、周波数F0以上の成分はカットされる。このように、フィルタ値によって音声が補正され、補正された後の音声がスピーカから出力される。具体的には、図13に示すようなローパスフィルタが適用されると、補正後の音声は補正前の音声よりも高周波数成分がカットあるいは減衰されるため、籠ったような音声が出力される。なお、図13に示すフィルタの曲線(周波数F0以上の曲線部分)の形状は、どのような形状でもよい。例えば、周波数F0以上の部分は、直線であってもよいし、所定の音量(割合)に収束するような曲線であってもよい。また、図13では、縦軸は音量の割合を示したが、縦軸は音量を減少させる値を示してもよい。
【0080】
以上のように、本実施形態では、音源が仮想カメラ60の後方(角度D1の絶対値が90度から180度の範囲)に存在する場合、音源からの音声に対して周波数フィルタが適用される。具体的には、音源が仮想カメラ60の後方に存在するほど、フィルタ値が大きくなる(補正の度合が高くなる)。また、音源が仮想カメラ60から離れるほど、フィルタ値が大きくなる(補正の度合が高くなる)。これにより、より後方に存在する音源ほど音が籠り、より遠方に存在する音源ほど音が籠る。従って、プレイヤは、音源がどの方向に存在するか(仮想カメラ60の撮像方向と反対方向のどの位置に存在するか)を認識することができる。また、仮想カメラ60の後方に存在する音源は、テレビ2には表示されないため、そのような表示されないオブジェクトからの音声を籠らせることで、プレイヤはテレビ2に表示されるオブジェクトに注意することができる。また、複数の同じ種類の音源がゲーム空間に存在する場合でもプレイヤは混乱せずにテレビ2に表示されるオブジェクトの音声を聞くことができる。
【0081】
(ゲーム処理の詳細)
次に、本ゲームシステムにおいて実行されるゲーム処理の詳細を説明する。まず、ゲーム処理において用いられる各種データについて説明する。図14は、ゲーム処理において用いられる各種データを示す図である。図14において、ゲーム装置3のメインメモリ(外部メインメモリ12または内部メインメモリ11d)に記憶される主なデータが示されている。図14に示すように、ゲーム装置3のメインメモリには、ゲームプログラム100、および処理用データ110が含まれる。なお、メインメモリには、図14に示すデータの他、ゲームに登場する各種オブジェクトの画像データやゲームのBGMの音声データ等、ゲームに必要なデータが記憶される。
【0082】
ゲームプログラム100は、ゲーム装置3に電源が投入された後の適宜のタイミングで光ディスク4からその一部または全部が読み込まれてメインメモリに記憶される。なお、ゲームプログラム100は、光ディスク4に代えて、フラッシュメモリやゲーム装置3の外部装置から(例えばインターネットを介して)取得されてもよい。また、ゲームプログラム100に含まれる一部のプログラムについては、ゲーム装置3内に予め記憶されていてもよい。
【0083】
処理用データ110は、後述するメイン処理(図15)において用いられるデータである。処理用データ110は、キャラクタデータ111、音源データ112、仮想カメラデータ113、マイクデータ114を含む。
【0084】
キャラクタデータ111は、プレイヤキャラクタ51のゲーム空間における位置および姿勢を示すデータを含む。また、キャラクタデータ111は、キャラクタ55のゲーム空間のおける位置および姿勢を示すデータを含む。
【0085】
音源データ112は、音源となる各オブジェクトに関するデータである。音源データ112には、音源52(滝オブジェクト)、音源53(ドアオブジェクト)、音源54(矢オブジェクト)等に関するデータが含まれる。具体的には、音源に関するデータには、各音源の位置および姿勢を示すデータ、各音源の定位を示すデータ、各音源の音声データ(音声の波形を示すデータ)、各音源の音声の音量を示すデータ等が含まれる。
【0086】
仮想カメラデータ113は、仮想カメラ60の位置、姿勢、注視点を示すデータを含む。
【0087】
マイクデータ114は、各マイクに関するデータである。具体的には、マイクデータ114には、定位計算用マイク61、音量計算用マイク62、ドップラー効果用マイク63、および後方フィルタ用マイク64に関するデータが含まれる。すなわち、マイクデータ114には、定位計算用マイク61の位置および姿勢を示すデータ、音量計算用マイク62の位置および姿勢(位置のみでもよい)を示すデータ、ドップラー効果用マイク63の位置および姿勢(位置のみでもよい)を示すデータ、および、後方フィルタ用マイク64の位置および姿勢を示すデータが含まれる。なお、本実施形態では、定位計算用マイク61の位置および姿勢は、仮想カメラ60の位置および姿勢と一致する。また、ドップラー効果用マイク63の位置および姿勢は、定位計算用マイク61の位置および姿勢と一致する。さらに、後方フィルタ用マイク64の位置および姿勢は、定位計算用マイク61の位置および姿勢と一致する。すなわち、これらマイク61、63、64の位置および姿勢は仮想カメラ60の位置および姿勢と一致する。したがって、定位計算用マイク61、ドップラー効果用マイク63、および後方フィルタ用マイク64に関するデータは、メインメモリに記憶されなくてもよい。すなわち、仮想カメラデータ113が、これらマイクに関するデータとして後述するメイン処理において用いられてもよい。
【0088】
(フローチャートの説明)
次に、ゲーム装置3において実行されるゲーム処理の詳細を、図15〜図17を参照して説明する。図15は、ゲーム装置3において実行されるメイン処理の流れを示すメインフローチャートである。ゲーム装置3の電源が投入されると、ゲーム装置3のCPU10は、図示しないブートROMに記憶されている起動プログラムを実行し、これによってメインメモリ等の各ユニットが初期化される。そして、光ディスク4に記憶されたゲームプログラムがメインメモリに読み込まれ、CPU10によって当該ゲームプログラムの実行が開始される。また、CPU10は、光ディスク4に記憶された音源の音声データを読み込み、メインメモリに記憶する。図15のフローチャートに示す処理は、以上の処理が完了した後に行われる。
【0089】
なお、図15〜図17に示すフローチャートにおける各ステップの処理は、単なる一例に過ぎず、同様の結果が得られるのであれば、各ステップの処理順序を入れ替えてもよい。また、変数や定数の値等も、単なる一例に過ぎず、必要に応じて他の値を採用してもよい。また、本実施形態では、上記フローチャートの各ステップの処理をCPU10が実行するものとして説明するが、上記フローチャートにおける一部のステップの処理を、CPU10以外のプロセッサや専用回路が実行するようにしてもよい。
【0090】
まず、ステップS1において、CPU10は初期処理を実行する。初期処理では、CPU10は、プレイヤによる選択に応じてゲームのモードをプレイヤ操作モードまたはデモモードに設定する。また、CPU10は、3次元のゲーム空間を構築し、ゲーム空間に登場するプレイヤキャラクタ51やキャラクタ55、音源52〜54、マイク61〜64、仮想カメラ60、その他ゲーム空間に配置されるオブジェクト等を初期位置に配置する。また、CPU10は、ゲーム処理で用いる各種パラメータの初期値を設定する。CPU10は、ステップS1の処理の後、ステップS2の処理を実行する。以降、ステップS2〜S9の一連の処理からなる処理ループが所定時間(1フレーム時間。例えば1/60秒)に1回の割合で繰り返し実行される。
【0091】
ステップS2において、CPU10は、コントローラ5から送信されてメインメモリに記憶された操作データを取得する。コントローラ5は操作データ(各ボタン操作に関するデータ等)を所定の時間間隔でゲーム装置3へ繰り返し送信する。ゲーム装置3においては、コントローラ通信モジュール19が操作データを逐次受信し、受信された操作データがメインメモリに逐次記憶される。ステップS2においては、CPU10は、最新の操作データをメインメモリから読み出す。ステップS2の処理の後、ステップS3の処理が実行される。
【0092】
ステップS3において、CPU10はゲーム処理を実行する。当該ゲーム処理では、CPU10は、ステップS2で取得した操作データに基づいて、プレイヤキャラクタ51をゲーム空間内で移動させたり、プレイヤキャラクタ51の姿勢を変化させたり、仮想カメラ60の位置および/または姿勢を変化させたりする。また、CPU10は、各マイク(61〜63)の位置および/または姿勢を変化させる。また、CPU10は、音源54を移動させたり、他のオブジェクト(例えば、敵キャラクタ等)を移動させたりする。なお、デモモードでゲーム装置3が動作している場合には、CPU10は、所定のアルゴリズムに従ってキャラクタ55を移動させたり、仮想カメラ60の位置および姿勢を変化させたりする。次に、CPU10は、ステップS4の処理を実行する。
【0093】
ステップS4において、CPU10は、定位・音量算出処理を実行する。定位・音量算出処理では、CPU10は、各音源の定位および音量を算出する。以下、図16を参照して、定位・音量算出処理の詳細について説明する。
【0094】
図16は、図15に示す定位・音量算出処理(ステップS4)の詳細な流れを示すフローチャートである。
【0095】
ステップS11において、CPU10は、ゲーム空間に配置された複数の音源の中から、処理する1つの音源(例えば、音源52a)を選択する。CPU10は、ステップS11の後、ステップS12の処理を実行する。なお、ゲーム空間内に音源のオブジェクトが無い場合は、CPU10は、当該定位・音量算出処理を終了する。
【0096】
ステップS12において、CPU10は、ステップS11で選択した音源と、音量計算用マイク62との距離より、音量を算出する。具体的には、CPU10は、メインメモリを参照して、音源の位置と音量計算用マイク62の位置とに基づいて、音源と音量計算用マイク62との距離を算出する。そして、CPU10は、当該距離に応じて、音量を算出する。より具体的には、上述したように、CPU10は、距離が大きいほど音量が小さくなるように(距離に比例して音量が小さくなるように)、音量を算出する。算出された音量は、メインメモリに記憶される。次に、CPU10は、ステップS13の処理を実行する。
【0097】
ステップS13において、CPU10は、ステップS11で選択した音源と、定位計算用マイク61との角度より、定位を算出する。具体的には、CPU10は、メインメモリを参照して、定位計算用マイク61の位置および姿勢と、音源の位置とに基づいて、当該音源の定位(左右定位および前後定位)を算出する。より具体的には、CPU10は、上記角度D1(図7)および上記角度D2を算出して、音源の左右定位および前後定位を算出する。算出した定位はメインメモリに記憶される。次に、CPU10は、ステップS14の処理を実行する。
【0098】
ステップS14において、CPU10は、ステップS11で選択した音源と、ドップラー効果用マイク63との相対速度より、ドップラー効果を算出する。具体的には、CPU10は、選択した音源の音声の各周波数成分を、相対速度に基づいて補正する。ドップラー効果の計算結果は、メインメモリに記憶される。次に、CPU10は、ステップS15の処理を実行する。
【0099】
ステップS15において、CPU10は、すべての音源について処理済みか否かを判定する。上記ステップS11からステップS15の処理が繰り返し実行されることにより、ゲーム空間に存在するすべての音源について、処理が行われる。判定結果が否定の場合、CPU10は、ステップS11の処理を再び実行する。一方、判定結果が肯定の場合、CPU10は、定位・音量算出処理を終了する。
【0100】
図15に戻り、CPU10は、次にステップS5において、フィルタ処理を実行する。ステップS5のフィルタ処理では、CPU10は、仮想カメラ60(後方フィルタ用マイク64)の後方に存在する音源からの音声について周波数フィルタを適用する。以下、図17を参照して、フィルタ処理の詳細について説明する。
【0101】
図17は、図15に示すフィルタ処理(ステップS5)の詳細な流れを示すフローチャートである。
【0102】
ステップS21において、CPU10は、ゲーム空間に配置された複数の音源の中から、処理する1つの音源(例えば、音源52a)を選択する。CPU10は、ステップS21の後、ステップS22の処理を実行する。なお、ゲーム空間内に音源のオブジェクトが無い場合は、CPU10は、当該フィルタ処理を終了する。
【0103】
ステップS22において、CPU10は、ステップS21で選択した音源がフィルタを適用する音源か否かを判定する。フィルタを適用する音源か否かは予め定められており、例えば、音源の種類によって定められる。例えば、CPU10は、ステップS21で選択した音源が音源52(滝オブジェクト)である場合、フィルタを適用する音源であると判定する。なお、1つの音源から複数種類の音声が出力される場合、音声の種類毎にフィルタを適用する音声か否かが判定されてもよい。この場合、音声の種類によって、フィルタを適用する音声か否かが予め定められる。判定結果が肯定の場合、CPU10は、次にステップS23の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS31の処理を実行する。
【0104】
ステップS23において、CPU10は、音源とマイクとの角度を算出する。具体的には、CPU10は、メインメモリを参照して、後方フィルタ用マイク64(仮想カメラ60)の位置および姿勢と、音源の位置とに基づいて、音源とマイク64(仮想カメラ60)との角度D1(図12参照)を算出する。CPU10は、次にステップS24の処理を実行する。
【0105】
ステップS24において、CPU10は、音源が後方フィルタ用マイク64の後方に存在するか否かを判定する。具体的には、CPU10は、ステップS23で算出した音源とマイク64との角度D1の絶対値が90度より大きいか否かを判定する。判定結果が肯定の場合、CPU10は、次にステップS25の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS29の処理を実行する。
【0106】
ステップS25において、CPU10は、音源とマイク64との角度に基づいて、フィルタ値を算出する。ここでは、CPU10は、図12に示すように、音源とマイク64との角度D1に応じたフィルタ値の最大値(0〜1.0までの範囲の値)を算出する。例えば、CPU10は、角度D1に比例してフィルタ値の最大値を算出する。CPU10は、次にステップS26の処理を実行する。
【0107】
ステップS26において、CPU10は、音源とマイク64との距離を算出する。具体的には、CPU10は、メインメモリを参照して、音源とマイク64との間の距離L2(図12参照)を算出する。CPU10は、次にステップS27の処理を実行する。
【0108】
ステップS27において、CPU10は、ステップS26で算出した音源とマイク64との距離L2が閾値L0(図12参照)以上か否かを判定する。判定結果が肯定の場合、CPU10は、次にステップS28の処理を実行する。一方、判定結果が否定の場合、CPU10は、次にステップS29の処理を実行する。
【0109】
ステップS28において、CPU10は、ステップS26で算出した音源とマイク64との距離L2に基づいて、フィルタ値を補正する。ここでは、CPU10は、ステップS25で算出したフィルタ値の最大値を距離L2に応じて補正する。CPU10は、音源とマイク64との距離L2が閾値Lm(図12参照)以上の場合、ステップS25で算出した最大値を、フィルタ値として設定する。また、音源とマイク64との距離L2が閾値Lm未満の場合、例えば、CPU10は、ステップS25で算出した最大値に、距離L2を閾値Lmで除した値をかけることにより、ステップS25で算出したフィルタ値の最大値を補正する。補正されたフィルタ値は、メインメモリに記憶される。CPU10は、次にステップS30の処理を実行する。
【0110】
一方、ステップS29において、CPU10は、フィルタ値を0に設定する。ここでは、音源がマイク64の後方にないか、または、音源とマイク64との距離が閾値L0未満であるため、フィルタ値を0に設定する。これにより、音声が再生される際には、フィルタが全くかからない音声がスピーカから出力される。ステップS29の処理の後、CPU10は、次にステップS30の処理を実行する。
【0111】
ステップS30において、CPU10は、音声に周波数フィルタを適用する。ここでは、CPU10は、音源の音声に対して、ステップS28で算出されたフィルタ値に応じたフィルタ(図13参照)が適用される。これにより、所定の周波数以上の成分がカットされたり(音量が0にされたり)、所定の周波数以上の成分の音量が減衰されたりする。ステップS30の処理の後、CPU10は、次にステップS31の処理を実行する。
【0112】
ステップS31において、CPU10は、すべての音源について処理済みか否かを判定する。上記ステップS21からステップS31の処理が繰り返し実行されることにより、ゲーム空間に存在するすべての音源について、処理が行われる。判定結果が否定の場合、CPU10は、ステップS21の処理を再び実行する。一方、判定結果が肯定の場合、CPU10は、図17に示すフィルタ処理を終了する。
【0113】
図15に戻り、CPU10は、次にステップS6において、画像データ生成処理を実行する。ステップS6においては、テレビ2に表示される画像が生成される。具体的には、CPU10は、仮想カメラ60でゲーム空間を撮像することにより、画像データを生成する。CPU10は、次にステップS7の処理を実行する。
【0114】
ステップS7において、CPU10は、画像出力処理を実行する。ここでは、ステップS6で生成された画像データが、テレビ2に出力される。これにより、テレビ2の画面にはゲーム画像が表示される。CPU10は、次にステップS8の処理を実行する。
【0115】
ステップS8において、CPU10は、音声出力処理を実行する。ステップS8が実行されることにより、ステップS4およびステップS5の処理結果に応じた音声がスピーカから出力される。具体的には、ステップS4で算出された音源の定位、音量、およびドップラー効果の計算結果に基づいて音声データが生成され、さらに、ステップS5のフィルタ処理の結果に応じて音声データが補正される。そして、CPU10は、音声データをシステムLSI11を介してAV−IC15に出力する。これにより、スピーカから音声が出力される。CPU10は、次にステップS9の処理を実行する。
【0116】
ステップS9において、CPU10は、ゲームを終了するか否かを判定する。ステップS9の判定は、例えば、ゲームオーバー(あるいはゲームクリア)になったか否か、あるいは、ユーザがゲームを中止する指示を行ったか否か等によって行われる。ステップS9の判定結果が否定の場合、ステップS2の処理が再度実行される。一方、ステップS9の判定結果が肯定の場合、CPU10は図15に示すメイン処理を終了する。
【0117】
以上のように、本実施形態におけるゲームでは、ゲーム空間に存在する音源からの音声が補正されて、スピーカから出力される。具体的には、定位計算用マイク61(仮想カメラ60)の位置を基準とした音源の定位(音源の方向)が算出される。また、定位計算用マイク61とは別に設けられた音量計算用マイク62と音源との距離に応じて、音量が算出される。そして、算出された音源の定位および音量に応じた音声が、スピーカから出力される。本実施形態では、仮想カメラ60の位置に定位計算用マイク61が配置され、仮想カメラ60の注視点近傍(仮想カメラ60の撮像方向の所定位置)に音量計算用マイク62が配置される。このため、テレビ2の中央付近に表示された音源の仮想カメラ60に対する定位が維持されながら、当該音源からの音声の音量を大きくすることができる。これにより、視覚と聴覚による両面からゲーム空間内の所定のオブジェクトを注目させたり、音声を発する多数のオブジェクトがゲーム空間に配置される場合でも、プレイヤを混乱させることなく特定のオブジェクトに注目させることができる。
【0118】
また、プレイヤ操作モードでは、音量計算用マイク62がプレイヤキャラクタ51と仮想カメラ60との間に配置される。このため、プレイヤキャラクタ51周辺の音源からの音声の音量をより大きくすることができる。例えば、音量計算用マイク62が仮想カメラ60の位置に配置されると(マイク61とマイク62とが一致すると)、仮想カメラ60で撮像されないオブジェクトの音量が大きくなり、プレイヤキャラクタ51周辺の音声の音量が小さくなってしまうことがある。このため、プレイヤは違和感を感じたり、多数の音源が存在すると、混乱したりする。しかしながら、上記実施形態では、音量計算用マイク62がプレイヤキャラクタ51と仮想カメラ60との間に配置されるため、プレイヤキャラクタ51周辺からの音声をより大きな音量で再生することができ、プレイヤは違和感を感じることなくゲームを行うことができる。
【0119】
また、デモモードにおいては、音量計算用マイク62は、仮想カメラ60の注視点近傍に配置される。このため、仮想カメラ60で注視したオブジェクトまたは領域からの音声の音量を大きくして、他の領域からの音声の音量を小さくすることができ、視聴者を当該オブジェクトに注目させることができる。
【0120】
また、本実施形態では、仮想カメラ60の後方に存在する音源からの音声に対して、フィルタ処理が行われる。具体的には、音源が仮想カメラ60の真後ろに近いほど、当該音源からの音声に対して高い度合で補正される。また、音源が仮想カメラ60から離れるほど、当該音源からの音声に対して高い度合で補正される。すなわち、本実施形態では、音源と仮想カメラ60との角度が大きいほど(当該角度が180度に近いほど)、また、仮想カメラ60と音源との距離が大きいほど、より高い度合で補正される(より減衰の度合が高くなる)。これにより、仮想カメラ60の後方に存在してテレビ2に表示されないオブジェクトからの音声を籠らせることができ、マイクの前方からの音声と後方からの音声とを区別することができる。
【0121】
例えば、仮想3次元空間の前後方向からの音に違いを出す場合、2つのスピーカ(ステレオスピーカ)からの音の位相差や時間差等を利用するバーチャルサラウンドや、実際に視聴者の前方と後方とにスピーカを配置する5.1チャンネルサラウンド等の技術が考えられる。しかしながら、バーチャルサラウンドの技術や5.1チャンネルサラウンドの技術では、2以上のスピーカが必要であったり、スピーカ間の距離やスピーカと視聴者との位置関係が所定の条件を満たす必要があったりする。また、5.1チャンネルサラウンドでは専用のハードウェアが必要であったり、バーチャルサラウンドでは、複雑な計算が必要であったりする。しかしながら、本実施形態のフィルタ処理では、複雑な計算を必要とすることなく、比較的低負荷で音声の補正を行うことができ、また、モノラルスピーカでも前後方向からの音に違いを出すことができる。
【0122】
(変形例)
なお、上記実施形態は本発明を実施する一例であり、他の実施形態においては例えば以下に説明する構成であってもよい。
【0123】
例えば、上記実施形態では、定位計算用マイク61と音量計算用マイク62とを別々に設け、音量計算用マイク62を仮想カメラ60の撮像軸上の所定位置に配置した。他の実施形態では、音量計算用マイク62は、仮想カメラ60の撮像軸上に限らず、仮想カメラ60の撮像軸に垂直な面上の所定位置に配置されてもよい。すなわち、音量計算用マイク62は、仮想カメラ60の撮像範囲の所定位置(撮像軸上に限らない撮像範囲)に配置されてもよい。
【0124】
また、上記実施形態では、音量計算用マイク62は定位計算用マイク61(仮想カメラ60)と仮想カメラ60の注視点(プレイヤキャラクタ51の位置)との間の所定位置に配置された。他の実施形態では、音量計算用マイク62は、仮想カメラ60の注視点と一致して配置されてもよいし、注視点よりも仮想カメラ60の撮像方向側に配置されてもよい。
【0125】
また、上記実施形態では、定位計算用マイク61は仮想カメラ60に一致して配置されたが、他の実施形態では、必ずしも定位計算用マイク61は仮想カメラ60の位置に配置される必要はない。例えば、定位計算用マイク61は、プレイヤオブジェクトの位置に基づいて配置されてもよい(プレイヤオブジェクトの位置に一致して配置されてもよいし、プレイヤオブジェクトの位置と所定の関係を有する位置に配置されてもよい)。
【0126】
また、上記実施形態では、音量計算用マイク62は仮想カメラ60の注視点に基づいて配置された。すなわち、プレイヤ操作モードでは、プレイヤキャラクタ51に注視点が設定され、音量計算用マイク62は当該プレイヤキャラクタ51と仮想カメラ60との間に設定された。また、デモモードでは、仮想カメラ60の注視点近傍に音量計算用マイク62が配置された。他の実施形態では、音量計算用マイク62は、仮想カメラ60の注視点とは離れた位置に配置されてもよく、例えば、プレイヤの操作によって移動されてもよい。例えば、音量計算用マイク62を示すマイクオブジェクトがテレビ2に表示され、プレイヤの操作によって当該マイクオブジェクトがゲーム空間内を移動してもよい。プレイヤは、特定の音源からの音声に注目したい場合、当該マイクオブジェクトを移動させることで、特定の音源の音量を大きくすることができる。
【0127】
また、上記実施形態では、ドップラー効果用マイク63は定位計算用マイク61と一致して配置されたが、他の実施形態では、これらの位置は一致しなくてもよい。例えば、ドップラー効果用マイク63をプレイヤキャラクタ51の近傍に配置してもよい。
【0128】
また、上記実施形態では、音源の定位として、音源と定位計算用マイク61との角度に応じて左右定位および前後定位が所定の値(−1.0〜1.0の範囲の値)で表された。他の実施形態では、音源と定位計算用マイク61との位置関係を表すものであればどのような方法で音源の定位が算出されてもよい。例えば、定位計算用マイク61に固定の座標系の座標値によって定位が表されてもよい。また、音源の定位は、定位計算用マイク61を基準とした音源の方向を示すものであってもよいし、音源の方向および距離を示すものであってもよい。
【0129】
また、上記実施形態では、音源の定位は、左右方向および前後方向に関してのみ算出された。すなわち、上記実施形態では、2次元平面(地面)における定位が算出され、仮想空間の上下方向に音源あるいは定位計算用マイク61が移動した場合も、音源の定位は変化しないものとした。他の実施形態では、上下方向に関しても定位が算出されてもよい。すなわち、他の実施形態では、音源と定位計算用マイク61との仮想3次元空間における位置関係に基づいて、音源の定位が3次元で算出されてもよい。そして、実空間において上下方向にもスピーカが配置された環境(例えば、7.1チャンネルサラウンド)において、算出された音源の定位に基づいて、音声が再生されてもよい。
【0130】
また、上記実施形態では、音源からの音声の音量は、音源からの距離に応じて変化し、音源を中心とした所定の半径の円上では音量は同じであるとした。他の実施形態では、音量は、音源からの距離および音源の向きに応じて変化してもよい。
【0131】
また、上記実施形態では、周波数フィルタとしてローパスフィルタを用いて、所定の周波数以上の成分の音量を減少させることにより、音声を補正した。他の実施形態では、周波数フィルタとしてバンドパスフィルタやハイパスフィルタ、バンドエリミネーションフィルタが用いられて、音声が補正されてもよい。また、他の実施形態では、周波数フィルタを用いて、所定以下(所定以上あるいは所定範囲)の周波数の成分の音量を増加させることで所定以上の周波数の成分の音量を相対的に下げることにより、音声を補正してもよい。
【0132】
また、他の実施形態では、上記周波数フィルタ―に限らず、イコライザーのような特定の周波数特性を変更するものや、マルチバンドコンプレッサ、エフェクター等を用いて、音声を補正してもよい。
【0133】
また、上述した音声に対する処理は、他の任意の音声(例えば、所定のキャラクタの声等)に対して行われてもよい。
【0134】
また、上記実施形態では、仮想カメラ60の後方に存在する音源の音声を周波数フィルタを用いて補正した。他の実施形態では、仮想カメラ60から見た所定の方向(前方向、右方向等)の音源からの音声について、周波数フィルタを適用して補正してもよい。また、他の実施形態では、仮想カメラ60から見た所定の方向ではなく、プレイヤキャラクタから見た所定の方向(前方向、右方向等)の音源からの音声を補正してもよい。すなわち、仮想カメラまたは仮想空間内の所定のキャラクタから見た音源の方向(仮想カメラまたは所定のキャラクタを基準とした音源の方向)を算出し、当該算出した方向が所定の方向の場合に、当該音源の音声を補正してもよい。
【0135】
また、上記音声に対する処理(複数のマイクを用いた処理やフィルタを用いた処理)は、上述のようなゲームに限らず、他の任意のゲームにおいても行われてもよい。また、上記音声に対する処理は、ゲームに限らず特定のシミュレーションシステムにおいて行われてもよい。
【0136】
また、本実施形態では、上記ゲーム装置3において上記ゲームプログラムが実行されたが、他の実施形態では、ゲーム専用装置に限らず、一般的な情報処理装置(パーソナルコンピュータやスマートフォン等)において上記プログラムが実行されてもよい。すなわち、他の実施形態では、一般的な情報処理装置において上記プログラムが実行されることにより、当該情報処理装置をゲーム装置として機能させてもよい。
【0137】
また、上記ゲームプログラムは、光ディスクに限らず、磁気ディスク、不揮発性メモリ等の記憶媒体に記憶されてもよく、ネットワークに接続されたサーバ上のRAMや磁気ディスク等のコンピュータ読み取り可能な記憶媒体に記憶されて、ネットワークを介して当該プログラムが提供されてもよい。また、上記ゲームプログラムは、ソースコードとして情報処理装置に読み込まれて、プログラムの実行の際にコンパイルされて実行されてもよい。
【0138】
また、上記実施形態においては、ゲーム装置3のCPU10が上記ゲームプログラムを実行することによって、上述したフローチャートによる処理が行われた。他の実施形態においては、上記処理の一部又は全部は、ゲーム装置3が備える専用回路によって行われてもよし、他の汎用プロセッサによって行われてもよい。少なくとも1つのプロセッサが、上記処理を実行するための「プログラムされた論理回路」として動作するものであってもよい。
【0139】
さらに、他の実施形態では、互いに通信可能な複数の情報処理装置を有する情報処理システムにおいて、当該複数の情報処理装置が、上述のようなゲーム装置3において実行されたゲーム処理を分担して実行するようにしてもよい。例えば、インターネットのようなネットワークに接続された複数の情報処理装置によって上述のような情報処理システムが構成されてもよい。具体的には、例えば、ネットワーク上のサーバが上記ゲーム装置3において行われた処理を行ってもよい。そして、ネットワーク上の端末がサーバからの処理結果を受信し、当該端末に接続された表示装置においてゲーム画像が表示され、当該端末に接続されたスピーカからゲーム音声が出力されてもよい。
【符号の説明】
【0140】
1 ゲームシステム
2 テレビ
3 ゲーム装置
4 光ディスク
5 コントローラ
10 CPU
11d 内部メインメモリ
12 外部メインメモリ
51 プレイヤキャラクタ
52、53、54 音源
55 キャラクタ
60 仮想カメラ
61 定位計算用マイク
62 音量計算用マイク
63 ドップラー効果用マイク
64 後方フィルタ用マイク
【特許請求の範囲】
【請求項1】
仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記仮想カメラまたは前記仮想空間内の所定のキャラクタから見た前記音源の方向を算出する方向算出手段と、
前記音源の方向が所定の方向の場合、前記音源の音声に対して所定のフィルタを適用して当該音声を補正する補正手段と、
前記補正手段で補正した音声を出力する音声出力手段として、前記コンピュータを機能させる、情報処理プログラム。
【請求項2】
前記方向算出手段は、前記仮想カメラの撮像方向または前記所定のキャラクタを基準とした方向と、前記音源の方向との角度を算出する、請求項1に記載の情報処理プログラム。
【請求項3】
前記補正手段は、前記方向算出手段が算出した角度が第1の閾値よりも大きい場合、前記音声を補正する、請求項2に記載の情報処理プログラム。
【請求項4】
前記補正手段は、前記方向算出手段が算出した角度が大きいほど前記音声の補正の度合を高くする、請求項2または3に記載の情報処理プログラム。
【請求項5】
前記補正手段は、前記音源の方向が前記仮想カメラまたは前記所定のキャラクタの後方である場合、前記音声を補正する、請求項1から4の何れかに記載の情報処理プログラム。
【請求項6】
前記補正手段は、前記仮想カメラまたは前記所定のキャラクタと、前記音源との距離にも基づいて前記音声を補正する、請求項1から5の何れかに記載の情報処理プログラム。
【請求項7】
前記補正手段は、前記仮想カメラまたは前記所定のキャラクタと、前記音源との距離が第2の閾値よりも大きい場合、前記音声を補正する、請求項6に記載の情報処理プログラム。
【請求項8】
前記補正手段は、前記距離が大きいほど前記音声の補正の度合を高くする、請求項6または7に記載の情報処理プログラム。
【請求項9】
前記補正手段は、前記角度に応じて補正の度合の最大値を設定し、前記仮想カメラまたは前記所定のキャラクタと、前記音源との距離に基づいて当該最大値の範囲内で補正の度合を決定し、当該補正の度合で前記音声を補正する、請求項2から4の何れかに記載の情報処理プログラム。
【請求項10】
前記補正手段は、前記音声の所定の周波数成分の音量を減衰させる度合を大きくすることにより、前記音声の補正の度合を高くする、請求項4または8に記載の情報処理プログラム。
【請求項11】
前記補正手段は、前記音声の所定の周波数成分を減衰させることにより前記音声を補正する、請求項1から10の何れかに記載の情報処理プログラム。
【請求項12】
前記音源または前記音源の音声の種類に応じて前記音声の補正を行うか否かを判定する判定手段として、前記コンピュータをさらに機能させ、
前記補正手段は、前記判定手段によって前記音声の補正を行うと判定された場合、前記音声の補正を行う、請求項1から11の何れかに記載の情報処理プログラム。
【請求項13】
前記補正手段は、前記音源または前記音源の音声の種類に応じて前記音声の補正の度合を設定し、当該補正の度合で前記音声を補正する、請求項1から12の何れかに記載の情報処理プログラム。
【請求項14】
前記所定のフィルタは、周波数フィルタである、請求項1から13の何れかに記載の情報処理プログラム。
【請求項15】
前記周波数フィルタは、ローパスフィルタおよびバンドパスフィルタの少なくとも一方である、請求項14に記載の情報処理プログラム。
【請求項16】
仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理装置であって、
前記仮想カメラまたは前記仮想空間内の所定のキャラクタから見た前記音源の方向を算出する方向算出手段と、
前記音源の方向が所定の方向の場合、前記音源の音声に対して所定のフィルタを適用して当該音声を補正する補正手段と、
前記補正手段で補正した音声を出力する音声出力手段とを備える、情報処理装置。
【請求項17】
仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理システムであって、
前記仮想カメラまたは前記仮想空間内の所定のキャラクタから見た前記音源の方向を算出する方向算出手段と、
前記音源の方向が所定の方向の場合、前記音源の音声に対して所定のフィルタを適用して当該音声を補正する補正手段と、
前記補正手段で補正した音声を出力する音声出力手段とを備える、情報処理システム。
【請求項18】
仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理システムにおいて行われる情報処理方法であって、
前記仮想カメラまたは前記仮想空間内の所定のキャラクタから見た前記音源の方向を算出する方向算出ステップと、
前記音源の方向が所定の方向の場合、前記音源の音声に対して所定のフィルタを適用して当該音声を補正する補正ステップと、
前記補正ステップで補正した音声を出力する音声出力ステップとを含む、情報処理方法。
【請求項1】
仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理装置のコンピュータにおいて実行される情報処理プログラムであって、
前記仮想カメラまたは前記仮想空間内の所定のキャラクタから見た前記音源の方向を算出する方向算出手段と、
前記音源の方向が所定の方向の場合、前記音源の音声に対して所定のフィルタを適用して当該音声を補正する補正手段と、
前記補正手段で補正した音声を出力する音声出力手段として、前記コンピュータを機能させる、情報処理プログラム。
【請求項2】
前記方向算出手段は、前記仮想カメラの撮像方向または前記所定のキャラクタを基準とした方向と、前記音源の方向との角度を算出する、請求項1に記載の情報処理プログラム。
【請求項3】
前記補正手段は、前記方向算出手段が算出した角度が第1の閾値よりも大きい場合、前記音声を補正する、請求項2に記載の情報処理プログラム。
【請求項4】
前記補正手段は、前記方向算出手段が算出した角度が大きいほど前記音声の補正の度合を高くする、請求項2または3に記載の情報処理プログラム。
【請求項5】
前記補正手段は、前記音源の方向が前記仮想カメラまたは前記所定のキャラクタの後方である場合、前記音声を補正する、請求項1から4の何れかに記載の情報処理プログラム。
【請求項6】
前記補正手段は、前記仮想カメラまたは前記所定のキャラクタと、前記音源との距離にも基づいて前記音声を補正する、請求項1から5の何れかに記載の情報処理プログラム。
【請求項7】
前記補正手段は、前記仮想カメラまたは前記所定のキャラクタと、前記音源との距離が第2の閾値よりも大きい場合、前記音声を補正する、請求項6に記載の情報処理プログラム。
【請求項8】
前記補正手段は、前記距離が大きいほど前記音声の補正の度合を高くする、請求項6または7に記載の情報処理プログラム。
【請求項9】
前記補正手段は、前記角度に応じて補正の度合の最大値を設定し、前記仮想カメラまたは前記所定のキャラクタと、前記音源との距離に基づいて当該最大値の範囲内で補正の度合を決定し、当該補正の度合で前記音声を補正する、請求項2から4の何れかに記載の情報処理プログラム。
【請求項10】
前記補正手段は、前記音声の所定の周波数成分の音量を減衰させる度合を大きくすることにより、前記音声の補正の度合を高くする、請求項4または8に記載の情報処理プログラム。
【請求項11】
前記補正手段は、前記音声の所定の周波数成分を減衰させることにより前記音声を補正する、請求項1から10の何れかに記載の情報処理プログラム。
【請求項12】
前記音源または前記音源の音声の種類に応じて前記音声の補正を行うか否かを判定する判定手段として、前記コンピュータをさらに機能させ、
前記補正手段は、前記判定手段によって前記音声の補正を行うと判定された場合、前記音声の補正を行う、請求項1から11の何れかに記載の情報処理プログラム。
【請求項13】
前記補正手段は、前記音源または前記音源の音声の種類に応じて前記音声の補正の度合を設定し、当該補正の度合で前記音声を補正する、請求項1から12の何れかに記載の情報処理プログラム。
【請求項14】
前記所定のフィルタは、周波数フィルタである、請求項1から13の何れかに記載の情報処理プログラム。
【請求項15】
前記周波数フィルタは、ローパスフィルタおよびバンドパスフィルタの少なくとも一方である、請求項14に記載の情報処理プログラム。
【請求項16】
仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理装置であって、
前記仮想カメラまたは前記仮想空間内の所定のキャラクタから見た前記音源の方向を算出する方向算出手段と、
前記音源の方向が所定の方向の場合、前記音源の音声に対して所定のフィルタを適用して当該音声を補正する補正手段と、
前記補正手段で補正した音声を出力する音声出力手段とを備える、情報処理装置。
【請求項17】
仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理システムであって、
前記仮想カメラまたは前記仮想空間内の所定のキャラクタから見た前記音源の方向を算出する方向算出手段と、
前記音源の方向が所定の方向の場合、前記音源の音声に対して所定のフィルタを適用して当該音声を補正する補正手段と、
前記補正手段で補正した音声を出力する音声出力手段とを備える、情報処理システム。
【請求項18】
仮想カメラで撮像された仮想空間を描画し、当該仮想空間における音源の音声を出力する情報処理システムにおいて行われる情報処理方法であって、
前記仮想カメラまたは前記仮想空間内の所定のキャラクタから見た前記音源の方向を算出する方向算出ステップと、
前記音源の方向が所定の方向の場合、前記音源の音声に対して所定のフィルタを適用して当該音声を補正する補正ステップと、
前記補正ステップで補正した音声を出力する音声出力ステップとを含む、情報処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2013−102843(P2013−102843A)
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願番号】特願2011−247127(P2011−247127)
【出願日】平成23年11月11日(2011.11.11)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成25年5月30日(2013.5.30)
【国際特許分類】
【出願日】平成23年11月11日(2011.11.11)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]