夜風のMixedReality

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

MixedRealityFeatureToolを使ってMixedReality関連のパッケージを管理する。

本日はMRTKの開発Tipsです。

〇MixedRealityFeatureToolとは?

docs.microsoft.com

[MixedRealityFeatureTool]はMicrosoftによって提供されているMixedReality開発時の関連パッケージの管理ツールになります。

 開発中のプロダクトに導入されているパッケージの確認、バージョンの変更、依存パッケージの導入など一つのツールで管理できます。

〇MixedRealityFeatureToolの導入

[MixedRealityFeatureTool]は現在WindowsOSのみに対応しているようですが、今後MacOSにも対応する予定であるようです。

①以下のリンクを選択しZipファイルをダウンロードします。

aka.ms

②ダウンロードしたファイルを解凍し、[MixedRealityFeatureTool.exe]を選択し起動します。

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

③本記事執筆時のバージョンv1.0.2104.4 Bateが起動します。

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

④[...]アイコンを選択し管理するUnityプロジェクトのパスを指定します。

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

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

パスの場所はUnityHubにプロジェクトを導入する際などと同じくUnityプロジェクトフォルダ内の[Assets]などと同じ階層を指定します。

⑤[Discover feature]の画面に映ります。 ここではMR開発において主となる開発パッケージが一覧として並んでいます。

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

この中から任意のパッケージを選択します。

⑥今回は空間音響を導入します。[SpatialSounds]のタグを開き、チェックボックスにチェックを入れます。

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

デフォルトで現在公開されている最新版が導入されますが、プルダウンより過去のバージョンを選択し、導入することもできます。

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

⑦確認画面が表示されます。問題がなければ[Import]を選択します。

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

⑧以上で導入が完了しました。

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

Unityで対象のプロジェクトを開くことで導入されたことを確認することができます。

以上でMixedRealityFeatureToolを使ってMixedReality関連のパッケージを導入することができました。

従来では必要なパッケージのGitHubのレポジトリから一つ一つ導入する必要がありましたが、[MixedRealityFeatureTool]を使うことでまとめて導入、アンインストールができるようになりました。

Unityを開かずとも確認できるため非常に高速で行えます。

Unityエディタ上でMRTK使用時にエラーが出る問題の解消

本日はMRTK使用時にUnityエディタ上で発生したエラーのトラブルシューティングです。

〇環境

・Unity 2021.1.

・MRTKv2.7

〇エラー内容

Unityエディタ上で実行時に舞フレームエラーが発生するようになりました。

InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings.

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

このエラーはUnityEditor上での操作法に関するコンフリクト(衝突)が原因のようです。

[ProjectSettings]から[PlayerSettings]の[Active Input Handling]の設定を確認します。

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

今回エラーが起こる状態では[(New)Input System Settings]が選択されています。この設定を[Both]に切り替えます。

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

これによって新旧どちらのインプットシステムも使用できるようになりエラーが解消します。

ゼロから学ぶHoloLens 初心者向けチュートリアル HoloLensの五大要素を学ぶ 音声入力

チュートリアル枠です。

今回自分が3年前HoloLens に初めて触れ右も左もわからない中開発を行った頃の自分に向けてチュートリアルを作成します。

〇HoloLensで音声入力を使用しよう!

今回はHoloLensアプリ開発環境を1から構築することを目的とします。 下のようなテーマで書いていこうと思います。

1.Unityの環境を構築しよう!

2.MRTKを使おう!MRTKとは何か?

    UnityEditorでMRTKを使おう

    アプリをUnityからビルドしよう。

    HoloLens実機にデプロイしよう

    

3.HoloLensの5大要素を学ぶ

      空間認識機能を実装する

      空間認識の表現

       AirTapの実装

      オブジェクトを動かす

  空間音響を使う。

      ・音声入力を使う。←本日はこちら

4.応用編

〇環境

・Unity2019.4.18f1(LTS)

・VisualStudio2019

