VRTK、MRTKについて

なんかgoogleで結構トップに表示されてしまってるみたいで本当に申し訳ない!!
この記事は走り書きのメモなので他のサイトを参考にした方が絶対にいいです。

とりあえずいったんメモ。

今ある不安を取り除くには
「やったことない」から「やったことある」に変えていく作業が必用。
これはこれで大事なんだけど、ちゃんと理解していないと意味がない。

焦りすぎてアウトプットばかりしてインプットおろそかにしてたので
ちゃんと調べてみた。

参考サイト
http://negi-lab.blog.jp/archives/vrtk_controllerevents.html

 

************************************************************************

************************************************************************

VRTKについてのまとめ

参考サイト http://negi-lab.blog.jp/VRTK_3_2_1_Setup

 

◆設定

アセットストアから
VRTKとSteamVRを入れる

 

VRTK_SDKというなまえの空のオブジェクトを作る

 

VRTK_SDKの子供に(階層は実際どこでもいいみたい)
SteamVR_SDKという名前の空のオブジェクトを作り
[CameraRig] プレファブと
[SteamVR]  プレファブをぶら下げる

 

SteamVR_SDK
VRTK_SDK Setup をアタッチする
VRTK_SDK_SetupのquickselectでSteamVR を選択する。

 

VRTK_SDKにVRTK_SDKManagerアタッチ
※VRTK関連のイベントを拾うのに必要なコンポーネント

 

VRTK_SDKManagerのsetupにSteamVR_SDK を指定(AoutPopilateボタンでも可)

 

◆コントローラー側の設定

VRTK_SDKの子供に(階層はどこでも)
空のオブジェクトを2つ作り、名前を以下にする
LeftController
RightController

 

VRTK_SDKのVRTK_SDKManager内Script Aliasesに
LeftController
RightController
を指定する。
このコントローラーオブジェクトには
RigidbodyをつけてUse GravityとIs Kinematicを有効にしておく(なくても掴める

VRTK_ControllerEvents
VRTK_InteractGrab
VRTK_InteractTouch
をアタッチする

VRTK_InteractGrabの項目にVRTK_ControllerEventsとVRTK_InteractTouchを指定する

 

VRTK_InteractGrabのGrabButtonで掴むボタンを設定(winMRだとボタンの配置が違う?)
GripPress:中指のボタン(初期値)
Touchpad:タッチパッド
TriggerPres:人差し指

 

最後にSteamVR_SDKのAutoPoulateのチェックを外して付け直すと自動的に色々セットされる

◆つかまれる側のオブジェクトの設定

VRTK_InteractableObject
をアタッチし Is Grabbable を有効にしておくだけ。

 

*************************************************************

 

これでとりあえずオブジェクトを掴めるようになったので

前回やった「XR Mecanim IK Plus」を使って、3Dキャラでモノを掴むを実装しようとした。

手の位置の設定とか、カメラの位置とかはなんとか分かったけど何故かオブジェクトが掴めない

設定ミスとか親子の階層とか色々試してみたけどダメ。

ドツボにハマってしまったので逆にVRTK使える状態でXR Mecanim IK Plusを設定してみたら

ProjectSettingsにファイルを上書きしてることがダメだったみたい。これで動かなくなる。

 

というわけで

XR Mecanim IK PlusとVRTKの組み合わせは諦めた。

Final IK買います。

**************************************************************

◆MRTK

 

2018/07 時点
MRTKの安定版?

2017.2.1(Unity2017.2対応)

WindowsSDK10.0.16299が必要

 

2017.4.0.0(Unity 2017.xに対応)
Windows SDK 10.0.17134が必要

WinMR と Hololens両方対応している

 

SDKのバージョンが分からなかったので確認する。
(Windows10 Fall Creators updateが当たってれば入ってるっぽい)

VisualStudioInstallerを起動
詳細>変更

個別のコンポーネント

開くと最初からチェックが入っていた。
ので入ってると思うけど念のため変更ボタンおして更新しておく。

MRTKをDLする
https://github.com/Microsoft/MixedRealityToolkit-Unity
zipでDLしたらunityにフォルダごとぶち込むタイプ

ここから必要パッケージだけDLが可能
https://github.com/Microsoft/MixedRealityToolkit-Unity/releases/tag/v1.Dev.2017.2.1

 

 

 

プラットフォームを必ずUWPにしておく。

モノを掴むサンプル

MotionControllers-GrabMechanics
https://github.com/Microsoft/MixedRealityToolkit-Unity/tree/master/Assets/HoloToolkit-Examples/MotionControllers-GrabMechanics

 

 

MixedRealityToolkit>Configure>ApplyMixedRealitySceneSettings
を選択すると
デフォルトカメラが削除され最低限必要な
InputManagerやMixedRealityCameraParentなどの
オブジェクトがHierarchyに追加されるっぽい

https://medium.com/@dongyoonpark/mixed-reality-toolkit-mrtk-%E3%81%AE%E6%9C%89%E7%94%A8%E3%81%AA%E3%83%93%E3%83%AB%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF-4eb343d474cb

 

 


Managersプレハブ MRTKをつかうためのもの

空のオブジェクトを作成して名前を分かりやすくMRTKとする
InputManagerプレハブをMRTKの子供にする

MixedRealityCameraParentプレハブを追加
WinMR用カメラ(コントローラー・テレポート・床付)

まずはこれだけで
コントローラーが表示され、テレポートなどが可能になる。

 

MotionContollers
コントローラーの見た目を変更する場合は
MixedRealityCameraParent
MotionContollersについている
MotionContollersVisualizer.csから
AlternateLeft(Right)Controllerに指定してあげればOK

 

掴む側(コントローラーとか手とか):
Grabber.csスクリプトをアタッチ
サンプルシーンではキューブ状のコントローラーについていた

 

掴みたいオブジェクトに
Rigidbodyを追加

 

よく使うもの
掴む:GrabbableSimple.cs or GrabbableChild.cs?
サイズ変更:ScalableObject.cs
投げる:Throwable.cs
当たり判定用カラー変更:GrabbableColor


 

で、これでオブジェクトを掴めるはずなんだけどつかめない

当たり判定のカラーも反応しない。謎。

 

 

 

 

Boundary:WinMRの境界表示用

https://qiita.com/miyaura/items/7cd0f14b9b4baa20682f

 

 

参考サイト
https://qiita.com/miyaura/items/12d00950fb42eb36ada5

v1.2017.2.0を使用する

MixedRealityCameraParent:WinMR用のカメラprefab

MixedRealityCamera:ただのカメラ

MotionContollers:画面上に表示するコントロラー

Boundary:境界表示用

Managers:VRTK_SDKManagerのMR版?
InputManagerやEventSystem等MRTKでイベントを拾うのに必要なコンポーネントが含まれる。
空のオブジェクトにつけてMRTKという名前にしておく

コントローラーにアタッチするもの
MixedRealityTeleport:テレポートで使用する。
MotionContollerVisualizer:コントローラのモデル定義を行う
たぶん3Dモデルの手に配置する場合はこれ↑

MRTKを親にして
その子供として3Dモデルを配置
モデルの左手の子供にLeftCtrlr、右手の子供にRightCtrlrをセットすることでたぶん動く
MixedRealityCameraParentも同様に頭に配置?→VRTKではそれで行けた。
もしかしたら空のオブジェクトからLeftCtrlrとか作らなくても
手に直接アタッチしたらいけるのでは?

拡張についての参考サイト
https://qiita.com/miyaura/items/691c9661085784878d09

 

関連記事




コメントを残す

※コメントは承認後に表示されます。
 コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。