MRが楽しい

MRやVRについて学習したことを書き残す

clusterの自作ワールドを作成してアップロードする その6(ライティングとスカイボックスの設定)

本日は cluster の技術調査枠です。
cluster の自作ワールドを作成してアップロードする手順を記事にします。
f:id:bluebirdofoz:20201219162315j:plain

その6はライティングとスカイボックスの設定です。

前提条件

前回記事の続きになります。
bluebirdofoz.hatenablog.com

clusterワールドのライティング

ライトを利用する際は「ライティングモード」に気を付ける必要があります。
「ライティングモード」は Light オブジェクトの[Mode]項目で以下の3種類から設定します。

モード名 設定欄 説明
Realtime Realtime Lighting ランタイムに全てのフレームの Realtime ライトのライティングを計算し更新します。Realtime ライトは事前計算されません。
Mixed Mixed Lighting ランタイムに Mixed ライトのプロパティーの一部を計算することが可能ですが、制限があります。Mixed ライトの中には事前計算されているものがあります。
Baked Lightmapping Settings ランタイム前に Baked ライトの照明を事前計算し、ランタイムの計算にはそれらを加えません。全ての Baked ライトは事前計算されます。

f:id:bluebirdofoz:20201219162349j:plain

cluster のワールドには3つ以上のピクセルライトを反映できません。
3つ目以降のライトのピクセルライトは自動的に無効化されます。
例えば、以下の事例では1つ目、2つ目の赤色と緑色のライトは床や天井にピクセルライティングが行われていますが、3つ目の青色のライトのピクセルライティングが行われていません。
f:id:bluebirdofoz:20201219162403j:plain

cluster のワールドではリアルタイムシャドウは利用できません。
例えば、以下の[Realtime]のライトで作成したワールドでは物体の影が描写されず、壁や天井ごとに陰影が表示されています。
f:id:bluebirdofoz:20201219162532j:plain

ワールドに物体の影を描写するには[Mixed]または[Baked]のライトで影をワールドにベイクしておく必要があります。
以下の[Baked]のライトで影をベイクしたワールドでは、物体同士の影が描写され、窓から差し込む光が表現されています。
ただし、[Baked]のライトは[Static]でないモデルを照らすことはできないので注意してください。
f:id:bluebirdofoz:20201219162546j:plain

本記事では手順の簡略化のために、「Realtime」のライトを1つだけ利用することにします。
ライティングに関する詳細を知りたい方は以下のページを参照ください。
creator.cluster.mu
clustervr.gitbook.io
docs.unity3d.com

ライトの配置

今回は室内のワールドなので部屋の中央に1つの電灯を配置することにします。
ワールドにデフォルトで配置されている DirectionalLight オブジェクトは不要なので削除しておきます。
f:id:bluebirdofoz:20201219162604j:plain

ライトには幾つかの種類があります。今回は全方向に光を放つポイントライトを使用します。
ライトの種類の詳細を知りたい場合は以下のページを参照ください。
docs.unity3d.com

[Hierarchy]上で右クリックから[Light -> Point Light]を選択し、ライトを追加します。
f:id:bluebirdofoz:20201219162624j:plain

追加された Point Light の Inspector ビューを開いて、Transform を編集して部屋の中央に移動させます。
更に[Light]コンポーネントの[Range]の値を調整して光の強さを変更します。
f:id:bluebirdofoz:20201219162636j:plain

更に温かい感じを出したかったのでライトの色合いを変更してみます。
ライトの色は[Color]項目で変更できます。
f:id:bluebirdofoz:20201219162650j:plain

これで部屋がライトに照らされて明るくなりました。
f:id:bluebirdofoz:20201219162701j:plain

ワールドのスカイボックス

デフォルトだとワールドの背景には青空が設定されています。
このままだと部屋の明るさと合わないので、背景も夜空に変更してみます。
f:id:bluebirdofoz:20201219162715j:plain

スカイボックスマテリアルの作成

背景の設定にはスカイボックスを利用します。
最初に、スカイボックスの元となるHDRI画像を以下のサイトから取得します。
hdrihaven.com

今回は以下の夜景のHDRI画像を利用します。
f:id:bluebirdofoz:20201219162813j:plain

ダウンロードサイズは2kを選択しました。
f:id:bluebirdofoz:20201219162827j:plain

変化がすぐ分かるように[Game]画面にスカイボックスを表示します。
[effect -> skybox]にチェックを入れると、[Game]画面にスカイボックスが表示されます。
f:id:bluebirdofoz:20201219163257j:plain

ダウンロードしたHDRI画像を Unity に取り込みます。
Inspector ビューを開き、[Texture Shape]を[Cube]に変更して[Apply]で変更を反映します。
f:id:bluebirdofoz:20201219163308j:plain

スカイボックス用のマテリアルを作成します。
[Project]のフォルダ上で右クリックから[Create -> Material]で新規マテリアルを作成します。
f:id:bluebirdofoz:20201219163322j:plain

作成したマテリアルの Inspector ビューを開き、[Shader]を[Skybox -> Cubemap]に変更します。
f:id:bluebirdofoz:20201219163335j:plain

シェーダを変更したら[Cubemap (HDR)]に取り込んだ画像を設定します。
f:id:bluebirdofoz:20201219163346j:plain

名前を適当なものに変更して、これでスカイボックス用のマテリアルが作成できました。
f:id:bluebirdofoz:20201219163359j:plain

スカイボックの変更

次にスカイボックスの設定を変更します。
メニューから[Windows -> Rendering -> Lighting Settings]を選択します。
f:id:bluebirdofoz:20201219163410j:plain

すると[Lighting]ウィンドウが開きます。
[Skybox Material]を先ほど作成したスカイボックス用のマテリアルに設定します。
f:id:bluebirdofoz:20201219163420j:plain

これでスカイボックスが切り替わりました。
f:id:bluebirdofoz:20201219163432j:plain

シーンを再生して、窓を覗き込むと夜空が見えるようになりました。
風景の明るさはマテリアルの[Exposure]で、風景の回転は[Rotation]で変更することができます。
f:id:bluebirdofoz:20201219163444j:plain

ワールドの更新

ここまでのカスタマイズで一度、cluster 上のワールドを更新してみます。
メニューの[Cluster -> ワールドアップロード]から[ワールドアップロード]ダイアログを開きます。
前回作成した[TestWorld]を選択し、画像等の情報を更新した上で再び[アップロードする]を実行します。
f:id:bluebirdofoz:20201219163729j:plain

これで指定のワールドが更新されます。
f:id:bluebirdofoz:20201219163744j:plain

テストプレイしてみました。
ワールドが更新されて、部屋を歩き回ることができました。
f:id:bluebirdofoz:20201219163755j:plain

次回はポストプロセッシングを使ってワールドを幻想的な雰囲気にしてみます。
bluebirdofoz.hatenablog.com