UE4 Audio Listener周りの備忘録
Audio Listenerはゲーム内での耳にあたる部分です。
ゲーム内のどの位置に耳があり、どの方向を向いているのかなどを設定します。
FPSなどではあまり恩恵を感じませんが、
Top DownやThird Personなどでは音周りが大きく変わってきます。
UE4ではCameraの位置がデフォルトになっています。
今回はこのAudio Listener周りの処理について書いていきます。
使用しているバージョンはUE4 4.18.3です。
ブループリントエディタでAudio Listenerと検索すると、
このようなノードが出てきます。
1つずつ見ていきましょう。
Set Audio Listener Override
Audio Listenerの位置を変更するためのノードです。
詳しい使い方はこちら
ComponentにAttachする、
もしくはLocationとRotationを数値で指定することで
Audio Listenerの位置を更新することができます。
Player ControllerがTargetになるので、
Player Controllerのブループリント以外に書く場合は、
Get Player Controllerノードなどを接続してください。
Clear Audio Listener Override
Set Override Listener Overrideで変更された
Audio Listenerを初期化します。
Audio ListenerがAttachされている場合は、
nullptrで上書きされます。
このノードを使用してもAudio Listenerがなくなるわけではなく、
現在Playerが見ている座標、向きに再設定されます(デフォルト設定になる)
Set Override Listener Overrideと同じく、
Player ControllerがTargetです。
Are Any Listener Within Range
指定した範囲内にAudio Listenerが存在するかを判定するノードです。
円形の範囲を走査します。
引数のLocationには走査範囲の中心
Maximum RangeにはLocationからの半径を指定できます。
走査した範囲内にAudio Listenerがあれば、
Return ValueにTrue、
なければFalseが返ってきます。
Target はWorld Staticsです。
Set Global Listener Focus Parameters
Global Listenerの焦点パラメータの設定用ノードです。
(使ったことない)
Focus Azimuth Scale
音の焦点が合っている方位学を定義するスケーリング値です。
Non Focus Azimuth Scale
音の焦点が合っていない方位学を定義するスケーリング値です。
Focus Distance Scale
焦点が合っている音に対して使用する距離尺度です。
1より小さい場合は音までの距離が減少、
1より大きい場合は音までの距離が増加します。
Non Focus Distance Scale
焦点が合っていない音に対して使用する距離尺度です。
1より小さい場合は音までの距離が減少、
1より大きい場合は音までの距離が増加します。
Focus Volume Scale
焦点の合っている音の音量減衰値です。
Non Focus Volume Scale
焦点の合っていない音の音量減衰値です。
Focus Priority Scale
焦点の合っている音の優先度です。
1より大きい値は優先度が高くなり、
1より小さい値は優先度が低くなります。
Non Focus Priority Scale
焦点のあっていない音の優先度です。
1より大きい値は優先度が高くなり、
1より小さい値は優先度が低くなります。
TargetはWorld Staticsです。
余談
C++限定になりますが(ブループリントにはない)
現在のAudio Listenerの座標と向きを取得する
Get Audio Listener Positionという関数があります。
UE4 Sound Classを使ってみよう2
前回に引き続き、Sound Classについて書いていきます。
今回はSound Classを使用して、
Volumeの管理をやっていきたいと思います。
準備
今回もUE4 4.18.2を使用します。
プロジェクトを作成します。
デフォルトで音が入っているFirst Person Templateを選択し、
Starter Contentsを有りにしておきます。
作成しました。
Sound Classを作成する
コンテンツブラウザを右クリックから
Sounds→Sound Classを選択します。
効果音全体を管理するSound Classを作成します。
Sound Classの親子付けを行う
作成したSound Classを開き、子Sound Classを作成します。
銃弾の音を管理するSound Classを作成します。
このようになったと思います。
同じ要領で爆発音を管理するSound Classを作成します。
※自分なりの命名規則を無視してますが、気にしないでください。
Sound CueにSound Classを適応する
First Person→Audioフォルダにある
FirstPersonWeaponTemplateWeapnFire02から
Sound Cueを作成します。
こんな感じですね。
作成したSound Cueを開き、Sound Classの
SC_Bulletを設定します。
次にStarter ContentsのAudioフォルダにあるExplosion_Cueを開きます。
こちらにはSound ClassのExplosionを設定します。
パラメータを変更する
それではSound Classのパラメータを変更して、
音がどのように変化するのかを見ていきましょう。
※今回はVolumeのみ変更します。
Sound Mixで使用するパラメータもあるので機会があれば...
仮に親のVolumeパラメータを100にしたとしましょう。
こうすると、子Sound ClassのSC_BulletとExplosionを設定している
Sound CueのVolumeも100になります。
今度はSC_BulletのVolumeを0.5にしましょう。
子のパラメータを変更したので、SC_Bulletより上のパラメータには
変化がありません。Explosionの方は親のVolume100がまだ入っています。
子から更に子をつけることもできるので、上手く使ってください。
確認してみる
親のパラメータを変更すると、
子を設定しているSound Cueに全てパラメータが渡されているのが
分かると思います。
子のパラメータを変更しても他の子には影響はありません。
例えば、「SEのなっている間はBGMの音量を下げる」や、
「全てのSEの音量を上げたい」といった際に親のClassの
パラメータを変更するだけで処理を完了することが出来ます。
UE4 SoundClassを使ってみよう
今回はSound Classについて書いていきます。
各種パラメータについては省いていきます
(Radio Filterとか使ったことない)
Sound Classとは
Sound Classは多数のサウンドアセットに適応することのできる
プロパティの集合体です。
これらを上手く使うことでサウンドのパラメータ調整がかなり楽になります。
また、SoundClass同士で親子付けすることも可能であり、
かなり強力な機能です。すげー便利。
準備
今回のプロジェクトはUE4 4.18.2で作成しています。
SoundClassを作成する
コンテンツブラウザから右クリック
Sounds→Sound Classを選択します。
適当な名前を付けます。
SoundClassの中を見てみる
作成したSoundClassをダブルクリックで開くと、
このような画面が出てきます。
左側には各種パラメータ、右側にはSoundClassの親子関係が
ノードで表示されています。
Sound Classをアセットに適応する
まだパラメータも何も変更していませんが、
Sound Classをサウンドアセットに設定しましょう。
適当なwaveファイルからSound Cueを作成します。
作成したSound Cueを開き、Detailsタブの
Sound→Sound Classを設定します。
先ほど作成したSound Classに変更しておきましょう。
これでSound Cueの設定は終わりです。
Sound Classの親子付けをしてみる
Sound ClassのDetailsタブの下の方にChild Classesというものがあります。
右側の+をクリックし、子SoundClassを追加します。
SoundClassを作成していない場合や、
新規のSoundClassを追加したい場合は
Create New Asset欄のSound Classを選択して、
新しいSoundClassを作成しましょう。
子SoundClassを追加すると、右側のノードに子SoundClassが追加されます。
SoundClass_SE
|- SoundClass_Explosion
|- SoundClass_FootStep
| |- SoundClass_Grass
みたいな感じで親子付けするといいんじゃないでしょうか。
UE4 Grayちゃんのボイスデータの調整をしました
Grayちゃんは良い!!
先日、GrayちゃんボイスVol.1、Vol.2の.wavデータを編集させていただきました。
セリフ自体の変更などはありませんが、
UE4上で扱いやすくできるようにしました。
今回はどの辺をどのように変更したのかを、
細かく書いて行こうと思います。
あくまで趣味でやっていることなので、
私の勘違いなどがある可能性がありますがご了承ください。
使用ソフト
http://old.audacityteam.org/download/?lang=ja
機能も(それなりに)多くて使いやすいんですが、
バッチ処理がとても使いにくいです。
結局(88ファイル)全て手作業で編集しました。
有償の波形編集ソフトを購入しようかと悩んでます。
容量
結論から言うと結構軽くなりました。
GrayちゃんボイスVol.1から見ていきます。
Grayちゃんボイス Vol.1が公開中 - Grayちゃん OFFICIAL WEBSITE
52種の.wavファイルが収録されており、
元々のサイズは8.79MBでした。
編集後は4.85MBまで容量を下げられました。
次にGrayちゃんボイスVol.2です。
Grayちゃんボイス Vol.2が公開中 - Grayちゃん OFFICIAL WEBSITE
通常のボイス24種とシステムボイス11種の
計35種の.wavファイルが収録されています。
元々の容量は6.81MBで
編集後は4.21MBになりました。
ブランク
左のブランクは可能な限り切り詰めました。
これを
こんな感じに
こうすることでした際に、
ボイスが流れ始めるまでに時間がかかるという問題が解決できました。
右ブランクは音が止んでから0.3秒ほど、空白を残しています。
個人的な趣向と言ったらそれまでなんですが、
再生が終了してプツッと音が切れるのを防いだり、
.wavに直接リバーブなどの処理をかけるときに面倒なことにならないようにしてます。
クリックノイズの修正
音声を切り分ける際に入り込んだのだと思いますが、
クリックノイズがありましたので修正しました。
ノーマライズ
Grayちゃんボイスは全体的に音量が小さいです。
ゲインなどで上げても良かったのですが、
今回はノーマライズの処理で調節を行いました。
変更していない箇所
・セリフ
コレに関しては加工ではどうしようもないのでVol.3を期待しましょう。
・周波数、bit数
44100Hz、16bitで変更していません。
元のデータより密度を上げても音質は上がらない上に、
容量も大きくなるので今回は変更しませんでした。
・ファイル名
特に変更する必要が無かったので変更しませんでした。
・チャンネル数
全て1つ(モノラル)のファイルです。
UE4で使用する
再生に関しては(多分)問題ないと思います。
音量が少し大きくしたい、速度を遅くしたいなどはUE4側で
ある程度制御できるのでお試しあれ。
みんなでGrayちゃんを使おう。
UE4でWebページを作ってみたかった
Unreal Engine 4 (UE4) その2 Advent Calender 2017
参加9日目の記事です。
今回は私のやってみたかったことをやった結果になります。
タイトルの通りUE4でWebページが作れるのかを試してみました。
結果を先に言うと作れます(軽くはない)
8日の朝に明日は私の番であるということに気がついたので、
バタバタ作ってみました。
その手順を紹介したいと思います。
(時間がなかったんだ!!)
ではやっていきましょう。
準備
今回はUE4 4.18.1を使用しています。
今回のプロジェクトではHTMLビルドを行います。
UE4起動ボタンのドロップダウンを開き、
オプションを選択します。
対応プラットフォームにHTML5にチェックが入っていることを
確認してください。
ONにして適応ボタンを押してください。
プロジェクトを作成する
では本題に入っていきます。
まずは新規プロジェクトを作成しましょう。
今回はUMGをメインで使用するので、
Mobile/Tablet、Scalable 3D or 2D、 スターターコンテンツなしで
Blankプロジェクトを作成します。
Widgetを作成する
プロジェクトが作成できたら、Widgetを作成していきます。
コンテンツブラウザを右クリック、
User Interface→Widget Blueprintを選択します。
名前は適当にWidget_Baseとしました。
※Header、Footer部分になる箇所を分けて作成してもいいかもしれません。
かなり適当な作り方をしたので、
詳しくは書きませんが、
Webページの見た目となる部分を作成します。
Vertical Boxなどを使っていないため、
解像度を変更するとえげつないズレ方をするため、
これを実践する際にはレスポンシブ的な対応をする必要があるかと思います。
今回はボタンの反応などは入れてません。
新規マップを作成する
デフォルトのマップには色々オブジェクトが配置されているので、
新規マップを作成して、何もない空間を作成します。
左上のFile→New Levelを選択します。
Empty Levelを選択します。
マップを作成したら保存しておきましょう。
今回はMap_Indexという名前にしました。
レベルブループリントを編集する
Map_Indexのレベルブループリントを編集します。
上のBlueprintsタブからOpen Level Blueprintを選択します。
レベルブループリントでは、このようにWidgetを
生成/取り付けを行う処理を書きます。
これでMap_Indexを開くとWidget_Baseが取り付けられます。
HTMLファイルの書き出しを行う
処理が大体終わったので、HTMLビルドを行います。
左上のFileからPackage Project→HTML5を選択します。
書き出されました。
localhostで起動する
HTML5LaunchHelper.exeを起動すると、
ローカルのサーバーが立ち上がります。
ポートは8000のようです。
適当なブラウザを開き、localhost:8000のHTMLファイルにアクセスします。
開きました。
サーバーにアップして起動する
ローカルホストで確認できたので、今度はサーバーにアップして
確認してみましょう。
ファイルのアップにはFileZillaを使用しています。
サーバーに書き出されたHTML5ファイルごとアップロードします。
いらないファイルも混ざってるかもですが気にしない。
ブラウザからURLを入力してページを開くと、
localhostと同じように起動しました。
しっかりとボタンの反応などを組み込めば、
Webページとして活用できるかもしれません。
明日はcom04さんの「ぷちコン与太話-マテリアルゲーム作った話-」です。
個人的にものすごく楽しみにしてます!
UE4 ADX2 LEを使って足音を実装してみよう
前回ADX2 LEの導入記事を書きました。
前回↓
今回はADX2 LEのCri Atom Craft上で編集した
サウンドデータで足音を作成し、UE4で再生してみようと思います。
通常、足音などを再生する場合は複数の足音のデータを
Waveファイルとしてインポートし、
Sound Cueでランダムに再生するかと思います。
イメージ:
...まぁ面倒くさい。
データ容量も大きくなるし、
100種類の足音とかだったらノードも見づらくなります。
ベースの足音を用意する
今回は1種類の足音につき1つのWaveファイルで表現します。
とりあえず、何かしらの足音を1つ用意しましょう。
フリー素材でも大丈夫ですが、
私は玄関の床を革靴で叩いて収録した音を、
使いやすいように調整した音を用意しました。
Cri Atom Craftを起動する
用意したWaveファイルをCri Atom Craftで編集していきます。
Cri Atom Craftを起動してください。
起動したら、左上のファイルから
プロジェクトファイルを開くを選択し、
前回作成したプロジェクトを開きましょう。
開きました。
足音用のフォルダを作成する
今回はフォルダ分けなどを丁寧に行っていきます。
マテリアルルートフォルダを右クリックし、
新規オブジェクト→サブフォルダの作成をクリックしてください。
サブフォルダが出来ました。
このサブフォルダの名前をFootStepに変更します。
変更したFootStepフォルダに足音のWaveファイルを入れていきましょう。
インポートは後で行います。
ワークユニットのキューシートフォルダを右クリック
新規オブジェクト→サブキューシートフォルダの作成をクリックしてください。
作成したサブフォルダにFootStepと名前をつけます。
FootStepフォルダを右クリック
新規オブジェクト→キューシートの作成をクリックします。
今回は足音用のキューシートにする予定なので、
Cue Sheet_FootStepと名前を変更します。
Waveファイルをインポートする
マテリアルルートフォルダに作成したFootStepフォルダに
用意したWaveファイルをドラッグアンドドロップしましょう。
waveファイルがインポートができたと思います。
次に作業用のCueSheet_FootStepに
インポートしたWaveファイルをドラッグアンドドロップします。
CueSheet_FootStepにWaveファイルが追加されました。
音を編集する
ここから音の編集をしていきます。
読み込んだ音を選択してください。
そしてFX1タブを開きます。
今回はこのFX1タブの中で音を編集していきます。
このようにピッチやボリュームの大きさを調節したり、
上にドラッグすることで、ここからここまでという範囲を指定できます。
その範囲の中をランダムで再生します。
今回はピッチの値をランダムに返してほしいので、
画像のようにしてみました。
次に減衰設定を行います。
Atom Cueの方を選択してください。
3Dポジショニングタブを開きます。
減衰距離の最小/最大のパラメータを変更しましょう。
最小を50.0、最大を3000.0にしました。
ここはUE4で再生しながら確認するといいと思います。
キューシートをビルドする
編集はこのあたりにして、CueSheet_FootStepを
右クリックからAtomキューシートバイナリのビルドを選択します。
Cue_Sheet_FootStepにチェックが入っているのを確認して
ビルドボタンをクリックしましょう。
ビルドしたデータをUE4にインポートする
ビルドしたデータは指定した出力パスにあります。
.acbファイルをUE4にインポートしましょう。
インポートしました。
音を再生したいタイミングで
AnimationにNotifyを追加します。
そしてこのように処理を組み、
インポートした.acbファイルを再生します。
確認してみる
どうでしょうか?
1つの音声データからUE4上で編集することなく、
ランダムピッチな足音が再生されていると思います。
UE4 ADX2 LEを導入する
今回はCRI・ミドルウェアのADX2 LEを
UE4に導入してみたいと思います。
UE4にはSound Cueのような
サウンドの強力な機能があります。
が!もうちょっと機能が欲しいなんてこともあります。
UE4の機能を自作すればいいのでは...
ミドルウェアはADX2LE以外にも
WwiseのUE4インテグレーションについて - ぼっちプログラマのメモ
サウンドミドルウェア【Wwise】と【UnrealEngine4】を連携する - I From Japan Staff Blog
FMOD
UE4 + FMOD でインタラクティブなサウンド体験を実現しよう! | rarilog
ADX2LEとは
ADX2LEは株式会社CRI・ミドルウェアから販売されている
「ADX2」の無償版です。無償版ですが、機能は製品版と同じです。
有償版との違いは、ほぼ全てのゲームプラットフォームでのゲーム開発に対応していて、
ライセンスにはサポートが含まれています。
無償版を使用し開発したコンテンツ、アプリの配布/販売には制限があります。
詳細は公式ページを確認してください。
準備
ここから本題に入ります。
まずはADX2 LE SDKをダウンロードしましょう。
http://www.adx2le.com/download/index.html
ダウンロードしたZipファイルを解凍し、
中に入っている「cri」フォルダを任意のディレクトリに移動してください。
推奨はCドライブのルートディレクトリですが、
私はD:/CRIAtomCraft/cri/という感じで配置しています。
UE4プロジェクトを作成する
今回はUE4 4.17.2を使用しています。
今回はFirst Person テンプレートを使用し、
ADX2LEというプロジェクト名をつけています。
作成されました。
ここまで出来たら、
UE4エディタは一旦閉じておきましょう。
CRIWARE Pluginを有効にする
エンジン単位でPluginを入れることも出来ますが、
私はプロジェクトごとにPluginを入れる派なので
今回はプロジェクトごとに入れるようにしていきます。
まずは、プロジェクトフォルダを開きます。
Epic Games Launcherで作成したプロジェクトを右クリックし、
フォルダを開くを選択します。
プロジェクトフォルダが開けたら
cri/UE4/Engine/にあるConfigフォルダと、Pluginsフォルダを
プロジェクトフォルダのルートにドラッグアンドドロップ、
もしくはコピーアンドペーストで持って行きます。
こんな感じにプロジェクトフォルダになったらオッケーです。
再びUE4エディタを起動しましょう。
エディタが起動したら、
左上のEdit→Plugin を選択しましょう。
MiscタブにCRIWARE Pluginがあるので、
Enabledにチェックをつけ、エディタを再起動します。
再起動後、PluginタブでCRIWARE Pluginにチェックがついているか確認しましょう。
ライブラリの初期化を行う
左上のEditからProject Settingsを選択します。
Plugin/CriWareタブでライブラリの初期化を行うことができます。
自分でパラメータをカスタムしない場合は自動的に初期化されますので、
今回はデフォルトのままで扱います。
データの読み込みの設定を行う
このPluginはCRI Atom Craft(後述)で作成した
・ACFファイル
・ACBファイル
・AWBファイル
を使用します。
この中のAWBファイル(ストリーム再生データ)は
レベルロード時に自動的にメモリにロードされないので、
設定が必要です。今回は省略します。
こちらを参照してください。
CRI ADX2 LE マニュアル (for Unreal Engine 4)
CRI Atom Craftを起動する
cri/tools/criatomex/にあるCriAtomCraft.exeを起動します。
左上のファイルからプロジェクトの新規作成を選択します。
プロジェクト名とプロジェクトのファイルパスを決めて、
新規プロジェクトのボタンをクリックします。
次にワークユニットの追加をします。
今回はデフォルトのまま追加をクリックします。
プロジェクトが作成されました。
左下のマテリアルルートフォルダに使いたいWaveファイルを
ドラッグアンドドロップします。
これでWaveファイルをCri Atom Craftにインポートすることができました。
インポートしたWaveファイルをワークユニットのCue Sheetに
ドラッグアンドドロップします。
これでWaveファイルをCri Atom Craftで編集できるようになりました。
ここからWaveファイルを編集していくのですが、
今回は導入記事ですので、割愛します。
Cue Sheet Binaryのビルドをする
Waveファイルを編集したとして、
編集データなどを書き出さなければなりません。
まずは、ビルドからAtom キューシートバイナリのビルドをクリックします。
書き出し先のパスや、ビルドをしたいCue Sheetを選択して、
ビルドボタンをクリックします。
ビルドが完了すると
指定したパスの中にacbファイルが作成されます。
UE4にインポートする
UE4のインポートボタンから先程作成した、
acbファイルをインポートします。
今回はこのファイルですね。
すると、このようにCue Sheetとその中に含まれた、
音のデータがインポートされます。
UE4上で再生する
インポートされたAtom Cueは通常のSound Cueファイルのように
扱うことができます。
レベル上に配置をしたり、
ブループリントから再生することもできます。
ここで注意したいのが、
再生ノードの違いについてです。
同じ名前ですが、通常の再生とCri Atom Craftで作成したファイルの再生とで
ノードが違います。
Atomカテゴリーに入っているノードを再生に使用してください。