[UE5.3.2][Cloth][Python]UE5.3でClothがPythonでどこまでさわれるかの調査

https://docs.unrealengine.com/5.3/en-US/PythonAPI/search.html?q=Cloth

より抜粋して調査。


★★★unreal.SkeletalMesh★★★

  • cloth_lod_bias_mode(クロスLODBiasMode): [読み取り/書き込み]
  • mesh_clothing_assets(配列[ Cloth ingAssetBase]): [読み取り/書き込み]

is_section_using_cloth ( Section_index , check_corresponding_sections = True ) → bool_

提供されたセクションが APEXクロスを使用しているかどうかを確認します。 bCheckCorrespondingSections が true の場合、無効なセクションは、クロスが使用されているかどうかを確認するために対応するセクションを延期します (クロス以外のセクションは無効になり、クロスが有効な場合は別のセクションが追加されます。このフラグを使用すると、元のセクションのチェックが成功します)。

プロパティ Mesh_clothing_assets :なし _

[読み書き]タイプ:(配列ClothingAssetBase ])

★★★unreal.SkeletalMeshComponent★★★


allow_cloth_actors(bool): [読み取り/書き込み] クロス シミュレーションの作成を切り替えます。オフの場合、シミュレーション ステップをスキップするだけでなく、アクターの割り当てを完全に回避する点で、以下のシミュレーション トグルとは異なります。


cloth_blend_weight(浮動小数点): [読み取り/書き込み] シミュレーション結果とキーフレーム位置の間でブレンドするウェイト。ウェイトが 1.0 の場合、クロス シミュレーション結果のみが表示され、0.0 の場合はスキンされた結果のみが表示されます。

cloth_max_distance_scale(浮動小数点): [読み取り/書き込み]

clothing_simulation_factory(type(Class)): [読み取り-書き込み] を担当するオブジェクトのクラス


disable_cloth_simulation(bool): [読み取り/書き込み] クロス シミュレーションを無効にし、シミュレーションなしでオリジナルのアニメーションを再生します。


update_cloth_in_editor(bool): [読み取り/書き込み] true の場合、エディターでクロスを再生します


wait_for_parallel_cloth_task(bool): [読み取り/書き込み] クロス シミュレーションが完了するまで、クロス ティック タスクを停止するかどうか。これは、ゲーム スレッド上で最新のクロス データが必要な場合、たとえばクロスの頂点でパーティクルを生成したい場合に必要です。


▶プロパティ allow_cloth_actors : bool
[読み取り/書き込み] クロスシミュレーションの作成を切り替えます。オフの場合、シミュレーション ステップをスキップするだけでなく、アクターの割り当てを完全に回避する点で、以下のシミュレーション トグルとは異なります。


binding_cloth_to_leader_pose_component ( ) → なし
このコンポーネントに有効な LeaderPoseComponent がある場合、この関数は、個別にシミュレーションするのではなく、フォロワー コンポーネントのクロス アイテムにリーダー コンポーネントのクロス アイテムの変換を適用させます。注: これにより、リーダー コンポーネント上のすべてのクロス アクタがローカル スペースでシミュレートされます。また、クロスを正しくバインドするには、コンポーネントで使用されるメッシュが同一である必要があります。


binding_cloth_to_master_pose_component ( ) → なし
非推奨: 「bind_cloth_to_master_pose_component」は「bind_cloth_to_leader_pose_component」に名前変更されました。


▶プロパティ cloth_blend_weight : float
[読み取り/書き込み] シミュレーション結果とキーフレーム位置をブレンドするウェイト。ウェイトが 1.0 の場合、クロス シミュレーション結果のみが表示され、0.0 の場合はスキンされた結果のみが表示されます。


▶プロパティ cloth_max_distance_scale : float


▶プロパティ disable_cloth_simulation : bool
[読み取り/書き込み] クロスシミュレーションを無効にし、シミュレーションなしでオリジナルのアニメーションを再生します


Force_cloth_next_update_teleport ( ) → なし


UpdateClothState への次の呼び出し中に強制的に「テレポート」する必要があることを示すために使用されます。これにより位置と速度が変換され、シミュレーション状態が維持され、新しいポーズに変換されるだけです。


force_cloth_next_update_teleport_and_reset ( ) → なし


UpdateClothState への次回の呼び出し中に「テレポートとリセット」を強制する必要があることを示すために使用されます。これは、悪い状態からリセットしたり、古い状態が重要でなくなった場合にテレポートによってリセットしたりするために使用できます。


get_allow_cloth_actors ( ) → bool
許可されたクロス アクターを取得する

get_cloth_max_distance_scale ( ) → float
衣服メッシュの頂点の最大距離スケールを取得/設定します


get_clothing_simulation_interactor ( ) → ClothingSimulationInteractor
現在のシミュレーションがランタイム インタラクションをサポートしている場合は、衣服シミュレーションの現在のインタラクターを取得します。


