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

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

【UE4】クロスツールの使い方とやり方まとめ

クロスツールの説明

UnrealEngineではNvClothソルバーという形で、

布などの表現の設定が出来る仕組みがあります。

下記リンクのリファレンスにて詳しく記載されています。

※今回はUE4.18で試してみました。

docs.unrealengine.com

クロスツールを使用するにあたっての準備

クロスツールを試す前にまず準備するものがあります。

  1. スケルタルメッシュ(ボーンとウェイト・UVをつけておく)
  2. スケルタルメッシュにクロスシミュレーションをしたAPXファイル

上記2つを必要とします。

スケルタルメッシュの作成

Blenderでボーンを入れて、ウェイトも入れておきます。

UVは一面だけつけています。

右の画像がウェイトをつけたときの画像です。

f:id:yoshikata1990:20171104170733p:plainf:id:yoshikata1990:20171104170814p:plain

今回はこちらの説明はメインではないのではないので割愛します。

あとはFBXファイルで書き出せば完了になります。

APEXのClothToolPROFILEでAPXファイルの作成

行う作業の順番は下記の通りです。

  1. 先ほど作成したFBXのモデルデータを読み込む
  2. シミュレーションする面・頂点をペイント
  3. シミュレーションを実行して、ファイルを書き出す

まずAPEX-SDKをダウンロードします。

https://developer.nvidia.com/gameworksdownload#?dn=physx-apex-sdk-1-3-0

ダウンロードが完了したら、zipファイルをどこに書き出すか指定します。

f:id:yoshikata1990:20171104174038p:plain

作成されたZipファイルを解凍して、

そのフォルダ内のbin→vc10win32-PhysX_3.3のフォルダまで移動します。

その中のClothingToolPROFILE.exeを起動します。

起動したら右上のFile→Load Meshを選択します。

f:id:yoshikata1990:20171104190206p:plain

そうすることで、モデルを読み込むことができます。

PaintingをMax Distanceを選択します。

Edit → View → Painting Visibleを選択しておくことでブラシを適応した箇所を分かりやすくします。

Update Tangent Spaceもクリックしてください。

最初はワイヤーフレーム紫色で表現されています。

f:id:yoshikata1990:20171105080904p:plain

最初自分でやった時カメラを回せなかったり、いろいろ苦労したので、

操作方法だけ軽く説明します。

  • Paint:ペイントする際の適応する強弱
  • Scale:シミュレーションする強度
  • Falloff:範囲の絞り
  • Radius:適応する円の広さ
  • Alt+ドラッグ:カメラ回転
  • Alt+右クリックドラッグ:拡大・縮小

f:id:yoshikata1990:20171105074001p:plain

シミュレーション用のペイントを施すことで白くなります。

白い部分は布の表現を適応されることになります。

白い円はマウスオーバーすると表示される、

シミュレーションペイントの範囲になります。

f:id:yoshikata1990:20171105073534p:plain

問題なければSingle Layerd Clothタブを選択してStart Simulationを選択

f:id:yoshikata1990:20171105080710p:plain

下記のようにシミュレーションが正常に動作していれば問題ありません。

f:id:yoshikata1990:20171105081923p:plain

シミュレーションの設定も各種あるので、そちらも紹介します。

  • EnableWind:風の設定。下のパラメータで方向と強さを変える。
  • Groundplane:最初の状態だと地面が生成された状態になります。

問題がなさそうならSave Selectedを選択してAPXファイルを作成します。

f:id:yoshikata1990:20171105085242p:plain

UE4でClothツールを使ってみる

UE4に先ほど作成したモデルをインポートします。

すべてをインポートでボーンなどすべてインポートします。

f:id:yoshikata1990:20171105100858p:plain

それが完了したらスケルタルメッシュの編集画面を開き、

APXファイルを適応します。

+ボタンからインポートできます。

インポートが完了すると下記のようにClothingDataに反映されます。

f:id:yoshikata1990:20171105101049p:plain

設定ではこれで完了ではなく、

LODの部分にAPXファイルを適応してあげます。

これでスケルタルメッシュにクロスのデータを付与することが出来ます。

f:id:yoshikata1990:20171105101559p:plain

UE4のほうでActive Cloth Paintで布ができます。

Clothingタブのウィンドウの一番下にある、Brushで可能です。

一つ上のToolSettingで塗る濃さを変更して、

赤枠で囲っている箇所で塗る箇所の大きさ、強さを変更します。

f:id:yoshikata1990:20171105101353p:plain

設定が完了したら、

Active Cloth Paintを再度選択し解除してから保存します。

※解除しないとメッシュが正常に表現しなくなります。

それから、布っぽい表現になっているか確認するために、

wind Directional SourceをLevelに配置します。

f:id:yoshikata1990:20171105103453p:plain

風の角度は横に向けると分かりやすくなります。

方向を斜め右にしています。

