物理学に最適な(またはどこかに近い)3Dサウンドエンジン[終了]


11

私はゲームプログラミングの初心者ですが、コンソール/ Web開発で数年の経験があります。私の問題は、探しているものが見つからないほど多くはありません。検索を実際に実行するための用語がわからないだけです。

音に重点を置いた物理エンジンを探しています。実際、私は他に何も気にしません。私が意味することは、例によってよりよく説明されています:

一人称タイプのゲームを想定します。あなたは北を向いていて、あなたの周りの誰かがあなたにフルートを投げます(状況の不条理を気にしないでください)。フルートは途中で回転し、穴から音を出します。風が強い、5ノット南。

私は、物理エンジンがフルートの軌道と、それがヒットした後の方向を計算できると想像しています。私が欲しいのは、物理エンジンがリスナーの視点から正確な音を計算できるようにすることです。

そのようなエンジンは存在しますか?複数ある場合、上記の例に最適なのはどれですか。

回答:


10

あなたは間違った質問をしています。多くの新しいゲームプログラマが犯す間違いを犯しています。ゲームはありません彼らも近くない、完璧なシミュレーション。ゲームは、面白くて興味深いものになるのに十分なだけシミュレートします。他のすべてが偽造されています。

適例:
World of Goo:質量、引張強度、および弾性をシミュレートします。残りはゲームの感触を加えないので偽物です。たとえば、重力をシミュレートしません。すべてのオブジェクトは一定の力で加速します。Boyancyは偽造されています。風船は一定の力で引き上げられ、水中のグーボールも一定の上向きの力を受けます。これはすべてゲームに最適です。ただし、World of Gooの物理エンジンを使用してスペースエレベーターを作成しようとすると、故障します。

ほぼ完璧な物理ベースのサウンドエンジンを想像してみましょう。環境への影響はどうですか?洞窟や野原のフルートです。エンジンは事前定義された環境のセットを提供しますか(いくつですか)、または実際の物理的な地形を計算することでそれを把握しますか(そうです)。プレーヤーには指向性のある耳(アラヒト)または耳の穴(アライルカまたはエイリアン)のみ、または動物のような多方向性がありますか?空気は暑いですか?湿度はどれくらいですか。このリストはすぐに制御不能になる可能性があります。

ここで、このような真の物理サウンドエンジンが存在していたとしましょう。本当にゲームを作りたいですか?フルートが空中を飛んでいく音を定義するには、どれくらい時間がかかりますか。何個のパラメータを正確に取得する必要がありますか(100's?)。

あなたが尋ねるべきだったのは
、フルートの音がプレイヤーを越えて飛ぶとき、どうやってフルートの音をシミュレートできるかです。

OpenALはあなたが望むことをすることができます。

  • 指向性リスナー
  • 指向性音源
  • ソースの速度とドップラー効果。

回転するフルートの音響効果を繰り返すことをお勧めします。プレーヤーの位置とフルートの位置/速度を入力します。今のところ、方向性に関するものはスキップしてください。
空気が流れるときにフルートの両端から来る音を録音し、フルートに2つの音源を使用させることができます。しかし、ゲームメカニック全体がフルートの回転と回転を中心に展開しない限り、努力する価値はないと思います。


まあ、ゲーム全体のアイデアは音を出すオブジェクトの移動を中心に展開します。与えられた例は意図的に過度に複雑ですが、ゲームのアイデアは動きのあるリアルなサウンドのオブジェクトを含みます。
フェリックスSaparelli

ほとんどのパラメータは実際に制御されます。特定の材料(私が定義するプロパティ)の壁がある閉じた(密閉された)立方体の部屋を考えてください。気温、圧力、湿度などがすべて制御されます。耳は人間です。身体の残りの部分を考慮する必要すらない。実際、ブラックリストの代わりに、使用するパラメーターを正確に指定し、残りのすべてを(一定に)定義できます。それは私の(仮想)世界です:私はそれを私が望むように定義します。
フェリックスSaparelli

私の要点は、そのようなオーディオエンジンが一般的なケースで必要とする努力の量は、それだけの価値がないということでした。特に、才能のあるサウンドエンジニアが必要なエフェクトを非常に説得力のある方法で偽造できる場合。ドップラーが組み込まれています。エコー、ダンピングなどはすべてフィルタリングで行うことができます。
deft_code

8

物理モデリングが必要ですか?合成ツールキットを試してください:

https://ccrma.stanford.edu/software/stk/classstk_1_1Flute.html

風速/振幅を自分で設定する接着剤コードを記述する必要があります。

あなたが求めているものは、まだまだ発明されていません。私たちは近づいています-これをチェックしてください、私は先日それを見ました:

http://www.physorg.com/news198351307.html


面白いもの。これは私が言いたいことであり、それがまだ行われていないことは私を妨げません。私は実際の(非概念的な)作業を1〜2年前に始める予定はありません。
フェリックスSaparelli

4

物理オーディオエンジンが見つかるかもしれません。可能性が高いのは、好きな物理エンジン(Bulletなど)を使用し、サウンドにOpenALを使用することです。フルートの位置を計算し、それをソースの位置として使用します。


私はそれよりかなりもっと欲しいです。
フェリックスSaparelli

1
これ以上何が欲しいですか?私の提案では、サウンドの位置をフレームごとに変えることができます。何かが足りないと思います。
共産主義者アヒル

6
彼は音を発生させるために空気波や他の振動をシミュレートすることを意味していると思います。そして、それが可能であることは確かですが、コンピュータ(スーパーコンピュータのクラスタを除く)は、有用なサイズのスペースに対してリアルタイムでそれを計算できません。そのため、そのようなことはないということを意味している場合(実際のニーズもない場合)を使用してください。物理エンジンと衝突データを読み取って適切なサンプルを再生することは、「十分に近い」です。
Elva

3
もしあなたがそれをもっと高度にしたいのなら、そこにあるだけではありませんa)Yourdoomが言ったように、通常のコンピューターがそれを行うことができる方法はありません、そしてb)誰も違いを見分けることができません。
共産主義者ダック

