2023-12-21 / @syui

ue5 , 3d

ue5を触ってみた9

今回は、髪の毛が体を貫通する問題の修正と歩くモーションを変更する方法です。

KawaiiPhysics

https://github.com/pafuhana1213/KawaiiPhysics

このpluginは素晴らしい働きをし、完璧に動作します。

ただし、このpluginはc++クラスを追加する必要があります。

c++クラスを追加するとwindows側でprojectを起動できなくなります。私はmacからwindowsに送ってbuildしています。

したがって、こちらにあるように.uprojectを修正して起動し、c++クラスを追加後に右クリック、generate visual studio project filesから.slnを作成してrebuildします。rebuildする際もあらゆる依存関係でerrorが出るかもしれません。ue5は基本的に壊れているので、あらゆる問題が発生する可能性があります。

このpluginの使い方は、vroid studioで後ろ髪のboneを確認したあと、そのboneをrootに設定し、各種limitを設定し、指定のboneを貫通しないようにします。Sphere Limit,Capsule Limit, Plane Limitがあります。

ちなみに、今回はUE_5.3/Engine/Build/BatchFiles/Build.batを動かすのに相当手間取りました。

  1. pluginを使うにはc++クラスを追加する必要があるらしい

  2. 追加するとwindowsでuprojectが開かなくなる

  3. とりあえずc++なしでuprojectを開いてc++クラスを追加

  4. slnでrebuildが通らない。visual studioが警告ありとか出てる

  5. visual studioで.net framework sdk 4.8.0をインストールしろと言われる

  6. .net framework 4.8のインストーラーがblockされる

  7. .net framework 4.8.1とその他の.net関連をを手動でインストールする

  8. 1回目のrebuildが何故か失敗する

  9. 2回目でやっとUE_5.3/Engine/Build/BatchFiles/Build.batが動作する

  10. uprojectが正常に開くようになる

こんな感じでue5が動作する環境を構築してる時間のほうがゲーム開発してる時間より長い。ゲーム開発をしている場合ではない。

walk/run, land state

ABP_Playerでwalk/runのstateを編集したり、スタート時のダッシュをアニメモンタージュで調整したりしました。

/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を読み込むpluginであるvrm4uを使用します。現在、vroid sdkというものも登場しています。

macで使用するには大変ですが./Plugins/VRM4U/ThirdParty/assimp/lib/Mac/libassimp.aを用意してください。独自buildが必要です。

https://ruyo.github.io/VRM4U/03_mac

outline

これはoutline(アウトライン)やnormal line(法線)と一般に言われているものです。

それをoverlay materialで実現しています。

調整

基本的には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を入れることで機能します。もし機能しない場合の変更箇所を書きます。

いくつかの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

使用しているanimationにroot motionを設定します。

jump

かっこいいものに切り替えます。root-motionが動きませんでした。

  • ABP_Player_ai : AnimGraph > Locomotion > jump
  • ABP_Player_ai : AnimGraph > Locomotion > idle
  • RTG_ai : target, チェーンマッピング > rootFK > 平行移動モード > Globally Scaledに設定

root motionをenableにしても動きません。原因はIKリターゲットしたときrootが動いていないために起こります。animationを開いてsrcとtargetを比較してみると、srcのほうはrootが動いていますが、targetのアニメは動いていません。具体的には、srcはlocationが変動しますが、targetは変動していません。

bone(ボーン)のrootを選択してFKの平行移動モードをGlobally Scaledに設定します。

これでtargetのrootが変動しているのを確認後、リターゲットし、montageを作成します。

hover

ものに当たった時のanimationです。

  • ABP_Player_ai : EventGraph > Play hover fligh start montage notify event

land

着地するときのanimationです。

  • BP_SuperheroFlighComponent : EventGraph > Hit Event Collapse Graph

Play anim montageに指定したものを使用するように変更します。

指定したanim montageの通知にBPANS_SetlsSuperheroloadingなどを追加します。既存のanim montageである./Content/SuperheroFlight/Characters/Mannequins/Animations/Flight/Land/を参考にしてください。

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

主にhair1_08, hair1_09, hair1_10を指定して各種limitを入れ、調整していきます。

limitは髪の毛が体を貫通しないようにするためのものです。主にSpherical Limitsの丸形とCapsule Limitsの筒型を使用します。大きさや傾きなどを調整してください。headhip, armを指定するといいでしょう。