0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Microsoft Mesh - Custom Immersive Experience : Mesh Interactables概要

Posted at

Microsft Meshのサービスの1つとして提供される Custom Immersive Experience

前回に引続きMeshでカスタム環境を構築技術の解説をしていきたいと思います。

今回はMicrosoft Meshのカスタム環境を構築する際によく使うであろうオブジェクトの操作に関する機能について紹介。今回は概要編としてMeshではどういったオブジェクト操作が可能なのか、実装時に設定できる項目に触れていきます。Mesh Interactablesはいくつかの操作タイプがあり、設定も細かいので、今回は操作タイプと共通で設定可能な項目について紹介します。各操作タイプの詳細については別記事で紹介したいと思います。

Mesh Interactablesとは

Mesh InteractablesはMesh Toolkitの中にある機能の1つで空間内でユーザが鑑賞できるオブジェクトを作成するときに使用します。Mesh内ではオブジェクトを動かしたり装備したりといった操作が可能です。

具体的には以下の4つの操作を実装することが可能です。

2024-12-02-16-41-06.png

Type 概要
Basic 操作対象に選ばれているかを検出できるオブジェクトに設定します。「ポインターを当てるとオブジェクトが動く」、「ボタンなどのアクションが伴う」といったオブジェクトを作成したい場合はこのタイプを設定します。このタイプについては、オブジェクトを移動させることはできません。
Manipulable ユーザがTransform(移動、回転、サイズ変更)を操作できるオブジェクトを作成したい場合はこのタイプを設定します。
Equippable ユーザが装備できるオブジェクトを作成したい場合はこのタイプを設定します。手に道具を持って何か別のアクションを行うといった体験を実現するために利用します。
Throwable ユーザが投げることが出来るオブジェクトを作成したい場合はこのタイプを設定します。投擲の方向や強さを設定するとガイドが表示され、リリースするとその方向にオブジェクトを飛ばすことができます。

Meshではオブジェクトを投げる方法が2つあります。1つは上記で説明したThrowableを使う方法。もう1つがManipulableオブジェクトを利用し、オブジェクト操作中にリリースするすることで慣性を使って投げる方法です。Manipulableで投げる場合は、Meta Questでは問題ないのですが、PCの場合投げる方向に制約が出てしまうため、PCでの利用も想定される場合はThrowableの利用も検討します。

Mesh Interactablesの実装

Custom Immersive Expriencesの空間の中でユーザが操作するオブジェクトを作成する場合は、対象のオブジェクトにMesh Interactable Setupコンポーネントを追加し各種設定を行います。実行時にはこのコンポーネントの設定に合わせてMesh Interactable Bodyが生成され動作します。イベントが開催された直後のオブジェクトの状態はMesh Interactable Setupコンポーネントの設定に従い初期化されます。以降はイベントが終了するまでMesh Interactable Bodyの設定を基準に動作します。こういった仕組みを入れることでイベント内のオブジェクトの挙動に一貫性を持たせています。

2024-12-06-13-51-07.png 2024-12-06-13-55-35.png
設計時 実行時

Mesh Interactable Setupコンポーネントを追加したオブジェクト(子要素含)にRigidBodyが含まれる場合は、自動的にRididBodyが管理下に置かれます。例えば、オブジェクト操作中はuseGravityがfalseになるなどオブジェクト操作に合わせて制御されます。

次に、Mesh Interactablesを利用した実装について少し紹介します。各タイプ様々な設定をおこなえるため、本記事では各タイプ共通で行う設定の詳細を解説します。各タイプの詳細については別記事で紹介します。

Mesh Interactablesの各タイプには様々な設定項目があるのですが、共通して設定可能な要素は以下のものになります。

  • Interaction Settings
    オブジェクト操作の基本的な設定項目
  • Hilight Settings
    オブジェクトがフォーカスを持った場合のハイライト表示に関する設定項目

それぞれについて詳細を解説します。

Interaction Settings

Interaction Settingsは各タイプにより少し設定は異なるのですが以下の項目は共通で持っています。オブジェクトが操作可能になる際の有効範囲やアバターのエフェクト等の設定を行えます。

2024-12-06-03-07-38.png

設定項目 概要 設定値
Interaction Range オブジェクトが操作可能になる範囲。ユーザーとオブジェクト間の距離がこの設定範囲内の時に機能します m単位で設定
Aim IK arm on Hover ユーザ操作によりオブジェクトがフォーカスを取得している時(Hover状態)、アバターがオブジェクトの方に腕を上げるかどうか設定します
  • true:腕を上げる
  • false:腕を上げない
Hover Hand Pos Hover状態の時のアバターの手の形状(例:指差し、つかんでいる状態等)
  • None
  • Hold Marker
  • Hold Rocket
  • Pinch
  • Cylinder
  • Ball
  • Reach
  • Gun
  • Point
  • Thumb Up
  • Hold Controller
Hover Hand Pose Size Hover Hand Posの設定値が[Pinch]、[Cylinder] および [Ball]の時の手の開き具合などを調整。それ以外の形状では0.5固定 0~1

Hover Hand Pos

Hover Hand PosはオブジェクトがHover状態の時、アバターの手の形状を指定の形にすることができます。
この機能はPC版でのみ有効です。Meta Questの場合ハンドトラッキングやコントローラを使うため指が自由に動いてしまうため、
基本的には機能しません。