3
OpenALが実行できない、または少なくとも箱から出してすぐには実行できない(および(幾何学的な)ボリュームベースのエフェクターなど、追加で接続できる)現代のゲーム(およびFMODのような高レベルAPI)にはまだまだたくさんあります複数の部屋を通過する音声をシミュレートするポータルへ。それは一般的ではありませんが、それが行われ、あなたは違いを見分けることができます。

4

Phyaは、ゲームの物理エンジンによって駆動できる「物理サンプリング」ベースの衝突オーディオ合成ライブラリです。(例では弾丸を使用)

http://www.zenprobe.com/phya/

最新のものがわからない、最後のサイトの更新は今から1年以上前です。

ボリューム内の空気の共鳴をモデル化することにはそれほど向いていませんが、物理学からリアルタイムのオーディオ合成を推進する方法の良い例かもしれません。

これは、ありえないほどCPUを消費する作業である必要はないと思います。述べられた問題は完全に確定的であり、最新のハードウェアで達成可能であるはずです。(少なくとも娯楽/学習製品に適したレベルまで)

答える質問は、どれだけ完全にシミュレートする必要があり、どれだけ偽造できるかです。合理的な説得力のある方法でサウンドをリアルタイムで変調するだけのオーディオの場合、分子までの音響振動をモデル化する必要がなく、多くのことが得られます。

多分これは役立ちます。いい質問ですね、ところで。

-j


偽物がたくさんできます。ただ...現代のビデオゲームよりはるかに少ない。つまり、私はビデオゲームではなく、オーディオゲームを作成しています。ちょっと。
フェリックスSaparelli

3

ここに含まれる物理学の正確なシミュレーションを実際に行うことは、HavokやBulletのような一般的な物理学システムよりもかなり複雑(そして計算コストがかかる)でしょう。従来の物理システムはリジッドボディとソフトボディ用に最適化されており、速度の理由でメッシュの複雑さが制限されています。

一方、音は空気中の波の伝播であり、例のようなものによって生成される周波数は、トンとプロパティのトンに依存しています。それはどのような素材でできていますか?その物質と相互作用する空気粒子にどの数学モデルを使用すればよいですか?チューブ形状の場合、チューブの寸法はどのくらいですか?(これにより、共振周波数が決まります。)など