f:id:yoshikata1990:20171105105416p:plain

動かすと下記のTwitterのように動けば動作はできているかと思います。

以上がクロスシミュレーションの対応になります。

今後もう少し実用的に作ってみようと思います。

【UE4】アセットOver9000Swordを改良して斧を作る

簡単なアセットの改良の紹介

今回はOver9000のアセットを少し改良して、斧を作りたいと思います。

※有料のアセットで、アセットを購入した人だけが対象です。

アセットのリンクはこちら↓

www.unrealengine.com

1.プロジェクトにアセットを追加

プロジェクトにアセットを追加します。

EpicGamesLauncherのライブラリ、

マイダウンロードから「プロジェクトに追加」を選択して追加します。

f:id:yoshikata1990:20170928225216p:plain

プロジェクトに追加が成功すると

「ModularWeapons」というフォルダが追加されます。

これでプロジェクトへの追加は完了です。

f:id:yoshikata1990:20170928230859p:plain

2.アセットの中身の改良

ModularWeaponsのフォルダ内にまた数々のフォルダがあります。

Dataフォルダの中にあるWeaponDataブループリントを改良します。

f:id:yoshikata1990:20170928231351p:plain

WeaponDataでは「武器のパーツ」・「マテリアルのセット(色)」

「マテリアルインスタンスデータ」配列として管理しています。

まず斧の武器パーツを追加して斧を表示します。

詳細にWeaponDataという項目の中のWeaponParts配列にデータを追加する。

f:id:yoshikata1990:20170929070111p:plain

データの中身は下記のようになっています。

・WeaponTypeName → 作成する武器の名前

・PartPrefix → WeponTypeNameで集約されるパーツの名前

・Mesh → パーツで表示するスタティックメッシュ

・WeaponParts配列で武器の原型を作成しています。

次にマテリアルインスタンス用のデータ配列を作成します。

「WeaponParts」・「MaterialSets」・「WeaponTypes」の中にある、

WeaponTypesがマテリアルインスタンス等の制御をしています。

追加である+を押してWeaponTypeの配列を追加します。

f:id:yoshikata1990:20170930022434p:plain

追加が完了したら下記の形でマテリアル情報を追加します。

WeaponTypeNameは変わらず「axe」を選択

その下の「MaterialSlotType」と「MaterialSlotParamName」

を下記の画像と同じように設定します。

MaterialSlotTypes → 各マテリアルのタイプ

MaterialSlotParameterName → 各マテリアルインスタンス用のパラメータ

※こちらの設定をしないと斧が表示されません。

f:id:yoshikata1990:20170930021659p:plain

3.テストで配置してみる

ここまでできたら一旦実際にそれを置いてみます

武器を実際に表示するのはModularWeapons→Blueprints

のフォルダを選択します。

その中にModularWeaponドラッグアンドドロップで表示します。

ModularWeaponというブループリントが武器を表示するものになります。

f:id:yoshikata1990:20170930011608p:plain

ドラッグ&ドロップすることでレベルに配置されます。

詳細パネルのModularWeaponので斧が表示されるように設定します。

f:id:yoshikata1990:20170930012921p:plain

WeaponDataのWeaponCodeを設定することで表示します。

形式は下記になります。

※ WeaponTypeName:PartsName[配列番号]_PartsName[配列番号]:マテリアル名_マテリアル名

:でパーツとマテリアルの区切りを作成しています。

今回はWeponTypeNameをaxe、各パーツ名をbladeとhiltと設定しているので下記のようになる。

※axe:blade0_hilt0:iron_iron

WeaponCodeを生成できたらGenertionOptionalにチェックマークを付ける。

これでレベルのほうに反映されて表示されるようになる。

f:id:yoshikata1990:20170930015904p:plain

無事、斧として表示するかと思いますが、

マテリアルが最初から設定されていないので斧が出ただけになります。

あとはマテリアルを斧のスタティックメッシュに登録すればいいです。

4.マテリアルの設定・最終確認

斧のパーツにマテリアルを適応していきます。

斧のパーツは、ModularWeaponsのフォルダ内にある、

GameExample(サンプル置き場)→ Meshs → Axesに格納されています。

f:id:yoshikata1990:20170930024617p:plain

こちらのスタティックメッシュにマテリアルを対応します。

スタティックメッシュのファイルをダブルクリックして、

編集画面を開き、MaterialSlotにマテリアルを適応します。

下記は斧の刃になる箇所のマテリアルを選択します。

Ml_Sword_blade_01を選択します。

f:id:yoshikata1990:20170930025227p:plain

持つ場所にはMl_Sword_Hilt_06を選択します。

f:id:yoshikata1990:20170930025428p:plain

これで準備はすべて完了です。

再度ビルドしてみて、マテリアルが適応されれば完成です!

お疲れさまでした!!

f:id:yoshikata1990:20170930025944p:plain