diff --git a/content/blog/2023-12-21-ue5.md b/content/blog/2023-12-21-ue5.md
index 9cbb06f..1850889 100644
--- a/content/blog/2023-12-21-ue5.md
+++ b/content/blog/2023-12-21-ue5.md
@@ -53,3 +53,155 @@ c++クラスを追加するとwindows側でprojectを起動できなくなりま
[/ai/video/#ue5_ai_0006.mp4](/ai/video/#ue5_ai_0006.mp4)
+## v5.3
+
+### for mac
+
+mac(apple silicon)でも動作しますが、`package build`は鬼門です。絶対にやめましょう。時間がもったいない。
+
+ue5は、基本的にwindowsのpakcage buildはすぐに通りますが、それ以外では難しいでしょう。
+
+たとえ1度だけbuildが通ったとしても、もし開発を続ける場合、windowsとmacの両方で動作を安定させることはできません。
+
+windowsで開発するのがおすすめです。macでの開発はやめておきましょう。
+
+### vrm
+
+https://github.com/ruyo/VRM4U/releases
+
+[vroid](https://vroid.com/)を読み込むpluginである[vrm4u](https://ruyo.github.io/VRM4U/)を使用します。現在、[vroid sdk](https://github.com/pixiv/vroid-sdk-developers/discussions/118)というものも登場しています。
+
+macで使用するには大変ですが`./Plugins/VRM4U/ThirdParty/assimp/lib/Mac/libassimp.a`を用意してください。独自buildが必要です。
+
+https://ruyo.github.io/VRM4U/03_mac
+
+### outline
+
+![](https://raw.githubusercontent.com/syui/img/master/other/ue5_ai_20231202_203956.png)
+
+![](https://raw.githubusercontent.com/syui/img/master/other/ue5_ai_2023-12-09_16.34.39.png)
+
+これはoutline(アウトライン)やnormal line(法線)と一般に言われているものです。
+
+それをoverlay materialで実現しています。
+
+### 調整
+
+基本的には[Superhero Flight Animations](https://www.unrealengine.com/marketplace/ja/product/superhero-flight-animations)を使用してmodelの調整を行います。
+
+`Superhero Flight Animations`は`./Content/SuperheroFlight/Blueprints/Characters/BP_Player_UE5`で`./Content/SuperheroFlight/Blueprints/Components/BP_SuperheroFight`を読み込んでいます。
+
+`BP_Player_UE5`を開いて`SuperheroFlightComponent`のところが設定ファイルになっていて、例えば、`flying speed`、つまり、飛行速度などを変更できます。
+
+基本的には、ここのassetsにanimationを入れることで機能します。もし機能しない場合の変更箇所を書きます。
+
+![](/img/ue-2024-02-01-7.36.38.png)
+
+いくつかのanimationは自分で用意したものに切り替えます。
+
+`ABP_Player_ai`, `BP_Player_UE5`を新たに用意し、それを読み込むようにします。
+
+`./Content/SuperheroFlight/Characters/Mannequins/Animations`をリターゲットしてanimationを作成、それをanim montageにします。
+
+### idle/walk
+
+かっこいいものに切り替えます。おかしな移動になっていました。
+
+- ABP_Player_ai : `AnimGraph > Locomotion > idle`
+- ABP_Player_ai : `AnimGraph > Locomotion > walk`
+
+![](/img/ue-2024-02-01-7.36.36.png)
+
+使用しているanimationに`root motion`を設定します。
+
+![](/img/ue-2024-02-01-7.36.37.png)
+
+### jump
+
+かっこいいものに切り替えます。`root-motion`が動きませんでした。
+
+- ABP_Player_ai : `AnimGraph > Locomotion > jump`
+- ABP_Player_ai : `AnimGraph > Locomotion > idle`
+- RTG_ai : `target`, `チェーンマッピング > root`を`FK > 平行移動モード > Globally Scaled`に設定
+
+root motionをenableにしても動きません。原因はIKリターゲットしたときrootが動いていないために起こります。animationを開いてsrcとtargetを比較してみると、srcのほうはrootが動いていますが、targetのアニメは動いていません。具体的には、srcはlocationが変動しますが、targetは変動していません。
+
+bone(ボーン)のrootを選択してFKの平行移動モードをGlobally Scaledに設定します。
+
+これでtargetのrootが変動しているのを確認後、リターゲットし、montageを作成します。
+
+![](/img/ue-2024-02-01-6.59.18.png)
+
+### hover
+
+ものに当たった時のanimationです。
+
+- ABP_Player_ai : `EventGraph > Play hover fligh start montage notify event`
+
+![](/img/ue-2024-02-01-7.31.12.png)
+
+## land
+
+着地するときのanimationです。
+
+- BP_SuperheroFlighComponent : `EventGraph > Hit Event Collapse Graph`
+
+![](/img/ue-2024-02-01-7.14.49.png)
+
+`Play anim montage`に指定したものを使用するように変更します。
+
+指定したanim montageの通知に`BPANS_SetlsSuperheroloading`などを追加します。既存のanim montageである`./Content/SuperheroFlight/Characters/Mannequins/Animations/Flight/Land/`を参考にしてください。
+
+![](/img/ue-2024-02-01-7.04.47.png)
+
+## sprint
+
+ダッシュです。これは`BP_Player_UE5 > Input Event Graph > sprint`の最後に`Start Flight`を入れます。
+
+- BP_Player_UE5 : `Input Event Graph > sprint`
+
+## kawaiiphysics
+
+https://github.com/pafuhana1213/KawaiiPhysics/releases
+
+vrmの髪の毛などを動かすために使います。
+
+- ABP_Player_ai : `AnimGraph`
+
+![](/img/ue-2024-02-01-7.24.20.png)
+
+主に`hair1_08`, `hair1_09`, `hair1_10`を指定して各種limitを入れ、調整していきます。
+
+limitは髪の毛が体を貫通しないようにするためのものです。主に`Spherical Limits`の丸形と`Capsule Limits`の筒型を使用します。大きさや傾きなどを調整してください。`head`や`hip`, `arm`を指定するといいでしょう。
+
+## sword
+
+新しくswordのactor(static mesh)を作成し、collisionを作ります。
+
+![](/img/ue-2024-02-01-7.36.35.png)
+
+それを`BP_Player_UE5`に装備し、motionを作成し、キーに割り当てます。剣をしまうのはniagaraで作成しました。
+
+
+
+by [ai](https://blueprintue.com/blueprint/cu104wg0/)
+
+## varest
+
+pluginである[varest](https://www.unrealengine.com/marketplace/ja/product/varest-plugin)のpostですが、macで動いたものがwindowsでは動きませんでした。ですが、windowsでイチから作成すると動きました。
+
+ue5は`PATCH`に対応していません。この辺はapiを作り直さないといけないかもしれない。
+
+
+
+by : [ai](https://blueprintue.com/blueprint/4qo0qydu/)
+
+## login
+
+login処理です。atprotoと連携できればいいなと考えています。
+
+あと、ゲーム公開/非公開はaiのアカウントで判断しています。ある値がtrueなら公開、falseなら非公開です。ここをapiで変更すれば基本的にゲームの起動自体をコントロールできるようになってる。
+
+
+
+by : [ai](https://blueprintue.com/blueprint/9v24l5h6/)
diff --git a/content/m/ue.md b/content/m/ue.md
index 6fda40b..1a290ad 100644
--- a/content/m/ue.md
+++ b/content/m/ue.md
@@ -1,164 +1,121 @@
+++
date = "2024-01-29"
-lastmod = "2024-02-01"
+lastmod = "2024-05-27"
tags = ["ue", "m", "ue5"]
title = "ue"
slug = "ue"
+++
-ここでは[epic games](https://www.epicgames.com/)の`unreal engine 5`の使い方をまとめます。
+ここでは[epic games](https://www.epicgames.com/)の[unreal engine 5](https://www.unrealengine.com/ja/unreal-engine-5)の使い方をまとめます。
ブログで説明しづらい部分が多いので[blueprintue](https://blueprintue.com/profile/ai/)を参考にしてください。
-- src : https://git.syui.ai/ai/ue
+- repo : https://git.syui.ai/ai/ue
+- blueprint : https://blueprintue.com/profile/ai
-## for mac
+`ue5.4`がリリースされました。updateしてみましたが、色々と動かなくなっています。そして、前よりも頻繁に落ちるようになりました。
-mac(apple silicon)でも動作しますが、`package build`は鬼門です。絶対にやめましょう。時間がもったいない。
+動かなくなった箇所は以下の通り。
-ue5は、基本的にwindowsのpakcage buildはすぐに通りますが、それ以外では難しいでしょう。
+1. 飛行するとカメラがモデル内部に入り込む / superhero fligth animations / ABP_flying, apply additive, scale
+2. 飛行の上下左右の向きが反映されない / superhero fligth animations / ABP_flying, apply additive
-たとえ1度だけbuildが通ったとしても、もし開発を続ける場合、windowsとmacの両方で動作を安定させることはできません。
+今回、pluginとengineをupdateしたところ、髪の毛がモデルの内部に入り込むことがなくなりました。これにより[KawaiiPhysics](https://github.com/pafuhana1213/KawaiiPhysics)が不要になりました。なお、ue5.3でもこの現象がなくなっていることを確認しています。とはいえ、modelやplugin, engineなどあらゆる依存関係が考えられるので、あくまで個人的なケースです。
-windowsで開発するのがおすすめです。macでの開発はやめておきましょう。
+ue5.4で最初から構築した手順を記録します。
-## vrm
+## vrm4u + superhero fligth animations
-https://github.com/ruyo/VRM4U/releases
+まずは[vrm](https://github.com/pixiv/vroid-sdk-developers)を動かせるようにします。基本的なコントローラーは`superhero flight animations`を使用します。
-[vroid](https://vroid.com/)を読み込むpluginである[vrm4u](https://ruyo.github.io/VRM4U/)を使用します。現在、[vroid sdk](https://github.com/pixiv/vroid-sdk-developers/discussions/118)というものも登場しています。
+- [vrm4u](https://github.com/ruyo/VRM4U)
+- [superhero fligth animations](https://www.unrealengine.com/marketplace/ja/product/superhero-flight-animations)
-macで使用するには大変ですが`./Plugins/VRM4U/ThirdParty/assimp/lib/Mac/libassimp.a`を用意してください。独自buildが必要です。
+`ai.vrm`をimportするとして重要なファイルは以下の通り。
-https://ruyo.github.io/VRM4U/03_mac
+```sh
+# c:/project/yui
-## outline
+Content
+├─SuperheroFlight
+│ ├─Blueprints/Characters/BP_Player_UE5
+│ └─Characters/Mannequins/Animations/ABP_Player_UE5
+└─yui
+ ├─BP_Player_ai
+ ├─anim
+ │ └─ABP_Player_ai
+ └─model
+ ├─SK_ai
+ └─RTG_ai
-![](https://raw.githubusercontent.com/syui/img/master/other/ue5_ai_20231202_203956.png)
+Pluings
+ └─VRM4U
+```
-![](https://raw.githubusercontent.com/syui/img/master/other/ue5_ai_2023-12-09_16.34.39.png)
+まず`Content/yui/model`に`vrm`を入れます。インポートします。マテリアルタイプは`subsurface`を使用します。
-これはoutline(アウトライン)やnormal line(法線)と一般に言われているものです。
+![](/m/post/ue/ue5_2024-05-28_125510.png)
-それをoverlay materialで実現しています。
+`Content/yui/model/RTG_xxx`を開きます。
-## 調整
+![](/m/post/ue/ue5_2024-05-28_130045.png)
-基本的には[Superhero Flight Animations](https://www.unrealengine.com/marketplace/ja/product/superhero-flight-animations)を使用してmodelの調整を行います。
+ソースに`SuperheroFlight`のモデルを選択して、調整します。アニメが動くか確認してください。ポーズも重要です。
-`Superhero Flight Animations`は`./Content/SuperheroFlight/Blueprints/Characters/BP_Player_UE5`で`./Content/SuperheroFlight/Blueprints/Components/BP_SuperheroFight`を読み込んでいます。
+`ABP_Player_UE5`を右クリックしてリターゲティングします。先ほど設定した`RTG_xxx`を指定してください。すべてのアニメを選択してリターゲティングを実行。`Content/yui/anim`に保存します。そこに`ABP_Player_xxx`ができます。ファイルの名前と場所はできる限り変更しないでください。バグって動かなくなり、再度リターゲティングしても動かないanimが生成されます。こうなるとvrmをインポートしなおさなければなりません。
-`BP_Player_UE5`を開いて`SuperheroFlightComponent`のところが設定ファイルになっていて、例えば、`flying speed`、つまり、飛行速度などを変更できます。
+- `Content/yui/anim/ABP_Player_xxx`
-基本的には、ここのassetsにanimationを入れることで機能します。もし機能しない場合の変更箇所を書きます。
+v5.3では一括で全てリターゲティングできなかったのでanimを探して一つずつやっていました。これがasset側の変更かengine側の変更かはわかりません。
-![](/img/ue-2024-02-01-7.36.38.png)
+次に`Content/SuperheroFlight/Blueprints/Characters/BP_Player_UE5`を複製して、`Content/yui/BP_Player_xxx`を作ります。そこで`ABP_Player_xxx`を読み込むようにします。MapのGameModeで`Content/yui/BP_Player_xxx`を使うようにします。
-いくつかのanimationは自分で用意したものに切り替えます。
+```sh
+Content/SuperheroFlight/Blueprints/Characters/BP_Player_UE5 -> Content/yui/BP_Player_xxx
+```
-`ABP_Player_ai`, `BP_Player_UE5`を新たに用意し、それを読み込むようにします。
+![](/m/post/ue/ue5_2024-05-28_151451.png)
+![](/m/post/ue/ue5_2024-05-28_151511.png)
-`./Content/SuperheroFlight/Characters/Mannequins/Animations`をリターゲットしてanimationを作成、それをanim montageにします。
+ここでそれぞれのアニメーションを当てておきます。
-## idle/walk
+![](/m/post/ue/ue5_2024-05-28_151839.png)
-かっこいいものに切り替えます。おかしな移動になっていました。
+### 飛行するとカメラがモデル内部に入り込む
-- ABP_Player_ai : `AnimGraph > Locomotion > idle`
-- ABP_Player_ai : `AnimGraph > Locomotion > walk`
+再生してみると飛行が正常に動きません。カメラがモデル内部に移動します。これは`scale`が間違っているためです。`apply additive`が原因でそこのscaleを変更すると回避できます。
-![](/img/ue-2024-02-01-7.36.36.png)
+また代わりに`blend bone by channel`を使用することでも回避できます。
-使用しているanimationに`root motion`を設定します。
+これはv5.4で発生し、v5.3では発生しません。
-![](/img/ue-2024-02-01-7.36.37.png)
+- `Content/yui/anim/ABP_Player_xxx`
-## jump
+![](/m/post/ue/ue5_2024-05-28_132554.png)
+![](/m/post/ue/ue5_2024-05-28_134214.png)
+![](/m/post/ue/ue5_2024-05-28_134235.png)
-かっこいいものに切り替えます。`root-motion`が動きませんでした。
+また、`flying > flying state machine -> idle/hover`の`look_at`にエラーが出てるので`bone`の`j_bip_c_neck`を入れます。
-- ABP_Player_ai : `AnimGraph > Locomotion > jump`
-- ABP_Player_ai : `AnimGraph > Locomotion > idle`
-- RTG_ai : `target`, `チェーンマッピング > root`を`FK > 平行移動モード > Globally Scaled`に設定
+### 飛行の上下左右の向きが反映されない
-root motionをenableにしても動きません。原因はIKリターゲットしたときrootが動いていないために起こります。animationを開いてsrcとtargetを比較してみると、srcのほうはrootが動いていますが、targetのアニメは動いていません。具体的には、srcはlocationが変動しますが、targetは変動していません。
+飛行すると常に向きが一定になります。視点を動かしても変わりません。
-bone(ボーン)のrootを選択してFKの平行移動モードをGlobally Scaledに設定します。
+通常だと、視点を下に向けると、頭も下を向いて移動しますが、それがありません。下に移動してもずっと横飛行を行います。
-これでtargetのrootが変動しているのを確認後、リターゲットし、montageを作成します。
+これは昔も見たことがある現象です。しかし、その時にどうやって修正したのか覚えていません。
-![](/img/ue-2024-02-01-6.59.18.png)
+これもv5.4で発生し、v5.3では発生しません。
-## hover
+### モデルを法線で強調する
-ものに当たった時のanimationです。
+モデルのoutline(法線)を強調する設定を行います。`Content/yui/model/SK_xxx`を開いて`レンダリング > overlay material`で以下のマテリアルを作成して適用します。
-- ABP_Player_ai : `EventGraph > Play hover fligh start montage notify event`
+- `Content/yui/model/SK_xxx`
-![](/img/ue-2024-02-01-7.31.12.png)
+![](/m/post/ue/ue5_2024-05-28_135604.png)
-## land
+
-着地するときのanimationです。
+[blueprintue.com](https://blueprintue.com/blueprint/t1xc2azx/)
-- BP_SuperheroFlighComponent : `EventGraph > Hit Event Collapse Graph`
-
-![](/img/ue-2024-02-01-7.14.49.png)
-
-`Play anim montage`に指定したものを使用するように変更します。
-
-指定したanim montageの通知に`BPANS_SetlsSuperheroloading`などを追加します。既存のanim montageである`./Content/SuperheroFlight/Characters/Mannequins/Animations/Flight/Land/`を参考にしてください。
-
-![](/img/ue-2024-02-01-7.04.47.png)
-
-## sprint
-
-ダッシュです。これは`BP_Player_UE5 > Input Event Graph > sprint`の最後に`Start Flight`を入れます。
-
-- BP_Player_UE5 : `Input Event Graph > sprint`
-
-## kawaiiphysics
-
-https://github.com/pafuhana1213/KawaiiPhysics/releases
-
-vrmの髪の毛などを動かすために使います。
-
-- ABP_Player_ai : `AnimGraph`
-
-![](/img/ue-2024-02-01-7.24.20.png)
-
-主に`hair1_08`, `hair1_09`, `hair1_10`を指定して各種limitを入れ、調整していきます。
-
-limitは髪の毛が体を貫通しないようにするためのものです。主に`Spherical Limits`の丸形と`Capsule Limits`の筒型を使用します。大きさや傾きなどを調整してください。`head`や`hip`, `arm`を指定するといいでしょう。
-
-## sword
-
-新しくswordのactor(static mesh)を作成し、collisionを作ります。
-
-![](/img/ue-2024-02-01-7.36.35.png)
-
-それを`BP_Player_UE5`に装備し、motionを作成し、キーに割り当てます。剣をしまうのはniagaraで作成しました。
-
-
-
-by [ai](https://blueprintue.com/blueprint/cu104wg0/)
-
-## varest
-
-pluginである[varest](https://www.unrealengine.com/marketplace/ja/product/varest-plugin)のpostですが、macで動いたものがwindowsでは動きませんでした。ですが、windowsでイチから作成すると動きました。
-
-ue5は`PATCH`に対応していません。この辺はapiを作り直さないといけないかもしれない。
-
-
-
-by : [ai](https://blueprintue.com/blueprint/4qo0qydu/)
-
-## login
-
-login処理です。atprotoと連携できればいいなと考えています。
-
-あと、ゲーム公開/非公開はaiのアカウントで判断しています。ある値がtrueなら公開、falseなら非公開です。ここをapiで変更すれば基本的にゲームの起動自体をコントロールできるようになってる。
-
-
-
-by : [ai](https://blueprintue.com/blueprint/9v24l5h6/)
diff --git a/content/m/ue/ue5_2024-05-28_125510.png b/content/m/ue/ue5_2024-05-28_125510.png
new file mode 100644
index 0000000..47047fc
Binary files /dev/null and b/content/m/ue/ue5_2024-05-28_125510.png differ
diff --git a/content/m/ue/ue5_2024-05-28_130045.png b/content/m/ue/ue5_2024-05-28_130045.png
new file mode 100644
index 0000000..d1892c2
Binary files /dev/null and b/content/m/ue/ue5_2024-05-28_130045.png differ
diff --git a/content/m/ue/ue5_2024-05-28_132554.png b/content/m/ue/ue5_2024-05-28_132554.png
new file mode 100644
index 0000000..8111dae
Binary files /dev/null and b/content/m/ue/ue5_2024-05-28_132554.png differ
diff --git a/content/m/ue/ue5_2024-05-28_134214.png b/content/m/ue/ue5_2024-05-28_134214.png
new file mode 100644
index 0000000..ec9d157
Binary files /dev/null and b/content/m/ue/ue5_2024-05-28_134214.png differ
diff --git a/content/m/ue/ue5_2024-05-28_134235.png b/content/m/ue/ue5_2024-05-28_134235.png
new file mode 100644
index 0000000..9597fba
Binary files /dev/null and b/content/m/ue/ue5_2024-05-28_134235.png differ
diff --git a/content/m/ue/ue5_2024-05-28_135604.png b/content/m/ue/ue5_2024-05-28_135604.png
new file mode 100644
index 0000000..a44c1c2
Binary files /dev/null and b/content/m/ue/ue5_2024-05-28_135604.png differ
diff --git a/content/m/ue/ue5_2024-05-28_151451.png b/content/m/ue/ue5_2024-05-28_151451.png
new file mode 100644
index 0000000..bff938a
Binary files /dev/null and b/content/m/ue/ue5_2024-05-28_151451.png differ
diff --git a/content/m/ue/ue5_2024-05-28_151511.png b/content/m/ue/ue5_2024-05-28_151511.png
new file mode 100644
index 0000000..8b1624a
Binary files /dev/null and b/content/m/ue/ue5_2024-05-28_151511.png differ
diff --git a/content/m/ue/ue5_2024-05-28_151839.png b/content/m/ue/ue5_2024-05-28_151839.png
new file mode 100644
index 0000000..43966b7
Binary files /dev/null and b/content/m/ue/ue5_2024-05-28_151839.png differ