UE4初心者が頑張ってるブログ

Unreal Engine4を使用した開発メモ、及びそれに関連することについて不定期に書いています。

UE4 4.20 ゲーム内の音声を録音する

UE4 4.20のPreviewをのんびりと触っていて、

大体検証が終わったので、少しずつ記事にしたいと思います。

 

Unreal Engine 4.20 Preview

forums.unrealengine.com

 

今回はUE4のレコード機能について書いていきます。

割と注目を集めている機能のようです。

f:id:MozPaca:20180622192459p:plain

 

追記

先に取り上げている方がいました。

qiita.com

 

 

検証にはUE4 4.20 Preview3を使用します。

f:id:MozPaca:20180622192440p:plain

 

注意

まず注意としてレコード機能を使用するには

Unreal Audioの機能を有効にする必要があります。

 

プロジェクトを作成後、

-audiomixerの引数を渡してエディタを起動するか、

f:id:MozPaca:20180622192805p:plain

このような.batファイルを作成し、エディタを開いてください。

 

必要なプラグインを有効にする

次に編集→Pluginsから

Sound Utilitiesプラグインを有効にして、エディタを再起動します。

f:id:MozPaca:20180622192920p:plain

 

必要なノードの解説

Start Recording Output

録音を開始するためのノードです。

f:id:MozPaca:20180622193524p:plain

 

パラメータ

・Expected Duration (float)

 録音する秒数を指定するパラメータです。

 0.0の場合は後述するFinish Recording Outputノードを使用する、

 もしくはゲームを終了するまで録音を続けます。

 

・Submix to Record

 指定したSound Submixの音声を録音します。

 指定しない場合はエンジン出力の音が録音されるようです。

 

Sound Submixについてはこちら

[UE4] Sound Submix を使って音にエフェクトをかける|株式会社ヒストリア

 

Finish Recording Output

録音を終了するためのノードです。

 

f:id:MozPaca:20180622194425p:plain

 

パラメータ

・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を上書きするパラメータ...だと思うんですが、

 何も起こりません。

 

 追記

 ソースを確認すると外側だけの実装のようです。今後扱えるようになると思います。

 

実際に録音してみる

f:id:MozPaca:20180622195753p:plain

 

レベルブループリントにこのように記述しました。

Rキーを押して録音開始。

Rキーを離すか10秒経過すると録音終了になります。

ゲームを実行し、Rキーを押すと押すと録音できるかと思います。

 

このように処理を組んだ場合は

f:id:MozPaca:20180622200246p:plain

 

コンテンツブラウザ直下に書き出されます。

f:id:MozPaca:20180622200404p:plain

 

このように処理を組んだ場合は、

f:id:MozPaca:20180622200434p:plain

 

このように書き出されます。

f:id:MozPaca:20180622200447p:plain

 

なかなか面白い機能だと思います。

皆さんもUE4で録音しまくってください。

 

 

UE4 SphereMaskでホラー的な表現を行う

今回はPostProcess Materialを使用して、
一定以上の距離から先が見えないといった処理を作成します。

作成にはUE4 4.19.2を使用しています。

f:id:MozPaca:20180516153207p:plain

 

First Person Templateを起動してください。

f:id:MozPaca:20180516153343p:plain

 

Materialを作成する

コンテンツブラウザを右クリックから

Materialを選択します。

f:id:MozPaca:20180516153422p:plain

 

Materialが作成できたら

名前を付けましょう。

f:id:MozPaca:20180516153500p:plain

 

MaterialをPostProcessVolumeに適応する

First Person Templateには最初から

PostProcess Volumeが配置されています。

PostProcess VolumeのPostProcess Material内の

Arrayに配列を追加して、先程作成したMaterialを適応します。

f:id:MozPaca:20180516153605p:plain

 

Materialを編集する

先程作成したMaterialを開きます。

まずは、Material DomainをSurfaceから

Post Processに変更します。

f:id:MozPaca:20180516153820p:plain

 

次にこのようにノードをつなげます。

f:id:MozPaca:20180516154027p:plain

Sphere MaskはAにチェックする座標の値、

Bに球体の原点の座標の値を入力し、

RadiusとHardnessに球体の半径と

トランジションエリアのサイズを指定します。

 

確認してみる

ここまでの処理が作成できたら実行して確認してみましょう。

プレイヤーを中心に半径1000の球体マスクが適応されました。

f:id:MozPaca:20180516154409p:plain

 

改良してみる

しかしこのままではプレイヤーや、

その他のオブジェクトが白く塗りつぶされたままになります。

 

そこでのように改良してみました。

f:id:MozPaca:20180516154615p:plain

LerpのAには0を入れ真っ黒になるようにします。

BにはScene Textureで本来描画されるべき色を入力します。

