あずまの日記

日々のVRChatの暮らし

リムライトで携帯画面覗き見防止フィルムを再現できる

 こういう感じ。見る方向が斜めであればあるほど、設定した色や画像になっていく。

 GIFが再生できない環境向け: 左がまっすぐ前から見たとき、右が斜めから見たとき。

 リムライトの設定例はこういう感じ。適用するものの大きさなどに応じて調節は必要かも? 画像の文字起こしとして全部書くけど、主に「色/マスク」「範囲」「ぼかし」「リムライトの細さ」が調整ポイントです。

設定名
色/マスク 好きな画像
透明度 1
メインカラーの強度 0
ライトの明るさを反映 0
影部分で無効化 0
裏面で無効化 ON
透明度を適用 ON
合成モード 通常
ライト方向の影響度 0
範囲 0.45
ぼかし 0.4
ノーマルマップ強度 1
リムライトの細さ 0.5
VR時の視差の強さ 1

 lilToonのリムライトには画像を設定できる。リムライトの範囲をとても広くして、画像を設定することで、これを実現している。リムライトなので、なめらかに切り替わっていくのが、それっぽい感じを出していて面白い。特にVRChat上で見ると、画面の角度を変えると自然にフェードしてかなりそれっぽい。
 見方によっては、斜めにすると絵柄が変わるブロマイド的でもある(フレンドはそういう使い方をしてくれた)。

 自分でこういうのできないかなと言い出してから実現までもっていけたのが初めてで、やはりこういうことができると楽しい。

・・・

 ちなみにここに行き着くまでに色々試したので、何がどううまくいかなかったかメモしておくと……
 素朴な案として、手前にフィルムの画像を貼った別のオブジェクトを置く案があった。Boundsで見えるオブジェクトが切り替わるとか、ステンシルで斜めから見たときだけフィルムのオブジェクトが見える、という実現方法で、後者は試した。ただこういう感じだと、瞬間的にフィルムの画像100%になってしまって、覗き見防止フィルムのような見えるものがだんだん変わるというのはできなかった(たぶん)。
 なのでやはりシェーダでやるのがいいだろうとなって、最初はMatCapやNormalMapでできないか試していたけど、見ている方向(物から見たカメラの角度)によって表示を変えるということができないのでだめだった((光に対する)物の角度しか設定できない)。距離フェードは距離だけで角度は関係ないし、視差マップはずれるだけでやりたい動きにならなかった。最終的に、「見ている方向(物から見たカメラの角度)によって表示を変える」から考えて、リムライト、となった。

 それでいうとリムライトも、円形の範囲で濃さが変わるような動きで、完全ではない。範囲をできるだけ広くしつつ、いい感じにフェードしていくような設定値になんとなく合わせている。広い平面に適用しようとしたら、結構難しいかもしれない。