MRが楽しい

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

MRTK 2.5のシミュレーション機能で操作のチートシートを利用する

本日は MRTK の小ネタ枠です。
MRTK 2.5のシミュレーション機能で操作のチートシートを利用する手順を記事にします。
f:id:bluebirdofoz:20201008211015j:plain

リリースノートはこちらです。
microsoft.github.io

シミュレーション操作のチートシート

MRTK 2.5 の HandInteractionExamples にはシミュレーション操作のチートシートが追加されています。
f:id:bluebirdofoz:20201008211439j:plain

UnityPackageManager を使って MRTK をインポートした場合、HandTracking のサンプルを取得することでサンプルシーンを利用できます。
bluebirdofoz.hatenablog.com

シーンの再生時に[Ctrl + H]キーを押下することで、シミュレーション操作のチートシートが左下に表示されます。
f:id:bluebirdofoz:20201008211545j:plain
f:id:bluebirdofoz:20201008211556j:plain

自作シーンでのチートシートの利用

チートシートのプレハブを配置すると、自作シーンでも利用可能です。
サンプルに含まれる Help_Panel_Viewer.prefab をシーンに配置します。
Packages/MixedRealityToolkitExamples/Common/Prefabs 配下にあります。(UnityPackageManager利用時)
f:id:bluebirdofoz:20201008211604j:plain

これで自作シーンでもチートシートが表示できます。
操作方法をよく忘れてしまう方は設定しておくと便利かもしれません。
f:id:bluebirdofoz:20201008211615j:plain

HoloLens2実行時

因みにこのチートシートはそのままビルドしても HoloLens2 実行時にはちゃんと非表示になります。
f:id:bluebirdofoz:20201008211625j:plain

シミュレータの利用手順

MRTK のシミュレーション利用方法については以下の記事も参考にしてみてください。
bluebirdofoz.hatenablog.com

MRTK 2.5のカラーピッカーでマテリアル色の変更を試す

本日は MRTK の技術調査枠です。
MRTK 2.5のカラーピッカーでマテリアル色の変更を利用する手順を記事にします。
f:id:bluebirdofoz:20201007231905j:plain

MRTKのカラーピッカー

実行時に任意のオブジェクトのマテリアルの色を簡単に変更できるようにする実験的なコントロールです。
microsoft.github.io
f:id:bluebirdofoz:20201007231915j:plain

MRTK 2.5 現在は Experimental(実験的) の機能に分類されます。

サンプルシーンの利用方法

MRTK の Examples パッケージからカラーピッカーを利用したサンプルシーンを確認できます。
Package Manager を利用する場合は[Experimental - ColorPicker]を取得します。
bluebirdofoz.hatenablog.com

Assets/Samples/MixedRealityToolkitExamples/2.5.0/Experimental-ColorPicker配下を開きます。
ColorPickerExample.unity のシーンを開くと、サンプルシーンを確認できます。
f:id:bluebirdofoz:20201007231933j:plain

自作シーンでのカラーピッカーの利用

自作したシーンのオブジェクトに対してカラーピッカーによる色の変更を試してみます。

Cubeオブジェクトの作成

プロジェクトを作成し、カメラの前方に Cube オブジェクトを作成しました。
この Cube オブジェクトの色を変更してみます。
f:id:bluebirdofoz:20201007231945j:plain

Cube オブジェクトに MixedRealityToolkit/Standard シェーダを設定したマテリアルを反映します。
カラーピッカーはマテリアルの color の値を変更するため、通常の Standard シェーダのままでも利用可能です。
f:id:bluebirdofoz:20201007231955j:plain

カラーピッカーパネルの配置

色変更の操作を行うカラーピッカーパネルを配置します。
今回はサンプルに含まれる ColorPickerPrefab.prefab を利用します。
Assets/Samples/MixedRealityToolkitExamples/2.5.0/Experimental-ColorPicker/Prefabs 配下にあります。
f:id:bluebirdofoz:20201007232006j:plain

このカラーピッカーパネルは起動時に非アクティブになります。
f:id:bluebirdofoz:20201007232016j:plain

カラーピッカーの起動ボタンの配置

次にカラーピッカーを起動するためのボタンを配置します。
こちらは PressableButtonHoloLens2_48x48.prefab を利用します。
Package/MixedRealityToolkitFoundation/SDK/Features/UX/Interactable/Prefabs 配下にあります。(UnityPackageManager利用時)
f:id:bluebirdofoz:20201007232026j:plain

