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

UE4のモバイル開発やアプリ開発をメインに紹介します!主に初心者から中級者向けに紹介していく予定。

UE4のプラグインProceduralTreeで木を生やす。

プラグインのProceduralTreeを試す!

今回は下のリンクの木を生成するプラグインを紹介します。

簡単に木を作るためのプラグインになります。

UE4バージョンは4.20.3を使用していきます。

gumroad.com

プラグインUE4で選択出来るようにする。

まずはプラグインデータを落としてくる必要があります。

冒頭で紹介しているリンクを開いて右側にある、

値段を入力してダウンロードします。

0を入力してダウンロードを行うことが出来ます。。。

gumroad.com

zip形式のファイルですのでそのまま回答してファイルを展開します。

展開が完了したらUE4プラグインのフォルダに設定します。

デフォルトとだとドライブの「Program Files\Epic Games\UE_4.20

の中にUE4のエディターが入っているフォルダがあります。

UE_4.20\Enterprise\Plugins\Editor」に展開したフォルダごと入れます。

f:id:yoshikata1990:20181020153525p:plain

フォルダにプラグインのデータを設置したら、

EpicGameLauncherを起動してプラグインをおいたバージョンのエンジンを、

起動してPluginウィンドウを開き正常に登録されていることを確認します。

正常に追加されているとInstalledに表示されます。

f:id:yoshikata1990:20181020163335p:plain

木を設置してStaticMeshとして書き出す

先程のプラグインをONにして再起動します。

ProcedualTreeはコンポーネントの扱いで追加されるため、

コンポーネントを追加」を選択して「ProceduralTree」を選択します。

コンポーネントのため、レベル上のアウトライナを選択してコンポーネントを追加する形になります。

f:id:yoshikata1990:20181020185831p:plain

追加すると木の形をしたモデルが作成されます。

この状態だと全然木には見えないです(´・ω・`)

f:id:yoshikata1990:20181020190604p:plain

コンポーネントを設置出来たら木にマテリアルを適応していきます。

木の幹にはスターターコンテンツをONにしているとデフォルトで入る、

「M_Wood_Walnu」を使用しています。

木の葉っぱについては下記のリンクにあるデータから落とします。

gumroad.com

展開したフォルダの「Content\EssentialTreeKit\BaseMaterial」内部にある、

Tree_Leafのデータを使用しています。

実際にマテリアルを適応するとこんな感じになります。

マテリアルのTree_Leafで木にしか見えなくなります(●´ω`●)

f:id:yoshikata1990:20181020211045p:plain

詳細パネルのGeneralから「CreateStaticMesh」でStaticMeshとして書き出せます。

もちろん葉っぱの数や枝の別れ方も変更出来ます。

f:id:yoshikata1990:20181020211628p:plain

スタティックメッシュのものとコンポーネントを並べてみました。

なぜかスタティックメッシュのほうが小さくなるので、サイズ調整が必要です・・・

f:id:yoshikata1990:20181020212735p:plain

まとめると最終的な工程としては下記のような形です。

1.プラグインUE4に適応する。

2.ProceduralTreeコンポーネントを設定し、マテリアルやコンポーネントを設定する。

3.葉っぱの数や幹の別れ方、木の曲がり方などを設定してスタティックメッシュとして書き出す。

各種パラメータを変更して形の違う木を作る。

このように木を生成するプラグインなどでは、

各種設定があり全く違う形の木を作ることができます!

まずGeneralで設定が可能なところを紹介します。

f:id:yoshikata1990:20181020215948p:plain

TrunkForksを増やすと木の高さを大きく出来たりします。

