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