はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Meta Quest 3でビデオシースルーをしてみよう

前回:
hatsune.hatenablog.jp

MRTKを使ったMeta Quest 3でビデオシースルーで周りの風景がみえるMRアプリを作ってみましょう。

開発環境

Meta Quest 3アプリをMRTKで開発する場合の2024/01現在の環境は次のような環境になります。

  • Unity 2022.3.18f1
  • Mixed Reality Feature Tool 1.0.2209.0
  • MRTK3
    • MRTK Graphics Tools 0.6.7
    • MRTK Core Definitions 3.0.1
    • MRTK Input 3.0.0
    • MRTK Spatial Manipulation 3.0.0
    • MRTK Standard Assets 3.0.0
    • MRTK UX Components 3.1.0
    • MRTK UX Core Scripts 3.1.0
  • Mixed Reality OpenXR Plugin 1.9.0

実装

  1. Unityで空のプロジェクトを新規作成
  2. Mixed Reality Feature ToolでMRTK3をインストール
  3. MRTK3の設定
  4. シーンの設定
  5. サンプルオブジェクトの配置
  6. ハンドメニューの追加

Unityで空のプロジェクトを新規作成

新規作成

Unity Hubを起動したら、[Projects]メニューから[New Project]をクリックして新規プロジェクトを作成します。

テンプレートとUnity Editorバージョンの指定

テンプレートとしては「3D」を選択し、プロジェクト名には「MetaSeeThroughWorld」とします。もちろんプロジェクト名は任意につけることができるので他の名前でもOKです。
もし、複数のUnity Editorをインストールしている場合は、利用するUnity Editorのバージョンが想定しているバージョンか確認して必要に応じてバージョンを選択しなおしてください。

Mixed Reality Feature ToolでMRTK3をインストール

ダウンロード

ダウンロードサイトから「MixedRealityFeatureTool.exe」をダウンロードします。インストーラーではなく実行ファイルそのもののダウンロードとなります。
www.microsoft.com

Mixed Reality Feature ToolでUnityプロジェクトフォルダを指定

Mixed Reality Feature Toolを起動したら、MRTK3を配置するUnityプロジェクトフォルダを指定して、[Discover Features]ボタンをクリックします。

導入機能の選択


今回導入する機能を次の機能になります。

  • MRTK3
    • MRTK Graphics Tools 0.6.7
    • MRTK Core Definitions 3.0.1
    • MRTK Input 3.0.0
    • MRTK Spatial Manipulation 3.0.0
    • MRTK Standard Assets 3.0.0
    • MRTK UX Components 3.1.0
    • MRTK UX Core Scripts 3.1.0
  • Platform Support
    • Mixed Reality OpenXR Plugin 1.9.0

導入する機能を選択して、[Get Features]をクリックしてUnityプロジェクトにMRTK3に含まれている機能から使用する機能を追加します。

選択した機能を確認したら[Import]ボタンで導入します。

MRTK3の設定

Unity Editor 起動

MRTK3導入後の初回起動時に、MRTK3が使用している「Unityの新しいInput System」を使用しているため、切り替え確認ダイアログが表示されるので、[YES]をクリックして先に進みます。

Validationの解消

Unity Editorで[Edit]-[Project Settings]メニューで[MRTK3]を選択します。

[Windows,mac,Linux settings]タブを選択して[Assign MRTK Default]ボタンをクリックします。
警告マークがでますが[Profile]欄が「MRTKProfile (MRTK Profile)」となっていればOKです。

シーンの設定

それでは、「シーン」を設定してMRTK3が利用できるように設定します。

シーンのカメラ削除

シーンに初期設定されている「Main Camera」ではなく、MRTK3のカメラを使うので「Main Camera」は削除します。
[Hierarchy]タブの「Main Camera」を右クリックしてメニューから[Delete]を選択して削除します。

MRTK XR Rigの追加

[Project]タブの[Packages]-[MRTK Input]-[Assets]-[Prefabs]から「MRTK XR Rig」を[Hierarchy]タブへドラッグ&ドロップして追加します。

MRTK XR Rigの設定

