View on GitHub

NeosVRJP-Techbook

NeosVRJP-Techbook (NeosVRの応用編・技術ノート)

音の鳴る箱

概要

2020年7月1日22時よりAetorizさんとオレンジさんによる『LogiX講習会』初級編がありました。そこではグラブすると「ぽん」って音の鳴る箱を教材にしました。音の鳴らし仕方は2つの方法を習いました。ここではその作品の解説をしましょう。

解説1

全体1

ここでは最初の方法について解説します。

pic

LogiXはPlayノードを使う単純なものです。このPulseのところに、後半で説明するBoxのGrabableを使いOn Grabbalbe Grabbedの出力をつなげば、箱を掴んだ(グラブした)ときに、インパルスが流れて音が出ます。

pic

この作品の大きな特徴は、音を出すのに、3つのコンポーネントを使っているということです。具体的には、”AudioClipPlayer”, “AudioOutput”, “StaticAudioClipProvider”です。

audioスロットの準備

DevToolTipを使います。基本的なことは日本語Wikiをご覧ください。

DevToolTipを装備して、リングメニューから”Create new”を選び、さらに”3D Model”から”Box”を選んで、箱をスポーンさせます。

箱に向かってレーザーを当てて、セカンダリーアクションを押して選択します。

リングメニューから”Open Inspector”でインスペクターを表示させます。

Boxというスロットの下に子スロットをインスペクターパネルの上の「☆」を押すことにより作ります。

プロパティを変更して”audio”というスロット名にします。

3つのコンポーネント追加と設定

pic

audioスロットを選択して緑色にします。

インスペクターの右下にコンポーネントを追加するボタンがあります。これをクリックします。そして以下の3つのコンポーネントを追加します。

StaticAudioClipProviderはAssetsの下にあります。

AudioClipPlayerはAudioの下にあります。

AudioOutputはAudioの下にあります。

まず、StaticAudioClipProviderのURL:にオーディオがあるURLを入れます。この講習会では、URLをグラブしてドロップして入力しました。

次に、AudioClipPlayerのClip:には上のStaticAudioProviderを設定します。StaticAudioProviderにレーザーを当ててグラブし、そのままClip:のところにドロップします。

最後に、AudioOutputのSource:をAudioClipPlayerに設定します。同じように、AudioClipPlayerにレーザーを当ててグラブし、そのままSouce:にドロップします。

これで、コンポーネントの設定は完了です。

Logixの配線

pic

LogiXTipを使います。基本的なことは日本語Wikiをご覧ください。

LogiXTipを装備して、リングメニューからNode Selecterを選び、表示させます。

PlayはPlaybackの下にあります。このノードの入力をLogiXTipの先端を当ててセカンダリーアクションを押しながら引き出して離すことにより、Pulseを取り出します。

さきほどのaudioスロットのインタフェースノードを表示させます。インスペクターパネルで左のスロット一覧からaudioの名前にレーザーをあてて、グラブしてから、空中でセカンダリーアクションをします。そうするとインタフェースノードが表示されます。

このインタフェースノードのPlayBackプロパティとPlayノードの出力をつなぎます。

これでPulseをレーザーでクリックすれば、音が鳴ります。

後始末

後始末として、最後にLogiXをパックしておきます。Boxスロットの下に「☆」を使って子スロットを作り、それをlogixという名前にしておきます。

できたlogixスロットにレーザー当ててドラッグしてから、そのままLogiXTipのリングメニューからSet Packing Rootを選びます。これでこのLogiXTipにlogixが納められるようになりました。Playノードでいいので、レーザーを当てて、セカンダリーアクションの長押しをします。LogiXTipを眺めていると青い輪が一周すれば離してOKです。これでパックされます。

インタフェースノードは消えないので、掴んで、リングメニューからDestoryを選び消しましょう。

解説2

全体2

続いてもう一つの方法について解説します。

pic

今度のaudioスロットには1つのコンポーネント”StaticAudioClipProvider”しかありません。

pic

ちょっと複雑なのは、Audio Clip Inputノードをインスペクターパネルで観ていることです。

pic

重要なノードにPlay One Shotがあります。

audioスロットの準備

一つ前の作品と同じようにしてBoxを3D Modelから作り、audioスロットを作っておきます。

コンポーネントの設定

この方法では一つのコンポーネントのみ必要です。それはStaticAudioClipProviderであり、上の方法と同じようにURL:を設定しておきます。

Audio Clip Inputの設定

LogiXTipを装備して、Audio Clip InputノードをNode Selectorから選んで、スポーンさせましょう。

そして、DevToolTipを装備して、レーザーを当ててセカンダリーアクションを押して、このノードを選択します。そして、リングメニューからOpen Inspectorを選んで、インスペクターパネルを表示させます。最初はAudio Clip Inputのスロットが表示されないので、曲がった上矢印を何回かクリックして図のように表示させます。

pic

そして、このClip:のプロパティに、さきほどのStaticAudioClipProviderを設定します。具体的にはStaticAudioClipProviderにレーザーを当てて、グラブしてから、このClip:にドロップすると設定できます。

Logixの配線

pic

Play One Shotノードをスポーンさせます。そしてPlay One ShotノードとAudio Clip Inputを接続します。

また、On Grabbalbe Grabbedを使って、この箱がグラブされたときにインパルスが発生するようにします。入力は箱のGrabbableプロパティです。Boxスロットを表示させると右側にこのGrabbableプロパティを見つけることができます。LogiXTipを装備して、このGrabbableプロパティの名前をグラブしたまま、空中でセカンダリーアクションをすると、インタフェースノードをスポーンさせることができます。この一番上の名前とOn Grabbalbe Grabbedノードの入力をつなぎます。またこのノードの出力をPlay One Shotノードの一番上の入力と接続します。On Grabbalbe Grabbedノードでは、特性のオブジェクトがグラブされたときに、インパルスが発生します。

実はこのままだと、音は箱からは聞こえません。そこで、BoxスロットとPlay One Shotノードを接続します。Boxスロットをインスペクターパネルで表示させて、同じようにLogiXTipを使って、インタフェースノードを表示させます。一番上のSlotとPlay One Shotの薄い緑の入力を接続します。これで、音は箱から聞こえるようになります。

後始末

1番目の方法と同じようにlogixというLogiXを格納する子スロットを作り、ここにLogiXを格納しましょう。

おわりに

ここでは箱をグラブすると音が鳴るという作品例を紹介しました。音を出すのに、コンポーネントやノードを駆使する必要があります。ここではその2つの方法を紹介しました。

関連するノード

Play, Play One Shot, Audio Clip Input, On Grabbalbe Grabbed, Puls

関連するコンポーネント

AudioClipPlayer, AudioOutput, StaticAudioClipProvider

追記

pic

Play One Shotノードを使用するとここの図にあるように、音を鳴らすたびにスロットに”OneShotAudio”が現れて、音が鳴り終わると消されます。したがって一時的に作っては消すので、資源的に有利だそうです。Play One Shotノードでは音量とかも細かく指定できるので、便利です。

音ファイルのURLはneosdbから始まります。これはNeosVRのクラウドサーバーにあるデータのアドレスとなっています。自分の作った音ファイルを載せたいときには、インベントリに保存します。すぐあとではlocalですが、しばらくしてsyncされるとneosdbとなります。