is_clothing_simulation_suspended ( ) → bool
服装シミュレーションが現在一時停止されているかどうかを取得します。


unbind_cloth_from_master_pose_component ( restore_simulation_space : bool = True ) → なし
非推奨: 「unbind_cloth_from_master_pose_component」は「unbind_cloth_from_leader_pose_component」に名前変更されました。

▶プロパティ wait_for_Parallel_cloth_task : bool

[読み取り/書き込み] クロス シミュレーションが完了するまで、クロス ティック タスクを停止するかどうか。これは、ゲーム スレッド上で最新のクロス データが必要な場合、たとえばクロスの頂点でパーティクルを生成したい場合に必要です。

★★★unreal.ChaosClothComponent★★★ 

  
▶プロパティ cloth_asset : ChaosClothAsset


get_cloth_asset ( ) → ChaosClothAsset
このコンポーネントで使用されるクロス アセットを取得します。


set_cloth_asset ( clothes_asset ) → なし

このコンポーネントで使用されるクロス アセットを設定します。

★★★unreal.ClothingSimulationInteractor★★★


clothes_config_updated ( ) → なし

シミュレーションを再起動せずにクロス構成を更新するために呼び出されます。


★★★unreal.ClothingAssetCommon★★★


ソルバー固有の実装では、このクラスをオーバーライドして、c Cloth SimConfig や c CustomData などの子クラスの独自のデフォルト インスタンスを構築したり、c AddNewLod() ファクトリをオーバーライドして c UClothLODDataBase の独自の実装を構築したりすることができます。


▶プロパティ cloth_configs :なし
[読み取り専用] シミュレーション固有の布パラメータ。 GetClothConfig() を使用して、目的の布地シミュレーション システムの正しいパラメータ/構成タイプを取得します。

タイプ:
(マップ[名前,クロスConfigBase ])
エディターのプロパティ: (get_editor_property/set_editor_property を参照)

cloth_configs(Map[Name, Cloth ConfigBase]): [読み取り専用] シミュレーション固有のクロス パラメータ。 GetClothConfig() を使用して、目的の布地シミュレーション システムの正しいパラメータ/構成タイプを取得します。

imported_file_path(str): [読み取り専用] このアセットがファイルからインポートされた場合、これが元のパスになります

physics_asset(PhysicsAsset): [読み取り/書き込み] シミュレーションを構築するときに衝突を抽出する物理アセット。

★★★例えばSampleコードを書いてみる★★★

unreal.SkeletalMesh.disable_cloth_simulation=True#クロス シミュレーション計算を有効に
unreal.SkeletalMesh.allow_cloth_actors=True#クロスシミュレーション作成Createへ切替え
mesh_clothing_list = unreal.SkeletalMesh.mesh_clothing_assets

・「Add Clothing」ボタンでも基本的に別のメッシュのClothingDataをApplayすると、Apply時に、Failed Bind Cloth Assetでエラーがでます。
E:/SandBox/jennie9UE532/jennie9UE532/Content/Developers/notsuka/EUB_ClothTool_AssetAction.uasset
・Mesh Clothing Assetsの配列のコピーというより参照変えはできましたが、そのあとApplyすると

Failed to bind clothing asset
Plane_Clothing_O_myCloth as the provided mesh is not the owner of this asset.
衣類アセットのバインドに失敗しました
Plane_Clothing_O_myCloth は、提供されたメッシュとしてこのアセットの所有者ではありません。


となりました。

・現存の「Add Clothing」ボタンと変わらないかそれ以下な結果となりました。
・また配列を参照変えでなくコピーにできないかも研究しましたが今回の「Mesh Clothing Assets」の型が「Add To Variable(変数化)」できない部分が問題でコピーできませんでした。

[Unreal Engine 5.3.2] Create a Cloth Simulation の使い方と流れ

unreal engine 5.3.2 create a cloth simulation How to use and flow

UnrealEngine5.3.2のCloth Toolの使い方と流れ。

0,再生ヘッドは止めておくべき
1,該当のマテリアルを Isolate でシングル表示後に
2,メッシュ右クリックからData >Create 


3,Window>Clothから作られた>Dataを選択
4,「Activate Cloth Paint」押す


5,ピンクになる Cloth WindowのBrushプロパティでる。


6,Cloth WindowのBrush> Radias 15.0程度に
7,Clothで動かしたいところをを白に塗る
8,「Deactivate Cloth Paint」押す 
9、メッシュ右クリック>Apply Clothing Dataでできる。
9,Preview Animation▼でWalkやRunで確認 再生ヘッドを再生する
10,SkeltalMesh保存
11,PhysicsAssetを開く
12,Details>BodySetup>Primitives>Capsules>Index[0]>
13,Radiusを減らす
14,Rotationも合わせる
15,PhysicsAssetを保存
16,Preview Animation▼でWalkやRunで確認
17,SkeltalMesh開きなおしでPhysicsAssetの修正が反映される様子。

