1
0
This commit is contained in:
syui 2024-07-03 19:35:09 +09:00
parent 4f05c90fe6
commit 4c9e3d7b59
Signed by: syui
GPG Key ID: 5417CFEBAD92DF56

View File

@ -6,7 +6,7 @@ title = "ue"
slug = "ue"
+++
ここでは[epic games](https://www.epicgames.com/)の[unreal engine 5](https://www.unrealengine.com/ja/unreal-engine-5)の使い方をまとめます。現在はversionの`5.4.2`に追従しています。昔は`5.3.2`を使っていました。
ここでは[epic games](https://www.epicgames.com/)の[unreal engine 5](https://www.unrealengine.com/ja/unreal-engine-5)の使い方をまとめます。現在はversionの`5.4.2`に追従しています。
- [ue 5.4.2](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-5.4-release-notes)
- [ue 5.3.2](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-5.3-release-notes)
@ -16,9 +16,7 @@ slug = "ue"
- repo : https://git.syui.ai/ai/ue
- blueprint : https://blueprintue.com/profile/ai
## unreal engine 5.4
### 無料
## 無料
使用しているassetなどです。
@ -28,15 +26,16 @@ slug = "ue"
- plugin : [vrm4u](https://github.com/ruyo/VRM4U)
- plugin : [varest](https://www.unrealengine.com/marketplace/ja/product/varest-plugin)
### 有料
## 有料
おすすめのassetです。
- asset : [superhero fligth animations](https://www.unrealengine.com/marketplace/ja/product/superhero-flight-animations)
- asset : [dynamic volumetric sky](https://www.unrealengine.com/marketplace/ja/product/dynamic-volumetric-sky/)
- asset : [ocean waves](https://www.unrealengine.com/marketplace/ja/product/ocean-waves)
- plugin : [http websocket helper](https://www.unrealengine.com/marketplace/en-US/product/http-websocket-helper)
### [asset] vrm4u + superhero fligth animations
## [asset] vrm4u + superhero fligth animations
- [vrm4u](https://github.com/ruyo/VRM4U)
- [superhero fligth animations](https://www.unrealengine.com/marketplace/ja/product/superhero-flight-animations)
@ -104,7 +103,7 @@ Content/SuperheroFlight/Blueprints/Characters/BP_Player_UE5 -> Content/yui/BP_Pl
![](/m/post/ue/ue5_2024-05-28_151839.png)
#### [issue] 飛行するとカメラがモデル内部に入り込む
### [issue] 飛行するとカメラがモデル内部に入り込む
再生してみると飛行が正常に動きません。カメラがモデル内部に移動します。これは`scale`が間違っているためです。`apply additive`が原因でそこのscaleを変更すると回避できます。
@ -122,7 +121,7 @@ Content/SuperheroFlight/Blueprints/Characters/BP_Player_UE5 -> Content/yui/BP_Pl
これらの飛行中の問題については、リターゲットしない方法でmeshを活用することで問題は発生しません。詳しくは`game animation sample`との統合を見てください。
#### [issue] 飛行の上下左右の向きが反映されない
### [issue] 飛行の上下左右の向きが反映されない
飛行すると向きが一定になります。視点を動かしても変わりません。
@ -130,7 +129,7 @@ Content/SuperheroFlight/Blueprints/Characters/BP_Player_UE5 -> Content/yui/BP_Pl
これもv5.4で発生し、v5.3では発生しません。
#### [issue] vrm4uのmaterialについて考える
### [issue] vrm4uのmaterialについて考える
私は`SubsurfaceProfile`を使用していますが、他のタイプだと影(shadow)と反射(light)の問題がかなり強く出てしまい、あらゆる場面で常用できません。移動したら背景の加減でおかしくなるなど問題が多いのです。
@ -138,7 +137,7 @@ Content/SuperheroFlight/Blueprints/Characters/BP_Player_UE5 -> Content/yui/BP_Pl
<iframe src="https://blueprintue.com/render/wi2aobel/" scrolling="no" width="100%" height="400px"></iframe>
#### [issue] buildすると髪が動かなくなる
### [issue] buildすると髪が動かなくなる
package化すると髪が動かなくなります。これは`ue 5.3`でも発生し、vrm4uのversionの問題です。
@ -165,7 +164,7 @@ ediorで確認すると動くのですが、pacakge build後に動かなくな
このような解決法を取るなら[KawaiiPhysics](https://github.com/pafuhana1213/KawaiiPhysics)を使いましょう。そのほうが安定します。
#### [idea] 作り直すもの
### [idea] 作り直すもの
今まで実装開発してきたものはいくつかありますが、代表的なものを挙げます。記録のため動画にしておきます。
@ -181,7 +180,7 @@ ediorで確認すると動くのですが、pacakge build後に動かなくな
これらを全部作り直すことになります。
### game animation sample
## game animation sample
- [game animation sample](https://www.unrealengine.com/en/blog/game-animation-sample)
- [superhero flight animations](https://www.unrealengine.com/marketplace/ja/product/superhero-flight-animations)
@ -200,7 +199,7 @@ ediorで確認すると動くのですが、pacakge build後に動かなくな
<iframe src="https://blueprintue.com/render/7z11v96t/" scrolling="no" width="100%" height="400px"></iframe>
### custom gravity
## custom gravity
重力をactorに設定し、月の上を歩けるようにします。`gravity direction`を使います。
@ -218,7 +217,7 @@ gravity directionを無効にする方法が用意されていないようなの
https://dev.epicgames.com/community/learning/tutorials/w6l7/unreal-engine-custom-gravity-in-ue-5-4
### city sample
## city sample
今回は、[city sample](https://www.unrealengine.com/marketplace/ja/product/city-sample)と[game animation sample](https://www.unrealengine.com/marketplace/en-US/product/game-animation-sample)を統合する方法を紹介します。どちらも`epic games`が提供しているため無料で使えます。最初のスターターキットとして使用されることが多くなるはずです。
@ -297,7 +296,7 @@ city sampleは何かと問題が多いassetですが、その一番の原因は`
基本的にlvをcopyしたものを使用し、バグが発生したときは`Content/_ExternalActors_/Map/`にある自身が使っているmapのフォルダを削除しましょう。その後、またlvをcopyしてそれを使います。こんな方法しかありません。
### ocean waves
## ocean waves
星と海と空をつなげるには`ocean waves`が参考になります。このassetは結構すごいことをやっています。
@ -337,13 +336,13 @@ WaterVolume
雲の形式は`VolumetricCloud`で設定していきます。大体の使い方としてはこんな感じです。詳しくはblueprintを見ます。
#### [issue] buildすると雲が中央に集中する
### [issue] buildすると雲が中央に集中する
package buildすると光が中央に集中し、雲も全体的におかしくなります。中央に向かってレンダリングが伸びているように見えます。
`BP_EarthSizedClouds`の`Global Wind`が原因です。ここで`Ocean : BP_EarthSizedOcean`に指定するとこの現象が発生します。
#### [issue] 海に入った直前だけ背景が映り込む
### [issue] 海に入った直前だけ背景が映り込む
`BP_EarthSizedOcean`を編集します。
@ -351,7 +350,7 @@ package buildすると光が中央に集中し、雲も全体的におかしく
`Above Water Material`にも`Underwater`と同じものを入れてください。
#### [idea] atmoshereで宇宙をつなげる
### [idea] atmoshereで宇宙をつなげる
私が作ってきたlv(map)は宇宙と街でわけられていました。
@ -378,7 +377,7 @@ package buildすると光が中央に集中し、雲も全体的におかしく
しかし、注意点もあります。太陽と月を追加するとあまりに負荷が高くなったのか落ちるようになったことがありました。いくつか改善すると治りましたが、この形を採用するとbuildが通らなくなることもあります。
### dynamic volumetric sky
## dynamic volumetric sky
今回は、`dynamic volumetric sky`と`ocean waves`の統合してみました。
@ -391,14 +390,14 @@ package buildすると光が中央に集中し、雲も全体的におかしく
結果として理想の地表と海面、空と雲を手に入れました。
#### [tips] default setting
### [tips] default setting
- BP_DynamicVolumetricSky(self) -> Coloud : Coloud Fly Option
- BP_DynamicVolumetricSky(self) -> Height Fog Max Opacity : 0
- SkyAtmosphere -> Transform Mode : Planet Center at Component Transform
- SkyAtmosphere -> Transform(location-z : -6360)
#### [tips] option setting
### [tips] option setting
- BP_DynamicVolumetricSky(self) -> Single Player Fps Lock : 60 FPS
- VolumetricCloud -> Layer Bottom Sltitude : 20
@ -406,7 +405,7 @@ package buildすると光が中央に集中し、雲も全体的におかしく
- VolumetricCloud -> Tracking Max Distance : 400
- 2DSky -> visible : false
#### [issue] 地平線
### [issue] 地平線
まずはdynamic volumetric skyの地平線を消していきましょう。
@ -416,7 +415,7 @@ package buildすると光が中央に集中し、雲も全体的におかしく
どうやら`BP_Dynamic_VoluemetricSky`にある`ExponentialHeightFog`で地平線を設定しているようです。これを削除していくか、設定を変更してもいいですが、削除した場合はbuildがおかしくなるかもしれません。削除する場合はcompileするとerrorが出るので使用している箇所の関数やblueprintを削除します。
#### [issue] 海の波紋
### [issue] 海の波紋
dynamic volumetric skyと合わせることで海に波紋が現れます。
@ -428,13 +427,13 @@ dynamic volumetric skyと合わせることで海に波紋が現れます。
ただし、わからないところもあって、私は`BP_EarthSizedSpericalMesh`の中に`BP_DynamicVolumetircSky`を入れています。ですから、そのままでも座標は星の中心を指しています。
#### [issue] 海の影
### [issue] 海の影
海に円形の影が現れることがあります。これは`BP_DynamicVolumetircSky`の`VolumetricSkySupport`のtransform-scaleを大きくすると海に入る影が大きくなり、1にするとなくなります。
この辺も星の内部に展開される領域に関係します。
#### [issue] city sampleとの統合
### [issue] city sampleとの統合
city sampleとocean waves + dynamic volumetric skyを統合するのは容易ではありません。buildの結果が異なるからです。
@ -444,7 +443,7 @@ city sampleとocean waves + dynamic volumetric skyを統合するのは容易で
まずdynamic volumetric skyは0に置きます。oceanの惑星の中心ではありません。そして、dynamicのatmosphereを念の為に`location-z:-636000001`とします。`location-z:-636000000`でもいいと思います。これは`Ground Raidus:6359`になっているからです。
#### [idea] 具体的な統合
### [idea] 具体的な統合
重要な問題は以上の2点ですが統合には他にやらなければならないことがたくさんあります。
@ -462,7 +461,7 @@ loopさせるには`spline len`をmaxにして`float wrap`します。
<iframe src="https://blueprintue.com/render/8gfrd45h/" scrolling="no" width="100%" height="450px" allowfullscreen></iframe>
#### [idea] 地球の外側
### [idea] 地球の外側
そのままでは宇宙に出たときの見栄えがよくありません。したがって、宇宙に出たとき地球の見た目を整える必要があります。
@ -470,7 +469,7 @@ loopさせるには`spline len`をmaxにして`float wrap`します。
<iframe src="https://blueprintue.com/render/t46sbleq/" scrolling="no" width="100%" height="450px" allowfullscreen></iframe>
#### [idea] 地球の自転
### [idea] 地球の自転
これは失敗談ですが、地球に自転を設定してみました。これで外側を回っている月や太陽はゆっくりした速度で動けば良くなります。つまり、現実に合わせることができる。
@ -478,14 +477,12 @@ loopさせるには`spline len`をmaxにして`float wrap`します。
やはり、ゲーム上で地動説を実現するのは難しいようです。太陽側を回すしかありません。
#### [idea] 本物の地球を作る
### [idea] 本物の地球を作る
`cesium`を使うとgoogle mapと連携できます。
- [cesium](https://www.unrealengine.com/marketplace/ja/product/cesium-for-unreal)
### pixel streaming
## pixel streaming
個人的にやりたかったのは`multiple full stacks with matchmaking`です。具体的には複数のインスタンスを起動して、各ユーザーごとにsessionをわけます。これにより異なる画面(自分の画面)で操作できるようになります。
@ -532,7 +529,16 @@ urlは`http://127.0.0.1/?StreamerId=DefaultStreamer`, `http://127.0.0.1/?Streame
例えば、login時にipをgetして、それを保存します。そのipと一致しないと操作できないようにすれば一人のユーザーのみ操作可能になります。ですが本来は各ユーザーが別々のスタック、ストリームでゲーム画面を実行できるようにするのが望ましいでしょう。
### [error] install asset
## http websocket helper
これまで`put`ができるhttp requestはありましたが、`patch`ができるものはありませんでした。しかし、[RLoris/HttpHelperDoc](https://github.com/RLoris/HttpHelperDoc)がそれを可能にします。無料で使えるものには[ufna/VaRest](https://github.com/ufna/VaRest)があります。
```sh
$ curl -X PUT
$ curl -X PATCH
```
## [error] install asset
> インストールに失敗しました
>
@ -548,7 +554,7 @@ assetをinstallするときにerrorが出ます。原因は`Epic Games Launcher`
とはいえ、unreal engineは基本的にバグだらけであり、ほとんどがバグっているので、この問題もその中の一つに過ぎません。特に困っているので書きました。
### [error] package to generate with the same ID
## [error] package to generate with the same ID
> PackagingResults: Error:: [Cook] Tryning to add package in context but there is already a package to with the same ID
@ -556,11 +562,8 @@ assetをinstallするときにerrorが出ます。原因は`Epic Games Launcher`
city sampleで頻発します。`Content/_ExternalActors_`を削除して新しいcity sampleの`Content/`を上書きします。
## unreal engine 5.3
ここからは個人的に実装したものをまとめます。
### [tips] モデルを法線で強調する
## [tips] モデルを法線で強調する
モデルのoutline(法線)を強調する設定を行います。`Content/yui/model/SK_xxx`を開いて`レンダリング > overlay material`で以下のマテリアルを作成して適用します。
@ -572,19 +575,19 @@ city sampleで頻発します。`Content/_ExternalActors_`を削除して新し
[blueprintue.com](https://blueprintue.com/blueprint/t1xc2azx/)
### [tips] 待機モーションをランダムにする
## [tips] 待機モーションをランダムにする
`ABP_xxx`の`locomotion > idle`にて`random sequence player`を追加します。詳細からanimを追加してランダムで再生できます。
![](/m/post/ue/ue5_2024-05-30_132836.png)
### [tips] アニメーションにエフェクトを付ける
## [tips] アニメーションにエフェクトを付ける
animに時間制限のエフェクトを付けます。通知に`timed niagara effect`を追加して詳細からniagaraを追加します。
![](/m/post/ue/ue5_2024-05-30_132915.png)
### [tips] 剣のモーションを作る
## [tips] 剣のモーションを作る
新しくswordのactor(static mesh)を作成し、collisionを作ります。
@ -628,7 +631,7 @@ sword motion(ソード・モーション)はanim montage(アニメ・モンタ
- [UE5でルートモーションを有効にしたままリターゲットをする方法](https://happynetwork2019.hatenablog.com/entry/2023/10/02/191340#:~:text=%E3%83%BB%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%82%BF%E3%83%96%E3%81%A7%E3%83%AB%E3%83%BC%E3%83%88,%E3%81%95%E3%82%8C%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8B%E3%80%82)
### [tips] apiを使って処理を行う
## [tips] apiを使って処理を行う
pluginである[varest](https://www.unrealengine.com/marketplace/ja/product/varest-plugin)のpostですが、macで動いたものがwindowsでは動きませんでした。ですが、windowsでイチから作成すると動きました。
@ -646,7 +649,7 @@ login処理です。atprotoと連携できればいいなと考えています
by : [ai](https://blueprintue.com/blueprint/9v24l5h6/)
### [tips] カメラを近づけるとキャラの表示を変える
## [tips] カメラを近づけるとキャラの表示を変える
透明にフィードアウトする形がいいのですが、非常に面倒なのでoverlayで対応します。
@ -656,11 +659,11 @@ https://historia.co.jp/archives/23521/
`m_outline_7`を変換して使いました。パラメータの調整は厄介で基本設定が`surface, masked, subsurface profile`, パラメータを`U_pos_01 : 0.2`以外は0にします。これは自分が購入したassetの設定です。
### [system] レベルアップ
## [system] レベルアップ
移動するとrandomで経験値が入るようにしました。大体、40秒間移動すれば1 expです。経験値をapiに保存します。expに応じてlvを表示します。この辺はstatusのuiを再度表示しないといけなかったり、anim-eventを作ったり大変でした。
### [system] アイテムストレージ
## [system] アイテムストレージ
アイテムストレージと言っても`wp`です。uiとボタンで作ります。
@ -668,7 +671,7 @@ uiをマウスで動かすには`Set Input Game And UI`を使用します。こ
基本的にアイテムをapiに保存して、それがある場合はスキルやテレポートを開放します。テレポートはカードを拾う場所に`PlayStart`を置いておきます。`Open Level`の`options`にtagを入れて移動します。
### [tips] 瞳の変化
## [tips] 瞳の変化
`create dynamic material instance`
@ -676,17 +679,17 @@ https://historia.co.jp/archives/33401/
これを利用することでmaterialを光らせてそれを設定することで瞳や輪を光らせることができます。ただ常時はやめたほうがいいでしょう。プレイヤーがつかれてしまいます。
### [tips] 物の破壊
## [tips] 物の破壊
> 選択モードから「フラクチャ」モードに変更します。このフラクチャモードで実際に Chaos Destructionに関わるメッシュの分割などを行います。複数選択する。新規作成。一様化で分割。色はジオメトリコレクションの詳細から「Show Bone colors」のチェックを外します。
https://logicalbeat.jp/blog/11044/
### [tips] 表情を動かす
## [tips] 表情を動かす
![](/m/post/ue/ue5_2024-05-30_132916.png)
### [tips] 必殺技をつける
## [tips] 必殺技をつける
レベルシーケンスで作成しました。カメラ移動に苦戦しましたが、それさえやれば割と簡単かも。あと爆発と同時に見えないsphereを作成してsimulate physics, collisionを設定しています。これによりダメージや吹っ飛び判定ができます。なお、play後は`input enable`しておいてください。