新しくなったMixed Reality Toolkit - Unityについて
-
Upload
takahiro-miyaura -
Category
Technology
-
view
342 -
download
0
Transcript of 新しくなったMixed Reality Toolkit - Unityについて
オブジェクト名 説明
MixedRealityCameraParent
新MRTKで追加されたWinMR用のカメラPrefab。MixedRealityCameraとMotionContoller、Boundary
を要素を持ちます。またモーションコントローラのテレポートやカメラの向きを変更するコンポーネント「MixedRealityTeleport」が含まれています。
MixedRealityCamera いわゆるカメラです。
MotionContollersアプリケーション内で表示するモーションコントローラのモデル定義を行うためのコンポーネント「MotionContollerVisualizer」があります。
BoundaryBoundaryはWinMRの境界表示用のコンポーネントです。
今日はこちらの話
モーションコントローラの見た目を変更する※変更が必要な時だけ設定すればよい
オブジェクト名 説明
Animate Controller Model モーションコントローラのモデルにアニメーションの有効/無効を設定します。
Left Controller Override左手のモーションコントローラのモデルを設定します。設定がない場合は標準のものが利用されます。
Right Controller Override右手のモーションコントローラのモデルを設定します。設定がない場合は標準んのものが利用されます。
Touchoad Touched Overrideタッチパッドをタッチ中にでるマーカーのモデルを設定します。標準は白い小さな円がパッド上に表示されます。
GLTF MaterialTouchoad Touched Overrideを使用しない場合、標準のタッチパッドが使用されます。このプロパティは標準マーカーのマテリアルを設定します。
例の部屋の移動を実現するコンポーネント
プロパティ名 設定内容 設定値
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 移動先の位置を示すポインターとなるモデルを指定します。
操作 概要 取得可能値
コントローラの情報 センサー検出範囲内のコントローラの情報を取得できます。•Position•Rotation
ポインターの情報センサー検出範囲内で動かしている限りその時点のコントーローラから正面(コントローラの輪の部分に対して垂直方向)へのポインタの情報を取得できます
•Position•Rotation
Selectボタン人差し指で操作するトリガー状のボタンです。トリガーのOn/OFFだけでなくOnの間は引き具合によって0~1の値を取得可能です。
•引く/離す•引き具合(0~1)
Graspedボタン コントローラの握るところについているボタンです。 •押す/離す
Menuボタン 親指スティックとパッドの間にあるボタンです。 •押す/離す
親指スティック親指で操作するスティックです。スティックを押すことでボタンとしても機能します。また、基本的にはテレポートやカメラのローテーションに使いますが、無効化しスティックの入力値をアプリとして利用することも可能です。
•引く/離す•XY軸(-1~1)
パッド親指スティック横の平らなボタンです。これもスティック同様押すことでボタンとして機能します。また、タッチパッドとしての値も取得可能です。
•押す/離す•触れている•XY軸(-1~1)
Windowsボタン言わずともわかるWindowsボタンです。これについてはWindowsメニューが出るので検出はできないです。
-
モーションコントローラの入力ソースを取得入力ソースについてはInteractionManagerクラスにある以下のイベントを利用
イベント名 説明
InteractionSourceDetected 入力系のソースが検出されたら発生する
InteractionSourceUpdated入力系のソースの状態が更新されたら発生する⇒値はここで採取する。
InteractionSourceLost 入力系のソースが消失(センサー検知外等)したら発生する
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);
}}
//グリップ上にあるボタンが押されているか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;