1
0
hugo/content/blog/2024-11-19-ue55.md
2024-11-19 17:47:26 +09:00

154 lines
8.2 KiB
Markdown

+++
date = "2024-11-19"
tags = ["ue"]
title = "ue5.5で作り直す"
+++
`city sample`にearth system(solar system)を組み込みます。具体的には惑星(planet)の形式でmapを作成し、空から宇宙に出ても問題ないようにすることを目指します。
- 海 : `ocean waves`
- 空 : `ultra dynamic sky`
## city sample
5.5からcrashする回数が大幅に減りました。
`/Map/Small_City_LVL`を使います。`ground*`を探して削除します。これは海面にplane(平面)を設置しています。
止まっている車を`c`で運転できるようですが、これは`BP_Player`の機能です。使用するには後述する`game animation sample`に統合する必要があるでしょう。
playerstart(tag)をいくつか設置し、uiで選択してteleportできるようにします。instance data(config)に名前を保存して呼び出してもいいし、mapから値を取ってきてもいいです。
https://blueprintue.com/blueprint/3h8qi0ep/
いくつかの建物を追加します。
- /Levels/DefaultLevel
- /AutomotiveBridgeScene/Bridge_P
街頭は`BP_CurvedBride`で`Lamp_0x`を変更します。SMで`streetLampC`を選択して位置を調整します。また、すり抜けるのでマトリックスでcollisionを設定してください。よくわからない場合は後述する`twinmotion`を参考にしてください。
![](https://git.syui.ai/ai/ue/raw/branch/main/img/ue-2024-10-31-151413.png)
### AutomatedPerfTesting
`AutomatedPerfTesting`は5.5で追加されたpluginです。
> Experimental release of Automated Perf Testing Plugin v0.1, providing Gauntlet Test Controllers, UAT Test Nodes, and BuildGraph macros for adding common automated performance tests to a project's automated build and test.
- https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-5.5-release-notes
- https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Plugins/AutomatedPerfTesting
そのうち解消されると思いますが、現在(2024-11-18)、`city sample`はbuildできません。`Engine/Plugins/Performance/AutomatedPerfTesting`に`AutomatedPerfTestConfig.cs`, `AutomatedPerfTestNode.cs`が含まれていないため`${project}/Build/Script/CitySample.Automation.csproj`に記述されているcompileが通らないのです。
```xml
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="CitySample.Automation.csproj.props" Condition="Exists('CitySample.Automation.csproj.props')"/>
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Include="$(EngineDir)\Plugins\Performance\AutomatedPerfTesting\Build\Scripts\AutomatedPerfTestConfig.cs" />
<Compile Include="$(EngineDir)\Plugins\Performance\AutomatedPerfTesting\Build\Scripts\AutomatedPerfTestNode.cs" />
</ItemGroup>
</Project>
```
これはgithubにあるsrcから持ってくるしかありません。アクセスするにはorgに[参加](https://www.unrealengine.com/en/ue-on-github)します。
- https://github.com/EpicGames/UnrealEngine/tree/release/Engine/Plugins/Performance/AutomatedPerfTesting/Build/Scripts
## ocean waves
惑星の海を作るには`ocean waves`を利用します。必要なものは以下の2つです。
- BP_EarthSizedOcean : 海中
- BP_EarthSizedSphericalMesh : 海上
- WaterVolume
`BP_EarthSizedSphericalMesh`の`transform-location-z:-636000000`にします。次に海上の影問題を修正するため`Material Overrides`の`-1`から`4`までのmaterialを変更します。私は`/Vefects/Water/VFX/WaterMaterials`を使用しました。
次に`BP_EarthSizedOcean`の`Volume Maaterials`で`WaterVolume`をセットします。Above, Underwaterを`/Vefects/Water/VFX/UnderWater`に変更します。heightは`0`にします。これは海に入って出たときに海中を適用する高さを設定します。
これで正常に海を作ることができました。
![](https://git.syui.ai/ai/ue/raw/branch/main/img/ue-2024-11-18-220316.png)
## ultra dynamic sky
`ultra dynamic sky`は空と天候を作ります。
まずblueprintを開いて`HeightFog`を`visible:false`にします。これは霧を地平線に表示するものです。
## rain
rain, snowなどのweatherでは`postprocess volume`を使って画面に水滴を付けるなどの表現を行います。
```sh
[PostProcess Material]
/Vefects/Waters/Water/VFX/WaterOnSurfaces/Materials/MI_VFX_WaterOnLens_ClearCenter
/Vefects/Waters/Water/VFX/Rain/Materials/MI_VFX_CheapRain
```
## twinmotion
建物はtwinmotionから持ってくるとよいでしょう。`datasmith`でexportしてueでimportします。指示通りにproject rootを指定すると`/${name}_Assets`が作成されます。ただ、`datasmith`の置き場所は変更しても構いません。
すり抜け問題を解消するにはmeshを全選択して、右クリックで`アセットアクション -> プロパティマトリクスで選択内容を... -> collision complexity(use complex collision as simple...)`を選択します。
## chair
椅子に座る動作を設定します。大変ですが以下のcomponentを使うと簡単にできます。調整は難しいですね。私の場合は`game animation sample`を使っていますが、最新版では勝手に動きが制御されるため`anim montage`をそのまま再生できません。したがって、別にabpを作成し、それを呼び出します。
- https://www.youtube.com/watch?v=VzyvpFvon0g
- https://blueprintue.com/blueprint/wg_vyr4o/
## browser
まず下記のmaterialを`BP_browser`に追加したwidget componentで呼び出します。collisionでcontrolします。
- https://blueprintue.com/blueprint/-49_059w/
- https://blueprintue.com/blueprint/uubw_6ay/
![](https://git.syui.ai/ai/ue/raw/branch/main/img/ue-2024-11-18-220605.png)
## earth
基本的にはearth(mesh)をcollision(begin/end)でvisible(表示切替)すると良いと思いますが、安定はしません。また、横から惑星に入るとキャラクターの動作が停止する問題があります。これは平面ベースにmapが作成されているからだと思いますが、回避は難しいでしょう。一応、`planetary oceans`というassetは売られています。ですが、そこに既存の置物(陸地、建物)を置くのは難しく、置けたとしてもキャラクターの移動に問題が生じるかもしれません。
https://www.fab.com/listings/ea195c94-00af-43fb-bb1d-85a478320a27
## vrm4u
vrm-0とvrm-1.0を使ってみましたが、まだvrm-0がオススメです。vrm-1.0は前髪が少し浮かんでしまう問題があります。また、影の問題が出たのでvrm-0で再構築しました。
構築方法はベースに`SSSProfile`を使用します。次に`unlit`で生成したskをもとに`/Plugins/VRM4UContent/Util/Actor/PostShadow/BP_PoseCopyToon`で`custom`を生成します。詳しくは`/Plugins/VRM4UContent/ImportDataSet/DS_VRM_Custom`を見てください。
`/Blueprints/CBP_SandboxCharacter`でskに`VrmPoseableMesh`を追加して`custom`で作ったskを当てます。次に`BP_VrmOutlineComponent`を追加して同じく`custom`や`unlit`などを当て、設定にて`Common Width:0.05`, `Use Common Material:true`にします。
- /Plugins/VRM4UContent/Util/Actor/PostShadow/BP_PoseCopyToon
- VrmPoseableMesh
- BP_VrmOutlineComponent
![](https://git.syui.ai/ai/ue/raw/branch/main/img/ue-2024-11-18-220524.png)
## game animation sample
```sh
[issue]
1. anim montageなどを呼び出してそのまま再生が難しい
2. CPB_SandboxCharacterで別のABPを読み込んでも制御できない
- 浮かんでいるときの手
- BP_Superhero_FlightComponentのSprint Fly Speedを変更できない
```
`/Blueprints/RetargetedCharacters/ABP_GenericReataget`で変数の`IKRetargeter_Map`にて`RTG_UEFN_${name}`を追加します。`CBP_Sandbox_Character_${name}`を作ります。開いてsk(Manny)などにあるComponent Tagsに`RTG_UEFN_${name}`を追加します。最後に`GameMode : GM_Sandbox > Bone : CBP_SandboxCharacter_${name}`を指定して起動すればokです。
- /Blueprints/RetargetedCharacters/ABP_GenericReataget : `IKRetargeter_Map`
- /Blueprints/RetargetedCharacters/CBP_Sandbox_Character_${name} -> sk -> Component Tags:`RTG_UEFN_${name}`