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

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

UE4 4.20 BlutilityとEditor Scriptingを試してみる その3

前回の記事からの続きです。

合わせてお読みください。

mozpaca.hatenablog.com

 

BlutilityとEditor Scriptingの触りの部分を

前回と前々回の記事で書きました。

 

今回はエディタからStatic MeshにCollisionをつける

処理を書きたいと思います。

 

今回はテーブルのStatic MeshにCollisionを付けたいと思いますが、

デフォルトでCollisionがついているので、Collisionを削除しておきます

f:id:MozPaca:20180711172744p:plain

 

コリジョンからコリジョンを取り除くを選択してSimple Collisionを削除します。

f:id:MozPaca:20180711172952p:plain

 

これで下準備は終わりました。

前回同様にBPU_ActorActionに処理を追加していきます。

f:id:MozPaca:20180711171909p:plain

 

まずは、関数のオーバーライドからGet Supported Classを選択します。

f:id:MozPaca:20180711171857p:plain

 

この関数は右クリックからScript Actionsのタブを出すフィルター的なものです。

デフォルトでは全てのクラスがリターンノードに渡されています。

今回はStatic MeshにCollisionを付けさせるのが目的なので、

Static Mesh以外でScript Actionsのタブが出ると困ります。

f:id:MozPaca:20180711172019p:plain

 

なので、このようにStatic Mesh Actorに対してだけ、

Script Actionsのタブが出るようにしました。

f:id:MozPaca:20180711172300p:plain

 

確認してみました。

Atmospheric Fogで右クリック→出ない。

f:id:MozPaca:20180711172354p:plain

 

Chair→出た。

f:id:MozPaca:20180711172443p:plain

 

大丈夫っぽいです。

 

次にイベントグラフでこのように処理を書きました。

Get Selected Level Actorsで選択したActorを取得し、

それがStatic Mesh ActorであればSimple Collisionを追加するという処理です。

引数をもたせてCollisionの形も指定できるようにしました。

f:id:MozPaca:20180711172511p:plain

 

では確認してみます。

レベルに配置されているテーブルを右クリック

Script ActionsからCE_Add Simple Collisionsを選択します。

f:id:MozPaca:20180711173039p:plain

 

すると引数に渡していたShape Typeを選択する、

ダイアログが出てきました。

わかりやすくするため、Boxを選択します。

f:id:MozPaca:20180711173152p:plain

 

OKボタンを押すと画面が切り替わり、

指定したBoxコリジョンがついたのが確認できました。

f:id:MozPaca:20180711173254p:plain

 

今回のような処理だと実用性が低いですが、

Editor Scriptingで追加されたノードはかなり多いうえに、

c++ではなくノードでこのようなことができる機能は、

非常に面白いと思います。

 

 

UE4 4.20 BlutilityとEditor Scriptingを試してみる その2

前回の記事からの続きです。

合わせてお読みください。

mozpaca.hatenablog.com

 

前回の記事でBlutilityの使用と、

2つのアセットを作成しました。

今回はそれらの中にEditor Scriptingを

混ぜ込んでいきたいと思います。

 

Editor Scriptingを有効にする

まずはEditor Scriptingを有効にします。

 

エディタの左上のPluginsを開きます。

f:id:MozPaca:20180711170035p:plain

 

Editor Scripting Utilitiesを有効にしてエディタを再起動しましょう。

f:id:MozPaca:20180711170106p:plain

 

 

Editor Scriptingを有効にすると
ブループリントユーティリティのノード一覧に

このようなものが追加されます。

f:id:MozPaca:20180711170410p:plain

 

処理を追加する

前回の記事で作成したBPU_ActorActionに処理を追加します。

f:id:MozPaca:20180711170611p:plain

 

まずはこのように処理を組んでみました。

f:id:MozPaca:20180711170703p:plain

 

次にレベルに配置してある適当なアセットを右クリック、

先程作成したCustom Eventを呼び出します。

f:id:MozPaca:20180711170740p:plain

 

上手く動いていますね。

f:id:MozPaca:20180711170835p:plain

 

アウトライナから複数選択した場合も

f:id:MozPaca:20180711170907p:plain

 

動きました。

f:id:MozPaca:20180711170952p:plain

UE4 4.20 BlutilityとEditor Scriptingを試してみる その1

今回は「Unreal Stream Japan | UE4.20で入る新機能の一部をご紹介」

