Hiromuブログ

最近はこちら(https://zenn.dev/hiromu)が本体

MRTK v2.5.0 Examples 一覧(Demos編)

MRTK v2.5.0 に含まれている Examples の Demos シーンについて確認したので、 それぞれの説明パネルのキャプチャと概要を記載しました。ボリュームが多かったので Experimental のシーンについては別記事でまとめています。

www.hiromukato.com

MRTK v2.5.0 の更新内容については、リリースノート をご参照ください。

確認環境

MRTK Examples

MRTK v2.5.0 では UPM(Unity Package Manager) を利用した場合 Examples を個別にインストールする必要があります。

UPM によるインストールについては、以下を参照ください。

Mixed Reality Toolkit and Unity Package Manager

f:id:HiromuKato:20201004154226p:plain


以降、各シーンの概要です。

Demos_Audio

  • AudioLoFiEffectExamples

    ローファイオーディオのサンプル。球をタップすることで3種類の効果を確認できる。

    f:id:HiromuKato:20201004154327p:plain

  • AudioOcclusionExamples

    音の遮蔽を確認することができるサンプル。壁の前と後ろで音の聞こえ方が変わる。

    f:id:HiromuKato:20201004154349p:plain

Demos_Boundary

  • BoundaryVisualizationExample

    境界を視覚化するサンプル(VR向け機能)。

    f:id:HiromuKato:20201004154408p:plain

Demos_Diagnostics

  • DiagnosticsDemo

    診断システムを使用して実行時のアプリケーションパフォーマンスを確認するサンプル。

    f:id:HiromuKato:20201004154431p:plain

Demos_EyeTracking

  • EyeTrackingDemo-00-RootScene

    アイトラッキングの他のサンプル(02~05)の親シーン。

    f:id:HiromuKato:20201004154515p:plain

  • EyeTrackingDemo-01-BasicSetup

    アイトラッキングを行うための最小設定のシーン。

    f:id:HiromuKato:20201004154539p:plain

  • EyeTrackingDemo-02-TargetSelection

    アイゲイズと選択(エアタップまたは音声コマンド)で宝石を破壊するサンプル。

    f:id:HiromuKato:20201004154559p:plain

  • EyeTrackingDemo-03-Navigation

    アイゲイズとスクロール、パン、ズームイン/アウトのサンプル。

    f:id:HiromuKato:20201004154617p:plain

  • EyeTrackingDemo-04-TargetPositioning

    目とハンドまたはボイスによるオブジェクトの選択、移動を行うサンプル。

    f:id:HiromuKato:20201004154629p:plain

  • EyeTrackingDemo-05-Visualizer

    アイトラッキングデータをビジュアライズするサンプル。

    f:id:HiromuKato:20201004154643p:plain

Demos_Gltf

  • Glb-Loading-Demo

    ネット経由で Glb ファイルを読み込むサンプル。

    f:id:HiromuKato:20201004154704p:plain

  • Gltf-Loading-Demo

    StreamingAssets にある Gltf ファイルを読み込むサンプル。

    f:id:HiromuKato:20201004154728p:plain

    予め StreamingAssets 配下に gltfファイルを準備しておくか、または以下の [Copy models to StreamingAssets] ボタンを押してモデルを取得しておく必要がある。

    f:id:HiromuKato:20201004154811p:plain

Demos_HandTracking

  • HandInteractionExamples

    プレス、タッチ、グラブ、スクロール、移動、回転、スケールなど、さまざまなタイプのハンドトラッキングインタラクションを示したサンプル。

    f:id:HiromuKato:20201004154835p:plain

    f:id:HiromuKato:20201004154857p:plain

  • HandInteractionGestureEventsExample

    IMixedRealityGestureHandler を使用したさまざまなタイプのジェスチャーイベント(Select, Hold, Manipulation, Navigation)を示したサンプル。

    f:id:HiromuKato:20201004154924p:plain

  • HandInteractionRecordArticulatedHandPose

    手のポーズ(位置・回転)を記録するサンプル。Record Right Hand、もしくは Record Left Hand のボイスコマンドで記録を開始し、Stop ボイスコマンドで記録を停止する。Console に記録内容が json で表示される。

  • HandInteractionTouchablesExample

    さまざまなタッチ可能なコンポーネントと、それらがさまざまなコライダーとどのようにインタラクションするかを示したサンプル。

    f:id:HiromuKato:20201004154944p:plain

    f:id:HiromuKato:20201004154958p:plain

  • HandMenuExamples

    ハンドメニューを表示するサンプル(追跡されたオブジェクトを手で拘束されたコンテンツの安全な領域に拘束するソルバーである HandConstraint の使用方法を示している)。ハンドメニューを表示するには、手を上げて手のひらを見る必要がある。

    f:id:HiromuKato:20201004155014p:plain

    f:id:HiromuKato:20201004155030p:plain

  • LeapMotionHandTrackingExample

    Leap Motion によるハンドトラッキングのサンプル。本サンプルを試すには、Leap Motion Controller が必要。

    f:id:HiromuKato:20201004155049p:plain

  • NearMenuExamples

    様々なメニューのサンプル。ピン止めしたり、掴んで移動したりできる。

    f:id:HiromuKato:20201004155105p:plain

    f:id:HiromuKato:20201004155117p:plain

Demos_Input

  • DictationExample

    音声を録音し、音声のテキスト化を行うことができるサンプル。日本語を表示する場合は日本語のフォントを入れる必要がある。

    f:id:HiromuKato:20201004155137p:plain

    f:id:HiromuKato:20201004155152p:plain

  • DisablePointersExample

    PointerUtils の利用方法を示したサンプル。

    コードから Hand Ray、Gaze、Grab、Poke などのポインターをオンオフすることができ、 HoloLens 1 と 2 などのスタイルのインタラクションを切り替えることができる。

    f:id:HiromuKato:20201004155210p:plain

    f:id:HiromuKato:20201004155225p:plain

  • InputActionsExample

    異なるソースからの入力をユーザー定義の入力アクションにマッピングし、単一のリスナーを介してそれを処理する方法を示したサンプル。

    回転可能なオブジェクトにフォーカスを当てた状態で、以下のアクションのいずれかを行うと Cube が回転する。

    • Xbox コントローラの B ボタンを押す
    • Rotate と言う
    • Hold ジェスチャーを実行する

    f:id:HiromuKato:20201004155348p:plain

  • InputDataExample

    手、頭、目、モーションコントローラーの位置・ポジションなどの入力データにアクセスする方法を示したサンプル。

    f:id:HiromuKato:20201004155404p:plain

  • PointerResultExample

    ポインタのヒット位置を利用して、ポインタクリック時にオブジェクトを生成する方法を示したサンプル。

    f:id:HiromuKato:20201004155422p:plain

  • PrimaryPointerExample

    プライマリポインタ変更イベントを使用してプライマリポインタを追跡する方法を示したサンプル。

    感覚を掴むために、異なるコントローラを使用してチーズを選択して操作したり、コントローラを切断したり、トラッキングロスを強制したりして遊ぶと良いらしい。

    f:id:HiromuKato:20201004155437p:plain

  • SpeechInputExamples

    音声コマンドの構成および使用する方法を示したサンプル。

    Open, Close, Change Color, (Select) の音声コマンドが登録されており、音声コマンド発声時にフォーカスが必要な Local Speech Handler と フォーカスの必要がない Global Speech Handler の例が示されている。

    f:id:HiromuKato:20201004155454p:plain

Demos_ScrollingObjectCollection

  • ScrollingObjectCollection

    ScrolingObjectCollection コンポーネントを使用したさまざまなタイプのスクロールインタラクションを示したサンプル。

    f:id:HiromuKato:20201004155511p:plain

    f:id:HiromuKato:20201004155523p:plain

Demos_Solvers

  • SolverExamples

    ソルバーのサンプル。

    ソルバーは、あらかじめ定義されたアルゴリズムに従ってオブジェクトの位置と向きを計算する手段を容易にするコンポーネント。

    f:id:HiromuKato:20201004155557p:plain

  • SurfaceMagnetismSpatialAwarenessExample

    Spatial Awarenessを使ってSurface Magnetism Solver の使用を示したサンプル。

    現実空間の壁の表面にオブジェクトがスナップして、ポインタに追従する。

    f:id:HiromuKato:20201004155614p:plain

  • TapToPlaceExample

    タップしてオブジェクトを配置するサンプル。

    タップして配置すると、オブジェクトがサーフェスに配置される。 サーフェスが検出されない場合、オブジェクトは、ソルバーハンドラーにあるTrackedTargetType(ヘッド、コントローラーレイ、ハンドジョイント)を基準にしたデフォルトの距離に配置される。

    f:id:HiromuKato:20201004155632p:plain

    f:id:HiromuKato:20201004155644p:plain

Demos_SpatialAwareness

  • SpatialAwarenessMeshDemo

    空間認識のサンプル。現実環境をワイヤーフレームメッシュで表示する。

    球のクリックで環境認識のオブザーバーの動作を停止・再開できる。

    f:id:HiromuKato:20201004155705p:plain

Demos_StandardShader

  • ClippingExamples

    Mixed Reality Toolkit/Standard シェーダをクリッピングプリミティブ(ClippingPlane、ClippingSphere、およびClippingBox)と組み合わせて使用して、メッシュ上のピクセルを動的にクリップする方法を示したサンプル。

    f:id:HiromuKato:20201004155720p:plain

    f:id:HiromuKato:20201004155732p:plain

  • HoverLightExamples

    Mixed Reality Toolkit/Standard シェーダと HoverLights を組み合わせて使用し、メッシュをダイナミックにライトする方法を示したサンプル。

    f:id:HiromuKato:20201004155750p:plain

    f:id:HiromuKato:20201004155803p:plain

  • MaterialGallery

    Mixed Reality Toolkit/Standard シェーダで可能なマテリアルとシェーディング手法の例を示したサンプル。

    f:id:HiromuKato:20201004155819p:plain

    f:id:HiromuKato:20201004155831p:plain

  • OutlineExamples

    Mixed Reality Toolkit/Standard シェーダを MeshOutline、MeshOutlineHierarchy、および MeshSmoother コンポーネントと組み合わせて、さまざまな手法を使用してメッシュレンダラーの輪郭を描く方法を示したサンプル。

    f:id:HiromuKato:20201004155850p:plain

    f:id:HiromuKato:20201004155902p:plain

  • StandardMaterialComparison

    Unity/Standard シェーダと Mixed Reality Toolkit/Standard シェーダを比較したサンプル。

    f:id:HiromuKato:20201004155923p:plain

  • StandardMaterials

    Mixed Reality Toolkit によって提供される標準的なマテリアルを示したサンプル。

    f:id:HiromuKato:20201004155937p:plain

    f:id:HiromuKato:20201004155949p:plain

Demos_Utilities

  • MixedRealityCapabilityDemo

    プラットフォームとデータプロバイダーによってサポートされる Capability の状況を表示するサンプル。

    f:id:HiromuKato:20201004160018p:plain

Demos_UX

  • BoundingBox

    • BoundingBoxExamples

      様々なタイプのバウンディングボックスのサンプル。

      BoundingBox コンポーネントは deprecated となっているので注意。今後は BoundsControl を利用する。

      f:id:HiromuKato:20201004160045p:plain

    • BoundingBoxRuntimeExample

      実行時にバウンディングボックスを作成し、さまざまなバウンディングボックスのプロパティを変更する方法を示したサンプル。

      BoundingBox コンポーネントは deprecated となっているので注意。今後は BoundsControl を利用する。

      f:id:HiromuKato:20201004160100p:plain

  • BoundsControl

    • BoundsControlExamples

      様々なタイプのバウンディングボックスのサンプル。

      f:id:HiromuKato:20201004160149p:plain

    • BoundsControlRuntimeExample

      実行時にバウンディングボックスを作成し、さまざまなバウンディングボックスのプロパティを変更する方法を示したサンプル。

      f:id:HiromuKato:20201004160202p:plain

  • Collections

    • ObjectCollectionExamples

      オブジェクトコレクションのサンプル。

      オブジェクトコレクションは、あらかじめ定義された3次元形状のオブジェクトの配列をレイアウトするのに役立つレイアウトコントロール。

      f:id:HiromuKato:20201004160224p:plain

      f:id:HiromuKato:20201004160238p:plain

  • Interactables

    • InteractablesExamples

      Interactable コンポーネントのサンプル。

      Interactableは、ボタンやUIコントロールなどのインタラクティブなコンテンツを構築するための基本コンポーネントであり、インタラクティブな状態に基づいてフィードバックを提供する。

      f:id:HiromuKato:20201004160301p:plain

      f:id:HiromuKato:20201004160313p:plain

  • Lines

    • LineExamples

      ライン描画のサンプル。ラインは Data Provider と Renderer の2つのコンポーネントから成る。

      f:id:HiromuKato:20201004160331p:plain

  • ManipulationHandler

    • ManipulationHandlerExample

      ManipulationHandler のサンプル。 ManipulationHandler コンポーネントは deprecated となっているので注意。今後は ObjectManipulator を利用する。

      球が操作でき、 壁にぶつかると、インタラクションが停止する。

      f:id:HiromuKato:20201004160355p:plain

  • ObjectManipulator

    • ObjectManipulatorExample

      ObjectManipulator のサンプル。

      球が操作でき、 壁にぶつかると、インタラクションが停止する。

      f:id:HiromuKato:20201004160419p:plain

    • ObjectManipulatorExamplePhysics

      ObjectManipulator の物理機能をテストするためのサンプル。

      f:id:HiromuKato:20201004160431p:plain

  • PressableButton

    • PressableButtonExample

      PressableButton のさまざまなカスタマイズ例を示したサンプル。

      f:id:HiromuKato:20201004160448p:plain

      f:id:HiromuKato:20201004160459p:plain

  • ProgressIndicator

    • ProgressIndicatorExamples

      進行状況インジケーターのサンプル。

      f:id:HiromuKato:20201004160515p:plain

  • Slate

    • SlateExample

      Slate プレハブでの HandInteractionPanZoom スクリプトの使用を示したサンプル。

      f:id:HiromuKato:20201004160530p:plain

      f:id:HiromuKato:20201004160542p:plain

  • Slider

    • SliderExample

      ピンチスライダーコントロールの使用方法を示したサンプル。

      f:id:HiromuKato:20201004160554p:plain

      f:id:HiromuKato:20201004160606p:plain

  • Text

    • TextPrefabExamples

      テキストプレハブのサンプル。

      適切なスケーリング値と Text3DShader によるオクルージョンサポートにより、品質が最適化されている。

      f:id:HiromuKato:20201004160624p:plain

      f:id:HiromuKato:20201004160636p:plain

  • Tooltips

    • TooltipExamples

      ツールチップのサンプル。

      f:id:HiromuKato:20201004160652p:plain

      f:id:HiromuKato:20201004160704p:plain