ボタン押下時のイベントを設定します。
ボタンの[Inspector]ビューを開き、OnClick()のイベントを追加してカラーピッカーのオブジェクトを指定します。
実行イベントとして ColorPicker.SummonColorPicker 関数を指定します。
f:id:bluebirdofoz:20201007232036j:plain

SummonColorPickerの引数

SummonColorPicker の引数で色を変更するオブジェクトを指定しますが、設定方法が少し特殊になります。
初めに、引数で指定するための空のゲームオブジェクトを作成します。
f:id:bluebirdofoz:20201007232045j:plain

色を変更したい Cube オブジェクトを空オブジェクトの子オブジェクトに移動します。
f:id:bluebirdofoz:20201007232056j:plain

Cube オブジェクトの名前を"TargetObject (Mesh)"に変更します。
色の変更は ColorPicker.SummonColorPicker 関数で指定した子オブジェクトに存在する同名のオブジェクトの MeshRenderer に作用するためです。
f:id:bluebirdofoz:20201007232106j:plain

更にもう一つ空の子オブジェクトを作成し、オブジェクトの名前を"Anchor"に変更して任意の位置に配置します。
これはカラーピッカーパネルの表示位置を指定します。
f:id:bluebirdofoz:20201007232116j:plain

これらの設定を行ったゲームオブジェクトを ColorPicker.SummonColorPicker 関数の引数として指定します。
f:id:bluebirdofoz:20201007232127j:plain

動作確認

シーンを再生して動作を確認します。
ボタンをクリックすると、カラーピッカーパネルが表示されます。
f:id:bluebirdofoz:20201007232139j:plain

カラーピッカーパネルを操作して、オブジェクトの色が変わることを確認します。
f:id:bluebirdofoz:20201007232150j:plain

MRTK 2.5でアイトラッキングの機能とシミュレータを利用する

本日は MRTK の技術調査枠です。
MRTK 2.5でアイトラッキングの機能とシミュレータを利用する手順を記事にします。
f:id:bluebirdofoz:20201006224044j:plain

アイトラッキングの設定手順

以前作成したホロモンのプロジェクトを元に、MRTK 2.5 でアイトラッキングの再設定を行います。
MRTK 2.5 でアイトラッキングの機能を利用するには以下の設定が必要です。

Input Data Providersの設定

[MixedRealityToolkit]オブジェクトの[Inspector]ビューを開き、視線入力のデータプロバイダーを設定します。
プロファイルを編集するため、デフォルトプロファイルを選択している場合は[Copy&Customize]で新規プロファイルを作成します。
f:id:bluebirdofoz:20201006224104j:plain

任意のプロファイル名を設定して[Clone]を実行します。
f:id:bluebirdofoz:20201006224118j:plain

プロファイルを新規作成したら[Input]タブを開きます。
[InputSystem]のプロファイルから[Clone]で同様に新規プロファイルを作成します。
f:id:bluebirdofoz:20201006224129j:plain

プロファイルを作成すると[Input Data Providers]が編集できるようになります。
[+ Add Data Provider]をクリックして、データプロバイダーを追加します。
f:id:bluebirdofoz:20201006224139j:plain

[New data provider]の項目が追加されます。
[Type]のプルダウンを開き、[Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input -> WindowsMixedRealityEyeGazeDataProvider]を選択します。
f:id:bluebirdofoz:20201006224149j:plain

これで視線入力のデータプロバイダーが設定できました。
f:id:bluebirdofoz:20201006224159j:plain

視線入力のPointerの設定

次に視線入力のポインターを設定します。
[Input]タブ内の[Pointers]パネルを開き、[InputPointer]のプロファイルから[Clone]で新規プロファイルを作成します。
f:id:bluebirdofoz:20201006224208j:plain

プロファイルを作成すると[Gaze Settings]が編集できるようになります。
[DefaultCursor]をクリックして、[EyeGazeCursor]を設定します。
f:id:bluebirdofoz:20201006224218j:plain

更に[Is Eye Tracking Enabled]をチェックして有効化します。
これで視線入力の機能が使えるようになりました。
f:id:bluebirdofoz:20201006224228j:plain

視線入力イベントの作成

シーンに視線入力のイベントを作成します。
見たときにイベントが発生してほしいオブジェクトに、アタリ判定の Collider と EveTrackingTarget スクリプトを設定します。
今回は、見たときにイベントが発生する[On Look At Start()]と、見るのを止めたときにイベントが発生する[On Look Away()]にイベントを設定しました。
f:id:bluebirdofoz:20201006224238j:plain

