見出し画像

ぷぴー(ミュートの意)

ぷぴー。
(ContactとModular Avatarのおべんきょついでにおもちゃつくったよ)



ぷぷぴー(もくじ)


ぷーぴー(”ミュートばってん”の使い方、TIPSを読みたい人は4. までの内容を読み飛ばして構いません)。





以降、ちゃんと日本語で書いてます。

はじめに

 以前から、くしゃみしそうになったらミュートするように心がけていたのです。だって恥ずかしいじゃないですか。
ただその後ミュート解除し忘れて”ミュートのまましゃべってました”状態になるときもあって、それはそれで気づいたときに恥ずかしくて。となるとミュートしてることを周りに報せたいなーとか考えて、



…………しばらく忘れてて、つい最近思い出したので勉強ついでに作ることにしました。

 せっかくなのでどうやって作ったのか書き散らそうと思います。


1. 何がしたいか

 以下に、今回何を実現したいのか整理します。ブレブレだとよくわからないところに着地しがちなので。

  1. ミュートしたことを周りに報せたい

    • 視覚的に報せる
      ミュートした際に何かを表示させる。ミュートしていることが一目で理解されるものが望ましい。

    • 聴覚的に報せる
      ミュートした際に音を鳴らす。音声が長いと周囲へ迷惑をかけるため、効果音が望ましい。

  2. ギミックの勉強がしたい

    • Contact

    • Modular Avatar

 1点目を実現する手段として、2点目に挙げたものが使えると良いですね。


2. 何が必要か

 1. に整理した事柄を実現するには何が必要でしょうか。悩むものでもない気がしますが、同様に整理してみます。

  • ミュート時に表示するオブジェクト

  • ミュート時に鳴らす効果音

  • ミュートを検知する仕組み

 ”何が”と考えるとこのくらいですね。


3. どうやって実現するか

3-1. ミュート時に表示するオブジェクト

 ミュートしたことを視覚的に表示するには、口をふさぐような何かを用意すると良さそうです。どうせなら自作したいし、 シンプルなオブジェクトとして口をふさぐようなばってんを作ることにします。

3-2. ミュート時に鳴らす効果音

 3-1. と同様に考えると…、ぶっちゃけてしまうとなんでもいい気がしますが、音の通りが良くて周囲に不快感を与えない効果音が望ましいです。効果音自作はちょっと大変だし、自分の声使うのは恥ずかしいどころの話ではないので、どこか素材サイトにある笛の音を使用することにします。以下は例です。


3-3. ミュートを検知する仕組み

 VRCの公式ドキュメントを読むと、ミュートしている状態はMuteSelfというBoolのパラメータで管理しているようです。これをそのまま使えばよいですね。


4. どうやったか

4-1. ばってん

 Blenderでちょちょっと。

ちょちょっと

ボーンはHeadと、Phys Boneで動かせるようにばってんのボーンを用意しています。これ以上は何も言うことがありませんね……。

4-2. 効果音

 3-2. のサイトから取ってきます。おわり。

4-3. Unityのお時間

 組み込むアバターとしてJINGO CHANNELのマヌカちゃんを使います。マヌカちゃんはいいぞ。

 Blenderで作ったばってんをインポートしてヒエラルキーに置きます。
Blenderで作ってるときからマヌカちゃんの大きさに合わせて作ったので位置調整などは行いません。

口ふさがれてもかわいいね

 ここで、効果音(Audio Clip)を再生できるように空のオブジェクトを作ってAudio Sourceのコンポーネントと、音量と聞こえる範囲の調整用にVRC Spatial Audio Sourceのコンポーネントを追加しておきます。Audio Sourceには、使用するAudio Clipを入れておきましょう(2敗)。

各パラメータの調整は先達に倣いましょう

 また、Headに自分でつかめるようにPhys Boneと、Contactのギミックを使いたいのでVRC Contact Receiverのコンポーネントを追加します。

ばってん

こっちはその名の通りレシーバーなので、Contactが有効になったときにTrueになるBoolのパラメータ名を入力しておきます。ばってんなのでBattenです。ばってん。

 次に、レシーバーを作ったので対となるコンポーネントを設定します。
こんな時のために作っておいたボーン(Batten.002)にVRC Contact Senderのコンポーネントを追加します。Collision Tagsに、レシーバーと同じくBattenを設定しておきましょう。

ばってんばってん

 また、センダーとレシーバー共に、接触判定用のコライダーの大きさを調整しましょう。下図の水色球がレシーバー側で、黄色球がセンダー側です。この、黄色球が水色球に接触したときにBattenTrueになります。

ばってんが口に張り付いてるとパラメータ(Batten)がTrueになります。

 ここで普通にHead以下に配置してBattenのパラメータを使ったアニメーション組んで……、とすれば良いのですが、Modular Avatar使ってみたかったのでもう少しがんばります。

 ばってんのルート部分に、AnimatorMA ParametersMA Merge Animatorをそれぞれ追加します。Animatorには別途作っておいたアニメーターを追加して、同じものをMA Merge Animatorにも設定しておきましょう。
 今回はオブジェクトの表示がメインとなりますので、レイヤー種別FXに、付属アニメーターを削除チェックを入れておきます。
 また、MA Parametersには組むアニメーションで使用するパラメータを入力しておきます(先にアニメーターを作っておいた場合は自動検出してくれると思います)。
