MixedRealityToolKit(以下MRTK)にはExamplesというデモサンプル集が含まれています。
Examplesを理解すればMRTKの機能の使い方を学習することやノンコーディングでのアプリ開発が可能になります。
以前MaterialGalleryのデモシーンでMRTK StandardShaderを見ていきましたが、今回はMaterialGalleryのまとめとしてMaterialGalleryのシーンに手を加えMRTK StandardShaderに関してさらに理解を深めていきます。
MixedRealityToolKit v2 Examples MRTKStanderdShader SliderTest
MaterialGalleryのシーンにはMRTK StandardShaderを用いた様々な表現を見ることができます。
しかし、デモシーンのままではMRTK StandardShaderの具体的にどのパラメータが、どのような働きをしているかまでは簡単には理解できません。
これまでMaterialGalleryのシーンを見る時はUnityのinspectorからMaterialのパラメータを直接変えてどのパラメータがどんな働きをしているのかを勉強しました。
同じようなことをHoloLens 1st実機でもパラメータを変えて変化を見れるようにします。
〇shaderとは?
理解を深める前にshaderというものが何者なのか再度確認します。
Unityではまるで箱庭のようにシーンにオブジェクトを配置し、スクリプトなどの命令によって働きを与えることができます。
ここで配置したオブジェクトを描画するためのプログラムが必要です。
それがshaderであり、shaderにテクスチャ(画像)を割り当てたり、オブジェクトごとにshaderのパラメータを変えているものがMaterialです。
Shaderはオブジェクトを描画するためのプログラムであるため、見た目だけではなくVertexExtrusionで見たようにメッシュ自体の位置を変えることなど様々な表現ができます。
〇Shaderをスクリプトで扱う。
ShaderをC#で扱うには扱いたいShaderにどのようなパラメータが含まれているかを見る必要があります。
Shaderに含まれているパラメータを見るためには見たいShaderの設定されているMaterial上部の歯車マークから[Select Shader]を選択します。
Shaderのディレクトリが表示されinspectorにShaderが表示されます。
ここでProperties に表示されている一行一行がスクリプトで扱うことが可能なパラメータです。
例えば、Cutoffをスクリプトで扱うとすると
material.Setfloat("_Cutoff", (float value));
というように適当なメソッド内でPropertiesの名前、値というように記述します。
ここで以前扱ったSliderと組み合わせて、HoloLens実機内でSliderの値に応じてMRTK StandardShaderのパラメータの変化を確認できるようにします。
Sliderの使い方はこちら
次のようなコードになります。
Public Void SliderUpdate_name(SliderEventData eventData) { this.material.Setfloat("name",eventData); }
"name"にはMRTK StandardShaderの各パラメータを設定し、PinchSliderのPinchSlider.csのイベントでPublic Void SliderUpdate_name(SliderEventData eventData)を設定することでsliderの値がShaderのパラメータに反映されます。
上の処理をMaterialGalleryのオブジェクトすべてに行うと実機で次の映像のように各MRTK StandardShaderのパラメータの働きを確認できます。
MixedRealityToolKit v2 Examples MRTKStanderdShader SliderTest
これでMRTK StandardShaderの各パラメータを確認するだけではなく、スクリプト側からShaderのパラメータを扱うことができるようになりました。
実際にはShaderの中身の処理などまだまだ勉強すべき点は多いですが、MRTK StanderdShaderのMaterial Galleryは完全に理解しました。