MixedRealityToolKit(以下MRTK)にはExamplesというデモサンプル集が含まれています。
Examplesを理解すればMRTKの機能の使い方を学習することやノンコーディングでのアプリ開発が可能になります。
今回は 前回に引き続きMRTK v2.2.0で実験的にリリースされたPulseShaderExamples 見ていきます。
前回デモシーンを実機で動かしましたが、今回は機能を詳しく見ていきます。
前回の記事はこちらです。
〇MixedRealitToolkit/SR_Trangles Shader
パステルカラーが流れるように走るこの機能はSR_Trangles Shaderが設定されたMaterialによって実現しています。
このShaderはMRTK version2.2.0から導入されています。
今回はデモシーンに使われているMRTK_SurfaceReconstruction マテリアルを基にSR_Trangles Shaderを見ていきます。
〇MRTK_SurfaceReconstructionマテリアル
MRTK_SurfaceReconstructionマテリアルはAssetts/MixedRealityToolkit.SDK/Experimental/PulseShader/Materialにあります。
●Fill
・Intensity
描画されるSpatialMeshWire、パステルカラー、の明るさの設定です。
・Fill Color
テクスチャのカラーが走った後に塗りつぶされるカラーです。
・Vart Color
Fill Colorを Color Mapにどれくらい反映させるかです。
・Color Map Enable
チェックを外し無効化した場合、Color Mapに設定した画像のカラーがモノクロになります。
・Color Map
メッシュに反映させるテクスチャです。
・Vart UV
pulseで描画するColor Mapに設定したテクスチャのカラー範囲を設定します。 1であるほど広く、0であるほど画像の中心部付近のカラーを採用しているようです。
・Fill Start Time
Fill Colorが反映される時間です。 WireLineが描画されてからFillが走るまでの時間です。
0であればWireと同時にカラーが走ります。
逆に1に近ければ先にWireLineが走査線のように走り、遅れてFillがメッシュ全体を描画する表現になります。
●Lines
SpatialMeshの淵を描画する設定です。
・Line Color
WireLineの色です。
・Line Width
WireLineの太さです。
・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がはっきり描画されます。
・Draw Fuzz
Fuzz(ふわふわしたものの意)を描くかになります。 ここが0であるとMeshごとのパルスの移り変わりがはっきりし、1であると滑らかグラデーションかかって変化します。
メッシュをはっきりさせたい場合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は、ユーザーの好奇心を掻き立て、質のよい体験につながると感じます。