[Blender5.1][Rig][UE5.8] Auto Rig Pro を購入から使用UE5インポートまで

[Blender 5.1][Rig][UE5.8] From purchasing to using Auto Rig Pro and importing into UE5

https://superhivemarket.com/products/auto-rig-pro

Ado To Cartした。

カートに入った CheckOutして

Create Accountした

Confirm My Accountした

もう一回Checkoutしてこの画面きた。PayPal Checkoutした。

Ordersクリックした。

Blender5.1.1にドラッグした

入らないので

8 downloads
auto_rig_pro_3.78.21.zip
proxy_picker_1.1.11.zip
rig_tools_3.78.18.zip
Al_linux_1.20.zip -winにはいらない
Al_macIntel_1.20.zip -winにはいらない
Al_mac_1.20.zip -winにはいらない
Al_win_1.20.zip あとで必要
io_scene_gltf2.zip Blender5.1.1には不要

zipを選択

入った。


Blendr5.1.1に

D:\Download\auto_rig_pro_Set

入れたいけど

AI_win_1.20.zipがMissing Manifestだって。

それはたぶん 入れるzipを間違えているだけ でした。

確認したところ、AI_win_1.20.zip はBlenderアドオン本体ではなく、Auto-Rig ProのAI用データ/実行ファイルでした。なのでBlenderの「Install from Disk」で直接入れると Missing Manifest になります。

つまり入れる順番はこれです。

  1. Blenderで Edit > Preferences > Get Extensions / Add-ons > Install from Disk
  2. まずこれを入れる
    D:\Download\auto_rig_pro_Set\auto_rig_pro_3.78.21.zip

    auto_rig_pro_3.78.21.zip
    proxy_picker_1.1.11.zip – 開発中の機能
    rig_tools_3.78.18.zip ー開発中の機能入れないほうがいい
    Al_win_1.20.zip あとで必要
    io_scene_gltf2.zip Blender5.1.1には不要

Auto-Rig Proの設定内にある Install AI Files… からこれを選ぶ
D:\Download\auto_rig_pro_Set\AI_win_1.20.zip

  1. AI files Installed successfully と言われる。

Auto-Rig Pro公式ドキュメントでも、本体は auto_rig_pro_x.xx.xx.zip をInstall from Disk、AIファイルはAuto-Rig Pro設定内の Install AI Files… から入れる手順になっています: Auto-Rig Pro Installation

補足: Blender 5.1.1なら io_scene_gltf2.zip は入れなくてOKです。公式説明でもBlender 4.2以上はGLTF exporterの追加インストールをスキップするよう書かれています。rig_tools_3.78.18.zip もAuto-Rig Pro本体を入れるなら基本入れない方がいいです。

正常にインストールできると「N」キー押すとARPがでる

素体をインポートして

メッシュ全部選択して

「Auto-Rig Pro:Smart」機能を試してみた

FullBody選択

Guess Markers押す。(10秒ぐらいかかる)

Skelton Setting Presetsから

今回はUE4 Mannequinsを選択した

Guess Fingers 押す。

指にフィットしたようだ。

GO!押す(10秒ぐらいかかる)

できたっぽい。Match To Rig 押す(10秒)

リグができた。

スキニング

Skin押す

Preserved VolumeをOFFでまだBindおさない。

オブジェクトモードにする[Tab]キー

Blender5.1 オブジェクトモード
  1. オブジェクトモードにする[Tab]キー
  2. Shift を押しながらバインドするMeshオブジェクト(複数可)、Armature の(rig)の順に選択する
  3. Bind ボタンを押す

全メッシュではフリーズしたので、Voxelized に切り替え

段階的にBindした

全部Meshの外に行ったので成功がわかった。

スケールが低すぎるため、バインディングが部分的に、または完全に失敗した可能性があります。

スケール修正を有効にして再度バインディングを実行してください。OKした。

ポーズの確認

ポーズモードへの切り替え方法

アーマチュア(ボーン)を選択した状態で、[Ctrl] + [Tab] キーを押すのが最も早いショートカットです。

Blebnder5.1 ポーズモード

屈伸できた

Export

Auto-Rig Pro: ExportのExport FBXでエクスポート

Unreal Engine

Humanoid と

UE4 Legacy をオンにした

書き出し終わったらしい

UE5へインポート

import Texture オン

import Material オン

プロジェクトのUE4マネキンを壊さないようにSkeletonはNoneでインポートした

インポートできたら、skeletonをチェック root、pelvisがあっていればOK

SkeltalMesh > Create > IK Rig

