オススメ機能
Twitter
お気に入り
記事履歴
ランキング
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[CEDEC 2014]物理シミュレーションの結果に合わせて音を生成する方法とは。スクエニの開発者が語るプロシージャルオーディオの応用例
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2014/09/03 17:11

イベント

[CEDEC 2014]物理シミュレーションの結果に合わせて音を生成する方法とは。スクエニの開発者が語るプロシージャルオーディオの応用例

 ゲーム技術において重要視されているのはいうまでもなくグラフィックスだろう。グラフィックス処理には潤沢なCPU性能やメモリ,そして強力な演算性能を持つGPUといったリソースが割り当てられている。それだけ人間にとって目から入ってくる情報が重要ということだが,その次あたりに重要なのが耳から入る情報,つまりだと筆者は思っている。
 というわけで本稿では,CEDEC 2014初日に行われた「当たって砕けろッ!プロシージャルオーディオ制作」と題されたセッションの内容を紹介してみたい。

CEDEC 2014 記事一覧



物理エンジンとサウンドエンジンをつなげるプロシージャルオーディオ


 ゲームには昔から効果音が利用されてきた。ゲーム内で起こり得るイベントに合った効果音を録音ないし合成したサウンドデータとして用意しておき,ゲームプログラム中で適切なサウンドを選んで再生する,というのが古典的な効果音の手法だ。シチュエーションに応じてエフェクトを適用するなどすれば,作り置きしたサウンドでも効果音に変化を付けることができる。

シディーク・サジャード氏(スクウェア・エニックス テクノロジー推進部 音声研究者)
 だが,最近のゲームでは,この古典的な手法に限界が生じるようになってきた。たとえば,ゲーム内で起こり得るイベントが膨大な量になって,イベントに合った音を作り置きするコストがかかり過ぎたり,サウンドデータの容量が膨れ上がったりといった問題が生じるのだ。
 さらに物理エンジンがゲームで利用されるようになると,物理シミュレーションによって描き出されるシーンの展開を予測することができないため,サウンドを作り置きするという手法そのものが通用しなくなってしまう。

 そこで,作り置きした音を再生するのではなく,音をプログラムで作り出す「プロシージャルオーディオ」(Procedual Audio)の技術を使って,物理シミュレーションの結果に合わせて音を生成してはどうか,というのが,今回のセッションのテーマとなる。
 セッションを担当したのは,スクウェア・エニックスでサウンドの製作に携わっている音声研究者 シディーク・サジャード氏,サウンドプログラマー 谷山 輝氏,そしてサウンドデザイナー 廣瀬裕貴氏の3人だ。

左から谷山 輝氏(スクウェア・エニックス サウンド部サウンドプログラマー),廣瀬裕貴氏(スクウェア・エニックス サウンド部 サウンドデザイナー)

 セッションではまず,サウンドデザイナーの廣瀬氏が,なぜプロシージャルオーディオが必要なのかという点について,デモを交えて解説した。氏いわく,「グラフィックスの表現は物理エンジンの恩恵を受けて多彩な表現が可能になった。だがサウンドは必ずしもそれに合わせていなかった」。そこでスクウェア・エニックスでは,物理エンジンに対して厳密にサウンドを合わせるということを考えたのだそうだ。

廣瀬氏が披露したデモの1つ。上からブロックが落ちてきて壊れるという,物理エンジンを使ったデモだが,音がうまく合わない
ミドルウェア/開発ツール

音が合わない理由は,物理エンジンの挙動を厳密に予測できないこと,そして物理エンジンが引き起こす現象のすべてに作り置きの音とエフェクトで対応するのが難しいことにある
ミドルウェア/開発ツール

 あらかじめ録音しておいた音を利用するのではなく,効果音の波形をプログラム的に作り出すプロシージャルオーディオ。そのメリットは,物理エンジンのような「挙動が予測できないオブジェクト」に合った音を生成でき,サウンドの高品質化とシステムの効率化を両立することが可能になることだと,同社でプログラマーを務める谷山氏は説明していた。
 一方で,波形を生成するアルゴリズムに知悉した人が少ないうえ,開発に時間がかかるのがデメリットのようだ。プロシージャルオーディオによって生成される音は,実行してみないとどんな音が再生されるか分からないため,「開発はトライアンドエラーになる」と谷山氏は語っていた。

