![見出し画像](https://assets.st-note.com/production/uploads/images/96975774/rectangle_large_type_2_61b6cfca13e0ca712556bdd8e5232605.png?width=1200)
一般人でもわかる「AudioLinkGimmick(U#)」 ユーザマニュアル
諸注意
※この説明書は現状、AudioLinkGimmick(U#)の機能のうち、AudioLinkBandImagesのパーティクルシステムの制御についてのみ記述されています。また、他の機能については整備が整っていない状態で記述しております。
ほとんどの場合はこの機能以外利用しないと思われますが、それらの機能にかんしては整備されるまでお待ちください。
また、VCCの導入手順についての説明やワールドのアップロードに関する基礎的な説明は行いません。
はじめに
こんにちは、一般人です。
このページは、私が開発しているAudioLinkGimmick(U#)のユーザマニュアルです。どういったものなのか、どのような機能があるのか、どのように実装するのかの説明をしていこうと思います。
AudioLinkGimmick(U#)とは?
AudioLinkGimmick(U#)について
これのことです。
AudioLinkGimmick(U#)は、VRChatのワールド専用の音楽に併せてパーティクルやライトを制御するワールド用のギミックです。
VRChatのワールドにAudioLinkとこれを設置し、然るべき設定をすることで実装が可能になります。また、ver1.2.0からは、VRChat上でもリアルタイムに制御できるようなUIを実装しました。
百聞は一見に如かずということで、まずはこちらをご覧ください。
動画にあるように、音楽にあわせてシェーダ以外の部分でもパーティクルやライトを操作できることがわかるかと思います。
というわけで、今回はAudioLinkGimmick(U#)の導入手順マニュアルとなります。
そもそもAudioLinkってなんなの?
音楽の周波数ごとの波長のデータを解析して、シェーダで動的に出力できるようにしたワールド用のアセットです。
AudioLinkに対応したワールドにおいて、アバター・ワールドともにAudioLink対応のシェーダを利用したときにその挙動が反映されます。
VRChatでの代表的なワールドとしては、m1chieさんのMusic Stella Lakeなどがあります。
https://www.vrcw.net/world/detail/wrld_c330cf97-4ffb-40a9-b872-79a36905134d
導入までの手順
VCCにてプロジェクトを作成
まずは、VRChatでAudioLinkに対応したプロジェクトを作成します(VCC対応した既存のプロジェクトで行う場合は不要です)。
![](https://assets.st-note.com/img/1675232060089-vtip99dQ4w.png?width=1200)
UdonSharp→AudioLinkの順で追加します。
なお、VCCではUdonSharp, AudioLinkともに格納先がAssetsフォルダからPackagesフォルダに変更されています。
※注意:
既存のワールドにおいて、UdonSharpやAudioLinkが動かなくなった原因の1つになっているみたいです。
AudioLinkにおいても、対応シェーダの一部ファイルの場所が変わった事により、VCC以前と以降対応のワールドでは互換性がとれなくなっています(つまりどっちかのワールドではシェーダが対応しません)。
![](https://assets.st-note.com/img/1675232169108-Z33nJpyOIb.png?width=1200)
FakeBloomを導入する
ほたての貝殻さんのFakeBloomShaderをダウンロード・解凍し、Importします。
これはQuestに対応したFakeLightのために利用しています。
ダウンロード先は以下になります。
AudioLinkを導入する
ProjectタブのPackages/AudioLink/Runtime/にAudioLink.prefabがあるので、Hierarchyタブのところに配置します。
また、AudioSouceを作成・設置して音源を設定した後、AudioLinkのInspectorのAudioSourceにドラッグすると、そのオーディオソースがAudioLinkに対応するようになります。
![](https://assets.st-note.com/img/1675232519002-qpQHOFdAhc.png?width=1200)
Packages/AudioLink/Runtime/にあるAudioLinkController.prefabも同様に、Hierarchyに追加してしまいましょう。必須ではないですが、バンドパスフィルタの制御ができる公式コントローラです。
![](https://assets.st-note.com/img/1675233457978-m0inoRjUYl.png?width=1200)
AudioLinkGimmick(U#)の追加
最新のAudioLinkGimmick(U#)をダウンロード・解凍し、Importします。
元々利用している場合の注意ですが、ver1.1.0→ver1.2.0における破壊的変更はありませんが、それ以前のバージョンでは破壊的変更が発生しますので注意してください。
AudioLinkBandImagesの追加と設定
ProjectタブのAssets/__AudioLinkGimmick/prefab/AudioLinkBandImageに、AudioLinkBandImages.prefabがあるので、Hierarchyに配置します。
その後、このAudioLinkBandImagesを右クリックし、Unpack Prefab Completeryを押下します。
これにて導入は完了です。
「ね?簡単でしょ?」と言いたくもなりますが、実際に利用する際はここから色々カスタムしていく事になります。
![](https://assets.st-note.com/img/1675233691338-W2smjqiMb5.png?width=1200)
AudioLinkGimmickControllerの初期設定
AudioLinkGimmickのコントローラの初期設定は、AudioLinkGimmickController/SettingのInspectorで設定できます。
このうち、UI !!Untouchable!!と書かれた項目より下は触らないでください。
後述の項目(1)~(3)のうち、(2)(3)はAudioLinkGimmickControllerで後から操作する事ができ、その変更内容は他のプレイヤーにも同期されます。
ただし、(1)は初期設定以外で変更する事ができません。
![](https://assets.st-note.com/img/1675234604217-4jS0jV3L1x.png?width=1200)
![](https://assets.st-note.com/img/1675234488669-GTTwPX1QsE.png?width=1200)
色々あるように見えますが、主な設定内容は3つです。
(1)Linked Particle
![](https://assets.st-note.com/img/1675235625211-leqEv8R22v.png)
Linked Particleでは、バンドパスフィルタごとに制御するパーティクルを指定します。バンドごとに複数のパーティクルをまとめて設定できます。
ただし、制御するパーティクルシステム側に、Add Compornent→Udonvihaviourでコンポーネントを追加し、AudioLinkImageToParticleを追加し、追加したAudioLinkImageToParticleのParticle Systemに自身を追加してください。
※AudioLinkBandImages.prefabの中にあるパーティクルや、それをコピーしてカスタムしたパーティクルでは設定済のため、この操作は不要です。
![](https://assets.st-note.com/img/1675235128355-evRpI9lpql.png?width=1200)
(2)Boundary
![](https://assets.st-note.com/img/1675235743542-S4DOGsUolL.png)
BoundaryはAudioLinkで適用するバンドごとの境界値を指定します。
0.0~1.0まで設定可能で、値を大きくするたびに音楽に有効化するための音が大きくなります。
![](https://assets.st-note.com/img/1675236287130-TRqbodnJ9k.png?width=1200)
音の大きさが境界値以上になったら制御が発生する。
(3)バンドごとの各種設定
4つのBandそれぞれに、以下のパラメータが割り振られています。
![](https://assets.st-note.com/img/1675236084272-LHsGIZmHbD.png)
IsEmission
バンドの音量がBoundaryを超えた時、パーティクルシステムのEmissionという項目に、Enabled(チェックをつける)にします。それ以外の時はDisabled(チェックをつけない)にします。
MinTime、MaxTime、InternalTime
ミリ秒を指定します。
MinTimeが0.00よりも上のときに適用されます。
これらのパラメータは、パーティクルシステムのEmissionのEnabled / Disabledにロックを掛けます。
パーティクルシステムは、まずBoundaryよりも上の音量になるとEnabledになり、MinTimeまではDisabledになることなくEnabledを維持し続けます。
その後、StartTimeからMinTime以降でBoundaryよりも下の音量になるか、またはStartTimeからMaxTime経過した場合、EmissionはDisabledになります。
最後に、Interval Timeが経過するまで、EmissionはDisabledを維持し、Interval Timeを超えてから再びBoundaryよりも上の音量になった時にEmissionをEnabledにします。
![](https://assets.st-note.com/img/1675250042292-8xdCnlamZ4.png?width=1200)
IsSize
チェックをONにしているときに、パーティクルのサイズをバンドの音量と関連付けさせます。指定したバンドの音量が大きくなるほどサイズも大きくなります。
IsTransparent
チェックをONにしているときに、パーティクルの透明度をバンドの音量と関連付けさせます。指定したバンドの音量が大きくなるほど不透明になります。
パーティクルのマテリアルに干渉するため、チェックをONにしていてもマテリアルの透過設定が有効でない場合は反映されません。
MinSize, MaxSize
小数の値を適用します。
IsSizeをONにした時のパーティクルの最小、または最大サイズです。
この項目はパーティクルシステムのSizeOverLifetimeを利用するため、この項目にチェックをつける場合は、そのパーティクルのSizeOverLifetime機能を利用しないでください。
MaxAttenuation
小数の値を適用します。
パーティクルのサイズの最大減衰量を指定します。
例えば、MaxAttenuation=0.05のとき、サイズが1.0だったパーティクルの次のサイズが0.90になろうとしているとき、MaxAttenuationが0.00以外の場合は最大0.05までしかサイズが下がらず、サイズを0.95にします。
この項目はフレームごとに適用されます。
また、MinTimeが0.00よりも上のときは、EmisisonがDisabledになるタイミングと同じタイミングまでサイズの上昇・減少を、音量の同期ではなくフレームごとにMaxAttenuationの値分減らす処理に変更します。
終わりに
AudioLinkGimmick(U#)の説明でした。TopazChatを組み込んでVJを行ったり、ライブイベントなどに利用していただければ幸いです。