LoginSignup
5
0

More than 3 years have passed since last update.

Zバッファだけ更新するシェーダーでオクルージョンの実装

Posted at

今日の目的

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 {}
    }
}

出典を忘れて申し訳ないのですけど、どこかで紹介されてたものです。

テスト

まずは、テストでEditor上で動かしてみます。
20191208_fig_occu.PNG

Clear Flagsは、ARを前提として#000000でSolid Colorになっています。周辺の直方体が通常のマテリアル。真ん中の球にZバッファのみ書き込みShaderを当ててあります。うまくいきそうですね。

HoloLensで実装

実際にHoloLensで実装してみました。
我が家にあった、箱ティッシュの箱を採寸して、同じ大きさのCubeを抜いています。
そのまわりに緑の帯を回してみました。
Cubeの位置合わせは、Bluetoothキーボードをつけて、手動で合わせました。

20191208_231207_HoloLens.jpg

ちなみに、HoloLensのキャプチャや録画だと、目の位置とカメラの位置が違うので、それなりにずれて写ってしまうようで、目で見ているときは結構きれいにオクルージョンしていたのが、キャプチャした画像や録画だと、いまいちということがあり、キャプチャの方でうまく見えるように、動かしたりもしています。
また、若干のずれはやはり発生するので、オクルージョン用のオブジェクトは、一回り大きめに作っておくのがよいのでしょう。

おわり

ぎりぎりになりましたが、今日の分は以上です。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0