![yueのbooth](https://booth.pximg.net/c/48x48/users/14667146/icon_image/27f0f21e-66de-40ec-874d-34890989f187_base_resized.jpg)
【無料】ライトベイクオンオフギミック【VR睡眠】
- Digital0 JPY
![【無料】ライトベイクオンオフギミック【VR睡眠】](https://booth.pximg.net/cba20df7-a5c1-46f1-859d-09ee29a78825/i/5208045/fd53bfb4-692c-4eda-b86a-d9c7641b09f4_base_resized.jpg)
ライトベイクされた照明をON/OFFできるギミックです。
概要
ライトベイクされた照明をON/OFFできるギミックです。 ■仕組み 指定されたメッシュのライトベイクテクスチャの読み込み先を切り替えることで、照明のオンオフを行います。 ※ライトをオンオフしているのではなく、ライトを受けたメッシュのライトベイクテクスチャをオンオフしていることに注意してください。 また、ライトプローブ、リフレクションプローブについても、一緒にオンオフされます。
このアセットで 出来ること/出来ないこと
■出来ること ・メッシュに当たる照明をオンオフする ・ワールド内で一部メッシュのみに本アセットを作用させる。 ■出来ないこと ・複数の照明を1つのメッシュに当てた際、照明の一部のみをオンオフする。 (このアセットはメッシュに当たる光全体がオンオフされます。) ・複数のライトベイク結果を切り替える
導入手順
本アセットは、「ヨドコロちゃんハプティックコントローラー」のスイッチを利用すると、簡単に導入できるよう設計されています。 https://yodokoro.booth.pm/items/2458051 ■導入手順 0.「ヨドコロちゃんハプティックコントローラー」をインストールしてください。 1. ダウンロードした本アセットのUnityPackageをインストールしてください。 2. 任意のGameObjectに「LightmapToggler」コンポートを付与してください。 3.「LightmapToggler」内の項目「TargetObject」に、ライトベイクをオンオフしたいオブジェクトを指定してください。 そのオブジェクトおよび配下(子関係、孫関係....)のすべてのメッシュが、本アセットの作用を受けます。 4.「ヨドコロちゃんハプティックコントローラー」のマニュアル内「スイッチを押した時に自作のUdonスクリプトを呼び出す」を参考に、2.で付与したGameObjectをスイッチに設定してください。 ■「ヨドコロちゃんハプティックコントローラー」以外のスイッチを利用したい場合 本アセットのU#ソースコード内の以下メソッドのON/OFF処理になっています。利用したいスイッチギミックに合わせて利用してください。 ・Yodo_HapticSwitchOn ・Yodo_HapticSwitchOff
利用規約
MITライセンスにて頒布します。 以下のライセンスの範囲で、自由に改変、商用利用可能です。 https://licenses.opensource.jp/MIT/MIT.html
免責事項
当商品を使用することで使用者側に不利な問題が生じた場合、それがいかなるものであっても配布元は一切責任を負いません。
更新情報
・2023/10/28 初版リリース
クレジット
・紹介動画利用アバター 「うささき」 https://booth.pm/ja/items/3550881 ・紹介動画利用ワールド 「VRCライティングテンプレート(Beta)」 https://lura.booth.pm/items/1666760
【U#エンジニア向け補足】ライトマップを動的に変える方法の調査結果
■NG方法1 lightmapを直接設定 LightmapSettings.lightmaps = darkDatas; ⇛Udonで禁止 ↓Canny https://feedback.vrchat.com/udon/p/expose-lightmapsettings-lightmapdata ■NG方法2 シェーダ内で、一般にベイクされたかの判定のマクロである「LIGHTMAP_ON」 or 「LIGHTMAP_OFF」のキーワードを上書きする ⇛Udonで、「_Udon」から始まらないキーワードの操作禁止 ↓Canny https://feedback.vrchat.com/udon/p/allow-all-shader-keywords-in-udon ■OK方法1 レンダラから参照するライトマップのインデックスを無効値にする Renderer renderer = gameObject.GetComponent<Renderer>(); if (renderer != null) { renderer.lightmapIndex = -1; } ⇛これが本アセット