Magic Leap2 の Intent について
はじめに
この記事は、Magic Leap2 Advent Calendar 2022 の5日目です。
Magic Leap2 の Intent について説明します。
OnePlanet XR について
このブログ記事は OnePlanet XR によるものです。
OnePlanet XR は、AR/MR/VPS技術に専門特化したコンサルティングサービスです。豊富な実績を元に、AR/MR技術を活用した新たな事業の立ち上げ支援や、社内業務のデジタル化/DX推進など、貴社の必要とするイノベーションを実現いたします。
ご相談から受け付けております。ご興味ございましたらお問い合わせください。
Magic Leap2 の Intent
アプリケーション内で Intent を使用して、外部のアクティビティやサービスを開くことができます。
今回はMagic Leap の API側で用意されている Display Setting、Voice Input、AR Cloud の呼び出す方法を説明します。
開発環境 / 動作環境
Unity Editor 2022.2.0b8.3023
Magic Leap SDK 1.1.0-dev1
Magic Leap XR Plugin 7.0.0.pre.1
Magic Leap2 OS 1.1.0-dev1 (B3E.221020.13-R.039_40)
ヒエラルキー
シーンを新規作成します。Main Cameraは削除し、XR Rigのプレファブをヒエラルキーに配置します。
Game Objectを作成し、名前を Default Intent Example を作成します。
Default Intent Example
DefaultIntentExample というスクリプトを作成し、コンポーネントとして追加します。
スクリプトは以下になります。
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.XR.MagicLeap;
using static MagicLeapInputs;
using TMPro;
public class DefaultIntentExample : MonoBehaviour
{
[SerializeField]
private TextMeshProUGUI intentInfo;
private MagicLeapInputs mlInputs;
private MagicLeapInputs.ControllerActions controllerActions;
enum MagicLeapIntentType {DisplaySetting, VoiceInput, ARCloud}
MagicLeapIntentType selectIntent = MagicLeapIntentType.DisplaySetting;
// Start is called before the first frame update
void Start()
{
mlInputs = new MagicLeapInputs();
mlInputs.Enable();
controllerActions = new MagicLeapInputs.ControllerActions(mlInputs);
controllerActions.Trigger.performed += HandleOnTrigger;
controllerActions.Bumper.performed += HandleOnBumper;
intentInfo.text = selectIntent.ToString();
}
void OnDestroy()
{
controllerActions.Trigger.performed -= HandleOnTrigger;
controllerActions.Bumper.performed -= HandleOnBumper;
mlInputs.Dispose();
}
private void HandleOnBumper(InputAction.CallbackContext obj)
{
switch (selectIntent)
{
case MagicLeapIntentType.DisplaySetting:
selectIntent = MagicLeapIntentType.VoiceInput;
break;
case MagicLeapIntentType.VoiceInput:
selectIntent = MagicLeapIntentType.ARCloud;
break;
case MagicLeapIntentType.ARCloud:
selectIntent = MagicLeapIntentType.DisplaySetting;
break;
}
intentInfo.text = selectIntent.ToString();
}
private void HandleOnTrigger(InputAction.CallbackContext obj)
{
switch (selectIntent)
{
case MagicLeapIntentType.DisplaySetting:
UnityEngine.XR.MagicLeap.SettingsIntentsLauncher.LaunchSystemDisplaySettings();
break;
case MagicLeapIntentType.VoiceInput:
UnityEngine.XR.MagicLeap.SettingsIntentsLauncher.LaunchSystemVoiceInputSettings();
break;
case MagicLeapIntentType.ARCloud:
UnityEngine.XR.MagicLeap.SettingsIntentsLauncher.LaunchSystemARCloudSettings();
break;
}
}
}
バンパーボタンでDisplay Setting、Voice Input、AR Cloud の切り替えを行い、トリガーボタンで選択しているIntentの呼び出しを行います。
現在選択しているIntent表示
選択しているIntentのテキスト表示用のUIを作成します。以下の記事に従って構築してください。
上記の記事で作成したText(TMP)を DefaultIntentExample の intentInfoフィールドに設定してください。
実行
選択しているIntentの状態でトリガーボタンを押すと、選択した設定画面が起動します。(VoiceInput の場合は起動元のアプリに戻ることができましたが、Display Setting、AR Cloud は一階層深い設定のためか、起動元のアプリに戻ることができませんでした。また、1.1.0-dev1ではAR Cloudを呼び出しても認知の設定に遷移され、AR Cloudの設定に到達できずでした。以前のバージョンではAR Cloudの設定画面は存在しましたが、現在は確認できないです。)
OnePlanet XR
AR/MR/VPS技術に専門特化したコンサルティングサービス
Magic Leap2 を使ったソリューションのご検討の方からのお問い合わせ、お待ちしております。
お問い合わせ先
https://1planet.co.jp/xrconsulting.html#op_form
OnePlanet Tech Magazine
Magic Leap 1、Magic Leap2 、スマホAR(Niantic Lightship ARDK、WebAR、VPSなど)といったAR技術全般をブログマガジンを連載しています。