とりあえずはこれくらい設定した

指も設定

IKRig > Create IK Retargeter

①SK_Mannequinも同じようにRoteteOnlyで設定したIK Rigを選ぶ

②Source選択

③Create > Import Animation Seqense

④T_poseを検索してインポートした。

完成

#UE4 #UE4Study Character #HairCloth #HairShadingModel #AdvancedLocomotionSystem ファサっと天使の輪と束感でUEのヘアーの使い方

服と髪をなびかせるHair Clothはこれをやった
https://docs.unrealengine.com/4.27/ja/InteractiveExperiences/Physics/Cloth/Overview/
1, [Section Selection (セクション選択)]
2,左クリックを使って、クロスとして使用したいメッシュの一部を選択します。次に右クリックして、コンテキスト メニューを開いて Cloth アセットを作成します。
3,コンテキスト メニューから、[Create Cloth Asset from Selection (選択したものから Cloth アセットを作成)] を選びます。

 A,Asset Name – 後で簡単に見つけられるようにアセットに名前を付けてください。

 B,Remove from Mesh – クロスとして関連付けたい別個のジオメトリのメッシュの構成要素があれば、このオプションを有効にします。そうでなければ、チェックを入れずにこのままにします。

 C,Physics Asset – Cloth アセットがキャラクター用ならば、その Physics アセットを使ってクロス シミュレーションで適切なコリジョンが生じるようにします。

4,[Create] ボタンをクリックします。
5,セクションを再度右クリックして、コンテキスト メニューを表示させて、[Apply Clothing Asset] にマウスをかざし、利用可能なクロス アセットから適用するものを選択します。これで作成した任意のクロス アセットが選択したセクションに関連付けられます。

・ペイント – マウスの左ボタン
・消去 – Shift キー + マウスの左ボタン
・クロスのプレビュー – H キー

[Window] を選択し、リストから [Clothing] を選択します。
[Clothing Data] リストから選択します。

[Activate Cloth Paint] ボタンをクリックして、選択した Cloth アセットをペイントするために使用可能なプロパティを有効にします。

・ブラシの半径を5にして
・強度を0.2
・フォールオフ0.5
でヘアをクリックすると塗れる。ピンクが塗ってない場所

走ってみると

髪が前に来ちゃう

ので

物理ボディを修正した

全骨コリジョン作ったほうが調整しやすかった。(指は消した)

Spine5がこういった設定 Radius 10以下ぐらい

以下は昔の設定

で設定することが重要

でやっといい感じ

HairShadingModel 基本はこれをやった。

つまりこれで髪の天使の輪みたいなものができる。 (まわしてみないと分からない)

でも髪の束感は出したかったのでOpacityMaskもありにするとこうなる。

束感のために使ってるテクスチャはこれで

https://drive.google.com/file/d/11JcBV0dAtrexQew0fbKUZcLRfbYn7FuZ/view?usp=sharing

こんな感じにスキャッター、スペキュラ、ラフネスにMultyplyしたらいい感じになった。

使っているMIでの値はこんな感じ

最後にまたこれをやって

やっとこうなった

元のモデルはここ

https://www.deviantart.com/xcrofty/art/NieR-Automata-A2-678696387

[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

[UE5][BackUp]Cppプロジェクトでいらないフォルダを含めずにバックアップzipを作成するバッチを作った件

gitだと大容量なサーバーとか用意するの大変だから・・・

実行内容はこんなかんじ

D:\Sandbox\BookAnimation_Codex\UE574Book\UE5CppFolder_MakeBackUpZip.bat
にフォルダをドラッグしたら
中身の
.vs
Binaries
Build
DerivedDataCache
Intermediate
Saved
(pluginsのプラグイン名フォルダ内BinariesとIntermidiateも消してます)
を除いた内容のzipを
D:\Sandbox\BookAnimation_Codex\UE574Book\ドラッグしたフォルダ名.zipに作るバッチを作った
zip実行中になんでもいいからプログレスバーとパーセントを表示するようにした

※バックアップからの復旧方法

VisualStudioなどでビルドします。

UE5CppFolder_MakeBackUpZip.bat

@echo off
setlocal EnableExtensions

if "%~1"=="" (
    echo Usage:
    echo   Drag a folder onto this bat file.
    echo.
    pause
    exit /b 1
)

set "BACKUP_SOURCE=%~f1"
if not exist "%BACKUP_SOURCE%\" (
    echo Error: folder not found.
    echo   %BACKUP_SOURCE%
    echo.
    pause
    exit /b 1
)

