夜風のMixedReality

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

MixedRealityToolKit v2 Examplesを触ってみる PulseShaderExamples その②SR_Trangles Shader アドカレ2019 14日目記事

MixedRealityToolKit(以下MRTK)にはExamplesというデモサンプル集が含まれています。

 Examplesを理解すればMRTKの機能の使い方を学習することやノンコーディングでのアプリ開発が可能になります。

 今回は 前回に引き続きMRTK v2.2.0で実験的にリリースされたPulseShaderExamples 見ていきます。

f:id:Holomoto-Sumire:20191213093038g:plain

 前回デモシーンを実機で動かしましたが、今回は機能を詳しく見ていきます。

 前回の記事はこちらです。  

redhologerbera.hatenablog.com

〇MixedRealitToolkit/SR_Trangles Shader

 パステルカラーが流れるように走るこの機能はSR_Trangles Shaderが設定されたMaterialによって実現しています。  

 このShaderはMRTK version2.2.0から導入されています。

 今回はデモシーンに使われているMRTK_SurfaceReconstruction マテリアルを基にSR_Trangles Shaderを見ていきます。

〇MRTK_SurfaceReconstructionマテリアル

 f:id:Holomoto-Sumire:20191214143538j:plain    MRTK_SurfaceReconstructionマテリアルはAssetts/MixedRealityToolkit.SDK/Experimental/PulseShader/Materialにあります。

●Fill

・Intensity

     描画されるSpatialMeshWire、パステルカラー、の明るさの設定です。

f:id:Holomoto-Sumire:20191214203240j:plain
Intensity 0

f:id:Holomoto-Sumire:20191214203301j:plain
Intensity 5

・Fill Color

    テクスチャのカラーが走った後に塗りつぶされるカラーです。

・Vart Color

 Fill Colorを Color Mapにどれくらい反映させるかです。  

f:id:Holomoto-Sumire:20191214203033j:plain
Vary Color 1

f:id:Holomoto-Sumire:20191214203051j:plain
Vary Color 0

・Color Map Enable

 チェックを外し無効化した場合、Color Mapに設定した画像のカラーがモノクロになります。

・Color Map

   メッシュに反映させるテクスチャです。

・Vart UV

 pulseで描画するColor Mapに設定したテクスチャのカラー範囲を設定します。    1であるほど広く、0であるほど画像の中心部付近のカラーを採用しているようです。


PulseShaderExamples

・Fill Start Time

    Fill Colorが反映される時間です。    WireLineが描画されてからFillが走るまでの時間です。

 0であればWireと同時にカラーが走ります。

 逆に1に近ければ先にWireLineが走査線のように走り、遅れてFillがメッシュ全体を描画する表現になります。

●Lines

 SpatialMeshの淵を描画する設定です。

・Line Color

   WireLineの色です。

・Line Width

 WireLineの太さです。  

f:id:Holomoto-Sumire:20191214191909j:plain
Line Width 0.5
  
f:id:Holomoto-Sumire:20191214191935j:plain
Line Width 1.5

・Line Width Fade

   LineのFadeでどれくらいのWidthまで変化させるかです。     Line Width Fade Farの距離より描画位置が離れた場合どの太さで描画するかを設定します。

・Line Width Fade Far

 視線に対してどの距離からFadeを行うかを決めます。

 例えばLine Width Fade Farの値にX、Line Width Fadeの値にYを設定した場合 Xm先のWireLineの太さはYとなります。

・Filter Width

 5に近いほどLineWidthの太さにぼかしがかかり、1に近いほどLineWidthがはっきり描画されます。

 

f:id:Holomoto-Sumire:20191214200520j:plain
Filter Width 5

f:id:Holomoto-Sumire:20191214200620j:plain
Filter Width 1

・Draw Fuzz

   Fuzz(ふわふわしたものの意)を描くかになります。    ここが0であるとMeshごとのパルスの移り変わりがはっきりし、1であると滑らかグラデーションかかって変化します。

 

f:id:Holomoto-Sumire:20191214195946j:plain
Draw Fuzz 1

f:id:Holomoto-Sumire:20191214200033j:plain
Draw Fuzz 0

 メッシュをはっきりさせたい場合0に近い値を設定するとよいようです。

・Draw End Time

 メッシュごとの描画速度です。    0に近いほど一つ一つはっきり描画します。

 1に近いほど滑らかに描画されます。


PulseShaderExamples Draw End Time

●Pulse Driver

・Pluse

  使用するためにはAutoPluseのチェックを外し無効化します。

  Pluseを手動で操作できます。       スクリプトと組み合わせることで応用のきく効果的なpulseを実装できます。

・Pulse Origin

 pulseの波源座標です。

・Auto Pulse

 ここを有効化することで自動的にpulseが走ります。  

・Period

 Auto Pulse実行時のパルスの寿命です。   

 この値が小さいほどpulseの周期が早くなります。

 設定項目にはPulseやColor Pulse、Noiseがありますが、長くなってしまったので次回見ていきたいと思います。

 PulseShaderにはパラメータが多いですが、それはそれだけ拡張性を持った汎用性の高い機能ということです。

 このShaderは、ユーザーの好奇心を掻き立て、質のよい体験につながると感じます。