「MRTK XR Rig」の初期設定値では、[Camera Y Offset]がY方向「1.6」mとなっています。
この「MRTK XR Rig」がアプリ上のカメラであり、Meta Quest 3を被った時の目の位置と目線の方向を表しますので、このオフセット値を0に設定します。また、[Position Y]も「0」、[Tracking Origin Mode]も「Device」とします。
https://cdn-ak.f.st-hatena.com/images/fotolife/h/hatsune_a/20231008/20231008214045.png

  • Position:0, 0, 0
  • Tracking Origin Mode:Device
  • Camera Y Offset:0
Input Simulatorの追加

Unity Editor上でデバッグするときに、Meta Quest 3の入力をキーボードでシミュレートするための機能「Input Simulator」を追加します。
[Project]タブの[Packages]-[MRTK Input]-[Simulation]-[Prefabs]から「MRTKInputSimulator」を[Hierarchy]タブへドラッグ&ドロップして追加します。

これでUnity Editor上でPlay Modeにすると[Shift]キーで左手、[Space]キーで右手の操作がシミュレートできるようになります。
learn.microsoft.com

サンプルオブジェクトの配置

共通設定が完了したらMRアプリのHello Worldともいえる空中に浮かんだCubeを表示するアプリを作成します。

Cubeの追加

[Hierarchy]タブを右クリックして、[3D Object]-[Cube]メニューをクリックしてCubeを追加します。

Cubeの位置と大きさを調整

初期位置ではカメラと重なってしまうので、[Hierarchy]タブで「Cube」を選択して、その[Inspector]タブで[Position]を(0, 0, 2)=2m先の位置、[Rotation]を(30, 30, 0)、[Scale]を(0.5, 0.5, 0.5)にして配置します。

Cubeへの物理演算追加

Cubeの[Inspector]タブで[Add Component]ボタンをクリックして、[Physics]-[Rigidbody]を選択して、Cubeに物理演算が適用されるように設定します。
また、初期状態では重力が聞いている状態なのでアプリを動かした途端にCubeが自由落下で下に落ちてしまうので、[Use Gravity]のチェックを外します。

Cubeへの操作追加

Cubeの[Inspector]タブで[Add Component]ボタンをクリックして、[MRTK]-[Special Manipulation]-[Object Manipulator]を選択して、CubeにMRTKによる操作が適用されるように設定します。
learn.microsoft.com

ハンドメニューの追加

MRTKにはHoloLens 2などで実装されているハンドメニューを実現する部品があります。
[Project]タブの[Packages]-[MRTK UX Components]-[HandMenu]から「HandMenuBase」を[Hierarchy]タブへドラッグ&ドロップして追加します。

[TMP Importer]ダイアログが表示された場合は、[Import TMP Essentials]ボタンだけクリックして、TextMeshProのリソースのみをインポートしてください。

初期状態の確認

「HandMenuBase」を[Hierarchy]タブに配置出来たら、[Inspector]タブ[Position Z]を0.5に変更してカメラの前に配置して、Playボタンで実行してみましょう。
youtu.be
このように縦に4つのボタンが表示され、左手または右手の操作をシミュレートしてあげればメニューを選択する動きが再現できます。
なお、初期状態では、顔から少し離れた位置で手をかなり平らな状態で視線に対して75度以上の角度でカメラの前(視線の前)に持ってくるような動きが必要です。

一番下のボタンに「終了」を割り当てる

[Hierarchy]タブの「HandMenuBase」の中をクリックしていって、「Action Button (4)」の[Frontplate]-[AnimatedContent]-[Icon]-[UIButtonFontIcon]を選択します。
[Inspector]タブで「Front Icon Selector」コンポーネントを探して、その中から「アプリケーションの終了」を意味するアイコンを選択します。

アプリケーション終了の実装

C#コード

