MRが楽しい

MRやVRについて学習したことを書き残す

Quest3アプリでシーンモデルの可視化をスクリプトから切り替える

本日はMetaQuest3の小ネタ枠です。
Quest3アプリでシーンモデルの可視化をスクリプトから切り替える方法を記事にします。

前提条件

本記事では以下の記事で作成したシーンモデルの可視化を設定したプロジェクトを基に設定を行います。
bluebirdofoz.hatenablog.com

シーンモデルの可視化を切り替える

シーンモデルの可視化を切り替えるにはEffectMeshコンポーネントのHideMeshプロパティを切り替えます。
本プロパティはランタイムでも切り替え可能です。

MRTKのボタンコンポーネントのクリックでプロパティを切り替える以下のサンプルスクリプトを作成しました。
・EffectControl.cs

using Meta.XR.MRUtilityKit;
using Microsoft.MixedReality.Toolkit.UI;
using UnityEngine;

public class EffectControl : MonoBehaviour
{
    [SerializeField, Tooltip("シーンモデルの切り替えボタンの参照")]
    private Interactable switchButton;
    
    [SerializeField, Tooltip("シーンモデルのEffectMeshの参照")]
    private EffectMesh effectMesh;
    
    void Start()
    {
        // ボタンのクリックイベントを登録する
        switchButton.OnClick.AddListener(SwitchSceneModelEffect);
    }
    
    private void SwitchSceneModelEffect()
    {
        // シーンモデルの可視化を切り替える
        effectMesh.HideMesh = !effectMesh.HideMesh;
    }

    private void OnDestroy()
    {
        // ボタンのクリックイベントを解除する
        switchButton.OnClick.RemoveListener(SwitchSceneModelEffect);
    }
}

サンプルスクリプトを配置し、参照を設定して準備は完了です。

ビルドと動作確認

以下の記事を参考にプロジェクトのビルドとQuest3へのデプロイを実行します。
bluebirdofoz.hatenablog.com

シーンモデルのスキャンを行った部屋でアプリを起動します。
起動時はHideMesh==falseの状態で、以下のようにシーンモデルが可視化されて表示されます。

ボタンをタップするとシーンモデルが非表示になります。

再びボタンをタップするとシーンモデルが可視化されます。
アプリ内でシーンモデルの可視化を切り替えることができました。