なんか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に追加されるっぽい
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
※コメントは承認後に表示されます。
コメントを公開されたくない場合、名前の後に「:非公開」とつけてください。