今日の目的
ARでのなんちゃってオクルージョンをやってみる。
シェーダー
Zバッファのみに書き込むシェーダーです。これをマテリアルに当てます。
Shader "Unlit/DepthOnly"
{
SubShader{
// Render the mask after regular geometry, but before masked geometry and
// transparent things.
Tags {"Queue" = "Background+10" }
// Don't draw in the RGBA channels; just the depth buffer
ColorMask 0
ZWrite On
// Do nothing specific in the pass:
Pass {}
}
}
出典を忘れて申し訳ないのですけど、どこかで紹介されてたものです。
テスト
Clear Flagsは、ARを前提として#000000でSolid Colorになっています。周辺の直方体が通常のマテリアル。真ん中の球にZバッファのみ書き込みShaderを当ててあります。うまくいきそうですね。
HoloLensで実装
実際にHoloLensで実装してみました。
我が家にあった、箱ティッシュの箱を採寸して、同じ大きさのCubeを抜いています。
そのまわりに緑の帯を回してみました。
Cubeの位置合わせは、Bluetoothキーボードをつけて、手動で合わせました。
ちなみに、HoloLensのキャプチャや録画だと、目の位置とカメラの位置が違うので、それなりにずれて写ってしまうようで、目で見ているときは結構きれいにオクルージョンしていたのが、キャプチャした画像や録画だと、いまいちということがあり、キャプチャの方でうまく見えるように、動かしたりもしています。
また、若干のずれはやはり発生するので、オクルージョン用のオブジェクトは、一回り大きめに作っておくのがよいのでしょう。
おわり
ぎりぎりになりましたが、今日の分は以上です。