75 は行数だ。
デフォルトはこれくらいの量しか表示できない
@stat anim

@stat MaxPerGroup 75と打つと。。。


これぐらいになる↓

75 は行数だ。
デフォルトはこれくらいの量しか表示できない
@stat anim

@stat MaxPerGroup 75と打つと。。。


これぐらいになる↓

エンジンのソース
エンジンのFAnimNode_SkeletalControlBase クラスを見てもわかりませんでした。
各スケルタル制御ノードの [Details (詳細)] パネルでは、ノードに適用される LOD しきい値 を設定できます。[LOD Threshold] で定義した値が、当該のスケルタル制御ノードで使用される最大の LOD レベルとなります。それより上の LOD レベル (より低品質のモデル) では、当該のスケルタル制御ノードが無視されます。
ボーン トランスフォームを計算するよう、LOD レベルのスケルタル制御ノードを制限することで、アニメーション システムのパフォーマンス コストを削減することができます。
カメラから何m離れたらどういう動作になるみたいなところが。
については画像を参考にしてください。画像はControlRigにLOD Thresholdを設定してオンかオフかを見ています。
LOD Thresholdは整数のみです。
-1:LOD Thresholdを-1と設定しておくのがデフォルトなので=ControlRigノードをずっと計算する。って意味です。

0:LOD Thresholdを0に設定すると(LODの現在値が0以下つまり0のときオン)4mまでオン カメラから4m離れたらオフになります。

1:LOD Thresholdを1に設定すると(LODの現在値が1以下つまり0と1のときオン)10mまでオン カメラから10m離れたらオフになります。

2:LOD Thresholdを2に設定すると(LODの現在値が2以下つまり0と1と2のときオン)135m?計測不能な遠さまでずっとオン
でした。

参考URL
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/animation-blueprint-skeletal-controls-in-unreal-engine?application_version=5.0
https://dev.epicgames.com/documentation/ja-jp/unreal-engine/skeletal-mesh-lods-in-unreal-engine?application_version=5.0
Edit Retarget Poseそんなとこにあったのかいって記事です。
Mixiamoからデフォルトのまま(root移動しないIn Placeオプション付けて)アニメーションダウンロード

idleポーズなど何でもいいのでmixamo.fbxとファイル名を書き換えてインポートするとskeltonもその名前になるので見やすいです。
その1つを読み込みSkelton Noneで Importします。

他のファイルを上記のスケルトンでインポートします。


それに合わせて合わせて

IKRetargeterでソースにmixamo ターゲットに作ったUE5_Manny

斜めから見ても合うように+基本はTなので肘とかは棒になるようにします。

でできたああ!あとは書き出して使うだけ。

ここまで作業した 自分用リンク
https://drive.google.com/file/d/1KbIDgPs8oSwBlVK_DV_1adJUNfFhl4iP/view?usp=sharing
参考URL この動画だけどこのままやるとモーションがガタガタになったのでアレンジした↑
https://docs.unrealengine.com/5.3/en-US/PythonAPI/search.html?q=Cloth
より抜粋して調査。
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 ])
▶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
[読み取り/書き込み] クロス シミュレーションが完了するまで、クロス ティック タスクを停止するかどうか。これは、ゲーム スレッド上で最新のクロス データが必要な場合、たとえばクロスの頂点でパーティクルを生成したい場合に必要です。
▶プロパティ cloth_asset : ChaosClothAsset
▶get_cloth_asset ( ) → ChaosClothAsset
このコンポーネントで使用されるクロス アセットを取得します。
▶set_cloth_asset ( clothes_asset ) → なし
このコンポーネントで使用されるクロス アセットを設定します。
▶clothes_config_updated ( ) → なし
シミュレーションを再起動せずにクロス構成を更新するために呼び出されます。
ソルバー固有の実装では、このクラスをオーバーライドして、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): [読み取り/書き込み] シミュレーションを構築するときに衝突を抽出する物理アセット。
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(変数化)」できない部分が問題でコピーできませんでした。


まず、データ的に足りない部分があった。(あえて足らなくしてるのかもしれないが)
スカートのコンストレインは前面だけ用意されていたので

ーーーーData_Skirt_BoneConstraintsーーーー
1Lと1L 前
skirt_01_0[1-9]_l
skirt_01_0[1-9]_r
1Lと2L 左前
skirt_01_0[1-9]_l
skirt_02_0[1-9]_l
2Lと3L 左
skirt_02_0[1-9]_l
skirt_03_0[1-9]_l
1Rと2R 右前
skirt_01_0[1-9]_r
skirt_02_0[1-9]_r
ーーーーData_Skirt_j9BoneConstraintsで追加したーーーー
右
skirt_02_0[1-9]_r
skirt_03_0[1-9]_r
右後ろ
skirt_03_0[1-9]_r
skirt_04_0[1-9]_r
後ろ
skirt_04_0[1-9]_l
skirt_04_0[1-9]_r
左後ろ
skirt_03_0[1-9]_l
skirt_04_0[1-9]_l

なので

で下の Bone Constraintにデータが入った。
再コンパイルした。だめだった。もとになるコリジョン?がないのかもしれない。