●筆者PC環境

 ・OS:Windows10 Pro

 ・プロセッサ:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz 3.50 GHz

 GPU:NVIDIA GoForceRTX 3080

 Microsoft HoloLens 1st

Microsoft HoloLens 2

 スペックに関しては高いほうが良いですが、HoloLensアプリ開発の場合VRと比べ求められるスペックは低いです。

 VRアプリ開発の場合PC自体がVRReady(VRゲームを実行できる環境)であることがほぼ必須ですが、HoloLensの場合VRReadyではなくても開発自体はできます。

 Unityが動くスペックであれば最低限問題ないです。

〇音声入力とは?

音声入力はその名の通りユーザーの音声コマンドでHoloLensアプリ内でオブジェクトを操作することを指します。

近年ではSiriをはじめとして音声アシスタント機能は身の回りにありますので、そちらがイメージしやすいと思います。

今回はこの音声入力をアプリ内に組み込んでいきます。

〇音声コマンドの登録

HoloLensでは開発者側で任意の音声コマンドを登録できます。

①hierarchyウィンドウから[MixedRealityToolkit]を選択し、インスペクターウィンドウから[Input]のサイドタブを選択し展開します。

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

②MRTKの構成はデフォルト値を変更することはできません。必ずCloneしてオリジナルの構成ファイルを作成する必要があります。[Clone]を選択しInputProfileを複製します。

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

③[Speech]タブを展開します。

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

④SpeechのProfileもテンプレートのものを使用しているデフォルトの場合[Clone]を選択し、複製します。

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

このSpeechタブ内ですでに登録されている音声コマンドを見ることができます。

⑤[+Add a New Speech Command]をクリックします。

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

⑥[Speech]タブ最下部にからのコマンドリストが追加されます。

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

⑦からのコマンドリストに任意のキーワードを設定します。ここで注意が必要なことが、使用しているHoloLensの言語が英語の場合は英語のキーワード、日本語などの場合は日本語など合わせる必要があります。

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

例えば筆者環境ではOSを英語で使用しているため[Drop]と登録していますが、HoloLens側で使用してる言語が日本語の場合[ドロップ]と登録する必要があります。

以上で音声コマンドの登録が完了しました。

〇登録したコマンドを使用する

①[Cube]オブジェクトを選択し[Addcompornent]から新規のコンポーネントを追加します。

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

②[SpeechInputHandller]コンポーネントを追加します。

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

これは登録されている音声コマンドを認識した場合発火する処理をつかさどるコンポーネントです。

③[+]アイコンを選択し音声コマンドのリストを追加し、キーワードに[Drop]もしくは日本語で登録している場合[Drop]と入力します。

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

④[Responce()]にCube(自分自身)を設定し[Drop.DoropDown]と音声認識を検知するとイベントが走るようにします。

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

音声認識機能の確認

ビルドを行う前に音声認識を行うためにマイクの入力を許可する必要があります。

①[PlayerSettings]から[PublishingSettings]を開きます。

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

②[Capability]から[Microphone]にチェックが入り有効であることを確認してビルドします。

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

アプリをデプロイし、Cubeを見つめて「drop」と唱えることでCubeが地面に落ちていきます

UnityのPackageManagerを使用したパッケージのダウングレード方法

本日はUnity枠です。

プロジェクトに導入されているPackageを管理できる、非常に便利なPackageManagerですが、導入しているpackageのダウングレードが変わらなく沼にハマってしまっていたため本日は残します。

ここではUnityのxRPluginMnagementを例として扱います。 UnityのPackageManagerを使用してパッケージを導入すると時々次のようなエラーが発生することがあります。

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

Library\PackageCache\com.unity.xr.management@3.2.17\Editor\XRGeneralBuildProcessor.cs(39,52): error CS0117: 'BuildPipeline' does not contain a definition for 'GetBuildTargetName'
Library\PackageCache\com.unity.xr.management@3.2.17\Editor\XRGeneralBuildProcessor.cs(86,52): error CS0117: 'BuildPipeline' does not contain a definition for 'GetBuildTargetName'

