2024-11-19 /
@syui
ue
/ ue
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を参考にしてください。

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.
そのうち解消されると思いますが、現在(2024-11-18)、city sampleはbuildできません。Engine/Plugins/Performance/AutomatedPerfTestingにAutomatedPerfTestConfig.cs, AutomatedPerfTestNode.csが含まれていないため${project}/Build/Script/CitySample.Automation.csprojに記述されているcompileが通らないのです。
<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に参加します。
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にします。これは海に入って出たときに海中を適用する高さを設定します。
これで正常に海を作ることができました。

ultra dynamic sky
ultra dynamic skyは空と天候を作ります。
まずblueprintを開いてHeightFogをvisible:falseにします。これは霧を地平線に表示するものです。
rain
rain, snowなどのweatherではpostprocess volumeを使って画面に水滴を付けるなどの表現を行います。
[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を作成し、それを呼び出します。
browser
まず下記のmaterialをBP_browserに追加したwidget componentで呼び出します。collisionでcontrolします。

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

game animation sample
[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}