下記のような感じで高い木を作ることもできます(`・ω・´)

f:id:yoshikata1990:20181020220255p:plain

続いて木の枝の設定になります。

使うのはだいたいGrowthとSweepとInitial-lengthを使う感じです。

f:id:yoshikata1990:20181020222000p:plain

最後に幹関連のものになります。

幹の太さや幹の曲がりなどを色々試すと楽しいです!

f:id:yoshikata1990:20181020223435p:plain

【UE4】Niagaraを今更だけど試す!!

UE4Niagaraの使ってみよう(^o^)!

今まではエフェクトの作成でカスケードを使用してエフェクトを作成していましたが、

今回はNiagaraの構成やエフェクトの作成方法などをやってみます。

Niagara(ナイアガラ)とはどんなものなのか?

UE4ではカスケードとナイアガラでVFXを作成できます。

カスケードの場合、量子シミュレーションなどをハードコードで制御されているが、

ナイアガラの場合はノードグラフによって制御するため、

プログラマを必要とすることなくエフェクトを作成出来るように力を入れている機能。

※間違いがあったら指摘お願いしますm(_ _)m

ここからはNiagaraを実際に動作させてみようと思います。

UE4のバージョンは4.20.3を使用しています。

Niagara(ナイアガラ)のファイルを作る。

ここからNiagaraを作成していきます。

その前にNiagaraを使用する際、プラグインの設定を追加します。

niagara」で検索すれば表示されます。

f:id:yoshikata1990:20180923113327p:plain

Niagaraプラグインを追加することで、

詳細なアセット作成の欄に「FX」という項目が追加されます。

f:id:yoshikata1990:20180923113631p:plain

ここからは実際にNiagaraEmitter等を利用して作成して、

エフェクトを作成していきます。

アニメーションに合わせての粒子分解エフェクト作り

それでは実際に作っていきます。

今回は機能別サンプルのEffectsで使用されているキャラを、

あらかじめデータをプロジェクトに持ってきておきます。

f:id:yoshikata1990:20180924094124p:plain

続いてNiagaraのEffect1つ1つを設定出来るNiagaraEmitterと、

それぞれのNiagaraEmitterを管理するNiagaraSystemファイルを追加します。

加えて今回はキャラクターの位置に合わせて量子エフェクトが出るように、

する必要があるためNiagaraModuleScriptを追加しておきます。

f:id:yoshikata1990:20180924094141p:plain

エフェクトのEmitterの部分を設定していきます。

今回不要なAdd VelocityとAccelerationForceを削除します。

その後Spawn Rateを削除して、Spawn Burst Instantaneouを追加。

これは一度に指定した数だけレンダリングします。

f:id:yoshikata1990:20180924094223p:plain

そこまで完了したら今度はキャラクターのスケルタルメッシュに合わせて、

エフェクトを設定するためにパラメータを追加します。

Particles.SkeltalMeshというパラメータを設定します。

※Particlesの部分が違うと正常にParticlesとして登録できないので注意!

f:id:yoshikata1990:20180924094314p:plain

Particles.SkeltalMeshというパラメータを追加したら、

今回適応するキャラのスケルタルメッシュを指定します。

f:id:yoshikata1990:20180924094332p:plain

f:id:yoshikata1990:20180924094409p:plain

今度はNiagaraSystemの方にEmitterを適応します。

NiagaraSystemはEmitterを設定してレベルのアウトライナに設定したり、

アタッチする以外にNiagaraSystemから直接Emitterの数値をSystem用に、

変更することも可能です。

今回はTrackにエフェクトの動作を設定するだけになります。

f:id:yoshikata1990:20180924094447p:plain

スケルタルメッシュが更新されるたびに、

Emitterが発生する位置を更新する必要があります。

NiagaraModuleScriptを使用してスケルタルメッシュの位置を取得します。

ModuleScriptをEmitterの方から参照する時に分かりやすくするため、

カテゴリを設定しておきます。

f:id:yoshikata1990:20180924094927p:plain

カテゴリ設定が終わったらMapGetに「Particles.SkeltalMesh」を追加し、

MapSetに「Particles.Position」を追加して下記画像の様に、スクリプトを組みます。

f:id:yoshikata1990:20180924094942p:plain

組み終わったら、Emitterにスクリプトを適応します。

Particle Spawnの「+」ボタンを押して、

作成したスクリプトを選択して追加します。

f:id:yoshikata1990:20180924095035p:plain

ここまで完成すればキャラクターのアニメーションに合わせた、

粒子エフェクトが出るようになり、こんな人形になれば問題ありません。

f:id:yoshikata1990:20180924095057p:plain

キャラクターに合わせてだけだと寂しい感じがしたので、

Particle Updateの「+」ボタンを押してCurl Noise Force」を選択します。

f:id:yoshikata1990:20180924095144p:plain

Curl Noise Forceは3軸で強さに応じてエフェクトを霧散出来るので、

色々使えるかと思います。

最後に、作成したNiagaraをキャラクターにアタッチします。

キャラクターはスタティックメッシュしかないので、

ブループリント化していただき、

下記のようにBPを組めば1秒ごとにエフェクトをアタッチしてくれます。

※このBPはテストで作ったものなので、タイマーに変えてあげてください。

f:id:yoshikata1990:20180924095201p:plain

完成すると下のように下の画像のようになります。

f:id:yoshikata1990:20180924095530p:plain

細かく調整するとTwitterで公開している下のような形になります。

Niagara(ナイアガラ)をやってみての感想

プログラムの編集とかはなくすべてノード形式で作れるのと、

簡単にきれいな粒子エフェクトが作れるのでとてもいいと思いました!

今回は以上です!ありがとうございました!!

【UE4】メッシュエディターモードを試す。

UE4でメッシュの処理を編集する。

UE4の4.20でStaticMeshの編集がモードで可能になったので、

今回はそちらを試していく。

UE4のバージョンは4.20.2になります。

メッシュエディターモードに追加する

MeshEditorをONにする場合、コマンドを入力する必要があります。

アウトプットログを常時出しているので、

アウトプットログをから「MeshEditor.Enable」と入力します。

MeshEditと入力すれば下記の様に検索で引っかかります。

※MeshEditについてはプロジェクトを閉じるたびに閉じるので気をつけてください。

f:id:yoshikata1990:20180825124510p:plain

入力が完了したら、モードにタブが追加されるかと思います。

下記のタブが表示されれば問題なくモデルを編集できると思います。

f:id:yoshikata1990:20180825130219p:plain

編集できる項目の説明について

各種項目で出来ることを紹介します。

※すべての項目の説明までは行っていません。

 使用頻度が高くなりそうなものを説明します。

Mesh選択時

AddSubdivisionLevel

→ 選択しているメッシュに対してサブディヴィジョン化する。

RemoveSubdivisionLevel

→ 上の逆の動作を行う。

Quadrangulate

→ メッシュ全体の面を四角面化する。

Polygon選択時

Move

→ 指定したポリゴンを移動させる。

DrawVertices

→ 頂点を追加する

Bevel

→ ベベル

Inset

→面の差し込み

Extrude

→押し出し

Split

→分割

AssignMaterial

→指定したポリゴンだけ別のマテリアルを適応する。

実際にモデルを編集する。

設定が完了したらエディットモードタブを選択した状態で、

レベル上のスタティックメッシュを選択することで編集できます。

いろいろ試すと下のTwitterみたいにいろんな形にできます(^o^)

3DCoatのトライアルを試してみる。

3DCoatを触ってみる。(`・ω・´)ノ!