谷山氏が挙げるプロシージャルオーディオの利点。バリエーション豊かな音が作れるだけでなく,品質と効率の両立がアルゴリズム次第で可能になるというのも大きいそうだ
ミドルウェア/開発ツール

プロシージャルオーディオのデメリット。どんな音が出るかは聞いてみないと評価できないため,開発に時間がかかるとのこと
ミドルウェア/開発ツール

 スクウェア・エニックスでは,まさに今,プロシージャルオーディオの開発に取り組んでいるところだという。サウンドデザイナーとプログラマーのチームに,音響分析の専門家でサジャード氏が加わって,次のスライドに挙げられているような工程で開発が進められているとのことだった。

スクウェア・エニックスが取り組んでいるプロシージャルオーディオの開発工程。谷山氏によると現在は,スライドにある「ダメだしサイクル」を数回ほど繰り返したところだそうだ
ミドルウェア/開発ツール

 具体的にどんなものが開発されているのか,その例として示されたのが次のスライドだ。中心にあるのは「Granular Synthesizer」と命名された一種のサウンド合成エンジンで,物理エンジンから取り込んだ情報を基に,複数の音のデータをGranular Synthesizerで合成,加工して最終的な音を作り出すというシステムだそうだ。Granularは「粒状の」という意味なので,おそらく短い複数の音を合成して効果音を作り出すことから,このような名前が付けられているのだろう。

 スライドで示されているように,このプロシージャルオーディオエンジンは,さまざまな波形を編集するモジュールを追加できる設計になっているとのこと。谷山氏は「あらゆる音を作るアルゴリズムは,波形編集モジュールの組わせで実現できると考えている」と述べていた。

スクウェア・エニックスが取り組んでいるプロシージャルオーディオのサウンドエンジン。Granular Synthesizerによって複数の音を合成,加工して効果音を作り出す
ミドルウェア/開発ツール


サウンドデザイナーのチェックが欠かせないプロシージャルオーディオ


 というわけで,このGranular Synthesizerを使ってどのように音が創り出されるのか,その具体例を解説したのがサジャード氏である。セッションで取り上げられたのは砕ける岩だ。セッションタイトルになっている「当たって砕けろ」は,この「岩」とかけているとのことだった。

モノが砕ける物理について参考にしたという論文
ミドルウェア/開発ツール
 では,岩が砕ける音というのはどんなものか。サジャード氏はまず,破片と破片がぶつかるとき,または破片が地面とぶつかるときに音が出ることから,砕ける岩の音を「たくさんの岩が割れる音と,ぶつかる音が合成されたもの」と定義したそうだ。「なので,たくさんのシンプルな音を収録し,組み合わせれば破壊音を作れるだろうと我々は考えた」(サジャード氏)。

砕ける岩の音は,岩がぶつかる複数の音を合成すれば再現できるのではないかとサジャード氏らは考えたという
ミドルウェア/開発ツール ミドルウェア/開発ツール

 岩が割れるときや,ぶつかるときに音が発生するのは「破片が共振周波数で振動することが原因」とサジャード氏。つまり岩と岩をぶつければ,そのような音が得られるはずで,サジャード氏らはさまざまな石を叩いて振動させ,その音を録音したという。

これが録音風景。岩に向かって石を投げてぶつけ,その音を録音したそうだ。「雑音を入れないために息を止めて石を投げる必要があったので大変だった」(サジャード氏)そうである
ミドルウェア/開発ツール

 ただ,多数の小さな音を録音して単に合成すれば岩が割れる音になるのかというとそうではない。サジャード氏はよりシンプルな例として雨の音を挙げていた。
 雨音は多数の水滴が落ちる音が集合した音だ。ならば単純に水滴の音を大量に合成すればリアルな雨音になるということだろうか。サジャード氏は実際にデモを聞かせてくれたが,100万粒でかろうじて豪雨っぽく聞こえなくもない,といったところだった。

