VRCSmokeGlassDocs

VRCSmokeGlassのドキュメントです

View the Project on GitHub AzuriteLab/VRCSmokeGlassDocs

曇りガラスを一から導入する

ここでは曇りガラスシェーダを使い1からセットアップする方法を紹介します。

1枚だけワールドに配置する場合は、セットアップ済みのprefabHierarchyにドロップすることで簡単につかえますが、 2枚目以降を作成する場合はRender Textureなど自分で新たに作成する必要があります(もちろん2枚つかうことは重くなりますので非推奨ではあります) この解説はその方向けのため、最初に配置する方は 曇りガラスをprefabから導入する を参照してください。

  1. RenderTextureを作成する
  2. 平行投影カメラを作成し、RenderTextureを割り当てる
  3. CustomRenderTexture用マテリアルを作成する
  4. CustomRenderTextureを作成し、マテリアルを割り当てる
  5. 表示用のシェーダのマテリアルを作成する
  6. 表示用の板をカメラと同じサイズで用意、位置合わせをする

また、無料配布のunitypackageにはprefabが一つ含まれています。 それをHierarchyにドロップすることで初めから使える状態になります。

細かいガラスの調整に関しては以下の逆引きリファレンスを読んでください。


1.RenderTextureを作成する

まず、深度情報(ガラスからどれだけ近いのか)を取得するために Render Texture を作成します。

Projectウィンドウで右クリックし、メニューを開き、Create -> Render Texture の順番で選択して Render Texure を作成してください。

render_texture

そして、作成された Render Texture を選択し、Inspectorから Color FormatDepth に変更します。
このとき、Size の項目もデフォルトの 256x256 では小さすぎるため、1024x10242048x2048 あたりに設定すると良いでしょう。 (もちろんサイズを増やすと負荷が増えます。一応推奨値は 1024x1024 です)

render_texture_setup

2.平行投影カメラを作成し、RenderTextureを割り当てる

次に深度情報を写すためのカメラを作成します。

Hierarchy の空いているスペースで右クリックし、Camera を選択してカメラを作成します。

create_camera

次に作成されたカメラを選択し、Hierarchy に表示された設定を行っていくのですが、ここは項目が多いです。

setup_camera

この画像のようになっていれば大丈夫なはずです。

3.CustomRenderTexture用マテリアルを作成する

お次は作成した平行投影カメラから得た深度情報をガラスの曇り情報へと変換するための CustomRenderTexture を作成するのですが、 この Custom Render Texture には曇り情報へと変換するためのシェーダを割り当てたマテリアルを作成する必要があります。

Projectエリア の空いている部分を右クリックし、 Create -> Material を選択し、 Material を作成します。

create_material

次に作成した Material を選択し、 Inspector から設定を行います。 まずはシェーダを選択します。VRCSmokeGlass -> Writer -> SGHitBufferWriter の順で選択してください。
これは Smoke Glass Hit Buffer Writer の略で、曇りガラス当たり判定バッファ書き込み機 の意です。

set_writershader

次にこのシェーダの設定を行っていきます。

setup_writer

補間方法など詳しいパラメータの説明は SGHitBufferWriterシェーダのパラメータ解説 を参照してください。

4.CustomRenderTextureを作成し、マテリアルを割り当てる

Render Texture の時と同じように、 Projectウィンドウ の空いている部分を右クリックし、 Create -> Custom Render Texture の順に選択し、Custom Render Texture を作成します。

create_customrendertex

そして、作成された Custom Render Texture を選択し、Inspector にて設定を行います。

setup_customrendertex

5.表示用のシェーダのマテリアルを作成する

これでカメラから深度情報を受け取り、それを曇り情報に変換し、シェーダによってガラスの質感へと変換させる準備ができました!

最後にガラス面に適用するためのシェーダを設定すべくマテリアルを作成します。

同じように Projectウィンドウで右クリックし、メニューを開き、Create -> Material の順番で選択して Material を作成してください。

smokeglassmat

そして、作成された MaterialInspector からシェーダの変更とパラメータの設定を行います。

6.表示用の板をカメラと同じサイズで用意、位置合わせをする

表示のための Quad を作成し、前項で作成したマテリアルを割り当てます。 Quadを作成するとき、カメラの縦横サイズと同じサイズすることを忘れないでください。

そして、カメラの縦横位置と Quad の位置を完全に合わせた上で Quad をカメラ範囲の直前に配置します。 当たり判定は先ほど設定した 0.05m 範囲内しかおこなわれないため、この範囲内に上手いこと設置します。 (何度か試してうまい書き心地になるまでトライしてみてください。CubeやSphereで当たり判定を試して上手く拭えても実際にVR上で確認すると触れていないのに反応してしまったり、微妙だなぁとなることが多いです)

これで曇りガラスの設置は完了となります。 まずは動作確認として、何か適当なCubeやSphereを作成し、ガラス面に当ててみてください。その場所が拭えていれば成功です。 あとはVRChatにログインしつつ納得がいくまで調整を重ねてください。