unity2017.03/MMD4Mecanim LipSync Plugin で3Dサウンドしようとしたら躓いた話

〇はじめに

UTAU × unity VRでLipSyncを使ったコンテンツを作ろうと思ったわけです.
コチラ(外部リンク)で配布されているプラグインを設定し
LipSync(audioClip).Play()

でLipSyncまではできたものの,
なぜかどう設定を弄っても3Dサウンドにならなくて躓いたので忘備録を作成するものです.

2Dサウンドとか3Dサウンドって何さ?って人はこの記事の想定読者の範囲外です.ググって

〇なぜ動かない?

昔のunity(4.X以前? 詳細未調査)はaudioClip毎に3Dサウンドの設定ができた模様.
今のunity(5.X以降?)はaudioClip自体の3Dサウンド設定が廃止になり,audioSourceコンポーネントで3Dサウンドの設定をする形となっています.
ちなみにaudioSourceでのデフォルトの設定は2Dサウンドです.

audioClipをPlay()するときには,audioClip自体の3D設定を参照する仕様(推定の域を出ず)らしく,Play()する際にaudioSourceコンポーネントを生成している模様ですが,spatialBlend(2Dか3Dかの設定)については特に指定がない模様.

〇解決策

つまり,audioClip再生される前にspitalBlendに1を代入すればいいわけです.
LipSync\Core\LipSyncCore.csに以下のように赤文字を追記します.
335:audio_.clip = playClip_;
336:audio_.spatialBlend = 1;
337:audio_.Play();
とりあえずこれで,3Dサウンドになりました.

ただ,汎用性を持たせた改造をするなら,public float spatialBlend;あたりを宣言して,
audio_.spaitalBlend = spaitalBlend;にするとGUIからパラメータを弄れるかと.