UE4 4.20 ゲーム内の音声を録音する
大体検証が終わったので、少しずつ記事にしたいと思います。
Unreal Engine 4.20 Preview
今回はUE4のレコード機能について書いていきます。
割と注目を集めている機能のようです。
追記
先に取り上げている方がいました。
検証にはUE4 4.20 Preview3を使用します。
注意
まず注意としてレコード機能を使用するには
Unreal Audioの機能を有効にする必要があります。
プロジェクトを作成後、
-audiomixerの引数を渡してエディタを起動するか、
このような.batファイルを作成し、エディタを開いてください。
必要なプラグインを有効にする
次に編集→Pluginsから
Sound Utilitiesプラグインを有効にして、エディタを再起動します。
必要なノードの解説
Start Recording Output
録音を開始するためのノードです。
パラメータ
・Expected Duration (float)
録音する秒数を指定するパラメータです。
0.0の場合は後述するFinish Recording Outputノードを使用する、
もしくはゲームを終了するまで録音を続けます。
・Submix to Record
指定したSound Submixの音声を録音します。
指定しない場合はエンジン出力の音が録音されるようです。
Sound Submixについてはこちら
[UE4] Sound Submix を使って音にエフェクトをかける|株式会社ヒストリア
Finish Recording Output
録音を終了するためのノードです。
パラメータ
・Export Type
録音したデータの保存形式を決定します。
Sound WaveファイルとWavファイルから選択できます。
・Name
保存するファイル名を決定するパラメータです。
「入力した文字列」.wavのように保存されます。
・Path
保存するパスを相対パスで指定するパラメータです。
録音したファイルがSound Waveファイルの場合は、
指定を行うとクラッシュすることがあるので指定しないことをおすすめします。
指定をしなかった場合は、コンテンツブラウザ直下に保存されます。
録音したファイルがWavファイルであった場合、
プロジェクトフォルダ/Saved/BouncedWavFiles/からの相対パスになります。
指定しなかった場合はBouncedWavFilesに保存されます。
・Submix to Record
機能的にはStart Recording Outputと同じようです。
使い分け方がよくわからないので、詳しい人教えてください。
・Existing Sound Wave to Overwrite
指定したSound Waveを上書きするパラメータ...だと思うんですが、
何も起こりません。
追記
ソースを確認すると外側だけの実装のようです。今後扱えるようになると思います。
実際に録音してみる
レベルブループリントにこのように記述しました。
Rキーを押して録音開始。
Rキーを離すか10秒経過すると録音終了になります。
ゲームを実行し、Rキーを押すと押すと録音できるかと思います。
例
このように処理を組んだ場合は
コンテンツブラウザ直下に書き出されます。
このように処理を組んだ場合は、
このように書き出されます。
なかなか面白い機能だと思います。
皆さんもUE4で録音しまくってください。
UE4 SphereMaskでホラー的な表現を行う
今回はPostProcess Materialを使用して、
一定以上の距離から先が見えないといった処理を作成します。
作成にはUE4 4.19.2を使用しています。
First Person Templateを起動してください。
Materialを作成する
コンテンツブラウザを右クリックから
Materialを選択します。
Materialが作成できたら
名前を付けましょう。
MaterialをPostProcessVolumeに適応する
First Person Templateには最初から
PostProcess Volumeが配置されています。
PostProcess VolumeのPostProcess Material内の
Arrayに配列を追加して、先程作成したMaterialを適応します。
Materialを編集する
先程作成したMaterialを開きます。
まずは、Material DomainをSurfaceから
Post Processに変更します。
次にこのようにノードをつなげます。
Sphere MaskはAにチェックする座標の値、
Bに球体の原点の座標の値を入力し、
RadiusとHardnessに球体の半径と
トランジションエリアのサイズを指定します。
確認してみる
ここまでの処理が作成できたら実行して確認してみましょう。
プレイヤーを中心に半径1000の球体マスクが適応されました。
改良してみる
しかしこのままではプレイヤーや、
その他のオブジェクトが白く塗りつぶされたままになります。
そこでのように改良してみました。
LerpのAには0を入れ真っ黒になるようにします。
BにはScene Textureで本来描画されるべき色を入力します。
Alphaに先程作成したSphere Maskの値を入れ、
AとBの間を補間します。
確認してみる
確認してみると、マスクの範囲内には
正しい色が描画され、範囲外は黒くなりました。
また、Material Instanceなどで扱う場合は
RadiusとHardnessをパラメータにしておくと便利です。
パラメータを調整したものがこちらになります。
UE4 Sound CueのSwitchノードについて
前回Branchノードの解説をしました。
その時にSwitchノードの話題を出したので、
今回はSwitchノードの解説を行っていきます。
Switchノードは複数の再生するサウンドを
条件によって変更できるノードです。
Branchノードの2択じゃない版ですね。
具体的にはBool型ではなく、
Integerの整数値のパラメータになります。
実際に足音を床の材質に合わせて変更する際などに、
よく使用するノードです。
サウンドクリエイターの方々が、
自分で条件を定義したいときなどは便利だと思います。
検証にはUE4 4.19.1を使用します。
このノードはSound Cueエディタの右側の一覧からD&Dするか、
右クリックから検索で出すことができます。
正直Branchノードとあまり変わらないのですが、
パラメータをBPから変更し、
再生するサウンドを動的に変更するためのノードです。
Branchノードと違う箇所は、
インプットピンを増やせるというところです。
右クリックからインプットを追加、
もしくはノード右下のインプットの追加ボタンを押すことで
インプットピンを追加することができます。
増やせました。
インプットピンを削除するには、
ピンを右クリックからインプットを削除を選択すれば、
ピンを削除できます。
Switchノードには
・Int Parameter Name
というパラメータがあり、
この名前を頼りにBPのパラメータを変更します。
BPではSpawnしたSound Cueのデータ、
もしくはAudio Componentのリファレンスから
Set Integer Parameterを呼び出し、
パラメータの名前を入力することでパラメータの変更が行えます。
実際に繋いだ例
参考までにどうぞ(古いけど)
足音をSwitchノードで切り替える処理について
UE4 Sound CueのBranchノードについて
正直Sound Cueのノードは使い方によっては、
面白いものが非常に多くて楽しいです。
今回はBranchノードの解説を行います。
簡単にいうとifノードになります。
特定の条件(このノードはBool型)によって
再生するサウンドを変更するものです。
Sound Cueではパラメータ周りが
初見さんお断り的な感じがするので、
あまり使われているイメージがないです。
方法の一つとして知っておくといいんじゃないでしょうか?
検証にはUE4 4.19.1を使用します。
このノードはSound Cueエディタの右側の一覧からD&Dするか、
右クリックから検索することで出すことができます。
パラメータをBPから変更し、
再生するサウンドを動的に変更することができるノードです。
似たようなノードにSwitchノードがあります。
こちらは2択ではなく複数の中から選択できるものです。
状況に応じて使い分けてください。
Branchノードには
・Bool Parameter Name
というパラメータがあり、
この名前を頼りにBPのパラメータを変更します。
感覚的にはDynamic Material Instanceの
パラメータ変更に近いと思います。
BPではSpawnしたサウンドデータ、もしくは
Audio Componentのリファレンスから
Set Boolean Parameterを呼び出し、
パラメータの名前を入力することでパラメータの変更が行えます。
実際に繋いだ例
これで動くのですが、
パラメータが未設定ですって書かれると
どうしようもない不安に駆られます。耐えましょう。
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が再生されます。