これは使用しているUnityバージョンとの相性などもあるのですが、上記のxRPluginManagementのPackageCacheのエラーに関してはxRPluginManagementのバージョンを下げることで対応します。

①上部ワールドメニューから[Window]を選択し[PackageManager]を開きます。

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

②[PackageManager]から[XR PluginManagement]を選択します。 ここで現在使用しているバージョンを見ることができます。

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

③[See other version]を選択することで現在使用できる過去のバージョンを見ることができます。

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

④任意のバージョンをクリックし[Update]を選択します。今回は3.17から3.16へダウングレードしました。

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

これによってエラーが消えました。

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

ゼロから学ぶHoloLens 初心者向けチュートリアル HoloLensの五大要素を学ぶ 空間音響

チュートリアル枠です。

今回自分が3年前HoloLens に初めて触れ右も左もわからない中開発を行った頃の自分に向けてチュートリアルを作成します。

〇HoloLensで空間音響を使用しよう!

 今回はHoloLensアプリ開発環境を1から構築することを目的とします。 下のようなテーマで書いていこうと思います。

1.Unityの環境を構築しよう!

2.MRTKを使おう!MRTKとは何か?

    UnityEditorでMRTKを使おう

    アプリをUnityからビルドしよう。

    HoloLens実機にデプロイしよう

    

3.HoloLensの5大要素を学ぶ

      空間認識機能を実装する

      空間認識の表現

       AirTapの実装

      オブジェクトを動かす

  ・空間音響を使う。←本日はこちら

4.応用編

〇環境

・Unity2019.4.18f1(LTS)

・VisualStudio2019

●筆者PC環境

 ・OS:Windows10 Pro

 ・プロセッサ:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz 3.50 GHz

 GPU:NVIDIA GoForceRTX 3080

 Microsoft HoloLens 1st

Microsoft HoloLens 2

 スペックに関しては高いほうが良いですが、HoloLensアプリ開発の場合VRと比べ求められるスペックは低いです。

 VRアプリ開発の場合PC自体がVRReady(VRゲームを実行できる環境)であることがほぼ必須ですが、HoloLensの場合VRReadyではなくても開発自体はできます。

 Unityが動くスペックであれば最低限問題ないです。

〇空間音響とは?

[空間音響(SpatialSounds)]はHoloLensだけではなく多くのxRデバイスにおいて使用できるサウンド機能です。

[空間音響]を使用することで、視野角外にあるオブジェクトの方向や距離を直感的に認識できます。

 この機能はMicrosoftEdgeなどでも体験することができ、HoloLens上でブラウザ経由で音楽などを流した場合音源の場所がわかることを見れます。

 今回はこの機能をHoloLens アプリで導入します。

①以下のリンクの[Release]から[Microsoft Spatializer]をダウンロードします。

github.com

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

MixedReality以外のプロジェクトでも使用できるように公開されているためMRTKなどとは別に公開されているようです。

なおこれはHoloLens 2のみに対応しているためHoloLens 1stを使用する場合はこの工程を飛ばします。

②ダウンロードしたUnityPackageをUnityのプロジェクトにインポートします。

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

③Unity上部のワールドタブから[Edit]→[ProjectSettings]を開き[ProjectSettings]のタブ[Audio]を開きます。

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

④[Spatializer]の設定から[Microsoft Spatializer]を選択します。 HoloLens 1stを使用する場合は[MSHRTF Spatializer]を選択します。

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

⑤適当なゲームオブジェクトに[AudioSource]コンポーネントを追加します。

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

⑥[AudioClip]に適当な音源を設定します。ここではMRTKで提供されている[PolyHover]を指定しました。

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

これで音が流れるようになりますが、この状態ではまだ空間音響が有効になってはいません。

⑦[Spatilize]を有効にし[SpatialBlend]を3Dに切り替えます。

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

これで空間音響が有効になりました。

⑧[Min Distance]と[Max Distance]の値を切り替えます。

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

この値は空間音響では音源から遠くに離れるにつれ音が減衰しますが、この距離の設定になります。

以上で空間音響が使用できるようになります。