Capabilitiesの設定

ビルド先の HoloLens2 で視線入力の使用を許可するため、Capabilities の設定が必要です。
Unity 2019 では[Edit -> Project Settings..]を開き、[Player]タブの[Publishing Settings -> Capabilities]で[GazeInput]にチェックを入れることで設定できます。
f:id:bluebirdofoz:20201006224333j:plain

Unity 2018 では[GazeInput]の項目が表示されないので、VisualStudio 側で設定を行う必要があります。

アイトラッキングの試験手順

MRTK 2.5 では Unity エディター上でアイトラッキングの試験を行うことができます。
エディター上でアイトラッキングの機能を試験するには以下の設定が必要です。

Input Data Providersの設定

シミュレータのデータプロバイダーでアイトラッキングを有効化します。
プロファイルを開き、[Input Data Providers]パネル内の[Input Simulation Service]データプロバイダーを開きます。
f:id:bluebirdofoz:20201006224345j:plain

プロファイルを編集するため、[InputSimulationService]のプロファイルから[Clone]で新規プロファイルを作成します。
f:id:bluebirdofoz:20201006224354j:plain

プロファイルを作成すると[Eye Gaze Simulation]が編集できるようになります。
プルダウンを開き、[Disabled]を[Camera Forward Axis]を設定します。
f:id:bluebirdofoz:20201006224405j:plain

これでエディター上ではカメラの向いている方向に視線のレイキャストがとぶようになります。
[再生]ボタンを押して、シーンを再生してみます。
f:id:bluebirdofoz:20201006224417j:plain

カメラをホロモンの方に向けると、視線入力のイベントが発生して反応します。
f:id:bluebirdofoz:20201006224428j:plain

マウスによる視線入力

MRTK 2.5 では新機能としてマウスによる視線入力のシミュレートも可能です。
[Eye Gaze Simulation]で、[Camera Forward Axis]ではなく[Mouse]を設定します。
f:id:bluebirdofoz:20201006224439j:plain

[Game]ビュー上にマウスオーバーしてホロモンにマウスを合わせると、カメラがそちらの方向を向いていなくても視線入力のイベントが発生して反応します。
[Scene]パネルでは赤いラインで視線のレイキャストを確認できます。
f:id:bluebirdofoz:20201006224028j:plain

UnityPackageManagerを使ってプロジェクトにMRTK 2.5をインポートする

本日は MRTK 2.5 の技術調査枠です。
Unity Package Manager を使ってプロジェクトに MRTK 2.5 をインポートする手順を記事にします。
f:id:bluebirdofoz:20201005210518j:plain

以下の記事の翻訳と実施キャプチャ、一部追記を元に記事にしています。
microsoft.github.io

Mixed Reality ToolkitとUnity Package Manager

サポートバージョン

以下のバージョンで Unity Package Manager を使った MRTK のインポートが可能です。
・Unity 2019.4 以降
・MRTK 2.5 以降
f:id:bluebirdofoz:20201005210346j:plain

Unity Package Managerを使用したインストール

マニフェストファイル(manifest.json)を使用して、インストールするパッケージとレジストリ(サーバー)を決定します。
f:id:bluebirdofoz:20201005210529j:plain

MRTKのバージョン 2.5 では、サーバーとパッケージの初期登録はプロジェクトごとに手動で行います。
このプロセスは Azure DevOps でサポートされていない Legacy npm 検索機能(/-/all)を Unity Package Manager が使用しているため必要です。

Mixed Realityコンポーネントサーバーの登録

Microsoft Mixed Reality Toolkitを使用するプロジェクトごとに、manifest.jsonファイルで MixedReality スコープのレジストリを追加する必要があります。
以下に MixedReality をサポートするために manifest.json を変更する方法を示します。

1. /Packages/manifest.jsonVisual Studio Code などのテキストエディターで開きます。
f:id:bluebirdofoz:20201005210541j:plain

2.マニフェストファイル上部の"scopedRegistries"セクションに、Mixed Reality サーバーを追加してファイルを保存します。

