UE4 Materialで押しつぶすような処理を書く
以前UE4勉強会 in 大阪で登壇した際に似たようなことを
話しましたが、今回はもっとシンプルな仕組みで解説したいと思います。
(資料も公開されています)
バージョンは4.20.2を使用しています。
早速やっていきましょう。
まず、右クリックからMaterial Functionを作成します。
処理はこのように書きます。
細かい説明はコメントを参照してください。
LerpのAlphaの値に合わせて潰していく処理になります。
作成したMaterial Functionが動くか確認するためのMaterialを作成します。
右クリックからMaterialを選択してください。
これ以上にないシンプルなMaterialを作成しました。
World Position Offsetには先程作成したMaterial Functionを繋いでいます。
Material Instanceにして確認しましょう。
Crushで潰し具合を設定して、
PivotLocationZでどの高さで潰すかを設定しています。
UE4 ネットワークで乱数を使う
UE4の乱数は各クライアントで処理が行われるため、
乱数が統一できません。
ランダムにMeshを切り替えるなどの処理を行いたい場合は、
乱数の結果が各クライアントで一致しなければ
見た目に不具合が出ます。
そういうときの対策を書いていきます。
サンプルとして、
ランダムにStaticMeshを切り替える処理を行います。
今回は4.19.2を使用しています。
右クリックからブループリントクラスを選択します。
親クラスはCharacterを選択します。
Actorや、Pawnであっても問題ありません。
作成したBPを開きStaticMeshコンポーネントを追加します。
変数を1つ作成します。
StaticMesh型の変数です。中身は空で構いません。
カスタムイベントを作成します。
StaticMeshを切り替える処理です。
切り替える候補もここで決めています。
先程作成した変数はここで今のMeshと違うかどうかを判別するために
使用しています。
今回のメインです。
再現性のある乱数を生成します。
いわゆるシード的なアレです。
公式にも解説がありますし、
他の方のブログでも見かけたので解説は端折ります。
サーバーとクライアントで処理を分け、
先程のカスタムイベントを呼び出します。
左クリックでMeshを切り替えるようにしました。
切り替わりました。
UE4 Wwise始めました(導入編)
何となくWwiseを始めました。
導入だけで長くなりそうなので、
初期設定などは別記事にまとめたいと思います。
まずはWwise Launcherをインストールします。
Wwise Launcherのインストールを行います。
私はWindows環境で作業を行うため
Windowsを選択しています。
ダウンロードしたファイルを開きます。
するとWwise Launcherが立ち上がるので、
ログインを行います。
アカウントを持っていないのであれば、Sign up nowのボタンから
アカウントを作成しましょう。
ログインを行うとこのような画面が出ます。
Install Wwise バージョンのボタンをクリックして、
Wwiseをインストールしましょう。
基本的に必要になるのは、AuthoringとSDK(C++)です。
WwiseのチュートリアルにCube(Demo)を使用しているものがあったので、
一応これも一緒にインストールしました。
環境や、配布するものに合わせて、チェックを入れましょう。
後はインストールするパスを入力して、
Nextのボタンをクリックします。
次にインストールするプラグインを選択します。
特に目的がなければ、デフォルトのままで大丈夫です。
Installのボタンを押すとライセンス同意の確認画面に遷移します。
Acceptのボタンをクリックします。
インストールが完了しました。
次にUE4プロジェクトを作成します。
今回は4.19.2を使用しています。
C++の基本コード、スターターコンテンツ無しで作成します。
プロジェクトが作成できたら一度閉じておきましょう。
Wwise Launcherに戻ります。
Wwise LauncherのUNREAL ENGINEタブに
プロジェクトが追加されていると思います。
プロジェクトが追加されていなければ、
ハンバーガーアイコンからBrowse for project...をクリックします。
するとブラウザが立ち上がるので、
追加したいプロジェクトの.uprojectファイルを開きます。
これでプロジェクトが追加されました。
次にインテグレーションを行います。
Integrate Wwise into Project...ボタンをクリックします。
必要な情報を書き込みます。
画像はインテグレーションしたものを開き直したものなので、
多少見た目や文字が違いますが大凡同じです。
書き込み終わったら下の青いボタンをクリックします。
インテグレーションが完了しました。
UE4側からもWwiseの存在を感じることが出来るようになっています。
UE4 4.20 BlutilityとEditor Scriptingを試してみる その3
前回の記事からの続きです。
合わせてお読みください。
BlutilityとEditor Scriptingの触りの部分を
前回と前々回の記事で書きました。
今回はエディタからStatic MeshにCollisionをつける
処理を書きたいと思います。
今回はテーブルのStatic MeshにCollisionを付けたいと思いますが、
デフォルトでCollisionがついているので、Collisionを削除しておきます
コリジョンからコリジョンを取り除くを選択してSimple Collisionを削除します。
これで下準備は終わりました。
前回同様にBPU_ActorActionに処理を追加していきます。
まずは、関数のオーバーライドからGet Supported Classを選択します。
この関数は右クリックからScript Actionsのタブを出すフィルター的なものです。
デフォルトでは全てのクラスがリターンノードに渡されています。
今回はStatic MeshにCollisionを付けさせるのが目的なので、
Static Mesh以外でScript Actionsのタブが出ると困ります。
なので、このようにStatic Mesh Actorに対してだけ、
Script Actionsのタブが出るようにしました。
確認してみました。
Atmospheric Fogで右クリック→出ない。
Chair→出た。
大丈夫っぽいです。
次にイベントグラフでこのように処理を書きました。
Get Selected Level Actorsで選択したActorを取得し、
それがStatic Mesh ActorであればSimple Collisionを追加するという処理です。
引数をもたせてCollisionの形も指定できるようにしました。
では確認してみます。
レベルに配置されているテーブルを右クリック
Script ActionsからCE_Add Simple Collisionsを選択します。
すると引数に渡していたShape Typeを選択する、
ダイアログが出てきました。
わかりやすくするため、Boxを選択します。
OKボタンを押すと画面が切り替わり、
指定したBoxコリジョンがついたのが確認できました。
今回のような処理だと実用性が低いですが、
Editor Scriptingで追加されたノードはかなり多いうえに、
c++ではなくノードでこのようなことができる機能は、
非常に面白いと思います。
UE4 4.20 BlutilityとEditor Scriptingを試してみる その2
前回の記事からの続きです。
合わせてお読みください。
前回の記事でBlutilityの使用と、
2つのアセットを作成しました。
今回はそれらの中にEditor Scriptingを
混ぜ込んでいきたいと思います。
Editor Scriptingを有効にする
まずはEditor Scriptingを有効にします。
エディタの左上のPluginsを開きます。
Editor Scripting Utilitiesを有効にしてエディタを再起動しましょう。
Editor Scriptingを有効にすると
ブループリントユーティリティのノード一覧に
このようなものが追加されます。
処理を追加する
前回の記事で作成したBPU_ActorActionに処理を追加します。
まずはこのように処理を組んでみました。
次にレベルに配置してある適当なアセットを右クリック、
先程作成したCustom Eventを呼び出します。
上手く動いていますね。
アウトライナから複数選択した場合も
動きました。
UE4 4.20 BlutilityとEditor Scriptingを試してみる その1
今回は「Unreal Stream Japan | UE4.20で入る新機能の一部をご紹介」
で紹介されていたEditor Scriptingについて
何回かに分けて書いていきます。
その2
その3
基本的なやり方は動画の方でも解説されていますが、
試した際にスクショを撮ったので、
こちらの方でもやっていきたいと思います。
準備
今回はUE4 4.20 Preview5を使用します。
空のプロジェクトを使用してプロジェクトを作成します。
作成しました。
まずは、Editor Scriptingに必要になるBlutilityを有効にします。
左上の編集からエディタの環境設定を開きます。
実験段階→Editor Utility Blueprints(Bluetility)にチェックを入れます。
アセットを作成する
コンテンツブラウザからブループリント→
ブループリントユーティリティを選択します。
ブループリントユーティリティを選択すると、
親クラスの選択画面が出てきます。
全てのクラスからAssetActionUtilityを選択します。
このようなアセットが作成されました。
アセットに処理を追加したいところですが、
まだこのアセットに何も処理を記述していないのでこのような画面が出てきます。
アセットを開くには、右クリックからブループリントの編集を選択します。
いつもの画面が開きました。
処理を追加する
簡単なCustom Eventを使用した処理を記述します。
処理はこれだけです。
Custom Eventを選択し、右側の詳細タブで
エディタで呼び出すにチェックを入れます。
コンパイルするとCustom Eventのマークが変わったと思います。
エディタから処理を呼び出す
何かしらのアセットを右クリックすると
Scripting Actionsというタブが追加されています。
この中に先程作成したCE_TestLogがあるので、クリックしてみす。
CE_TestLogに記述したPrintStringが呼び出されました。
また、BPU_AssetActionを一度閉じて、
ダブルクリックで開き直すとこのような画面が出てきます。
ここにあるボタンをクリックすると、先程右クリックから選択したものと
同じ効果を得られます。
また、クラスのデフォルトからAuto Run Default Actionにチェックを入れ、
関数のオーバーライドで呼び出したOn Default Action Checkedに
このような処理を記述することで、
アセットのダブルクリックからこの関数を呼び出すこともできます。
別のアセットを作成する
先程とは変わってActorActionUtilityを親にした、
ブループリントユーティリティを作成します。
こんな感じ。
こちらのアセットにはこのように処理を記述しました。
先程とほぼ同じです。
確認するには、
レベルに配置したアセットを右クリックするか、
アウトライナにあるアセットを右クリックしてください。
複数選択した際にも実行されました。
まとめ
Asset Action Utilityを親にした場合
・コンテンツブラウザのアセットを右クリックすることで、
CustomEventなどをエディタから呼び出せる
Actor Action Utilityを親にした場合
。レベルに配置したアセット、アウトライナにあるアセットを
右クリックすることで、Custom Eventなどをエディタから呼び出せる。