夜風のMixedReality

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

MRDL Surfaceを学ぶ Cube マテリアル

本日は昨日に引き続きMRDLのアプリSurfaceのCubeで使用されているクリスタルのマテリアルを調査します。

redhologerbera.hatenablog.com

〇MRDLとは?

MRDL(MixedRealityDesignLab)はMicrosoftによって提供されているMRTKを用いたHoloLensの実験的プロジェクト集です。

MRTKにはExamplesと呼ばれるサンプル集が提供されていますが、MRDLはどちらかと言うとオープンソースのアプリケーションとしての側面が大きく、MicrosoftStoreで提供されているだけではなくGithubソースコードとUnityのプロジェクト自体を取得することができ、中身をみながら学ぶことができます。

github.com

Surface

SurfaceはMRDで提供されているHoloLens 2専用のアプリケーションです。 HoloLens 2で使用できるHandTrackingを用いてアニメーションと音によって本来は得ることができない触角フィードバックを疑似的に再現する、体験することができるアプリケーションになります。

redhologerbera.hatenablog.com

youtu.be

〇VolumeShardsMat

〇チャンネルマップ

f:id:Holomoto-Sumire:20210303080554j:plain

チャンネルマップとはピクセル単位でテクスチャのカラー情報(RGBA)を用いて金属感(Red)、透過率(Green)、放射(Blue)、滑らかさ(Alpha)を制御するための機能です。

この辺りはホロモンさんの以下の記事が詳しいです。

bluebirdofoz.hatenablog.com

この[VolumeShadersMat]では次のチャンネルマップが使用されています。

f:id:Holomoto-Sumire:20210303081336p:plain

これをCubeに割り当ててみると次のようになります。

f:id:Holomoto-Sumire:20210303081448j:plain

一般的にUnityのマテリアルではAlbedo(もしくはMainTex)に画像を割り当てて見た目を再現することが多いですが、クリスタルの見た目はチャンネルマップの画像によって再現されていることがわかります。

〇Emmision

f:id:Holomoto-Sumire:20210303081642j:plain

[Emmision]にはバイオレットが使用されています。

f:id:Holomoto-Sumire:20210303081824j:plain

これをCubeに割り当てると次のようになります。 これでほとんどの見た目が再現できました。

f:id:Holomoto-Sumire:20210303082100j:plain

MRTKStandardShaderのEmmisionは過去の記事を参考にしてください。

redhologerbera.hatenablog.com

〇RimLight

f:id:Holomoto-Sumire:20210303082415j:plain

リムライトはオブジェクトの輪郭を発光させる機能になります。

[Emission]よりも彩度の高い青系統の色が使用されています。

f:id:Holomoto-Sumire:20210303082520j:plain

[RimLight]はカメラに依存しているため[VolumeShadersMat]の場合クリスタルの面ごとの発光に影響を与えているようです。

f:id:Holomoto-Sumire:20210303082756j:plain

上画像ではリムライトによってCubeの右側面が青みかかっていることが見て取れます。

MRTKStandardShaderのリムライト自体の処理は過去の記事にまとめています。

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

〇HoverLight・Proximity Light(近接ライト)

[Proximity Light]はオブジェクトの表面近くでホバリングする[グラデーション逆点光]を模倣するものです。

MRTKStandardShaderの考え方の基となっている[Fluent Design System]の考え方に基づき実装されています。

docs.microsoft.com

microsoft.github.io

[Proximity Light]を使用するためにはMaterialをアタッチしているオブジェクトにライトのコンポーネントをアタッチする必要があります。

[FingerTip]オブジェクトでは[HoverLight]コンポーネントがアタッチされています。

microsoft.github.io

以上でクリスタルに使用されているマテリアル、[VolumeShadersMat]に関して理解できました。

次はクリスタルの仕組みを見ていきます。