Alphaに先程作成したSphere Maskの値を入れ、

AとBの間を補間します。

 

確認してみる

確認してみると、マスクの範囲内には
正しい色が描画され、範囲外は黒くなりました。

f:id:MozPaca:20180516154859p:plain

 

また、Material Instanceなどで扱う場合は

RadiusとHardnessをパラメータにしておくと便利です。

f:id:MozPaca:20180516155001p:plain

 

パラメータを調整したものがこちらになります。

www.youtube.com

UE4 Sound CueのSwitchノードについて

前回Branchノードの解説をしました。

mozpaca.hatenablog.com

 

その時にSwitchノードの話題を出したので、

今回はSwitchノードの解説を行っていきます。

 

Switchノードは複数の再生するサウンドを

条件によって変更できるノードです。

Branchノードの2択じゃない版ですね。

 

具体的にはBool型ではなく、

Integerの整数値のパラメータになります。

f:id:MozPaca:20180423214733p:plain

 

実際に足音を床の材質に合わせて変更する際などに、

よく使用するノードです。

 

サウンドクリエイターの方々が、

自分で条件を定義したいときなどは便利だと思います。

 

検証にはUE4 4.19.1を使用します。

f:id:MozPaca:20180417160014p:plain

 

このノードはSound Cueエディタの右側の一覧からD&Dするか、

右クリックから検索で出すことができます。

Switch Node

 

正直Branchノードとあまり変わらないのですが、

パラメータをBPから変更し、

再生するサウンドを動的に変更するためのノードです。

 

Branchノードと違う箇所は、

インプットピンを増やせるというところです。

右クリックからインプットを追加、

もしくはノード右下のインプットの追加ボタンを押すことで

インプットピンを追加することができます。

f:id:MozPaca:20180423220048p:plain

 

増やせました。

f:id:MozPaca:20180423220156p:plain

 

インプットピンを削除するには、

ピンを右クリックからインプットを削除を選択すれば、

ピンを削除できます。

f:id:MozPaca:20180423220140p:plain

 

Switchノードには

・Int Parameter Name

というパラメータがあり、

この名前を頼りにBPのパラメータを変更します。

f:id:MozPaca:20180423215503p:plain

 

BPではSpawnしたSound Cueのデータ、

もしくはAudio Componentのリファレンスから

Set Integer Parameterを呼び出し、

パラメータの名前を入力することでパラメータの変更が行えます。

f:id:MozPaca:20180423215640p:plain

 

実際に繋いだ例

f:id:MozPaca:20180423215735p:plain

 

参考までにどうぞ(古いけど)

足音をSwitchノードで切り替える処理について

mozpaca.hatenablog.com

UE4 Sound CueのBranchノードについて

正直Sound Cueのノードは使い方によっては、

面白いものが非常に多くて楽しいです。

 

今回はBranchノードの解説を行います。

簡単にいうとifノードになります。

特定の条件(このノードはBool型)によって

再生するサウンドを変更するものです。

f:id:MozPaca:20180423212402p:plain

 

Sound Cueではパラメータ周りが

初見さんお断り的な感じがするので、

あまり使われているイメージがないです。

方法の一つとして知っておくといいんじゃないでしょうか?

 

検証にはUE4 4.19.1を使用します。

f:id:MozPaca:20180417160014p:plain

 

このノードはSound Cueエディタの右側の一覧からD&Dするか、

右クリックから検索することで出すことができます。

Branch Node

 

パラメータをBPから変更し、

再生するサウンドを動的に変更することができるノードです。

 

似たようなノードにSwitchノードがあります。

こちらは2択ではなく複数の中から選択できるものです。

状況に応じて使い分けてください。

 

Branchノードには

・Bool Parameter Name

というパラメータがあり、

この名前を頼りにBPのパラメータを変更します。

f:id:MozPaca:20180423213308p:plain

 

感覚的にはDynamic Material Instanceの

パラメータ変更に近いと思います。

 

BPではSpawnしたサウンドデータ、もしくは

Audio Componentのリファレンスから

Set Boolean Parameterを呼び出し、

パラメータの名前を入力することでパラメータの変更が行えます。

f:id:MozPaca:20180423213407p:plain

 

実際に繋いだ例

f:id:MozPaca:20180423213514p:plain

 

これで動くのですが、

パラメータが未設定ですって書かれると

どうしようもない不安に駆られます。耐えましょう。

UE4 Sound CueのConcatenatorノードについて

Sound Cueのノードリファレンス少なくて、私悲しい。

 

今日もSound Cueのエディタ内で使用できる

ノードの解説を行ってきます。

 

今回はConcatenatorノードについてです。

Concatenatorノードは繋いだWaveファイルの

連続再生に使用するノードです。

f:id:MozPaca:20180423203702p:plain

 