Modify Target >Exclude Bones をfoot_rootだけにしたら表示された。

まあExperimentalなので試験的なテストです。
unreal engine 5.3.2 create a cloth simulation How to use and flow
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の修正が反映される様子。
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
とか言われたらクリーンアップしてバインドしなおしになっちゃう。。。
おそらく頂点が別の頂点の上に重なっていることを意味します。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にしてもキャラクターだとエンジンのサイズ計算がバグってますので使わないことにしました。
フォーラムに投稿しました。
mmでは調整したスカートも壊れる

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

自分用 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

このノード状態がキレイなので「bindPose1が一つだけ」キープしながらモデリング編集すること。
Genesis9 やったこと
—————————————-ここからはモデリングとする。——————————————–
Das3D 4.22 のGenesis9を
Maya2022に持ってきて
duplicateでスキンバインド外し=複製して
meshGroupのグループに
・genesis9のまつ毛や口のレイヤーも入れる(skinCluster初めから無いので)
・Marvelous Designerの服レイヤーも入れる
・highheelレイヤーも入れる
highheelの高さにhipとmeshGroupをmoveする。(オプション)
↑高さはBluePrintで変更可能
—————————————-ここまではモデリングとする。——————————————–
新しい方の骨とmeshGroupでバインド
↑ちゃんとしたバインドオプションが重要
cmds.skinBind()引数なしじゃclusterがダメ
genesis9からcopySkinWeightした
モデル編集後ファイル (自分用リンク)」
jennie9_6_v12z_v00122_dupGen9_Kihon.zip

#jennie9_6_v12z_v00122_dupGen9_Kihon__ModelEnd_SkinBindSkinWeight.py
def startSelectionToNewSkinCluster():
selectList=cmds.ls(sl=1,long=1)
print("selectList= "+str(selectList))
# 全部必要だから引数にした
Genesis9 = selectList[0]
Genesis9_Mesh = selectList[1]
Genesis9s = selectList[2]
MeshGroup = selectList[3]
#------------------------------------------------------------------------
ModelEnd_SkinBind(Genesis9s,MeshGroup)
ModelEnd_SkinWeight(Genesis9,Genesis9_Mesh,Genesis9s,MeshGroup)
#------------------------------------------------------------------------
def ModelEnd_SkinBind(Genesis9s,MeshGroup):
cmds.select(Genesis9s,MeshGroup)
#MEL (Script found in: C:/Program Files/Autodesk/Maya2022/scripts/others/newSkinCluster.mel)
#newSkinCluster " -bindMethod 0 -normalizeWeights 1 -weightDistribution 0 -mi 3 -dr 4 -rui false -ihs , multipleBindPose, 0";
#Python でMEL実行
import maya.mel
maya.mel.eval('newSkinCluster " -bindMethod 0 -normalizeWeights 1 -weightDistribution 0 -mi 3 -dr 4 -rui false -ihs , multipleBindPose, 0";')
#Python NG 'maya.cmds' has no attribute 'newSkinCluster' #
#cmds.newSkinCluster(" -bindMethod 0 -normalizeWeights 1 -weightDistribution 0 -mi 3 -dr 4 -rui false -ihs , multipleBindPose, 0")
#import pymel.core as pm #OK
#pm.mel.newSkinCluster(" -bindMethod 0 -normalizeWeights 1 -weightDistribution 0 -mi 3 -dr 4 -rui false -ihs , multipleBindPose, 0")
def ModelEnd_SkinWeight(Genesis9,Genesis9_Mesh,Genesis9s,MeshGroup):
Genesis9_Low_skincluster = Get_SkinCluster(Genesis9_Mesh)
print("Genesis9_Low_skincluster= "+str(Genesis9_Low_skincluster))
MeshList = cmds.listRelatives(MeshGroup,shapes=0,fullPath=1)
print("MeshList= "+str(MeshList))
for closet_mesh in MeshList:
closet_skinCluster = Get_SkinCluster(closet_mesh)
print("closet_skinCluster= "+str(closet_skinCluster))
# 元のスキンクラスターを服のスキンクラスターへコピースキンウェイト
cmds.copySkinWeights(
sourceSkin = Genesis9_Low_skincluster,
destinationSkin = closet_skinCluster,
noMirror=True,
influenceAssociation="oneToOne",
surfaceAssociation="closestPoint"
)
def Get_SkinCluster(LowMeshTransformLong):
# トランスフォームのシェイプノードを取得
shapeList = cmds.listRelatives(LowMeshTransformLong, shapes=True, noIntermediate=True,fullPath=True)
#print("shapeList= "+str(shapeList))
# lowのヒストリーを取得し、スキンクラスターのみ取得
historyList = cmds.listHistory(shapeList[0], pruneDagObjects=True, interestLevel=2)
#print("historyList= "+str(historyList))
skinclusterList = cmds.ls(historyList, type="skinCluster")
#print("skinclusterList= "+str(skinclusterList))
skincluster = skinclusterList[0]
#print("skincluster= "+str(skincluster))
return skincluster
startSelectionToNewSkinCluster()完成ファイル (自分用リンク)
jennie9_6_v12z_v00127_Mouse_SW_Take2OK_Kihon_UE532ExportEnd.zip