{
  "scopedRegistries": [
    {
      "name": "Microsoft Mixed Reality",
      "url": "https://pkgs.dev.azure.com/aipmr/MixedReality-Unity-Packages/_packaging/Unity-packages/npm/registry/",
      "scopes": [
        "com.microsoft.mixedreality",
        "com.microsoft.spatialaudio"
      ]
    }
  ],

f:id:bluebirdofoz:20201005210553j:plain

MRTKパッケージの追加

Microsoft Mixed Reality スコープのレジストリマニフェストに追加すると、MRTK パッケージを指定できます。
以下の Unity Package Manager のセクションに、利用可能なMRTKパッケージの内容と利用シナリオを説明しています。
microsoft.github.io

MRTK パッケージを追加するには Packages/manifest.json ファイルの"dependencies"セクションを変更します。
次の例は、foundation, Tools, Examples パッケージの追加を示しています。
標準アセットパッケージは、ファンデーションの依存関係として自動的に追加されます。

  "dependencies": {
    "com.microsoft.mixedreality.toolkit.foundation": "2.5.0",
    "com.microsoft.mixedreality.toolkit.tools": "2.5.0",
    "com.microsoft.mixedreality.toolkit.examples": "2.5.0",

f:id:bluebirdofoz:20201005210614j:plain

Unity Package Managerを使用したMixed Reality機能の管理

パッケージマニフェストへの追加を行うと、Unity Package Manager で MRTK パッケージが管理されます。
f:id:bluebirdofoz:20201005210624j:plain

パッケージは[Package]の下に追加されます。
.unitypackage でインポートした場合とはファイルパスが異なるので注意が必要です。
f:id:bluebirdofoz:20201005210634j:plain

Unity Package Manager から Mixed Reality Toolkit パッケージを削除した場合は、前述の手順で再度追加する必要があります。

Mixed Reality ToolkitのExamplesの使用

アセット・パッケージ(.unitypackage)ファイルを使用する場合とは異なり、com.microsoft.mixedreality.toolkit.examples および com.microsoft.mixedreality.toolkit.handphysicsservice は、サンプルのシーンとアセットを自動的にインポートしません。
サンプルを利用するには、次の手順を使用してください。

1. Unityエディターで[Window -> Package Manager]を開きます。
f:id:bluebirdofoz:20201005210647j:plain

2.[Unity Registries]を[My Registries]に切り替えます。
f:id:bluebirdofoz:20201005210658j:plain

3.パッケージのリストで[Mixed Reality Toolkit Examples]を選択します。
f:id:bluebirdofoz:20201005210709j:plain

4.[Samples]リストから目的のサンプルを見つけます。
f:id:bluebirdofoz:20201005210720j:plain

5.目的のサンプルの[Import into Project]をクリックします。
f:id:bluebirdofoz:20201005210732j:plain

6.これでサンプルのシーンとアセットがインポートされます。
f:id:bluebirdofoz:20201005210741j:plain

7.シーンを開くことでサンプルを確認できます。TextMesh などの追加インポートはこれまでと同様です。
f:id:bluebirdofoz:20201005210750j:plain

サンプルパッケージが更新されると、Unity はインポートされたサンプルを更新するオプションを提供します。
インポートされたサンプルを更新すると、そのサンプルと関連するアセットに加えられた変更が上書きされます。

Blender2.8でモンスター型のキャラクターモデルを作成する その4(尻尾オブジェクトの動作ボーンの作成)

本日はモンスター型モデルの作成枠です。
前回毛並みオブジェクトから作成した尻尾オブジェクトにボーンを埋め込んで尻尾を動かしてみます。
f:id:bluebirdofoz:20201004231446j:plain

前回記事の続きです。
bluebirdofoz.hatenablog.com

尻尾のボーンを作成する

腰の spine ボーンから子ボーンを押し出して尻尾のボーンを作成します。
f:id:bluebirdofoz:20201004231457j:plain

毛並みオブジェクト毎に異なる位置のボーンの頂点グループを設定して分かれて動くようにします。
f:id:bluebirdofoz:20201004231509j:plain

[ポーズモード]でボーンを動かして動作を確認します。
f:id:bluebirdofoz:20201004231520j:plain
f:id:bluebirdofoz:20201004231531j:plain

コンストレイントの設定

1つ1つ手で調整するのは面倒なのでコンストレイントを使って簡単に操作できるようにして見ます。
以下の記事で紹介したトランスフォーム変換と位置制限を利用します。
bluebirdofoz.hatenablog.com

以下の通り、尻尾の先にコントロール用のボーンを追加します。
f:id:bluebirdofoz:20201004231552j:plain

尻尾の各部分がバラバラにしなるように動かしたかったので、IK ではなくトランスフォーム変換を用います。
各ボーンに以下のようなコンストレイントを設定しました。

尻尾ボーンその1

f:id:bluebirdofoz:20201004231604j:plain
f:id:bluebirdofoz:20201004231615j:plain
f:id:bluebirdofoz:20201004231625j:plain

尻尾ボーンその2

f:id:bluebirdofoz:20201004231634j:plain
f:id:bluebirdofoz:20201004231643j:plain
f:id:bluebirdofoz:20201004231656j:plain

尻尾ボーンその3

f:id:bluebirdofoz:20201004231709j:plain
f:id:bluebirdofoz:20201004231730j:plain
f:id:bluebirdofoz:20201004231751j:plain

尻尾ボーンその4

f:id:bluebirdofoz:20201004231835j:plain

コントロールボーン

最後に、操作がしやすいようコントロールボーンには位置制限のコンストレイントを設定します。
f:id:bluebirdofoz:20201004231849j:plain

動作確認

コントロールボーンを走査して動作を確認してみます。
以下の通り、コントロールボーンを動かすだけで尻尾をしなるように変形することができました。
f:id:bluebirdofoz:20201004231902j:plain
f:id:bluebirdofoz:20201004231912j:plain
f:id:bluebirdofoz:20201004231922j:plain

Kobe HoloLens Meetup! vol.3での発表資料

Kobe HoloLens Meetup! vol.3 での発表資料です。
関西コミュニティということで登壇資料も関西弁バージョンで登壇しました。

www.slideshare.net

arkobe.connpass.com

PowerPointのスライドに3Dモデルを差し込む

本日は PowerPoint の小ネタ枠です。
PowerPointのスライドに3Dモデルを差し込む手順を記事にします。
f:id:bluebirdofoz:20201002172943j:plain

PowerPointの3Dモデルの挿入方法

[挿入]タブの[3Dモデル]または[3Dモデル]の挿入ボタンで3Dモデルを取り込むことができます。
f:id:bluebirdofoz:20201002172953j:plain

ボタンをクリックすると、オンラインから取得可能な3Dモデルの一覧が表示されます。
f:id:bluebirdofoz:20201002173003j:plain

[挿入]タブの[3Dモデル -> このデバイス...]を選択すると、PC上の3Dモデルを挿入することもできます。
f:id:bluebirdofoz:20201002173012j:plain

利用可能な拡張子は以下の通りです。

*.fbx
*.obj
*.3mf
*.ply
*.stl
*.glb

利用可能な3Dモデルファイルであれば、直接ドラッグして取り込むこともできます。
f:id:bluebirdofoz:20201002173022j:plain

PowerPointで3Dモデルを利用する

PowerPointで3Dモデルを扱う際に便利な機能を以下に紹介します。

3Dモデルの回転/拡縮

PowerPointに取り込んだ3Dモデルはドラッグ操作で回転したり、拡大縮小することが可能です。
f:id:bluebirdofoz:20201002173032j:plain

3Dモデルの専用アニメーション

3Dモデルには立体的なアニメーションを設定することもできます。
3Dモデルを選択した状態で[アニメーション]タブを開き、[アニメーションの追加]を開くと[3D]の項目が追加されています。
f:id:bluebirdofoz:20201002173041j:plain

例えば[ターンテーブル]のアニメーションを設定すると、3Dモデルが360°回転するアニメーションを簡単に登録できます。
f:id:bluebirdofoz:20201002173053j:plain

スライド間の変形アニメーション

スライドとスライドを跨いで3Dモデルのアニメーションを設定することも可能です。
例えば、1枚目に以下のような後ろを向いた3Dモデルを配置しておきます。
f:id:bluebirdofoz:20201002173101j:plain

右クリックから[スライドの複製]を実行して次のスライドを作成します。
または[新しいスライド]で次のスライドを作って3Dモデルのみをコピーペーストする手順でも大丈夫です。
f:id:bluebirdofoz:20201002173113j:plain

次のスライドでは3Dモデルが拡大され、こちらを向くように設定しておきます。
f:id:bluebirdofoz:20201002173123j:plain

この状態で[画面切り替え]タブを開き、スライドに[変形]の効果を設定します。
これで1枚目のスライドから2枚目のスライドへの切り替えの際に、3Dモデルが変形を補完するように動作します。
f:id:bluebirdofoz:20201002173134j:plain

スライドショーを開始して動作を確認してみます。
f:id:bluebirdofoz:20201002173143j:plain

1枚目で後ろを向いていた3Dモデルが2枚目への画面切り替えの際に、こちらを向く変形アニメーションが再生されます。
f:id:bluebirdofoz:20201002173152j:plain