UE4 Sound CueのConcatenatorノードについて
Sound Cueのノードリファレンス少なくて、私悲しい。
今日もSound Cueのエディタ内で使用できる
ノードの解説を行ってきます。
今回はConcatenatorノードについてです。
Concatenatorノードは繋いだWaveファイルの
連続再生に使用するノードです。
Sound Cueの中で使用頻度はかなり低いほうだと思います。
実況用のボイスの再生などに使えると思います。
Randomノードなどとも相性が良さそうですね。
検証にはUE4 4.19.1を使用します。
このノードはSound Cueエディタ右側の一覧からD&Dするか、
右クリックから出すことができます。
サウンドのプレイリストをSound Cue上で作成して、
一つのSound Cueで連続再生を行う際などに使用します。
注意としては、サウンドの連続再生は自動で行いますが、
次に再生するサウンドへのブレンドなどはしません。
なのでサウンドとサウンドの繋ぎ目がおかしくなることもあります。
そういう場合は上手いことクロスフェード処理などを挟んでください。
MixerやRandomと同じように、
右クリックからインプットを追加、
もしくはノード右下のインプットを追加ボタンを押すことで、
インプットピンを追加することができます。
インプットピンを削除するには、
ピンを右クリックからインプットを削除を選択すれば、
ピンを削除できます。
Concatenatorノードは
・Input Volume
という配列のパラメータを持っています。
再生する際の音量を制御することができます。
ただしInput Volumeの値が0の場合、
そこに繋がっているサウンドは無いものとして扱われ、
処理が飛ばされます。(つまり再生されません)
実際に繋いだ例
シンプルにこんな感じでどうでしょう?
上のサウンドが再生終了したら、下のサウンドが再生されるといった
処理の流れになります。
UE4 Sound CueのWave Playerノードについて
今回もSound Cueエディタ内で使用できる
ノードの解説を行っていきます。
タイトル通りWave Playerノードについてです。
Wave Playerノードは再生したいWaveファイルを設定することで、
Sound Cueがどの音を再生するのかを指定できるノードです。
Sound Cueを使用するにあたって、
最も使用頻度の高いノードだと思います。
検証にはUE4 4.19.1を使用します。
Sound Cueでこのノードを使用する場合は、
右側のWave PlayerからD&Dするか
コンテンツブラウザからWaveファイルをD&Dすることで、
出すことができます。
コンテンツブラウザからノードを出した場合は、
Sound WaveパラメータにD&Dした、
Waveファイルの情報が自動的に入るようになっています。
Wave Playerノードのパラメータは、
・Sound Wave
・Looping
の2種類があります。
Sound Waveパラメータは、
再生したいWaveファイルの情報を格納します。
Loopingパラメータは、
再生するWaveファイルが、ループ再生するかどうかの
設定です。チェックが入っている場合にループします。
デフォルトはオフです。
実際にノードを繋いだ例
最もシンプルな例ですが、
Sound Cueが持っている、Sound Classや
各種エフェクトの設定が行えるなど、
Waveファイルをそのまま再生するより
多彩な設定が可能となります。
UE4 Sound CueのRandomの使い方
UE4のSound Cueには
23種類のノードが存在します(2回目)
今回はRandomノードについて解説します。
検証にはUE4 4.19.1を使用します。
Randomノードとは
Randomノードは、繋がっているSound Waveファイルノードを
ランダムに取得して再生するものです。
複数の音からランダムに再生したい場合に使用するノードです。
Mixerノードなどと同じく、
右クリックからインプットピンの追加が可能です。
Inputピンを追加した場合はこのようになります。
また追加できるピンに上限はありません。
ノード右側のインプットを追加の+マークをクリックしても、
インプットピンを追加することができます。
インプットピンを削除する場合は、
ピンを右クリックからインプットの削除で削除可能です。
Randomノードのパラメータには
・Weights
・Preselect at Level Load
・Redomize Without Replacement
の3つがあります。
Weightはそのサウンドが選ばれる確率を指定します。
各入力サウンドのためのウェイトリストです。
Preselect at Level Loadはレベルのロード時に選択され、
プレイセッション中に常に使用されるSound Waveノードです。
0以上の場合、各レベルが入力数をロードした直後に
ランダムに選択され、他は取り除かれます。
ランダム化した大規模Cueのメモリ使用量を削減できます。
Redomize Without Replacementは、代替あり
または代替なしでランダム化するかどうかの設定です。
tureの場合、入力サウンドが全部再生されるまで入力Sound Waveノードが、
再度再生されることはありません。
すべてのサウンドが確実に再生されるようになります。
実際にノードを繋いだ場合
この場合どちらかのSound Waveが再生されます。
UE4 Sound CueのMixerの使い方
UE4のSound Cueには
23種類のノードが存在します。
今回はその中のMixerノードについて解説します。
検証にはUE4 4.19.1を使用します。
Mixerノードとは
Mixerノードは複数のSound Waveを同時に発生させることができるノードです。
イメージ的には音を混ぜて再生するという感じでしょうか。
ひとつのSound Cueから複数のSound Waveを再生したい場合に、
非常に有効なノードになります。
Mixerノードを右クリックからインプットピンを追加すると、
2つ以上のSound Waveを同時に発生することができます。
Inputピンを追加した場合はこのようになります。
また追加できるピンに上限はありません。
追加したピンを削除する場合は、
ピンを右クリックからインプットの削除で削除可能です。
Mixerノードを選択した際に表示される
Input Volumeパラメータはその名前の通り、
繋いだノードの音量を変更することができるパラメータです。
一番上に繋いだ音は小さい大きさで再生して、
真ん中に繋いだ音はそこそこの大きさで再生するといったことが可能です。
実際にノードを繋いだ場合
実際にノードを繋いだ場合このような形になります。
最もシンプルな形ですが、複数の音を再生し
それぞれの音量を調節するだけであれば、
これだけで実現可能です。
UE4 ポストプロセスのパラメータを動的に動作する
ポストプロセスはゲーム内の見た目を変更するのに
非常に有効な手段です。
今回はそのポストプロセスのパラメータを
ゲーム内で変更したいと思います。
バージョンは4.19を使用します。
準備
今回はコミュニティサンプルの
SunTempleプロジェクトを使用しています。
ポストプロセスマテリアルを作成する
コンテンツブラウザを右クリックから
マテリアルを選択してください。
適当な名前で保存します。
マテリアルパラメータコレクションを作成する
コンテンツブラウザを右クリックから
マテリアル・テクスチャ→マテリアルパラメータコレクションを選択します。
こちらも適当な名前で保存します。
マテリアルパラメータコレクションを編集する
一般的には汎用のパラメータなどを追加しますが、
今回は何も考えずに使用するパラメータを全て追加しました。
マテリアルを編集する
Sphere Maskを使用したポストプロセスマテリアルを作成します。
ポストプロセスを適応する
Sun TempleにはPostProcessVolumeがいくつか
配置されているので、Global PostProcessに先程作成した
ポストプロセスマテリアルを適応しましょう。
ブループリントを追加する
レベルブループリントを開きます。
Event BeginPlayからこのように処理を追加します。
タイムラインはこんな感じです。
Radiusのパラメータを除々に広げていくような処理です。
確認する
Dynamic Material Instanceの方がいいかも...
UE4 ブループリントでの音の鳴らし方について
UE4では様々な音の鳴らし方があります。
・レベル上に直接配置する(Ambient Sound Actorの使用など)
・ブループリントによる再生ノードの使用
・Audio Componentからの再生
・C++による再生関数の使用
など比較的多くの再生手段が用意されています。
その中でもUE4を触り始めたばかりの方を対象に、
使用がそこまで難しくないブループリントノードを使用して
音を再生する方法をいくつか紹介します。
準備
今回の検証にはUE4 4.18.3を使用しています。
Third Paron Templateからプロジェクトを作成します。
--追記
Starter Contentsを導入しているので、プロジェクト作成時に入れておく。
もしくは「機能またはコンテンツパックを追加」から
Starter Contentsを入れてください。
レベルブループリントを開きます。
右クリックから「Event BeginPlay」ノードを出します。
ゲーム開始時に走るイベントになります。
音を鳴らす
ここからが今回の本題になります。
単純に音を鳴らすためのノードは4つ用意されています。
ひとつずつ見ていきましょう。
Play Sound 2D
まずは「Play Sound 2D」です。
もっともシンプルで扱いやすいノードです。
何を再生するのかを指定するだけで音を鳴らすことができます。
ノードを展開するとこんな感じになります。
・Volume MultiPlier(音の大きさ)
・Pitch MultiPlier(ピッチの上下)
・Start Time(音をどこから再生するか(秒単位))
・使用するConcurrencyアセット
・所有するActor
問題がなければデフォルトのままでもいいと思います。
実際に鳴らしてみましょう。
Starter Contentsの「Fire01_Cue」を再生します。
初めの頃はこのノードを使うのをおすすめします。
Play Sound at Location
次は「Play Sound at Location」です。
3Dゲームや立体的な再生を行う際によく使用します。
Play Sound 2Dと同じく再生するものの指定を行う必要があります。
Locationは再生する座標を指定するものです。
ノードを展開するとこんな感じになります。
Rotation(音の向き)
Attenuation Setting(使用するAttnuationアセットの指定)
今回はAttenuationの設定を行っていないので
減衰などは起きません。
このままだとPlay Sound 2Dと同じになります。
Spawn Sound 2D
Play Soundノードより少し特殊ですが、
「Spawn Sound 2D」というノードがあります。
これはPlay Sound 2Dノードとほぼ同じ機能です。
唯一の違いはReturn Valueがある点です。
Return Valueからは再生したサウンドを含んだ、
Audio Componentが出力されています。
展開するとこんな感じ。
Spawn Sound at Location
Spawn Sound at Locationと同じ結果を出力し、
Spawn Sound 2Dと同じようにReturn Valueがあります。
展開するとこんな感じ。
大体Play Sound at Locationと同じような感覚で扱えると思います。
UE4 Media SoundがComponentになってあたふたした話
今回は2018年3月17日に行われる
「第5回UE4勉強会 in 大阪」で登壇する際に
多分話す時間無いだろうなぁと思う(ずっと話してそうな)
Media Soundについて先に書いていきます。
今回は知見を共有するための記事なので、
使い方を解説しているものではありません。
(公式、別の方もしくは未来の私に期待しましょう)
また、あたふたはしましたが今回の変更で個人的に
Media Frameworkは使いやすくなったんじゃないかなと思います。
本題に入ります。
Media Soundとは
Media SoundはMedia Frameworkの中にある、
サウンドを再生するためのものです。
4.17(Media Framework2.0)のときまでは
Media Player生成時に同時に生成できたのですが、
4.18(Media Framework3.0)からそうではなくなりました。
どこが変わったのか
4.17
Media TextureとMedia Soundを生成するためのチェックボックスがあります。
4.18
なくなりました。
コンテンツブラウザのMediaタブにもサウンドに
関係のなさそうなものばかりでした。
一体どこに行ってしまったんでしょうか?
コンポーネントになってました
ブループリントのコンポーネントの中にMedia Soundというものがありました。
Media PlayerやMedia Textureは今まで通りの使い方が可能でしたが、
Media Sound Componentは少し扱いや、パラメータなどが変わったようです。
4.17
Media Playerと同時に生成されたMedia Soundをレベルに設置すれば、
関連付けたMedia Playerからの再生に合わせて音を出力します。
再生部分がAudio Componentなので、
ブループリントからの制御や、ボリュームの変更などはスムーズでした。
4.18
こちらもMedia Sound Componentを持つActorをレベル上に配置すれば、
4.17と同様に音を再生します。
しかしコンポーネントになったMedia Soundは
パラメータが大きく変わっていました。
まずAttenuationやConcurrencyの設定は今まで通りです。
Attenuationのパラメータが少し豊富になった?
ボリュームの変更がなくなりました。
--追記 探してみましたがなさそうです。
MediaSoundComponent.h、cppを見てみましたが、
Volumeに関係ありそうなものは見つかりませんでした。
恐らく親クラスの関数にあるとは思うのですが、今回はここまで。
幸いSound Classが設定できるので、
Sound Classから音量を変更できますが
ちょっと試したいというときは少し不便に感じます。
Effect ChainやSubmixも使えるようです。
また再生チャンネルを1(mono)、2(stereo)、7.1(Surround)に
変更できるようになっていました。
--追記 なってませんでした。
ソースコードを見たところ、チャンネル1とチャンネル2は
サポートされているようですが、チャンネル7を選択した場合
自動的にチャンネル2になるようです。
C++覗いてみた
C++のMediaSoundComponent.hを見てみると
USynthComponentの継承クラスのようです。
なのでブループリント上で、USynthComponentの関数である
Startや、Stop、IsPlayingなどが使えると思います。
(動作は未検証)
またUSynthComponentを継承している別のコンポーネントに
Modular Synth Componentがあります。
もしかすると、これらのコンポーネントと似たような機能が存在するかもしれません。
(まだサラッとしか読んでない)
エディタ上に公開されているMedia Sound Componentオリジナルの変数は
・チャンネル数を指定する「Channels」
・Media Playerを関連付けるための「MediaPlayer」
くらいじゃないかなと思います。
関数などはC++のみで扱えるものはありましたが、
ブループリントから扱えるものはありませんでした。
Media Sound Component単体に思ったより機能ないなって印象を受けました。
(まぁMedia Frameworkの主役はSoundじゃないし...)