Sound Cueの中で使用頻度はかなり低いほうだと思います。

実況用のボイスの再生などに使えると思います。

Randomノードなどとも相性が良さそうですね。

 

検証にはUE4 4.19.1を使用します。

f:id:MozPaca:20180417160014p:plain

 

このノードはSound Cueエディタ右側の一覧からD&Dするか、

右クリックから出すことができます。

Concatenator Node

 

サウンドのプレイリストをSound Cue上で作成して、

一つのSound Cueで連続再生を行う際などに使用します。

 

注意としては、サウンドの連続再生は自動で行いますが、

次に再生するサウンドへのブレンドなどはしません。

なのでサウンドとサウンドの繋ぎ目がおかしくなることもあります。

そういう場合は上手いことクロスフェード処理などを挟んでください。

 

MixerやRandomと同じように、

右クリックからインプットを追加、

もしくはノード右下のインプットを追加ボタンを押すことで、

インプットピンを追加することができます。

f:id:MozPaca:20180423204713p:plain

 

インプットピンを削除するには、

ピンを右クリックからインプットを削除を選択すれば、

ピンを削除できます。

f:id:MozPaca:20180423205435p:plain

 

Concatenatorノードは

・Input Volume

という配列のパラメータを持っています。

f:id:MozPaca:20180423204649p:plain

 

再生する際の音量を制御することができます。

ただしInput Volumeの値が0の場合、

そこに繋がっているサウンドは無いものとして扱われ、

処理が飛ばされます。(つまり再生されません)

 

実際に繋いだ例

f:id:MozPaca:20180423205119p:plain

 

シンプルにこんな感じでどうでしょう?

上のサウンドが再生終了したら、下のサウンドが再生されるといった

処理の流れになります。

UE4 Sound CueのWave Playerノードについて

今回もSound Cueエディタ内で使用できる
ノードの解説を行っていきます。

タイトル通りWave Playerノードについてです。

Wave Playerノードは再生したいWaveファイルを設定することで、

Sound Cueがどの音を再生するのかを指定できるノードです。

f:id:MozPaca:20180420133107p:plain

 

Sound Cueを使用するにあたって、

最も使用頻度の高いノードだと思います。

 

検証にはUE4 4.19.1を使用します。

f:id:MozPaca:20180417160014p:plain

 

Sound Cueでこのノードを使用する場合は、

右側のWave PlayerからD&Dするか

f:id:MozPaca:20180420133839p:plain

 

コンテンツブラウザからWaveファイルをD&Dすることで、

出すことができます。

f:id:MozPaca:20180420134212p:plain

 

コンテンツブラウザからノードを出した場合は、

Sound WaveパラメータにD&Dした、
Waveファイルの情報が自動的に入るようになっています。

 

Wave Playerノードのパラメータは、

・Sound Wave

・Looping

の2種類があります。

f:id:MozPaca:20180420135031p:plain

 

Sound Waveパラメータは、

再生したいWaveファイルの情報を格納します。

f:id:MozPaca:20180420134657p:plain

 

Loopingパラメータは、

再生するWaveファイルが、ループ再生するかどうかの

設定です。チェックが入っている場合にループします。

デフォルトはオフです。

 

実際にノードを繋いだ例

f:id:MozPaca:20180420134528p:plain

 

最もシンプルな例ですが、

Sound Cueが持っている、Sound Classや

各種エフェクトの設定が行えるなど、

Waveファイルをそのまま再生するより

多彩な設定が可能となります。

UE4 Sound CueのRandomの使い方

UE4のSound Cueには
23種類のノードが存在します(2回目)

今回はRandomノードについて解説します。

f:id:MozPaca:20180417163245p:plain

 

検証にはUE4 4.19.1を使用します。

f:id:MozPaca:20180417160014p:plain

 

Randomノードとは

Random Node

Randomノードは、繋がっているSound Waveファイルノードを

ランダムに取得して再生するものです。

 

複数の音からランダムに再生したい場合に使用するノードです。

 

Mixerノードなどと同じく、

右クリックからインプットピンの追加が可能です。

f:id:MozPaca:20180418164735p:plain

 

Inputピンを追加した場合はこのようになります。

また追加できるピンに上限はありません。

f:id:MozPaca:20180418165143p:plain

ノード右側のインプットを追加の+マークをクリックしても、

インプットピンを追加することができます。

 

インプットピンを削除する場合は、

ピンを右クリックからインプットの削除で削除可能です。

f:id:MozPaca:20180418165329p:plain

 

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ノードが、

再度再生されることはありません。

すべてのサウンドが確実に再生されるようになります。

f:id:MozPaca:20180418165837p:plain

 

実際にノードを繋いだ場合

この場合どちらかのSound Waveが再生されます。

f:id:MozPaca:20180418183223p:plain