今回夏休みに入ったため、1ヶ月間のトライアルを使っています。

簡単な使い方と使ってみた感想を少し書こうかなと思います。

そもそも3DCoatってどんなことができるの?

3DCoatは高機能のスカルプトでモデルを作るソフトウェアです。

Zbrushなどのその他スカルプトツールよりも安価でリポトロジーを行える。

※大きな特徴とかはウィキペディア見たほうがわかりやすいと思います。

3D-Coat - Wikipedia

早速モデリングをやってみる。

3DCoatでは主に大きな役割をしている5つのエディタ画面があるのかな?

f:id:yoshikata1990:20180816164900p:plain

3DCoatの流れはボクセルでモデリングをしてリトポロジーを行い、

その後UVをしてペイントしていくっていうのが主な流れです。

とりあえずボクセルでモデリングしてみます。

 スケッチというものを使用して、とりあえず形をつくってみた。

f:id:yoshikata1990:20180817130551p:plain

とりあえず形だけなら、スケッチ機能で作ることができます!

もう少し頑張りたい・・・(・_・;)

今後もっと操作を覚えて説明できるようになっていけたらと思います。

 

【UE4】Ver4.20でProxyGeometryToolとHLODを合わせて試す!

UE4の4.20出ました~('ω')ノ

ついに正式リリース版として、4.20がリリースされました。

モデル編集だったり、IRサンプルなどのサンプルが充実したり、

いろいろな箇所が変化しました。

今回はアクターの結合を行ったり、新規LODを作成することで、

ドローコールを減らして最適化する際に利用される、

ProxyGeometryToolを紹介していけたらと思います。

ProxyGeometryToolはどういうことができるのか?

