新しくなったMixed Reality Toolkit - Unityについて

19

Transcript of 新しくなったMixed Reality Toolkit - Unityについて

Page 1: 新しくなったMixed Reality Toolkit - Unityについて
Page 2: 新しくなったMixed Reality Toolkit - Unityについて
Page 3: 新しくなったMixed Reality Toolkit - Unityについて
Page 4: 新しくなったMixed Reality Toolkit - Unityについて
Page 5: 新しくなったMixed Reality Toolkit - Unityについて
Page 6: 新しくなったMixed Reality Toolkit - Unityについて
Page 7: 新しくなったMixed Reality Toolkit - Unityについて
Page 8: 新しくなったMixed Reality Toolkit - Unityについて
Page 9: 新しくなったMixed Reality Toolkit - Unityについて
Page 10: 新しくなったMixed Reality Toolkit - Unityについて

オブジェクト名 説明

MixedRealityCameraParent

新MRTKで追加されたWinMR用のカメラPrefab。MixedRealityCameraとMotionContoller、Boundary

を要素を持ちます。またモーションコントローラのテレポートやカメラの向きを変更するコンポーネント「MixedRealityTeleport」が含まれています。

MixedRealityCamera いわゆるカメラです。

MotionContollersアプリケーション内で表示するモーションコントローラのモデル定義を行うためのコンポーネント「MotionContollerVisualizer」があります。

BoundaryBoundaryはWinMRの境界表示用のコンポーネントです。

Page 11: 新しくなったMixed Reality Toolkit - Unityについて

今日はこちらの話

Page 12: 新しくなったMixed Reality Toolkit - Unityについて
Page 13: 新しくなったMixed Reality Toolkit - Unityについて

モーションコントローラの見た目を変更する※変更が必要な時だけ設定すればよい

オブジェクト名 説明

Animate Controller Model モーションコントローラのモデルにアニメーションの有効/無効を設定します。

Left Controller Override左手のモーションコントローラのモデルを設定します。設定がない場合は標準のものが利用されます。

Right Controller Override右手のモーションコントローラのモデルを設定します。設定がない場合は標準んのものが利用されます。

Touchoad Touched Overrideタッチパッドをタッチ中にでるマーカーのモデルを設定します。標準は白い小さな円がパッド上に表示されます。

GLTF MaterialTouchoad Touched Overrideを使用しない場合、標準のタッチパッドが使用されます。このプロパティは標準マーカーのマテリアルを設定します。

Page 14: 新しくなったMixed Reality Toolkit - Unityについて

例の部屋の移動を実現するコンポーネント

プロパティ名 設定内容 設定値

Left Thumbstice Xプレーヤでのデバッグ時にモーションコントローラの左親指スティックのエミュレートを行うAxisの名前を設定する。デフォルト値は現在のMRTKでは未設定です。

Left Thumbstice Y

Right Thumbstice X

Right Thumbstice Y

Enable Teleport 親指スティックの操作によるテレポートの有効/無効を設定します。 •True/False

Enable Rotation 親指スティックの操作によるカメラ回転の有効/無効を設定します。 •True/False

Enable Strafe 親指スティックの操作によるバック操作の有効/無効を設定します。 •True/False

Rotation Size テレポートで一度の操作で回転する角度を設定します。 45

Strafe Amount テレポートで一度にバックする移動量を設定します。 0.5

Teleport Marker 移動先の位置を示すポインターとなるモデルを指定します。

Page 15: 新しくなったMixed Reality Toolkit - Unityについて

操作 概要 取得可能値

コントローラの情報 センサー検出範囲内のコントローラの情報を取得できます。•Position•Rotation

ポインターの情報センサー検出範囲内で動かしている限りその時点のコントーローラから正面(コントローラの輪の部分に対して垂直方向)へのポインタの情報を取得できます

•Position•Rotation

Selectボタン人差し指で操作するトリガー状のボタンです。トリガーのOn/OFFだけでなくOnの間は引き具合によって0~1の値を取得可能です。

•引く/離す•引き具合(0~1)

Graspedボタン コントローラの握るところについているボタンです。 •押す/離す

Menuボタン 親指スティックとパッドの間にあるボタンです。 •押す/離す

親指スティック親指で操作するスティックです。スティックを押すことでボタンとしても機能します。また、基本的にはテレポートやカメラのローテーションに使いますが、無効化しスティックの入力値をアプリとして利用することも可能です。

•引く/離す•XY軸(-1~1)

パッド親指スティック横の平らなボタンです。これもスティック同様押すことでボタンとして機能します。また、タッチパッドとしての値も取得可能です。

•押す/離す•触れている•XY軸(-1~1)

Windowsボタン言わずともわかるWindowsボタンです。これについてはWindowsメニューが出るので検出はできないです。

-

Page 16: 新しくなったMixed Reality Toolkit - Unityについて

モーションコントローラの入力ソースを取得入力ソースについてはInteractionManagerクラスにある以下のイベントを利用

イベント名 説明

InteractionSourceDetected 入力系のソースが検出されたら発生する

InteractionSourceUpdated入力系のソースの状態が更新されたら発生する⇒値はここで採取する。

InteractionSourceLost 入力系のソースが消失(センサー検知外等)したら発生する

Page 17: 新しくなったMixed Reality Toolkit - Unityについて

private void InteractionManager_InteractionSourceUpdated(InteractionSourceUpdatedEventArgs obj){

var state = obj.state;if (state.source.kind == InteractionSourceKind.Controller){

Vector3 PointerPosition;Quaternion PointerRotation;Vector3 GripPosition;Quaternion GripRotation;//コントローラのポインタの情報を取得state.sourcePose.TryGetPosition(out PointerPosition, InteractionSourceNode.Pointer);state.sourcePose.TryGetRotation(out PointerRotation, InteractionSourceNode.Pointer);//コントローラ本体の情報を取得state.sourcePose.TryGetPosition(out GripPosition, InteractionSourceNode.Grip);state.sourcePose.TryGetRotation(out GripRotation, InteractionSourceNode.Grip);

}}

Page 18: 新しくなったMixed Reality Toolkit - Unityについて

//グリップ上にあるボタンが押されているかbool Grasped = state.grasped;//メニューボタンが押下されているかbool MenuPressed = state.menuPressed;//Selectボタン(トリガー状のボタン)が押下されているかbool SelectPressed = state.selectPressed;//Selectボタンがどの程度押されているか(0~1)float SelectPressedAmount = state.selectPressedAmount;//親指スティックが押されているかbool ThumbstickPressed = state.thumbstickPressed;//親指スティックのXY座標(-1~1)Vector3 ThumbstickPosition = state.thumbstickPosition;//タッチパッドが押されているかbool TouchpadPressed = state.touchpadPressed;//タッチパッドに触れているかbool TouchpadTouched = state.touchpadTouched;//タッチパッドのXY座標(-1~1)Vector3 TouchpadPosition = state.touchpadPosition;