5.5 KiB
+++ date = "2024-06-23" tags = ["ue5","ue"] title = "ue5.4のocean wavesで星と空と海をつなげる" slug = "ue-ocean-sky" +++
今回は星と空と海を融合する方法を紹介します。この現実方式はgame engineでは相当に難しいことです。そのためこれをやる人はあまりいませんし、必要性もありません。おすすめもできません。
これには様々な問題があり不便があります。また、ゲームプレイでは必要ない部分、見えない部分になるので、多くの開発者は一般的なゲーム方式を採用します。
それでもこの方式を採用したい場合はocean waves
が参考になります。このassetは結構すごいことをやっています。
まずはocean waves
でplayerを動かし不要なものを削除します。
OceanWaves/Levels/EarthSizedOceanPlanet
を開いて必要なものを列挙します。
Lighting
DirectionLight
SkyAtmosher
SkyLight
VolumetricCloud
OceanMaterialPresets
OceanMaterial_Opaque
OceanMaterial_Opaque_AF
OceanMaterial_SLW
OceanMaterial_SLW_AF
Planet
BP_EarthSizedClouds
BP_EarthSizedOcean
BP_EarthSizedSphercialMesh
BP_SkyAtmposhereAdjuster
PostProcessVolume
WaterVolume
+PlayerStart
+Plane
もしlvからcopyして使用する場合はBP_xxx
の値が一部抜けるので注意してください。例えば、BP_EarthSizedOcean
は海の設定です。詳細のOceanVolumeにWaterVolume
を参照するようにしてください。
雲の形式はVolumetricCloud
で設定していきます。大体の使い方としてはこんな感じです。詳しくはblueprintを見ます。
buildすると雲が中央に集中する
package buildすると光が中央に集中し、雲も全体的におかしくなります。中央に向かってレンダリングが伸びているように見えます。
BP_EarthSizedClouds
のGlobal Wind
が原因です。ここでOcean : BP_EarthSizedOcean
に指定するとこの現象が発生します。
海に入った直前だけ背景が映り込む
BP_EarthSizedOcean
を編集します。
私が独自に設定しているSM_SkySphere
が潜った瞬間だけそれが表示されてしまうので、Volume Material Height
は0にしています。
Above Water Material
にもUnderwater
と同じものを入れてください。
統合は難しい
これを他のmapと統合するのはかなり難しいです。新しく自分で作っていくのも難しい部分が多いでしょう。
なぜならこの方式はmapのすべてに関係してくるからです。ものを作る場合、通常は部品を分割しながら作ります。ですが、この方式はそれが難しいのです。
一般的によく使用されているvolumetric sky
なども使用は難しいでしょう。昼夜や天候を変えるのは大変で、天体を動かしてlightを連動しなければならなりません。
他にも難しいところはたくさんあって、ロードも遅いですし、この方式でmapを作っていくと取り返しがつかないことになりかねません。
ですから、よほどのこだわりがない限り一般的な方式をおすすめします。
city sampleをベースに作ってみました。city sampleをベースにすることには様々な問題があり、難しい部分が存在します。例えば、city sampleの読み込みを少し特殊です。色合いの調整なども複雑でbuildに相当の時間がかかるようになります。buildすると見た目が変更されることも多く、確認や修正も大変になります。また、よく落ちるようになります。これが分離しているならいいですが、この方式にcity sampleを入れるのは危険です。
また、現実方式を採用すると、空間内でのみ美しく表現する一般方式に比べ品質の粗が目立つようになります。例えば、雲や海、星などです。天候や季節の表現もより難しくなるでしょう。品質も落とさなければなりません。
なぜかというと、ゲームは近づけば近づくほど品質は下がります。つまり、遠くに置いて近づけないようにするからこそ、きれいに表現できるのです。これが通常のゲーム方式です。それでなくてもマップを分けたり、空間を区切ったりすることで近づいても高品質を実現しています。
それが現実方式となると、すべてを一つの空間に置かなければなりません。そして、置かれたものには近づくことができます。この状態で高品質を実現するのは難しい。
仮にそれを下げない場合、世界規模で高品質のテクスチャを全体に使用することになり、パソコンのスペックをオーバーします。
また、オーバーしなければそれでいいのかというと、そういうわけでもありません。
今のゲームはあらゆるデバイスで動作することを求められます。したがって、できる限りスペック要求を低くするのが望ましいのです。
つまり、この方式は開発も品質も統合も難しくて、おすすめできるものではありません。