これに加えて、非常に洗練された粒子シミュレーションを実行して空気をモデル化し、本質的に鼓膜に当たる音波である粒子運動の波を抽出する必要があります。鼓膜についても触れないでください。耳管内の波の共鳴も聴覚に影響を与えるためです。

全体として、これは、特にインタラクティブなフレームレートの希望がある場合、現在のゲームを実行するにはあまりにも多くのシミュレーションです。deft_codeが述べたように、ゲームが正確なシミュレーションであることはめったにありませんが、見事に偽造されたものです。これにアプローチする最良の方法は、おそらく、大きなサウンドサンプルセットから始めて、それらのサウンドの効果にどのように影響を与えることができるかを理解するまで、DSPを実行することです。DSPはリアルタイムゲームに十分高速であり、サウンドが大きなコンポーネントである場合は、フレーム時間の適切なチャンクをサウンド処理に費やすことは理にかなっています。

tl; dr:正確なシミュレーションは、今後何年にもわたって問題になる可能性があります。素晴らしいゲームはそれを偽ります。十分な大きさのサンプルセットと十分なDSP調整を行うと、おそらくそれを偽ることもできます。


2

私たちのアプローチを確認してください。

http://dsp.agh.edu.pl/en:research:rayav

開発されたライブラリは、ビームトレーシングを利用して、ユーザーにリアルな音声聴覚を提供します。すべてのオーディオエフェクトは、特定のゲームレベルの実際のジオメトリとその音響特性(音響材料、空気減衰)に基づいて計算されます。ゲームキャラクターや音源の動きに合わせて音が動的に変化します。音響経路作成アルゴリズムは、鏡面反射、拡散反射、エッジ回折などの現象をサポートし、オーディオ処理は、信号フィルタリング(空気ダンピング、反射/回折の影響のモデリングなど)、ドップラー効果のモデリング、空間効果をサポートします。最後に、各サウンドパスごとにHRTFを使用して指向性サウンドが実装されます。


0

これは古い質問だと思いますが、ここ数年で物事が進んでおり、あなたが説明していることは、ますます計算的に実現可能になっています。

合成ツールキットのようなツールは、次のような質問に答えるために使用されます。「私の物理エンジンは、フルートがそのような方法で振動していると私に言った。それはどんな音を生み出すのか?」

ただし、もう1つ重要な質問があります。「このノートは、リスナーの立場からどのように聞こえますか?」

OpenALのようなオーディオAPIがこれを処理することはよくある誤解です。実際、彼らがしていることはいわゆるポジショナルオーディオです。それらは音の伝播、つまり音波と環境の間の相互作用をモデル化していません。音の伝播には、次のような質問への回答が含まれます。

  • この部屋は、顕著なリバーブが存在するのに十分な大きさですか?
  • または、部屋の家具はほとんどの音を吸収しますか?
  • 屋外に立っているとき、遠くの丘からエコーが聞こえますか?近くの建物?
  • 音は長距離にわたって消散しますか?
  • 音源がリスナーから遮られていますか?
  • もしそうなら、音波がリスナーに到達するために使用できる代替ルートはありますか?おそらく、閉じたドアの下から、廊下の角の周りから、または通気口からですか?

フォノンは、これらの質問に答える音響物理エンジンです。(完全な開示:私はフォノンの開発に携わっています。)フォノンを使用すると、ユーザーは非常に小さなパラメーターのセット(吸収係数と散乱係数)を指定する必要があります。その後、フォノンは、リスナーの音の伝播効果を説得力のある方法で再現するのに十分なだけの計算を実行します。

Phononは現在、Unityのプラグインとして利用できます。Phononは、PCやモバイルの他に、Oculus RiftのようなVRプラットフォームでも実行できます。そのため、Phononも大きな違いがあります。

お役に立てれば!


0

あなたの質問を読むとき、私はそれを2つの方法で翻訳できます。

  1. 物理シミュレーションに基づいてサウンドを作成できるエンジンはありますか?リードに空気を吹き付けたり、ハンマーで弦を打ったりしますか?

ゲームでは?聞いたことはない。

  1. 既存のサウンドを再生するが、マイクからの距離などの物理情報に基づいてそれらを変更して「サラウンドサウンドエクスペリエンス」をシミュレートするエンジンはありますか?

はい!それらは「3Dサウンドエンジン」と呼ばれ、よく知られているのがOpenALです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.