Blenderで円錐を作成して、Unityでモバイル向けボリュームライト*に設定する方法。
*(空間も照らす漫画的スポットライト表現)
PC向けの方法だと、スマホでは重くなるので、この方法一択になると思われる。
↓の自作ゲームで実際に使用。
サンプルのスクリーンショット
若干チープな気もするが、ローポリなキャラクターと合わせれば許容出来る。
色を変えて下から当てると、ホラーっぽい感じにも。
(ボリュームライトじゃなくても良い気はした)
サンプルの動画
*音なし。
Blenderでボリュームライト用の円錐を用意
【ダウンロード】自分で作るのが面倒な人用
- 頂点:64
- 半径1:0.5m
- 半径2:0m
- 深度:1m
- 形式:OBJ(MTLなし)
- ライセンス:CC0
作り方
使用環境
- バージョン:blender-2.93.0
- 言語:日本語
【言語:英語の場合のみ】Blenderを英語から日本語に変更
- 上部メニュー -> Edit -> Preferences…を選択して設定画面を開く。
- Translationの項 -> Languageで、Japanese (日本語)を選択。
作成手順
- シーンコレクションで、Cubeを削除。
- 上部メニューのやや下にある、「オブジェクトモードメニュー」 -> 追加 -> メッシュ -> 円錐を選択。
- 左下の「円錐を追加」から各種設定を変更。
頂点:上面と下面の頂点数。デフォルト32。多い程、滑らかに。
半径1:下部の半径。デフォルト1m
半径2:上部の半径。デフォルト0m
深度:縦の長さ。デフォルト2m - 「オブジェクトモードメニュー」の一番左「オブジェク…」を選択、「編集モード」に変更。
- 「編集モードメニュー」 -> メッシュ -> ノーマル -> 反転を選択。見た感じ変化はないが完成。
- ファイル -> エクスポート -> Wavefront (.obj)を選択。適当にConeと命名 -> OBJをエクスポート。
生成されたCone.objファイルが3Dモデル本体。
Cone.mtlはマテリアルデータ(今回は使わない)。
作った円錐をUnityでボリュームライトに設定
マテリアルの作成と設定
- 上部メニュー -> Assets -> Create -> Materialを選択。適当に「VolumeLightMaterial」等と命名。続いて設定。
- インスペクター -> Shader -> UI -> Lit -> Transparent
- Tint:任意の色に変更。
色はLightの方で設定可能だが、透明度はこちらでしか設定出来ない。
自分の場合は、(255, 255, 255, 64)に設定した。
円錐の3Dモデルの設定
- Cone.objをProjectフォルダ内へ、ドラッグ&ドロップしてインポート。
- フォルダからヒエラルキーへ、ドラッグ&ドロップして、シーンに配置。
- Coneの子のdefaultを選択。
- インスペクター -> Mesh Renderer -> Materials -> Element 0に、先程のVolumeLightMaterialを設定。
- インスペクター -> Transform -> Scale(localScale)を変えて、想定する大きさに変更。
光源の設定
- ヒエラルキー -> Coneのプレハブ本体(defaultの親)を選択。
- インスペクター -> Layer -> UIを選択(使っていないレイヤーなら何でもOK)。
- Change Layerダイアログ -> Yes, change children
- ヒエラルキー -> defaultを右クリック -> Light -> Point Light
- 作成したPoint Lightを選択。
- インスペクター -> Lightの各種要素を設定。
- Mode:Bakedに設定。
- Range:ボリュームライトの大きさに応じて調整。
- Intensity:10~100位で任意の値に調整。
- Color:任意で。自分の場合は(255, 255, 0, 255)に設定した。
- Culling Mask:Nothingを選択した後、UIを選択。
- インスペクター -> Transform -> Position.Yを上部にズラして光源の位置を調整。
照らす対象へスポットライトを当てる場合
ざっくりした説明
- ボリュームライトのプレハブに、Mode:Realtimeのスポットライトを追加。
- ボリュームライトのサイズに合わせて、明るさと距離を調整。
詳細な手順
- ヒエラルキー -> defaultを右クリック -> Light -> Spotlight
- 作成したSpotlightを選択、設定。
- インスペクター -> Transform
- Rotation.Xを90に変更。
- Position.Yを円錐内の上部に調整。
- インスペクター -> Light
- Mode:Realtimeのまま。
- Color:デフォルト設定の白か、Point LightのColorに合わせる。
- Range、Spot Angle、Intensityは一時的に設置した3D Objectを見て調整。
- ボリュームライトをプレハブ化した後に、選択。プレハブ内に切り替える。
- 上部メニュー -> GameObject -> 3D Object -> Planeを円錐下部に設置して調整。
- 最後にPlaneを削除。
- インスペクター -> Transform