0.現状
Java3Dへの対応はほぼ完了。
あとはConeSound(円錐状に音が広がるタイプの音源)への対応くらい。
また、FPSっぽくカメラを動かすBehaviorも作った。
あとは何らかの方法で顔の向きを取得してカメラの動きに反映させれば、音響空間をリスナーの動きに追従させることができる…はず。
1.顔の向きを取得したい
頭部伝達関数と音像定位をめぐる諸問題(外部PDF)によれば
『古くから知られているように、受聴者の頭部運動に追従させた動的バイノーラル信号を用いると、再生される立体音像空間の様相は大きく変わる。すなわち、(…中略…)再生立体音像空間の歪は激減する。』らしいので、これを試したいと思っています。
実現するためには受聴者の頭部運動なるものを入力する仕組みを作る必要があります。
できるかぎり ダウンロードすればとりあえず試せる状態 を維持したいので、特別な機器は不要にしたいと考えていますが、マウスとキーボードで頭の動きを入力するのは恐らく不可能ですので、
- Webカメラ(ARToolkit, NyARToolkit)
- Webカメラ(画像認識)
- Wiiリモコン
ARToolkitとWiiリモコンはどちらもディスプレイ(マーカー類)を頂点にした円錐状の運動を得意としています。
これは何かを中心にして常にそっちを向きながら動く場合に有効なのですが、立体音響では逆にどれくらいそっぽ向いているかのほうが大事なので、画像認識が有利かな、と思います。
しかし、画像認識は経験がまったくないのと、使えそうなライブラリも見つからないという状態ですので、後回しにしておきます。
Wiiリモコンは以前JavaScriptで遊んだ経験から、わりと正確に傾きを取れることがわかっているのですが、今現在手元に現物がないのでこれも後回し。
とりあえず、ARToolkit(NyARToolkit)はJava版がある上にJava3Dもサポートしているので、まずはARToolkitから試していこうかと考えています。
2. サーバーとクライアント作りたい
レンダリング、画像処理、フーリエ変換を使った畳み込み、という ただでさえ重たい3つの処理を同時に素早くやらないといけません。
もはやPC1台で処理する量ではないのかもしれないと思えてきましたので、立体音響処理用のサーバーを作って並列っぽい事をしてみようかと思っています。
できるかどうかはわかりませんが、やってみたい…作るとしたら、JMFでRTPを使った送受信ができるようなので、それを使おうかと考えています。
X. 方針
今後の方針として、ゴマカシっぽくてもいいから早く計算する方向と、とにかくリアルに作る方向の2つの方向に分岐させていくつもりです。
一人でできる量じゃない気もしますが。
0 件のコメント:
コメントを投稿