こんにちは、設計屋です!今回はCar Configuratorのチュートリアル第7弾として、環境の変更機能を追加していきます。手順を分かりやすく説明していきますので、ぜひ参考にしてください。
1. 変更処理の概要
まず、今回実装する処理の概要を説明します。基本的には以前のCarPaintの仕組みと同様です。キーボードのQキーが押されると環境がNight Sceneに変化する処理を追加します。
- 初期状態でA(現在の環境)が表示されている。
- Qキーが押されるとBにNight Sceneの情報がセットされる。これにはHDRIやライトの情報が含まれています。
- Timeラインノードを使ってTimeを0から1に変化させ、AからBに変化します。
- 変化後、AにBの情報をセットしてTimeを0にリセットし、Aが再び表示されます。この繰り返しです。
2. HDRI Backdropの複製と設定
既存のHDRI Backdropを改造するため、まずは複製します。元のブループリントをいじるのは推奨されないためです。
- View OptionsからShow Engine ContentとShow Plugin Contentにチェックを入れます。
- HDRI Backdrop Contentフォルダ内のBlueprints、Materials、MeshesをEnvironmentフォルダにコピーします。
次に、コピーしたマテリアルを設定します。
- HDRI Projectionを開き、Material Functionをコピーした方に差し替え、セーブします。
- MI_HDRI_CenterProjectionを開き、コピーしたHDRI Projectionに差し替えます。
- HDRI Backdropを開き、Create MaterialのParentをコピーしたMI_HDRI_CenterProjectionに差し替え、不要な部分を削除します。
3. 環境情報の設定
HDRI Backdropの環境情報を設定します。
- レベルのDirectional Lightをコピーして複製します。Transformがリセットされるため、Rotationを元に戻します。
- HDRI BackdropのCubemapのDefault Valueを新しいHDRI (Sunset in the Chalk Quarry 8K) に差し替えます。
- Sky Lightも同様にCubemapを使用します。プレイ中のキャプチャは重いためです。
Env_01_Mapの元のHDRI BackdropとDirectional Lightを削除し、新しいものを配置します。
4. 背景切り替えの実装
次に、Env_01からEnv_02への切り替えを実装します。
- HDRI Attributesを開き、HDRI_MapをHDRI_Map_Aに設定します。
- 複製してHDRI_Map_Bを作成し、Lerpノードを追加します。
- TimeにはScalar Parameterを使用し、S + LMBで追加します。
CarPaintと同様に、Structureを作成します。
- "Str_Env"という名前で4つのパラメータを準備します。
- Texture Cube: "CubeMap"
- Rotator: "DL_Rotation"
- Float: "DL_Intensity"
- Float: "DL_Temperature"
HDRI Backdropに戻り、環境変数を追加します。
- "Env_01" として現在の環境を設定します。Variable TypeはStr_Envです。
- Directional Lightの情報をコピーして設定します。
- Env_01を複製して"Env_02"にし、Env_02_Mapの環境情報を設定します。
5. イベント処理の追加
最後に、Event Graphに処理を追加します。
- Env_01をGetし、Breakノードを追加します。
- MaterialInstanceをGetしてSet Texture Parameter Valueを設定します。Parameter NameはHDRI_Map_Bです。
- CubeMapやライト情報を格納する変数を作成します。
- "Cubemap_A"、"Cubemap_B"
- "DL_Rotation_A"、"DL_Rotation_B"
- "DL_intensity_A"、"DL_intensity_B"
- "DL_Temperature_A"、"DL_Temperature_B"
AのDefault Valueを設定し、Bをセットします。
- Macroを作成し"Mcr_Env"とします。
- Timelineを追加し、3秒で0~1に変化するよう設定します。
- MaterialInstanceをGetしてSet Vector Parameter Valueを設定します。Parameter NameはTimeです。
- SkyLightをGetしてSet Cubemap Blend Sourceを設定します。
- Directional LightをGetしてSet Relative Rotationで角度を変えます。
- IntensityやTemperatureも同様にLerp(Float)を使用して設定します。
キーボードの入力で環境を切り替える処理を追加します。
- Qキーを押すことでEnv_01に、Wキーを押すことでEnv_02に変化するようにします。
- Auto Recieve InputをPlayer 0に設定し、キーボードイベントを使えるようにします。
コンパイル後、Env_02_Mapを削除しても問題ありません。これで、Qキーで昼のシーン、Wキーで夜のシーンに切り替えが可能です。
次回予告
次回はいよいよ最後のパートです。UIを作成し、色や背景の変更をUIから行えるようにしていきます。
質問や不明点があれば、コメントでお知らせください。詳しく説明が必要な場合や追加の情報は、ブログや追加の動画で提供します。ブログのURLは概要欄をご覧ください。
動画が参考になりましたら、高評価やチャンネル登録をよろしくお願いします。最後までご覧いただき、ありがとうございました!