設定項目 概要 アバターの見た目
None 設定なしアバターのデフォルトの状態 -
Hold Marker ペンなどを持った時の指の形状 2024-12-12-03-44-55.png
Hold Rocket 打ち上げ花火(ふつうは持たない気がする)を持った時の指の形状 2024-12-12-03-45-17.png
Pinch ピンチ操作(拡大縮小)時の指の形状 2024-12-12-03-45-34.png
Cylinder 筒状のものを持った時の指の形状 2024-12-12-03-45-43.png
Ball 球状のものを持った時の指の形状 2024-12-12-03-46-00.png
Reach 指を伸ばして手に取る時の形状 2024-12-12-03-46-12.png
Gun 銃を持った時の指の形状 2024-12-12-03-46-35.png
Point 指差しの形状 2024-12-12-03-46-48.png
Thumb Up いわゆる「いいね」の形状 2024-12-12-03-47-03.png
Hold Controller 操作対象を持っている形状 2024-12-12-03-47-16.png

Hover Hand Posと同じ設定要素を持つものが他にもいくつかあります。例えばオブジェクトを装備するEquippableでは装備中の手の形状として[Hand Pose Shape]という設定項目を持っています。この設定項目も上記と同じ形状を設定することが出来ます。

一部の設定値は、指の開きなどを調整することができます。例えばBallの場合は以下のように設定が可能です。

0 0.5 1
2024-12-12-03-48-45.png 2024-12-12-03-47-52.png 2024-12-12-03-48-02.png

Highlight Settings

Highlight Settingsはオブジェクトの選択状態などに応じてハイライト表現を入れるための設定項目です。
主に以下のような項目が用意されています。Highlight Mechanismの設定に応じて多少項目が変わります。

2024-12-06-03-00-55.png

設定項目 概要 設定値
Hovered ユーザ操作によりオブジェクトがフォーカスを取得している時(Hover状態),HighLight設定をオブジェクトに反映する/しないを設定
  • true:ハイライト有効
  • false:ハイライト無効
Selected ユーザ操作によりオブジェクトを選択している時(Select状態),HighLight設定をオブジェクトに反映する/しないを設定
  • true:ハイライト有効
  • false:ハイライト無効
Highlight Mechanism オブジェクトに適用するHighLight設定
  • Sharder Properties
  • Mesh Outline
  • Inner Glow
Highlight Color HighLightに設定する色を設定 色を指定
Highlight Transition Duration Highlight Mechanismを適用するDuration時間を設定。長くするほどゆっくりとHighLight設定が反映されます。 数値で指定

Highlight Mechanism

オブジェクトをハイライト状態にする際にどういった効果のつけ方をするか設定します。

  • Sharder Properties
  • Mesh Outline
  • Inner Glow
Sharder Properties

Sharderのプロパティを変更したハイライト表現。
マテリアルのSharderプロパティを直接変更します。

※現状この機能は有効に機能していない可能性あり

2024-12-15-06-23-36.png

設定項目 概要 設定値
Highlight Amount Properties Float値で定義されたSharderプロパティの値を指定します。指定されたプロパティに対して-1~1の範囲で変化させます。 Sharderプロパティ名
Highlight Amount Properties Colorで定義されたSharderプロパティの値を指定します。指定されたプロパティに対して元のColor値をHighlight Color値に変更およびもとに戻す制御を行います。 Sharderプロパティ名
Mesh Outline

オブジェクトのアウトラインを強調するハイライト表現
フォーカスや選択時に、オブジェクトの周囲が広がるような表現が利用できます。

2024-12-15-06-34-32.png 2024-12-15-06-35-20.png
元の状態 ハイライト状態

2024-12-15-06-09-39.png|

設定項目 概要 設定値
Highlight Outline Width アウトラインの幅を設定します 任意設定
Custom Outline Material アウトラインに使用するマテリアルをカスタムする場合に設定。Meshでのこの機能はSharderプロパティのVertex Extrusionに関する情報を変化させています。このため該当のパラメータに関する設定が有効になっていないといけません。もしカスタマイズする場合はデフォルトのマテリアルをコピーして作るのが無難 任意設定
Highlight Outline Stencil Write アウトラインに使用するマテリアルをカスタムする場合に設定。この設定は上記のパラメータと合わせて利用します。このマテリアルはオブジェクト本体のマテリアル表現に影響します。Highlight Outline Materialで設定したマテリアルだけ使うとオブジェクト本体の見た目もアウトラインのマテリアルに置き換わってしまいます。これを防ぐためにこのプロパティで設定したマテリアルを使用します。Custom Outline Materialで作った表現をくりぬいて元のオブジェクトの見た目にしています。こちらの設定もしカスタマイズする場合はデフォルトのマテリアルをコピーして作るのが無難 任意設定
Outline Exclusion Mode このアウトライン表現を適用しないオブジェクトを設定する際のモード。
  • None:全てに適用
  • Tag:一致するタグは除外
  • Name Start With:指定文字列から始まるオブジェクト名は除外
  • Name Contains:指定文字列を含むオブジェクト名は除外
Inner Glow

スポットライトで照らしたような表現でオブジェクトのフォーカスや選択を表現します。パラメータは以下のようになっています。

2024-12-15-06-33-29.png 2024-12-15-06-33-54.png
元の状態 ハイライト状態

2024-12-15-06-03-59.png

設定項目 概要 設定値
Custom Highlight Material HighLight用に設定したいMaterial。設定は任意で設定しない場合は既定のマテリアルで処理が実施されます。 任意設定
Execusion String 除外文字列。ここに指定した文字列が含まれるGameObjectはハイライトの対象外になります。子要素等でハイライトを一部除外したい場合に利用します。 Cube等
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?