Blender 複数バージョンをインストールする Blender Launcher

本日はBlender枠です。

 BlenderはUnity同様正式、α版含め多くのバージョンがリリースされています。

 基本的にBlenderは最後にインストールしたバージョンが排他的に起動するようになっています。

 この問題はアドオンを使用している場合顕著化し、複数のアドオンを使用している場合複数のバージョンのBlenderを使用することができないことがあります。

 Blender Launcherはこの問題を愛唱するためのツールとしてオープンソースでリリースされているソフトウェアです。

〇BlenderLauncherの導入

github.com

上記リンクのGitHubリポジトリのreleaseページを開きます。

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

自身の使用しているPC環境に応じたものをダウンロードします。

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

ダウンロードし回答したフォルダの中から[Blender Launcher]を選択し起動します。

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

初回起動時にはBlenderを管理するフォルダを選択する必要があります。これはドライブ直下を選ぶ必要があるようであらかじめ[エクスプローラ]からBlenderファイルを作成しておきます。

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

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

このフォルダ階層を選択することで[Blender Launcher]が起動します。

Blenderのインストール

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

①上部タブから[Download]を選択します。

ここでは現時点でリリースされていすべてのBlenderバージョンが一覧として表示されます。

②任意のバージョンをダウンロードすることで上部[library]メニューに自分の保有しているバージョンとして表示されます。

f:id:Holomoto-Sumire:20210607212924j:plain 以上でBlender Launcherを使用して複数バージョンをインストール管理できました。

ゼロから学ぶHoloLens 初心者向けチュートリアル HoloLensの五大要素を学ぶ Input その② オブジェクトを動かす。

チュートリアル枠です。

今回自分が3年前HoloLens に初めて触れ右も左もわからない中開発を行った頃の自分に向けてチュートリアルを作成します。

〇HoloLensへアプリをデプロイしよう!

今回はHoloLensアプリ開発環境を1から構築することを目的とします。 下のようなテーマで書いていこうと思います。

1.Unityの環境を構築しよう!

2.MRTKを使おう!MRTKとは何か?

    UnityEditorでMRTKを使おう

    アプリをUnityからビルドしよう。

    HoloLens実機にデプロイしよう

    

3.HoloLensの5大要素を学ぶ

      空間認識機能を実装する

      空間認識の表現

       AirTapの実装

      ・オブジェクトを動かす。←本日はこちら

4.応用編

〇環境

・Unity2019.4.18f1(LTS)

・VisualStudio2019

●筆者PC環境

 ・OS:Windows10 Pro

 ・プロセッサ:11th Gen Intel(R) Core(TM) i9-11900K @ 3.50GHz 3.50 GHz

 GPU:NVIDIA GoForceRTX 3080

 Microsoft HoloLens 1st

Microsoft HoloLens 2

 スペックに関しては高いほうが良いですが、HoloLensアプリ開発の場合VRと比べ求められるスペックは低いです。

 VRアプリ開発の場合PC自体がVRReady(VRゲームを実行できる環境)であることがほぼ必須ですが、HoloLensの場合VRReadyではなくても開発自体はできます。

 Unityが動くスペックであれば最低限問題ないです。

〇オブジェクトをつかんで動かす。

①hierarchyウィンドウで右クリックし[Create]→[3DObject]→[Sphere]を選択し新規で球を作成します。

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

インスペクターウィンドウから画像のように値を設定します。

 ・[Position]→0.2,0,0.8

 ・[Scale]→0.1,0.1,0.1

 これでCubeの隣に球が配置されます。

②[Sphere]のインスペクターウィンドウの[AddComponent]から[Object Manipulater]という名前を検索し[Object Manipulater]コンポーネントを球に追加します。

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

この状態で実機にデプロイすると画像のようにオブジェクトをAirTapすることで移動することができます。

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

③[NearInteractionGrabbable]をSphereに追加します。 

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

この状態で再びデプロイするとSphereを手でつかんで動かすことができます。

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

以上でオブジェクトを動かすことができました。