上のほうのタイトルでも少し話をしましたが、

ゲームを開発していく上で複数のアクターなどを、

配置したりする必要が出てくる時があるかと思います。

その際に複数のActorを結合して、新しいLODを作成したり

テクスチャ・マテリアルなどをまとめること負荷を軽減する。

ProxyGeometryではSimplygonと同じようなことを行えるようになっています。

SimplygonについてはこちらのURLで確認してみてください!

www.unrealengine.com

ProxyGeometryToolでマージアクターを試す

まずはProxyGeometryToolでマージアクターを試してみます。

UE4.20からProxyGeometryToolのマージアクターがデフォルトで使えます。

下の絵のStaticMeshをProxyGeometoryToolでマージしてみます。

頂点は合計で53万頂点程あります。

こちらをあらかじめレベル内に配置しておきます。

f:id:yoshikata1990:20180727061524p:plain

まずウィンドウのデベロッパーツール>マージアクタを選択します。

f:id:yoshikata1990:20180724233717p:plain

アクターをマージするための画面が出るので、

その中の真ん中のアイコンを選択します。

アウトライナ内に配置した先ほどのスタティックメッシュアクターを選択します。

f:id:yoshikata1990:20180727062922p:plain

これで右下にあるアクタをマージを選択すればマージできます。

マージしたした後と前のモデルを比べてみます。

頂点が3408まで低下しています。

f:id:yoshikata1990:20180727232808p:plain

頂点の多いスタティックメッシュやパーツがバラバラになっているものを、
まとめることでドローコールを削減したりすることもできるので、

多くのメッシュのアクターを呼び出してると感じたら、試してみてください。

実際にProxyGeometryToolで結合したものと結合前のパーツ全部並べた状態です。左が53万の頂点で右が3,408頂点になっています。

f:id:yoshikata1990:20180728004803p:plain

HLODでProxyGeometryを試してみる。

先ほどはアクターマージで行いましたが、

今度はHLODを使用した方法を行ってみようと思います。

まずはプロジェクト設定でHLODのメッシュ削減用のプラグイン設定します。

「hie」と検索すると「Hierarchical LOD Mesh Redution Plugin」が出る。

こちらを「ProxyLODMeshReduction」を選択します。

f:id:yoshikata1990:20180728161054p:plain

 プロジェクト設定が完了したら、ワールドセッティングから、

「Enable Hierarchical LOD System」をONにします。

※補足:

f:id:yoshikata1990:20180728165935p:plain

ウィンドウから階層LODアウトライナーを選択して、

「Hierarchical LODSetup」のHLODレベル内部にある「SimplifyMesh」にチェックを入れておきます。

※こちらにチェックを入れないとProxyを使用したLODになりません。

f:id:yoshikata1990:20180728175057p:plain

作成が完了すると、LODのレベル表示がある箇所に、

どれぐらい削減されているのかと元の三角ポリゴン数が表示されます。

今回は93456から1402まで削減できています。

f:id:yoshikata1990:20180728195303p:plain

実際にLODで表示したものがこちらになります。

LODを行う前(三角ポリゴンで93456)

f:id:yoshikata1990:20180728200946p:plain

LODを行う前(三角ポリゴンで1402)

f:id:yoshikata1990:20180728200249p:plain

遠目で見るとある形にほぼ変化がわからない感じになります。

微調整をすればもっときれいになります。(マテリアルとかLODの精度など)

LODのモデルについては階層LODアウトライナーのSaveAllから保存ができ、

Mapと同様の箇所にHLODというフォルダが作成されてそこに保存されます。

f:id:yoshikata1990:20180728201347p:plain

HLODを使用したProxyLODの使用方法については以上になります。

その他、UE4.20で行えるようになったこと

下のリンクで4.20の行える設定が増えています。

LODを深く知るためにも後で見ておこうと思います。

ImprovingNormals(法線の設定)

https://docs.unrealengine.com/en-US/Engine/ProxyGeoTool/ImprovingNormals

NormalCalculationMethod(ノーマルの計算方法)

https://docs.unrealengine.com/en-US/Engine/ProxyGeoTool/NormalCalculationMethod

FillingGap(遠目で見たときに内部を閉じるような設定)

https://docs.unrealengine.com/en-US/Engine/ProxyGeoTool/FillingGap