[UE5.3]第21回UE5ぷちコン テーマ「おす」題名「下痢ゲー2」で使った技術とexeダウンロード

Technology used in the 21st UE5 Petit Con theme “Osu” title “Diarrea Game 2”

windowsBuildをアップしました。ぜひプレイしてみてください。
▼furcraeaTokyo_GeliGa2_Windows2.zip

https://drive.google.com/file/d/18n38Hj44_s3AVEObuP43kYCyn5T4Gb_k/view?usp=sharing

MetaHumanでサードパーソンテンプレートBPを乗っ取り。

【UE5】サードパーソンテンプレートのBPを乗っ取るまで【備忘録】

テーマ「おす」のために腕をIKで構えさせる

【第6.5回】武器を持たせる・IKで構えさせる

Idle時にお腹が痛いアイドル、Run時に上半身:お腹が痛い+下半身:走り

Blend Poses by boolを使用してIdle時とRun時で分岐させる

押すBoxを見つける

[UE4] プレイヤーを検知する敵キャラクターを作る

https://historia.co.jp/archives/25062/

[UE5.3][Retarget]mixamo animation Retarget to UE5.3 Tips Edit Retarget Poseそんなとこにあったのかいって記事です。

Edit Retarget Poseそんなとこにあったのかいって記事です。

Mixiamoからデフォルトのまま(root移動しないIn Placeオプション付けて)アニメーションダウンロード

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

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

IKRig_mixamoをIKゴールとかソルバとかなしでチェーンだけで作ります

それに合わせて合わせて

IKRig_mannyをIKゴールとかソルバとかなしでチェーンだけで作ります

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

:からEdit Retarget Poseを選びます。(またはTposeを読み込みます)

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

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

ここまで作業した 自分用リンク

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

参考URL この動画だけどこのままやるとモーションがガタガタになったのでアレンジした↑

[Daz3D][Maya][Marvelous Designer] Das3D 4.22 Genesis9をMaya2022に持ってきてMarvelous Designerの服をスキニングしてコピースキンウェイトしたVol.02(まとめ)

このノード状態がキレイなので「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

[UE5.3.2][Retarget]IK RetargeterでのT_PoseのキャラクターをAポーズベースのモーションへのリターゲット方法

UE5.3.2 Retarget IK RetargeterでのT_Poseのキャラクターのリターゲット方法

MannyのモーションをT_Poseのキャラクターにリターゲットする方法

Showing Reterget Poseモードにして>Sourceタブを選択して>Create>Import from Animation Sequence を選択

デフォルトで用意されている.AnimSequenceの
/Game/Characters/Mannequins/Animations/Manny/MM_T_Poseを読み込む

反映されればMannyがTposeになる。

Showing Reterget Poseモードボタンを押してRunning Retargetモードにすると

TposeのキャラがAposeになる。

[UE4/UE5]MasterPoseComponentの説明

ぷちコンでも乱用した

MasterPoseComponentの説明です。

これがあればぶっちゃけリターゲットとか必要なくない?

みたいなお話です。

大きいEnableMasterPose図はこれです。

アップのEnableMasterPoseはこれです。

UE5.1ではこうしないと

ブループリントランタイム エラー:”プロパティ SkeletalMeshComponent の読み取りを試行するためのアクセスはありません”。 ノード: ブランチ グラフ: EnableMasterPose 関数: Enable Master Pose ブループリント: BP_ThirdMetaHuman

のエラー出た から 最初からSkeletel Mesh Component をIsVaildしたら治った。

添わせたいスケルタルメッシュを以下のように設定するだけで

あたまがこれです。

そうびがこれです。

グレイマンはトランスペアレントなマテリアルで見せてません。

グレイマンはVisibleはTrueにしておかないと壊れます。

こうしているせいで全モーションはグレイマンに追加するだけででOKです。
どんどんグレーマンが鬼カスタムモーション化していくだけなので他のプロジェクトを作る際も鬼グレイマンさえ移行すればいいから簡単です。

以上でした。

5.1のバージョンはこんな感じでした。

Meshの下に入れ子にするのがポイント

参考

https://forums.unrealengine.com/t/topic/402278

#UE5 #UE5Study アニメーションリターゲットのメモ (なんかちょっと工程長くなったけど論理的で安心感ある)

ソースとターゲット両方のスケルタルメッシュを開いて

スケルトンツリー>リターゲットオプションを表示する

ソースもターゲットも以下をやる

マネキンの場所でアニメーション>IKリグを作成する。

どのスケルタルメッシュにするか表示されるのでマネキンを選択

名前を
IKRig_SK_Mannequinとした。

IKRig_NierA2_MayaV2とした

それぞれ開いて

階層から
Pelvisを右クリックして
リターゲティングルートの設定をクリック

IKリターゲティングの>新しいチェーンを追加するを6回おす。

ソースもターゲットも以下をやる。

head spine leftarm rightarm leftleg rightleg を入力 開始ボーン終了ボーンを設定する。

でーがっちゃんこようにアニメーションリターゲッターを作ります。

アニメーションをコピーする元のリグを選択するので今回はマネキン用のあにめを他のスケルタルメッシュにつけたいのでこうなりました

ダブルクリックして開いて

ターゲットが未選択なので選びます

アセットブラウザから選択したア二メーションをエクスポートボタンで出力できます。

参考