プレハブ開発者向け設定を表示にチェックを入れると、そのパラメータがBool/Int/Floatのどれか設定できるようになるので、必ず一度チェックを入れましょう(1敗)。


今回設定したパラメーターについては後述。

 また、ArmartureMA Bone Proxyを追加します。ばってんはHeadに追従してほしいので、Bone referenceHeadにしておきます。

 あとはアニメーションを適宜設定していきましょう。先ほど設定したBattenAnimetorを開いて、レイヤーをとアニメーションを組んでいきます。
今回は以下の2つのレイヤーを作ります。

  • ミュートした時にばってんを表示/非表示を切り替えるレイヤー
    MuteSelfがTrueとなったときにばってんを表示したくない場合もあるので、パラメータ(MuteAnim)を使って切り替えられるようにします。

  • パラメータBattenがTrueになったときに効果音のON/OFFを切り替えるレイヤー
    ばってんは出したいけど効果音は鳴らしたくない場合もあるので、パラメータ(MuteSound)を使って切り替えられるようにします。

これを実現するために、MuteSelf以外に3つパラメータが必要と言うわけですね。

アニメーションの詳細は省略します。大したことしてないので。

 最後に、Expressions Menuの代わりとなるMA Menu Itemの追加と設定を行います。ばってんのルート以下でCreate EmptyしてそこにMA Menu ItemMA Menu Installerのコンポーネントを追加します。
 MA Menu Itemの表示名にはSub Menuとして表示する名称を入力し、メニューアイテムを追加を押下して設定したいメニューアイテムと切り替えたいパラメータをそれぞれ設定します。設定すると、メニューアイテムが子オブジェクトとしてできますので驚かないように。

BattenMenuでMuteAnimとMuteSoundを操作できるようにします。

 MA Menu Installerは特に触らなくてOKです。

 こうすることでBattenオブジェクトをアバターにドラッグ&ドロップするだけで使用できるようになるはずです。何かやらかしてなければ、たぶん。


 これで書き散らしはおしまいです。以下に、作成したおもちゃ「ミュートばってん」の説明を行います。




"ミュートばってん"の使い方

(1)導入方法

 Unitypackageをインポートし、Prefabをアバタールート直下においてアップロードしてください。

(2)使い方

 アップロードしたアバターでパイメニューからBattenMenuというサブメニューを選択し、MuteAnimMuteSoundを選択します。

 あとはミュートにすると…


(3)マヌカちゃん以外のアバターで使うには

 マヌカちゃん以外のアバターに使う場合は、PrefabのPositionで位置調整を、ボーン(Batten.002)のRotationで回転の調整を行ってください。下図はセレスティアちゃんに合わせた場合の数値です。

かわいいね
【参考】ばってんの位置
【参考】ばってんの回転


(4)ばってんを他の物に変えるには

 ばってんを他の物に変えるには、入れたいオブジェクトをBatten.end以下に配置すればよいです。おしゃぶりとか。
合わせて、アニメーションも修正しておきましょう。

Mute-OSYABURI……


(5)ぷぴーを他の音に変えるには

 ぷぴーを他の音に変えるには、BattenSoundに設定されたAudio Sourceを差し替えてあげればよいです。こちらはアニメーションの修正は不要です。
好きな音を設定できますが、例えばWindowsのエラー音とかはドッキリには良いですがTPOをわきまえて使いましょう。


(6)ついでに表情も変えるには

 効果音を鳴らす際に、ついでに表情も変えたい場合はBattenのパラメータを活用しましょう。アバター本体のFXにパラメータBattenを追加し、

  • BattenがTrueのとき専用の表情をLeftHandかRightHandのレイヤーに追加

  • BattenがFalseの時のみ、ハンドジェスチャーに合わせた遷移を行うように条件を変更

と、すれば良いです。


 ちなみに、FaceEmoを使用している場合は通常の表情アニメーションは上書きされてしまうため、ちょっと注意が必要です。

FaceEmoを使用している場合、まずはFaceEmoコンポーネントのContact設定に、レシーバーが設定されているHeadを設定します。

詳しくは公式ドキュメントを参照のこと

その上で、FXレイヤーにBattenの状態に応じてデフォルトの表情と、ミュート中の表情とを切り替えるアニメーションを追加してあげましょう。下図ご参考。



おわりに

 一通りいろいろ詰め込むと、このような感じで遊ぶことができます。

 

 以上、比較的新し目なギミックをいまさら勉強しつつ、おもちゃを作った話でした。

 今回作成したおもちゃは以下Boothにて無料公開してます。良かったら使ってみてくださいね。

 


  本noteにたどり着くようなVRCユーザは一から十まで読まなくても分かるとは思いますが、お問い合わせ、ご指摘、その他ご相談等々ありましたらTwitterアカウント(@uminekotatsu)へご連絡ください。ぷぴーってします。ぷぴー。

この記事が気に入ったらサポートをしてみませんか?