www.youtube.com

で紹介されていたEditor Scriptingについて

何回かに分けて書いていきます。

 

その2

mozpaca.hatenablog.com

その3

mozpaca.hatenablog.com



基本的なやり方は動画の方でも解説されていますが、
試した際にスクショを撮ったので、

こちらの方でもやっていきたいと思います。

 

準備

今回はUE4 4.20 Preview5を使用します。

f:id:MozPaca:20180711162115p:plain

 

空のプロジェクトを使用してプロジェクトを作成します。

f:id:MozPaca:20180711162229p:plain

 

作成しました。

f:id:MozPaca:20180711162316p:plain

 

まずは、Editor Scriptingに必要になるBlutilityを有効にします。

左上の編集からエディタの環境設定を開きます。

f:id:MozPaca:20180711162423p:plain

 

実験段階→Editor Utility Blueprints(Bluetility)にチェックを入れます。

f:id:MozPaca:20180711162523p:plain

 

アセットを作成する

コンテンツブラウザからブループリント→

ブループリントユーティリティを選択します。

f:id:MozPaca:20180711162708p:plain

 

ブループリントユーティリティを選択すると、

親クラスの選択画面が出てきます。

 

全てのクラスからAssetActionUtilityを選択します。

f:id:MozPaca:20180711162917p:plain

 

このようなアセットが作成されました。

f:id:MozPaca:20180711163104p:plain

 

アセットに処理を追加したいところですが、

まだこのアセットに何も処理を記述していないのでこのような画面が出てきます。

f:id:MozPaca:20180711163134p:plain

 

アセットを開くには、右クリックからブループリントの編集を選択します。

f:id:MozPaca:20180711163256p:plain

 

いつもの画面が開きました。

f:id:MozPaca:20180711163358p:plain

 

処理を追加する

簡単なCustom Eventを使用した処理を記述します。

処理はこれだけです。

f:id:MozPaca:20180711163429p:plain

 

Custom Eventを選択し、右側の詳細タブで

エディタで呼び出すにチェックを入れます。

f:id:MozPaca:20180711163503p:plain

 

コンパイルするとCustom Eventのマークが変わったと思います。

f:id:MozPaca:20180711163553p:plain

 

エディタから処理を呼び出す

何かしらのアセットを右クリックすると

Scripting Actionsというタブが追加されています。

この中に先程作成したCE_TestLogがあるので、クリックしてみす。

f:id:MozPaca:20180711163630p:plain

 

CE_TestLogに記述したPrintStringが呼び出されました。

f:id:MozPaca:20180711163817p:plain

 

また、BPU_AssetActionを一度閉じて、

ダブルクリックで開き直すとこのような画面が出てきます。

ここにあるボタンをクリックすると、先程右クリックから選択したものと

同じ効果を得られます。

f:id:MozPaca:20180711164008p:plain

 

また、クラスのデフォルトからAuto Run Default Actionにチェックを入れ、

f:id:MozPaca:20180711164217p:plain

 

関数のオーバーライドで呼び出したOn Default Action Checkedに

f:id:MozPaca:20180711164317p:plain

 

このような処理を記述することで、

f:id:MozPaca:20180711164438p:plain

 

アセットのダブルクリックからこの関数を呼び出すこともできます。

f:id:MozPaca:20180711163950p:plain

 

別のアセットを作成する

先程とは変わってActorActionUtilityを親にした、

ブループリントユーティリティを作成します。

f:id:MozPaca:20180711164603p:plain

 

こんな感じ。

f:id:MozPaca:20180711164725p:plain

 

こちらのアセットにはこのように処理を記述しました。

先程とほぼ同じです。

f:id:MozPaca:20180711164805p:plain

 

確認するには、

レベルに配置したアセットを右クリックするか、

f:id:MozPaca:20180711164848p:plain

 

アウトライナにあるアセットを右クリックしてください。

f:id:MozPaca:20180711164923p:plain

 

複数選択した際にも実行されました。

 

まとめ

Asset Action Utilityを親にした場合

・コンテンツブラウザのアセットを右クリックすることで、

 CustomEventなどをエディタから呼び出せる

 

Actor Action Utilityを親にした場合

。レベルに配置したアセット、アウトライナにあるアセットを

 右クリックすることで、Custom Eventなどをエディタから呼び出せる。

 

 

 

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

 

これで動くのですが、

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

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