夜風のMixedReality

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

SliderExample その① ~MixedRealityToolKit v2 Examplesを触ってみる~

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

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

 今回は Slider Examples 見ていきます。

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

〇シーンの概要

 このサンプルシーンは、PinchSliderControllの使用方法を示しています。 OnSliderUpdatedのSliderEventDataの値=eventData.NewValueを使用して、他のアクションを実行できます。

〇PinchSlider

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

 縦向きのPinchSliderでは、Platonicオブジェクトのカラーを変化させます。

 それぞれRed,Green,Blueに対応しています。

 それぞれのsliderには[PinchSlider.cs]というスクリプトがあります。

f:id:Holomoto-Sumire:20200114175706j:plain
PinchSlider.cs

 sliderはこのスクリプトの機能によって動作します。

・SliderRoot ,SliderValue

SloderRootはスライダーのピンチ部分となるオブジェクトです。

SliderValueはスライダーの初期値になります。 この値を0にすることで初期のsliderの値を0にすることができます。

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

・SliderAxis

 スライダーの稼働する軸です。

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

・SlidreStartDistance ,SliderEndDistance

 スライダーの可動域です。

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

・OnValueUpdated(SliderEventData)

 スライダーの値が変更されたときに設定したスクリプトの(SlidereventData)の値に対応させます。

f:id:Holomoto-Sumire:20200115130816j:plain
ここではvalueRedとPlatonicのスクリプトの関数のSliderEventData eventDataに値を渡します。

・OnInteractionStarted(SliderEventData)

 スライダー稼働時のイベントです。

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

・OnInteractionEnded(SliderEventData)

 スライダーの稼働終了時のイベントです。

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

・OnHoverEntered(SliderEventData)

 スライダー上にフォーカスがあった場合のイベントです。

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

・OnHoverExited(SliderEventData)

 スライダー上からフォーカスが外れた場合のイベントです。

〇SliderChangeColor.cs

 サンプルシーンのスライダーではPlatonicオブジェクトのカラーをスクリプトによって変更しています。

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

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

//Redのスライダーに対応した処理
  public void OnSliderUpdatedRed(SliderEventData eventData)
        {
    //MaterialのRendererを子オブジェクトから取得
            TargetRenderer = GetComponentInChildren<Renderer>();
            if ((TargetRenderer != null) && (TargetRenderer.material != null))
            {
     //MaterialカラーのRedをsliderから取得したeventData.NewValueに対応
                TargetRenderer.material.color = new Color(eventData.NewValue, TargetRenderer.sharedMaterial.color.g, TargetRenderer.sharedMaterial.color.b);
            }
        }
//Greenのスライダーに対応した処理
  public void OnSliderUpdatedGreen(SliderEventData eventData)
        {
   //MaterialのRendererを子オブジェクトから取得
            TargetRenderer = GetComponentInChildren<Renderer>();
            if ((TargetRenderer != null) && (TargetRenderer.material != null))
            {
     //MaterialカラーのRedをsliderから取得したeventData.NewValueに対応
                TargetRenderer.material.color = new Color(TargetRenderer.sharedMaterial.color.r, eventData.NewValue, TargetRenderer.sharedMaterial.color.b);
            }
        }
  //Blueのスライダーに対応した処理
        public void OnSliderUpdateBlue(SliderEventData eventData)
        {
    //MaterialのRendererを子オブジェクトから取得
            TargetRenderer = GetComponentInChildren<Renderer>();
            if ((TargetRenderer != null) && (TargetRenderer.material != null))
            {
     //MaterialカラーのRedをsliderから取得したeventData.NewValueに対応
                TargetRenderer.material.color = new Color(TargetRenderer.sharedMaterial.color.r, TargetRenderer.sharedMaterial.color.g, eventData.NewValue);
            }
        }
・SliderEventData

スライダーの稼働に応じてSliderEventData eventDataとして反映されます。

 Float eventData.NewValueとして扱うことで、sliderの稼働に応じた値を扱うことができます。