アルゴンUE4/UE5&アプリ開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE5】GeometryScriptで各種モデルを作ってみる。

GeometryScriptを試してみる(*'▽')

今回はDynamicMeshをBPやC++などで編集できる、

実験段階のプラグインとして用意されているGeometryScriptを試します。

少し前に本家の方の動画で紹介されています。

こちらの動画がとても参考になるのでこちらもぜひ見てみてください。

プラグインの有効と準備

まずはプラグインを有効にします。

Geometry Sc」で検索するとGeometry Scriptが表示されるのでオンにします。

Geometry Scriptをオンにする

GeometryScriptをオンにしたら今度はGeometryScript用の、

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

親クラスをGenerated Dynamic mesh actorを選択します。

すべてのクラスの検索から「generate」で検索すると出ます。

GeneratedDynamicMeshActorを作成

これで準備は完了です。

ここからGeneratedDynamicMeshActor内に処理を作っていきますが、

続いては中でどのようなことを行うのか説明していきます。

・目次に戻る

各種関数と何を行うかの簡単な説明

まずはどのようなイベントを使ってどのように生成するか説明します。

GeometryScriptではメッシュを編集したりコンパイルした時に呼び出される、

Rebuild Generated Meshイベントを使用します。

※注意※ TargetMeshはStaticMeshではなくDynamicMeshになります!

このDynamicMeshに処理を設定していくことで形を作成します。

イベントの作成

このイベントだけだと何も表示されないのでDynamicMeshに箱を追加してみます。

イベントグラフ上を右クリックしてGeometryScript欄のPrimitives項目の、

AppendBoxを選択します。

GeometryScriptの設定

選択するとAppendBox関数が出るのでTargetMeshに、

On Rebuild Generated meshのTargetMeshにつなげます。

AppendBoxで箱追加

一旦このBPをレベル上に配置してするとレベル上に箱が表示されます。

これはAppendBoxのMeshが表示されている状態になります。

本来は当たり判定をつけたりBooleanやNormalなどで形をつけて、

自分の思い通りの形にすることを主としているのでいろいろ試してみてください。

※AppendBox以外に階段や螺旋階段・コーンなど様々なものが用意されています。

AppendBoxで追加したBoxの表示

それから一時的にDynamicMeshを生成して活用することが、

いろいろやっていると多々発生します。

その際に活用するのが「AllocateComputeMesh」になります。

ただAllocateComputeMeshは独自のメモリを割り当てているので、

最後には解放する必要があります。

解放用にReleaseComputeMeshなどの関数が用意されています。

確保と解放用のノード

基本的に知っておく情報は以上になります。

上記や他のモデルを加工する関数を用いて実際に例を作成します。

・目次に戻る

簡単な階段の作成

ここからは実際に階段などを作成します。

まずは階段用処理を作成します。

階段を動かしたときに使用する変数を作成します。

階段の角の位置・段の高さ・段の深さ・階段の段の数の変数をそれぞれ作ります。

階段用のそれぞれの変数

実際に処理を作成していきます。

まずは上記変数を使用した階段のモデル作成部分になります。

階段を作成するGeometryScriptの情報

上記の処理だけで階段のモデルを作成することは可能です。

ただ、これだけだとモデルに当たり判定がないので下記の処理で、

シンプルな当たり判定を付与します。

シンプルな当たり判定の処理

以上で簡単な階段を作成する処理については以上になります。

実際に設定してレベル上で動かしたものは以下になります。

・目次に戻る

簡単な壁枠の切り抜き

今度はBooleanの機能を駆使してモデルを作成してみます。

まず処理に使用する変数を用意します。

削る形状のメッシュ・箱の大きさの位置・切り抜かれるモデルの位置を作成します。

各窓枠用の変数

実際に処理を作成します。

まずは切り抜かれる方のモデルをAppendBoxで追加。

切り抜かれるボックスの追加

続いてStaticMeshがある場合に上記で説明した一時的なDynamicMeshに、

StaticMeshの情報をコピーしてあげます。

コピーした後にApplyMeshBooleanで先ほど作成したBoxとの差分を生成します。

※切り抜かれる位置をTransformで指定してOperationをsubstractに指定してます。

StaticMeshをDynamicMeshにコピーするのとBooleanの処理

最後にAllocateComputeMeshを使用しているのでRelleaseAllComputeMeshesで、

解放してあげれば完了となります。

Allocatecomputemeshの開放

実際に作成されたものは以下になります。

・目次に戻る

最後に

今回紹介したものは本当にごく一部の機能なので、

Textureを用いて何かを行ったりすることもSprineを使用して何かを配置することも、

可能になっているのでぜひぜひ様々な活用方法を見出していただければ幸いです。