Unityで原神みたいな空と海を作る
上記のようなビジュアルを作成してみます。有料の神アセットを頼りに頼った簡単セットアップです。ご了承ください。
作業環境
- Unity 2021.3.16f1 3D URP
依存アセット
引用モデル
手順
- Unity Hub から 3D (URP) で新規プロジェクトを作成
- Package Manager から Enviro3 と Water Caustics Effect をインストール
- Enviro3 の構築(簡単に手順を記載しますが、公式ドキュメントの参照を推奨)
1. Enviro3 の Prefab を配置
2. Prefab の Setup を展開して、MainCamera を設定
3. 既存の Directional Light を無効化
4. URP Renderer の Depth Texture を ON
5. Post Processing Volume に Tonemapping を追加して ACES に設定
- Water Caustics Effect の DEMO_3_MultipleLights Scene を Hierarchy に D&D
- 好きなキャラクターモデルを Scene に配置
ここまでがアセットの導入と初期セットアップです。ここまで完了したら不要な GameObject の無効化や GameObject の位置調整を行い Hierarchy と Game View を以下のような状態にします。この時点ではまだレンダリング関連の設定には一切触れていません。
- ビジュアルの調整
Post Processing Volume の Color Adjustments を設定します。この設定は大抵のケースで深く考えずに毎回追加しています🐱
Enviro3 の Time Module を開いて Simulate を true
に、Cycle Length In Minutes を 1
に設定します。最初の動画のような時間経過をシミュレーションする機能で、1日が1分で過ぎるように設定しています。Simulate は PlayMode でのみ有効になります。
Enviro3 の Quality Module は Insane
にしておきます。レンダリング環境が弱い場合は適宜調整してください。
次に水面を調整します。水平線の色が空の色と同じになるように調整すると良い絵ができるため、ここでは WaterSurface の ReflectionIntensity
を調整し、水面に空を反射させて色を調整します。ただこの部分は反射よりも Fog に頼った方が良い結果が得られそうです。
また水平線の境界が鋭利すぎて違和感があるので DoF も設定します。
これでひととおりの設定は完了です。再生すると最初の動画と同じような絵が表示されると思います。動画ではどの時間帯でも同じ設定にしていますが、朝・昼・夕・夜のそれぞれで各パラメータを調整した方がやはり綺麗な絵になります。下のキャプチャでは、夕・夜は WaterSurface
の反射を強めに、朝・昼は反射を弱くして WaterCausticsEffect > Intensity
を強く設定したものです。夜は Enviro3 の設定も変更し、 Weather Module から雲を削除と、Sky Module から Star Intensity Curve
の強度を高めました。この辺りはスクリプトで制御するべき部分化もしれません。
あとがき
有料アセット様のお力を借り、個人的には概ね満足できるビジュアルができました。が、まだまだ改善したいポイントがあるため、今後の課題として残しておき、また再調整しようと思います。
- 夜の星がいまいち(Enviro3 は画像を表示しているだけだが、Shader を挟みたい)
- 水平線の Fog
Discussion