サジャード氏は水滴の音を1粒から100万粒まで用意し,合成する数を変えながら再生してみせた。100万粒になると豪雨っぽく聞こえなくはなかったが……
ミドルウェア/開発ツール

 単純に合成しても,リアルな雨音にはならない。よって,個々の水滴の音に大きさの変化を付けながら合成する必要が出てくるわけだが,サジャード氏は最終的に,「音の大きさと頻度を表す分布を対数正規分布にすると雨音らしく聞こえる」ことが分かったという。
 サジャード氏はその理由については説明しなかったが,人間の聴感の特性は対数なので,頻度の分布を対数にするとそれっぽく聞こえるというのは結構分かりやすいように思う。

音の大きさをどう分布させるのか。最も雨音っぽく聞こえるのは対数正規分布のときだったという。つまり小さい音は数が多く,大きな雨音がたまに聞こえるという感じである。これはおそらく人間の聴感の特性が対数的だからだろう
ミドルウェア/開発ツール

これが対数正規分布。σとμという2つのパラメータで表せる
ミドルウェア/開発ツール

 以上が雨音の例だが,この例に従うと,岩が砕ける音も音の大きさの頻度を対数正規分布にすれば,それっぽく聞こえるということになる。岩が砕ける音の場合はさらに,雨のようにずっと降り続くわけではないので,時間とともに音の頻度が減っていくという変化も必要になってくる。

岩が砕ける場合は,「時間の経過とともに音の頻度が減っていく」というパラメータも必要になる
ミドルウェア/開発ツール

 では実際にGranular Synthesizerをどのように制御して岩が砕ける音を作ったのだろう。サジャード氏らはまず,物理エンジンから岩が衝突する回数と衝突の力積――つまり衝突の強さ――という2つのパラメータをもらい,Granular Synthesizerに入力して岩が砕ける音を合成してみたそうだ。

岩が砕ける音を作る最初の試み。物理エンジンから岩が衝突する回数と衝突の力積をパラメータとして受け取り,Granular Synthesizerで音を合成した
ミドルウェア/開発ツール

 この方法は理にかなっているように思えるが,再生した音はサウンドデザイナーからダメ出しされたという。
 下のグラフは物理エンジンから得た衝突数の時間変化を示したもので,衝突の強さがグラフの色の濃さで表されている。3つの岩を落として砕いたときの変化なので,衝突数のピークは3つ。岩が衝突した瞬間に衝突の数が跳ね上がっているが,最大でも単位時間あたり100回を超える程度ということが確認できるはずだ。また,その後に衝突の数が急激に減ることが分かる。

物理エンジンで3つの岩を落として砕いたときに得られた衝突の回数の時間変化。意外に時間あたりの衝突回数が少ないこと,そして衝突回数の減衰が速いということが分かるはず
ミドルウェア/開発ツール

 サウンドデザイナーからダメを出された原因は衝突回数の減衰が速いことにあったようで,最終的には,衝突回数の減衰に手を加えることで満足できる音が得られたとサジャード氏。物理エンジンから得られた衝突回数が,おそらく物理的には正しいのだろうと思うが,物理的に正しいからといって,それらしく聞こえないというあたりが,プロシージャル的手法の難しさだろうか。

物理エンジンから得たデータを基にしただけではそれらしく聞こえず,時間変化に手を加えることでそれらしく聞こえるようになったそうだ
ミドルウェア/開発ツール

 セッションでは最後に,谷山氏が「最終的にはどんな音でも作り出せるプロシージャルオーディオSDKという形にまとめたい。将来のCEDECでそのような発表ができると思っている」と将来の展望を力強く語っていた。いずれにしても,ゲームが複雑化しているだけに,効果音にはプロシージャル的な手法が欠かせなくなるだろう。スクウェア・エニックスの取り組みがもたらす成果に期待したい。

ミドルウェア/開発ツール

スクウェア・エニックス コーポレートサイト

CEDEC 2014 記事一覧

  • 関連タイトル:

    ミドルウェア/開発ツール

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:10月15日〜10月16日
タイトル評価ランキング
81
KENGOHAZARD2 (PC)
76
鬼ノ哭ク邦 (PC)
76
Days Gone (PS4)
74
2019年04月〜2019年10月