[Project]タブの[Assets]を右クリックして[Create]-[Folder]メニューを選択して、[Assets]の中に新しいフォルダを作成します。フォルダ名は「Scripts」とします。
[Scripts]を右クリックして[Create]-[C# Script]メニューを選択して、C#のコードを記入するファイルを作成します。ファイル名は「Menu」とします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Menu : MonoBehaviour
{
    public void ApplicationExit()
    {
        Application.Quit();
    }
}
C#コードをHandMenuBaseに追加

[Hierarchy]タブの「HandMenuBase」を選択し、[Inspector]タブの[Add Component]ボタンで[Scripts]-[Menu]を選択します。

Action ButtonのClickイベントに「ApplicationExit」メソッドを割り当て

[Hierarchy]タブの「HandMenuBase」の中をクリックしていって、「Action Button (4)」を選択します。
[Inspector]タブで[Pressable Button]の[On Clicked()」で、「HandMenuBase」を選択してから、「No Function」と表示されているドロップダウンリストをクリックして[Menu]-[ApplicationExit()]を選択します。

Unity EditorのPlay Modeでハンドメニューを表示する

[Shift]を押して左手シミュレートを表示したら[P]キーを押ししてから[F]キーを押して手のひらを返すとハンドメニューが表示できます。

Meta Quest 3 固有機能の実装

  1. Meta Quest 3用必要アセットのインポート
  2. ターゲットプラットフォーム指定
  3. Player設定
  4. Quality設定
  5. MRTKプロファイル作成
  6. XR Plugin Management (Open XR) の設定
  7. ビデオシースルー設定
  8. 壁や床を検出する

Meta Quest 3用必要アセットのインポート

アセット追加

Meta Quest 3に合わせたアプリにするためには、Meta XR SDKをプロジェクトに追加する必要があります。
そのために、まずはUnityのアセットストアから必要なアセットに対して[Add to My Assets]をクリックしてUnity Editorで参照できるようにします。
assetstore.unity.com
今回使用するMeta XR SDKは次のものになります。

  • Meta XR SDK v60.0
    • Meta XR Core SDK 60.0.0
    • Meta XR Interaction SDK 60.0.0
    • Meta XR Interaction SDK OVR Integration 60.0.0
インポート

My Assetsに追加出来たらUnity Editorでインポートします。
そのためには、Unity Editorで[Window]-[Package Manager]メニューをクリックして、Package Mangerを表示します。
[Packages]を「My Assets」に変更して3つのSDKをインポートします。

Meta XR Feature Setは有効にしない

MRTK3とMeta XR SDKを併用した場合、次のようなダイアログが表示されます。

必ず[Cancel]ボタンをクリックしてください。

Validationの解消

インポートが終わったら、[Edit]-[Project Settings]メニューでリストから[Oculus]を選択します。
[Checklist]の各項目の[Fix]ボタンをクリックします。

最終的に次の2つ以外が解消されればOKです。

  • Oculus must be added to the XR Plugin active loaders
  • Unity's OpenXR Plugin is not recommended when using the Oculus SDK, please use Oculus XR Plug-in instead

ターゲットプラットフォーム指定

Unity Editorで[File]-[Build Setting]で、Platfromで「Android」を選択してから、[Switch Platform]をクリックしてターゲットプラットフォームを切り替えます。

Player設定

[Edit]-[Project Setting]メニューで[Player]を選択します。
Meta Quest 3用に設定を整えます。

  • [Other Settings]-[Rendering]-[Color Space]:Linear
  • [Other Settings]-[Rendering]-[Auto Graphics API]:チェックを外す
  • [Other Settings]-[Rendering]-[Multithreaded Rendering]:チェック
  • [Other Settings]-[Identification]-[Minimum API Level]:Android 10.0 Marshmallow (API level 29)
  • [Other Settings]-[Identification]-[Target API Level]:Automatic (highest installed)
  • [Other Settings]-[Configuration]-[Install Location]:Automatic

Quality設定

[Edit]-[Project Setting]メニューで[Quality]を選択します。

  • [Rendering]-[Pixel Light Count]:1
  • [Rendering]-[Anti Aliasing]:4x Multi Sampling
  • [Textures]-[Global Mipmp Limit]:0:Full Resolution
  • [Texture]-[Anisotropic Textures]:Per Texture
  • [Particles]-[Soft Particles]:チェックを外す
  • [Terrain]-[Billboards Face Camera Position]:チェック

MRTKプロファイル作成

Unity Editorで[Edit]-[Project Settings]メニューで[MRTK3]を選択します。
[Android settings]タブを選択して[Assign MRTK Default]ボタンをクリックします。

警告マークがでますが[Profile]欄が「MRTKProfile (MRTK Profile)」となっていればOKです。

XR Plugin Management (Open XR) の設定

インストール

Unity Editorで[Edit]-[Project Settings]メニューで[XR Plug-in Mangement]を選択します。
[Android Settings]タブを選択して[OpenXR]と[OpenXR]-[Meta XR feature group]をチェックします。

OpenXRの設定

[Edit]-[Project Settings]メニューで[XR Plug-in Mangement]-[OpenXR]を選択して、OpenXRの設定を行います。

  • Enabled Interaction Profile:List is Empty
  • Hand Tracking:チェック
  • Meta Quest Support:チェックを外す
  • Motion Controller Model:チェック
Validationの解消

[Edit]-[Project Settings]メニューで[XR Plug-in Mangement]-[Project Validation]を選択して、エラーや警告がないかを確認します。
エラーや警告の行で[Fix]ボタンが表示されているものは、順次クリックして解消します。

ただし、現状は次の2つについては解消できないので、この2つの[Fix]は無視します。

  • [Packages] Unity's OpenXR Plugin is not recommended when using the Oculus SDK, please us Oculus XR Plug-in insted
  • [Compatibility] Build Target (Unknown) is not supported

ビデオシースルー設定

Main Camera設定

[Hierarchy]タブで[MRTK XR Rig]-[Camera Offset]-[Main Camera]を選択し、[Inspector]タブの[Camera Setting Manager]-[Opaque Display]を次のように設定します。

  • Clear Mode: Solid Color
  • Clear Color: 0, 0, 0, 0

[Transparent Display]についても同様に設定します。

SeeThroughオブジェクトの追加
  1. [Hierarchy]タブの任意の場所を右クリックして[Create Empty]メニューを選択して、空のGameObjectを追加します。
  2. 追加したオブジェクトの名前を「SeeThrough」にします。
  3. 「SeeThrough」オブジェクトを選択し、[Inspector]タブで[Add Component]ボタンをクリックして、[Scripts]から「OVR Manager」「OVR Passthrough Layer」を追加します。
OVR Managerの設定

[Target Devices]-[Quest 3]をチェック、[Insight Passthrough]-[Enable Passthrough]をチェックします。


[Insight Passthrough]セクションが変更不可の場合は、[Edit]-[Project Settings]-[Oculus]の[CheckList]でエラーが表示されていないかを確認して、エラーを[Fix]してから再度試してみてください。

OVR Passthrough Layerの設定

[Placement]を「Underlay」、[Opacity]を「1」にします。

途中実行

ここまでの設定でビデオシースルーモードでの実機実行が可能です。
試しに、Meta Quest 3をUSB接続して[File]-[Build And Run]メニューでアプリを実機転送して実行してみましょう。
Cubeをつかんで投げることができました。
www.youtube.com
重力加速度を適用していないので無重力状態でどこまでも飛んでいきます。

壁や床を検出する

Meta Quest 3ではシーン(Unityのシーンとは別のもの)という機能で、実際の空間をスキャンして壁や床を検出して仮想的なルームを作成することができます。いわゆる空間マッピングと呼ばれるものです。
検出した壁や床などに対してColliderを設定するこることでUnity内のオブジェクトが壁や床と相互作用ができるようになります。
先ほどまでは、Cubeを投げるとずっと飛んで行ってしまいましたが、相互作用ができれば壁や床で跳ね返るような動きが実現できます。

空間マッピングオブジェクトの追加
  1. [Hierarchy]タブの任意の場所を右クリックして[Create Empty]メニューを選択して、空のGameObjectを追加します。
  2. 追加したオブジェクトの名前を「OVRSceneManager」にします。
  3. 「OVRSceneManager」オブジェクトを選択し、[Inspector]タブで[Add Component]ボタンをクリックして、[Scripts]から「OVR Scene Manager」「OVR Scene Model Loader」を追加します。

「OVR Scene Manager」で管理する壁や床のオブジェクトは[Plane Prefab]およぶ[Volume Prefab]に設定します。単なるオブジェクトではなく「Prefab」形式で指定します。

Plane Prefabの作成

  1. [Project]タブの[Assets]-[Scenes]を左クリックし、[Create]-[Prefab]で新しいPrefabを追加します。
  2. 追加したPrefabの名前を「OVRScenePlane」にします。
  3. 「OVRScenePlane」Prefabを選択し、[Inspector]タブで[Add Component]ボタンをクリックして、[Scripts]から「OVR Scene Anchor」「OVR Scene Plane Mesh Filter」の2つを追加します。
  4. 「OVRScenePlane」Prefabを選択し、[Inspector]タブで[Add Component]ボタンをクリックして、[Mesh]から「Mesh Filter」「Mesh Renderer」の2つを追加します。
  5. 「OVRScenePlane」Prefabをダブルクリックして、[Hierarchy]タブに「OVRScenePlane」Prefabを表示します。
    1. [Hierarchy]タブの任意の場所を右クリックして[Create Empty]メニューを選択して、「OVRScenePlane」Prefabに空のGameObjectを追加します。
    2. 追加したGameObjectの名前を「Collider」にします。
    3. 「Collider」を選択し、[Inspector]タブで[Add Component]ボタンをクリックして、[Physics]から「Box Collider」を追加します。
    4. Box ColliderのSizeを(1, 1, 0.01)にします。
Volume Prefabの作成
  1. [Project]タブの[Assets]-[Scenes]を左クリックし、[Create]-[Prefab]で新しいPrefabを追加します。
  2. 追加したPrefabの名前を「OVRSceneVolume」にします。
  3. 「OVRSceneVolume」Prefabを選択し、[Inspector]タブで[Add Component]ボタンをクリックして、[Scripts]から「OVR Scene Anchor」「OVR Scene Plane Mesh Filter」の2つを追加します。
  4. 「OVRSceneVolume」Prefabを選択し、[Inspector]タブで[Add Component]ボタンをクリックして、[Mesh]から「Mesh Filter」「Mesh Renderer」の2つを追加します。
  5. 「OVRSceneVolume」Prefabをダブルクリックして、[Hierarchy]タブに「OVRSceneVolume」Prefabを表示します。
    1. [Hierarchy]タブの任意の場所を右クリックして[Create Empty]メニューを選択して、「OVRSceneVolume」Prefabに空のGameObjectを追加します。
      1. 追加したGameObjectの名前を「Collider」にします。
      2. 「Collider」を選択し、[Inspector]タブで[Add Component]ボタンをクリックして、[Physics]から「Box Collider」を追加します。
    2. [Hierarchy]タブの任意の場所を右クリックして[Create Empty]メニューを選択して、「OVRSceneVolume」Prefabに空のGameObjectを追加します。
      1. 追加したGameObjectの名前を「Mesh」にします。
      2. 「Mesh」を選択し、[Inspector]タブで[Add Component]ボタンをクリックして、[Mesh]から「Mesh Filter」「Mesh Renderer」の2つを追加します。


Prefabの設定

2つのPrefabの準備ができたならば、[Hierarchy]タブで「OVRSceneManager」オブジェクトを選択し、[Inspector]タブで[Plane Prefab]およぶ[Volume Prefab]に設定します。

完成品動作

部屋の壁や床を認識して、無重力状態のCubeが部屋の中から飛び出していかない設定が以上で完成しました。
実機に転送して動作を確認してみましょう。
www.youtube.com

まとめ

本エントリの前半の「実装」部分は、MRTK3でアプリを作成するときの「機種依存しない」部分になります。
「Meta Quest 3 固有機能の実装」部分で、Meta Quest 3固有の設定、ビデオシースルー、空間認識を実装しています。この3点は、デバイスが異なる場合も必要な作業は同じで実現手順が異なりますので、HoloLensやXreal Airなどの実装もそのうちご紹介したいと思います。
次回は、現実空間と仮想オブジェクトのオクルージョンなども確認していきたいと思います。

雑感

Meta Quest 3も壁や床の認識過程を見ると空間スキャンした結果をメッシュ構造で取得しているようですが、最終的には「ルーム」という四角い部屋のような面で当たり判定をしています。

HoloLensのようにメッシュそのものをつかってくれればいいのですが、もし、実現するのであれば、実際の部屋の少し外側になるようにルームを設定し、その中でメッシュ状に認識している空間スキャン結果を自前でオブジェクトを張り付けるようなそんなコードが必要なのかもしれません。
でも、ルームという考え方は空間スキャン結果のオブジェクト数を最小(壁4平面+床と天井の2平面=6平面)におさえることができて、結果的に快適なMR空間を演出できる手法ではあります。

#mathsolver で数式入力に便利なルートキー!使い方を詳しく解説します

mathsolverで次のようにルートが入った式を入力したいときはどうすればよいでしょうか。

キーボードには √ (ルート) 記号のキーはありません。

安心してください。ルートを入力したいときは、次のようなステップで入力が可能です。
mathsolverで「1/100」とキー入力すると次のように表示されます。

次に、表示の100を選択します。

それから、入力欄の右端にあるキーボードマークをクリックします。

そして、表示されたキーボードのルートキーを押します。

すると選択していた「100」にルートが付きます。

驚きのMathsolver!連立方程式まで解決

mathsolverは因数分解だけでなくて連立方程式も解くことができます。一昔前じゃ考えられなかった。
例えば、
3x+2y=7
5x+3y=9
という連立方程式を解きたいときは

を入力したら、SHIFT+Enterキーを押して改行して次のように入力します「{」は勝手につきます。

これであとは[解]ボタンをクリックすればOKです。


なんと、3つの方法での解を求める手順があるようです。

代入の方法についてみていきましょう。

これでxの(yを含んだままの)解が得られました。

これを、もう一つの式のxに「代入」します。

するともう一つの式からxがきえてyだけになるので、y=8が求まります。

それでは、今度はこのy=8を代入して式をxだけの式にしましょう。

x=-3という解がえられました。

ということで連立方程式の解は、x=-3, y=8 となります。

Mathsolverを使って数式の因数分解を簡単に解決しよう!


こんな式の因数分解を解こうと思ったら中学時代の教科書などを引っ張り出してきてとかが必要でした。

しかし、mathsolverを使えば解決できます。
mathsolver.microsoft.com


入力欄にx^2といれればちゃんとxの2乗で表示されます。べき乗の入力から抜けるにはENTERキーを押します。
そしてサクサクとこんな感じに入力可能です。

入力したら[解]ボタンをクリックすればサクッと回答してくれます。

そしてmathsolverのいいところは解に至る手順も表示してくれるところです。

さらにクイズとして類似問題を解くことも出来ます。

三富市でChatGPTによるゴミ出し案内を断念したらしいけど、そもそも適用の仕方が間違えていたと思う件

www.city.mitoyo.lg.jp

本格導入の条件として正答率99%を設定していましたが、10/23~11/30に行った2回目の実証実験の結果、正答率が94.1%に留まったことなどから、このたび、本市における「ごみ出し案内」業務には、ChatGPTを活用しないと決断しました。

これだったらこれという提携の回答にChatGPTを使おうとしたことがそもそも間違えていると思います。
そのような定型の回答(これだったらこれ)には、FAQ検索が向いています。

それではゴミ出し案内にChatGPTが使えてないかといえば、そもそも捨てようとしているものが「なにか」を判定する画像検索なり、リサイクルマークの判定なりに使うのがいいと思います。
もちろん、バーコードがあるような品物についてはバーコードからその品物を特定して分別判断して、ゴミ出し案内する機能もいりますね。

なんでもかんでもChatGPTにすればいいというものではないです。
ただ、ちょっと気になるのは、temperatureとtop_pにはどんな値をつっこんでいたんだろうという点。
案外デフォルトのままだたりして、それだと聞くごとに回答ぶれるし、より創造的な回答帰ってきますよ。

ChatGPT含め、きちんとITを使いこなせたり、調査やPoC作成できるというのは、これからどんどん重要になってきますね。「ChatGPTでよい感じにしてよ」と言われてChatGPTでやればいいやとそれしかやらないってのは避けたいとことですね。

Microsoft Ignite 2023がはじまりました。

Microsoft Ignite 2023が始まりましたね。
news.microsoft.com

シアトル現地とオンラインのハイブリット開催ですが、「シアトルOnly」のセッションも多くなってきて、コロナ禍からwithコロナに移行した感じがとてもしますね。

今回のIgniteの話題の中心は、やっぱり Copilot ですね。
AI時代のOS、AI時代のオフィスツールとして、WindowsやOfficeがどう変わったのか、変わっていくのかが話題の中心となります。

# Azure OpenAI Service
OpenAI社の生成系AI、つまり、ChatGPTなどの技術をセキュリティなどを担保したうえで使えるので人気のAzure OpenAI Serviceですが、ついにGPT-4 Turboが来る予定のようです。
Azure OpenAI Serviceを評価している企業ユーザーは、現行の評価結果でずっといくのではなく、新しいのが来たらまた評価して認識を新たにしていくという作業を継続的にしていかないと技術評価がずれてしまいますね。
まさに、AI時代ならではの「継続性」が必要になるってことですね。

## with Vision
GPT-4 turboにはwith Visionがあったり、DELL E 3が来たりと Azure OpenAI Service の範囲が映像にも広がっていきますね。

# Mesh on Teams
Microsoft MeshへTeamsからつなぐことができるMesh On Teamsが、ついに来年1月にGA(一般提供)開始ですね。
ヘッドセットもってなくてもMesh世界にダイブできるようになりますね。
そして、Teamsから使っているとヘッドセットほしくなるんじゃないかなという戦略(断言w)ですね。

# Copilot in Dynamics 365 Guides
Dynamics 365 GuidesにCopilotがついて、相談相手がAIになるようです。
www.youtube.com

  1. ポイント&アスクガイダンス
  2. 空間コンテンツの生成
  3. ステップバイステップの支援
  4. オンデマンド情報
  5. 専門知識の統合
  6. 合理化されたドキュメント

# Azure AI Language
techcommunity.microsoft.com
LLMな要約機能がサポートされます。
今までの要約機能とぜひ比較してみたいですね。

# Azure AI Speech
## Azure AI Speech announces public preview of text to speech avatar
techcommunity.microsoft.com
単なる音声合成出力ではなく、アバターが話しているような出力ができるText to speech avvatarがPublic Previewになりました。Public Previewなので誰でも試せますね。

## Azure AI Speech launches Personal Voice in preview
techcommunity.microsoft.com
60秒のサンプル音声をINPUTするとその声色を使って音声合成OUTPUTを得られるようです。
しかも別言語での音声合成もできるので、自分の日本語音声を入れておいて、日本語音声認識→英語翻訳→自分の声色で英語音声合成なんてのが簡単にできそうです。

## Announcing the public preview of Real-time Diarization in Azure AI Speech
techcommunity.microsoft.com
リアルタイム話者識別がPublic previewになりました。1文話し終わったタイミングで「Guest1」「Guest2」のようなSpeakerタグがつくようです。

# まとめ
音声認識音声合成まわりでかなり強力な機能がPublic Previewしてきましたね。
AIに対するINPUT / OUTPUTの方法として、音声というのはかなり有効な手段なので、今後も注目していきたいと思います。

Meta Quest 3実機が来たのでアプリを実機実行してみる

前回:
hatsune.hatenablog.jp

前回は、Meta Quest 3開発用にUnity環境の準備を整えました。
今回は、Meta Quest 3実機が来たので、前回の最後に作ったアプリを実機で動かすまでをみていきます。

開発者モードの有効化

Meta Quest 3へアプリをデプロイするには、Meta Quest 3を開発者モードにする必要があります。
そのためには次の2つのステップが必要です。

  • Meta Quest for Developers で 新しい組織を登録
  • MetaQuestアプリで開発者モードを有効

Meta Quest for Developers で 新しい組織を登録

https://developer.oculus.com/manage/organizations/
まず、「Meta Quest for Developers」のサイトで新しい組織を登録します。
このとき、Meta Quest 3でログインしているものと同じアカウントと認証方法でログインするのが重要です。
私は、Facebookで使っているメールアドレスとFaceBook認証でログインしました。

MetaQuestアプリで開発者モードを有効

スマホのMetaQuestアプリでMeta Quest 3を開発者モードにします。
左下のメニューからメニュー画面に移り、[デバイス]アイコンをクリックします。

[ヘッドセットの設定]をクリックし、一覧表示から[開発者モード]をクリックします。


[開発者設定]画面で開発者モードをONにします。

PCとMeta Quest 3をUSBで接続

開発者モードに移行出来たら、PCとMeta Quest 3をUSBケーブルで接続します。
ここで初回は30秒~1分くらい待つのですが、Meta Quest 3側に「USBデバッグを有効」にするかどうかのダイアログがでますので、[許可する]ボタンをクリックします。

Unityからアプリをデプロイして実機実行する

実機側の準備ができたのでUnityを起動して、前回作成したMetaHelloWorldのプロジェクトを開きます。

Meta Quest 3実機をデプロイ先に指定する

[ファイル]-[Build Settings]メニューで設定画面を開いて、[Run Device]から「Meta Quest 3」を選択します。

Meta Quest 3にアプリをデプロイして実行

[Build and Run]ボタンをクリックすると、apkファイル名を指定する画面が表示されるのでプロジェクト名と同じ「MetaHelloWorld」を指定します。

1回目のビルドは、思っている以上に時間がかかりますので、気長に待ちます。2回目のビルドからはかなり速くなります。

ビルドエラーがでずにビルドが成功すれば、自動的に実機にデプロイされて実機でアプリが起動します。

まとめ

次回は、ビデオシースルーを有効にして周りの風景がみえるMRアプリとして実行できるようにします。