別のメッシュからCloth Dataをコピーするには?

1,Add Clothing で追加できる。

2,9、メッシュ右クリック>Apply Clothing Dataでできる。

修正する場合の使い方と流れ


1,該当のマテリアルを Isolate でシングル表示後に
2,メッシュ右クリックからRemove Clothing Data する。>>必要はない。
3,(4,「Activate Cloth Paint」押す )からの流れをやり直す

・マテリアルが透明のTranslusentだとピンクが表示されないことがある。青に塗ると色が混ざって緑とかになる。
・メッシュの割りsubDivisionLevelは多くないと成功するものも成功しない。
・ClothのDeactiveClothPaintはすごく処理が重い。


・処理の早いマシンでならMarvelous Designerで作ったメッシュでもなんとか塗れる。


・Marvelous Designerで作った複雑なプリーツなどは再現されにくい。


・Runで前にあるスカートは太ももで蹴り上げてしまうので、ポリゴン数は少なめのほうがいいかも、割りは多い方がいいのでバランスが重要


・今回成功した前面の割りはこんなもの。

困った場合に成功したスカートだけのポリゴンデータを載せておく

Skirt_Short_Cage2_Middle_Koshi.fbx これだけダウンロードできます。

https://drive.google.com/file/d/18SzHq33gl-FMdSjuai_5FXDudgZiWxQc/view?usp=sharing

成功した状態

参考URL

自分用リンク

jennie9_6_v12z_v00145_4JacketMiniSkirt_CageSizeedSW.zip

https://drive.google.com/file/d/1KGYQ4AlubC05BAtDRw5o5UKXlnh_XNwg/view?usp=sharing

jennie9UE532.zip

https://drive.google.com/file/d/156VO3HnXSrQEzEfB9UHOAPO3Q82FoZbl/view?usp=sharing

エラー集

DataでCreateでのエラー

三角形が縮退しているため、衣類シミュレーション メッシュの生成に失敗しました。三角形内に一致する頂点が見つかりました
Failed to generate clothing sim mesh due to degenerate triangle, found conincident vertices in triangle

とか言われたらクリーンアップしてバインドしなおしになっちゃう。。。

https://forums.unrealengine.com/t/failed-to-generate-clothing-sim-mesh-due-to-degenerate-triangle/94634/2

おそらく頂点が別の頂点の上に重なっていることを意味します。Blender では、Remove Doubles を実行してこれを修正します。

Remove Doublesは名前がMerge by Distanceに変わっただけです。

治らない。。。。

こうも書いてあった。

「出力単位をメートルではなくセンチメートルに変更してみてください。」

ミリメートルに変更した!

治った。

でも、できたのは後ろ髪だけ。

ほかはFailedなので作り直しが必要だった。MayaではNurbs CircleをLoftで全部作れた。

自分用 Hair_Furcraea_Plant_NurbsLoftV2.zip

https://drive.google.com/file/d/1ByJfw5QSSNDOQsdk_q9LjZPVS-n5bnEb/view?usp=sharing

Clothでひとふさずつ動かそうとしたらひどかった ボリュームがなくなった。つぶれた。

これならばKawaiiPhysicsのほうがいいかも?

と思ったが全体をやってみた。ボリュームは確かになくなるけど、ある程度形状は保っている感じ。いいのかもこれで。

ということで髪の毛全体テスト

自分用 Hair_Furcraea_Plant_NurbsLoftV3.zip

https://drive.google.com/file/d/1z4aipUFdHk19qCcrBb9bWvsf3KpWvlG9/view?usp=sharing

できたのがこれ ちょっとつぶれるし伸びた印象

でキャラごとmmで出力したけど

Preview Animationするとすごいちっさくなった。キャラBPで拡大すればいいでしょとおもっていたらそれは問題無い様子。

Dataを作り塗ることができた。Falloffは1.0にするともっとなだらかになるはず。

けども。DeactiveClothPaint後の様子がすごいバグ。

わーん

ということでmmにしてもキャラクターだとエンジンのサイズ計算がバグってますので使わないことにしました。

フォーラムに投稿しました。

https://forums.unrealengine.com/t/failed-to-generate-clothing-sim-mesh-due-to-degenerate-triangle-found-conincident-vertices-in-triangle/1678556

mmでは調整したスカートも壊れる

単位はcmにして後ろ髪はCloth 、前髪、左髪、右髪はスキンウェイトかKawaiiPhysicsにしておわりだなこりゃ。

完成2

ゲームでの再生

自分用 jennie9_6_v12z_v00148_HairFurcraea_mmSW.zip

https://drive.google.com/file/d/1FDRjjub_SM___Yb-u_kv5cwspP-1NdVf/view?usp=sharing

自分用 Hair_Furcraea_Plant_NurbsLoftV7_FullLoft.zip

https://drive.google.com/file/d/1pnZHcPUl-wykW3DBE_RcYHBIJ2Ks2N4-/view?usp=sharing