set "BACKUP_ZIP=%~dp1%~nx1.zip"
set "BACKUP_SCRIPT=%~dp0UE5CppFolder_MakeBackUpZip.ps1"

echo Source:
echo   %BACKUP_SOURCE%
echo.
echo Output:
echo   %BACKUP_ZIP%
echo.
echo Excluding folders:
echo   .vs Binaries Build DerivedDataCache Intermediate Intermidiate Saved
echo.

if not exist "%BACKUP_SCRIPT%" (
    echo Error: helper script not found.
    echo   %BACKUP_SCRIPT%
    echo.
    pause
    exit /b 1
)

powershell -NoProfile -ExecutionPolicy Bypass -File "%BACKUP_SCRIPT%" -Source "%BACKUP_SOURCE%" -ZipPath "%BACKUP_ZIP%"
set "BACKUP_ERROR=%ERRORLEVEL%"

if not "%BACKUP_ERROR%"=="0" (
    echo.
    echo Failed.
    pause
    exit /b %BACKUP_ERROR%
)

echo.
echo Done.
pause

UE5CppFolder_MakeBackUpZip.ps1

param(
    [Parameter(Mandatory = $true)]
    [string]$Source,

    [Parameter(Mandatory = $true)]
    [string]$ZipPath
)

$ErrorActionPreference = 'Stop'

$sourceFullPath = [System.IO.Path]::GetFullPath($Source).TrimEnd('\', '/')
$zipFullPath = [System.IO.Path]::GetFullPath($ZipPath)

$exclude = [System.Collections.Generic.HashSet[string]]::new([System.StringComparer]::OrdinalIgnoreCase)
'.vs', 'Binaries', 'Build', 'DerivedDataCache', 'Intermediate', 'Intermidiate', 'Saved' | ForEach-Object {
    [void]$exclude.Add($_)
}

function Test-IsExcludedBackupFile {
    param([Parameter(Mandatory = $true)][string]$FileFullPath)

    if ([System.StringComparer]::OrdinalIgnoreCase.Equals($FileFullPath, $zipFullPath)) {
        return $true
    }

    $relative = $FileFullPath.Substring($sourceFullPath.Length).TrimStart('\', '/')
    foreach ($part in ($relative -split '[\\/]')) {
        if ($exclude.Contains($part)) {
            return $true
        }
    }

    return $false
}

Add-Type -AssemblyName System.IO.Compression
Add-Type -AssemblyName System.IO.Compression.FileSystem

if (Test-Path -LiteralPath $zipFullPath) {
    Remove-Item -LiteralPath $zipFullPath -Force
}

Write-Host 'Scanning files...'
$files = @(
    Get-ChildItem -LiteralPath $sourceFullPath -Force -Recurse -File | Where-Object {
        $fileFullPath = [System.IO.Path]::GetFullPath($_.FullName)
        -not (Test-IsExcludedBackupFile -FileFullPath $fileFullPath)
    }
)

$total = $files.Count
Write-Host ("Files to zip: {0}" -f $total)

$zip = [System.IO.Compression.ZipFile]::Open($zipFullPath, [System.IO.Compression.ZipArchiveMode]::Create)
$count = 0

try {
    if ($total -eq 0) {
        Write-Progress -Activity 'Creating backup zip' -Status 'No files to zip' -PercentComplete 100
    }
    else {
        foreach ($file in $files) {
            $count++
            $fileFullPath = [System.IO.Path]::GetFullPath($file.FullName)
            $relative = $fileFullPath.Substring($sourceFullPath.Length).TrimStart('\', '/')
            $entryName = $relative -replace '\\', '/'
            $percent = [int][Math]::Floor(($count * 100.0) / $total)

            Write-Progress `
                -Activity 'Creating backup zip' `
                -Status ("{0}%  {1}/{2}  {3}" -f $percent, $count, $total, $entryName) `
                -PercentComplete $percent

            if (($count % 25) -eq 0 -or $count -eq 1 -or $count -eq $total) {
                Write-Host ("{0,3}%  {1}/{2}  {3}" -f $percent, $count, $total, $entryName)
            }

            [System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile(
                $zip,
                $fileFullPath,
                $entryName,
                [System.IO.Compression.CompressionLevel]::Optimal) | Out-Null
        }
    }
}
finally {
    $zip.Dispose()
    Write-Progress -Activity 'Creating backup zip' -Completed
}

Write-Host ("Created: {0}" -f $zipFullPath)
Write-Host ("Files: {0}" -f $count)