夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

SpatialMeshのShader内でメッシュの向きを取得して床のみを描画する。

本日は昨日に引き続きShader調査枠です。

昨日はShader内でのモデルの法線を取得しました。

redhologerbera.hatenablog.com

今回はこちらを使用してHoloLensのSpatialMeshの床だけを描画するShaderを書きます。

〇SpatialMeshで床だけが描画されるShader

今回はShaderGraphで次のようにShaderを構築しました。

Splitノードはベクトルを成分ごとに分けるノードです。

入力はモデルの法線のためRはX軸、GはY軸、BはZ軸の法線ベクトルを取得することになります。

今回はY軸のベクトルをAlphaにつなぎ、AlphaClipによって各メッシュのY軸に対する法線ベクトルが0以下をとるものを描画しないようにしました。

〇HoloLensのSpatialMeshのシェーダー構築

SpatialMeshはHoloLensによって周囲の物理環境に応じて動的に生成されます。

 このような場合はUnity上で実機を接続して実機の動きをシュミレートできるHolographicRemotingを使用することが有効です。

 

redhologerbera.hatenablog.com

HolographicRemotingを使用することでUnityエディタ上で実際のSpatialMeshを取得することができ、マテリアルをアタッチすることですぐに確認を行うことができます。

今回作成したShaderを適応すると次のようになります。

雪が積もったような見た目で床のみに色が付くようになりました。

今回は以上です。 テクスチャやほかの表現を取り入れることでオリジナルのSpatialMeshが表現できそうです。