VRTK的使用說明書
引用:https://vrtoolkit.readme.io/docs/summary
資源地址:
https://github.com/thestonefox/VRTK
1.概述
VRTK是一套VR的交互方案,它涵蓋了許多常見的解決方案,例如:虛擬空間內的運動。觸摸,抓取和使用對象等交互,通過指針或觸摸與Unity3d UI元素交互。虛擬空間中的身體物理學。*2D和3D控制,如按鈕,杠桿,門,抽屜等
2.入門
入門:關聯你的VRSDK,
2.1將Assets/VRTK文件夾導入Unity項目。
2.2將VRTK_SDKManager腳本添加到場景中的GameObject。
2.3SDK Manager處理設置所有內容以通過VRTK_SDKSetups 使用各種支持的SDK 。要使用VR SDK,需要執行以下步驟:
2.4下載SDK並將其導入項目。
2.5創建一個新的空游戲對象。
2.6添加VRTK_SDKSetup到它。
2.7添加VR SDK的游戲對象(例如Camera Rig)作為孩子。
2.8在SDK Setup上設置SDK Selection相應的VR SDK。
2.9確保所有Object References設置都正確Auto Populate或手動設置。
2.10在SDK Manager下Setups添加新插槽並選擇該插槽的SDK設置。
3. VR模擬器VRSimulator----機器上的調試
如果你沒有設備或者只是想在電腦上做些簡單的調試功能,可以使用VR模擬器。
3.1使用VR模擬器的說明
通過添加作為SDK Setup游戲對象的子項的VRSimulatorCameraRig預制件,按照上面的初始
3.2操作步驟:
使用左Alt鍵在鼠標外觀和移動手之間切換。
按Tab鍵在左手/右手之間切換。
按住左移可以從手的平移變為旋轉。
按住左Ctrl鍵可在X / Y和X / Z軸之間切換。
SDK_InputSimulator預制件上可以找到其他按鈕映射。
可以使用預制件上的檢查器重新映射所有按鈕映射。
4.目前的例子
001_CameraRig_VRPlayArea
顯示[CameraRig]預制件使用情況的簡單場景。
002_Controller_Events
一個簡單的場景,在控制台窗口中顯示來自控制器的事件。
003_Controller_SimplePointer
一個具有基本對象的場景,可以通過按下來激活來自控制器的激光束Touchpad。指針事件也顯示在控制台窗口中。
004_CameraRig_BasicTeleport
具有基本對象的場景,其可以使用控制器激光束遍歷以指向游戲世界中的對象,其中用戶將通過按壓Touchpad控制器來傳送到該對象。當Touchpad釋放時,用戶被傳送到激光束終點位置。
005_Controller_BasicObjectGrabbing
一個具有選擇對象的場景,可以通過用控制器觸摸它們並按下Grip按鈕來抓取它們。釋放抓握按鈕將使物體沿抓取控制器的方向和速度推進。場景還演示了控制器觸摸它們時對象的簡單突出顯示。交互事件也顯示在控制台窗口中。
006_Controller_UsingADoor
具有門可交互對象的場景設置為usable當按下控制器Trigger按鈕使用門時,門打開(或者如果門已經打開則關閉)。
007_CameraRig_HeightAdjustTeleport
與選擇不同高度的對象,可以使用控制器的激光束在一個對象指向和如果激光束在物體的頂部指向則向用戶被傳到對象的頂部被遍歷場景。此外,它表明如果用戶踏入不在對象上的游戲區域的一部分,則用戶將落到最近的對象。這也使得用戶能夠僅通過站立在物體上來攀爬物體,因為從耳機的位置進行地板檢測。
008_Controller_UsingAGrabbedObject
具有可交互對象的場景,可以抓取(按下Grip控制器按鈕)然后使用(按下Trigger控制器按鈕)。桌子上有一把槍可以被拿起來射擊,或者是一個奇怪的盒子,當拿起並使用頂部旋轉時。
009_Controller_BezierPointer
然而,具有可以使用控制器遍歷的不同高度對象的選擇的場景,而不是僅僅指向直梁,該梁是彎曲的(在貝塞爾曲線上),其允許在用戶不能看見的物品上攀爬。
010_CameraRig_TerrainTeleporting
具有地形對象的場景和可以使用控制器激光束指針遍歷的不同高度的3d對象的選擇。它顯示了高度調整傳送器如何用於爬升和減少游戲物體以及穿越地形。
011_Camera_HeadSetCollisionFading
在游戲區域周圍有三面牆的場景,如果用戶將頭部放入任何可碰撞的牆壁中,則耳機會漸變為黑色,以防止看到不需要的物體剪裁偽影。
012_Controller_PointerWithAreaCollision
演示如何使用控制器指針遍歷世界但是光束顯示投影的游戲區域空間以及空間是否與任何對象發生碰撞的場景,則禁用遠程傳送操作。這意味着可以創建一個用戶無法傳送到的區域的級別,因為它們允許用戶剪輯到對象中。
013_Controller_UsingAndGrabbingMultipleObjects
一個場景,通過連續按住抓取按鈕或按下抓取按鈕一次拾取並再次釋放來演示如何抓取可交互對象。場景還顯示使用按鈕可以按住以繼續使用或按下使用按鈕一次開始使用,再按一次停止使用。這允許多個對象同時進入其使用狀態,如此示例場景中所示。
014_Controller_SnappingObjectsOnGrab
具有選定對象的場景,演示對控制器機制的不同捕捉。兩把綠色槍,輕劍和劍使用一個Snap Handle,它使用一個空的游戲對象作為可交互對象的子項作為抓取的方向點,因此對象的旋轉和位置與給定的旋轉和位置相匹配Snap Handle。紅色槍使用基本捕捉,不需要精確度,也沒有提供不影響物體旋轉但是將物體中心定位到控制器上的捕捉點的捕捉手柄。紅色/綠色槍利用Precision Snap不影響抓取物體的旋轉或位置的物體,並在控制器捕捉點接觸物體的位置拾取物體。
015_Controller_TouchpadAxisControl
使用控制器觸控板控制的R / C汽車場景。在觸摸板上上下移動手指將導致汽車向前或向后行駛。將手指移動到左側或右側Touchpad會導致汽車朝那個方向轉動。按下Trigger將導致汽車跳躍,這利用觸發軸,按下觸發器越多,汽車將跳越高。
016_Controller_HapticRumble
一個帶有易碎盒子和劍的場景。劍可以被拾起並在盒子里擺動。控制器在適當的振動下隆隆聲,取決於劍擊中盒子的力度。如果被劍擊得足夠硬,盒子也會分開。
017_CameraRig_TouchpadWalking
一個場景,通過向前和向后滑動手指向該方向移動,演示如何使用觸摸板在游戲世界中移動。在觸摸板上左右滑動手指朝向該方向。旋轉是通過游戲中的用戶在場所空間中物理地旋轉他們的身體來完成的,並且無論耳機看起來哪種方式都是用戶向前走的方式。蹲伏也是可能的,如在這個場景中所證明的,並且結合耳機碰撞褪色腳本,它可以檢測到不想要的碰撞(例如,如果用戶在蹲伏時行走時站立)並將其位置重置到最后的已知位置。
018_CameraRig_FramesPerSecondCounter
在耳機視圖中心顯示每秒幀數的場景。按下觸發器會生成一個新球體,按下觸摸板會生成十個新球體。最終當存在大量球體時,FPS將下降並展示預制件。
019_Controller_InteractingWithPointer
一個場景,顯示控制器指針梁如何用於切換可交互對象上的使用操作。按觸摸板激活光束並將其瞄准對象將切換其使用狀態。它還演示了如何通過使用捕捉到游戲對象的可交互對象來創建游戲菜單可以觸發操作。按應用菜單按鈕顯示連接到控制器的立方體,該控制器具有菜單選項。將光束指向立方體上的另一個控制器將相應地選擇菜單選項。
020_CameraRig_MeshTeleporting
具有網格對撞機的對象的場景,用於演示高度調整傳送器如何用於使用網格對撞機上下爬升物體。
021_Controller_GrabbingObjectsWithJoints
具有可伸縮對象集合的場景,該對象附加到具有關節的其他對象。該示例顯示Interactable Objects可以具有不同的附加機制,以確定將對象連接到控制器的最佳方式。固定接頭適用於保持像立方體這樣的物體,因為它們完美地跟蹤控制器,而彈簧接頭在抽屜上工作良好,在操作時可以使其自然滑動。最后,旋轉軌道在門上運行良好,可以自然控制門的擺動。還有一個角色關節對象,可以通過拉動每個相關部分來操縱不同的形狀。
022_Controller_CustomBezierPointer
一個場景,演示了Bezier指針如何將復雜的對象傳遞給它以生成跟蹤器光束和指針的光標。在場景中,具有旋轉的粒子對象用於演示貝塞爾指針梁的不同外觀。
023_Controller_ChildOfControllerOnGrab
一個場景,演示抓取機制,抓取的對象成為控制器抓取的孩子。這適用於需要絕對跟蹤控制器的對象,並且在任何情況下都不希望脫節。該對象成為控制器的擴展。現場用弓箭示例演示了這一點,其中弓可以被拾取並跟蹤到控制器,而另一個控制器負責拾取箭頭以在弓中射擊。
024_CameraRig_ExcludeTeleportLocation
一個場景,通過將命名標記應用於對象或應用特定名稱的腳本,顯示如何通過遠程移植來排除某些對象。在場景中,通過在其上ExcludeTeleport設置標記來從傳送位置中排除黃色對象,並且通過將ExcludeTeleport附加到其上的腳本排除黑色對象。該ExcludeTeleport腳本沒有方法,只是用作占位符。
025_Controls_Overview
一個場景,展示現有的交互式控件,不同的設置方式以及如何對它們發送的事件做出反應。
026_Controller_ForceHoldObject
一個場景,顯示如何在游戲開始時抓取對象並防止用戶丟棄該對象。場景自動抓住兩把劍到每個控制器,並且不可能掉落任何一把劍。
027_CameraRig_TeleportByModelVillage
演示如何在不需要世界指針的情況下傳送到不同位置並在表示游戲世界的迷你地圖的對象上使用目標事件抽象類的場景。觸摸並使用地圖上的對象將用戶傳送到指定位置。
028_CameraRig_RoomExtender
一個場景,通過乘以伴侶邊界中的物理步驟來演示擴展物理室空間比例空間的概念。較高的乘數意味着用戶可以在游戲區域中進一步行走,並且可以通過按下按鈕來切換步行乘數。
029_Controller_Tooltips
演示使用預制件ObjectTooltip和預制件向游戲對象和控制器添加工具提示的場景ControllerTooltips。
030_Controls_RadialTouchpadMenu
演示使用預制件向控制器和其他對象添加動態徑向菜單的場景RadialMenu。
031_CameraRig_HeadsetGazePointer
一個場景,演示了將指針連接到耳機的能力,以允許用於遠程傳輸的凝視指針或由世界指針支持的其他交互。的Touchpad右控制器激活所述凝視光束,而Touchpad左控制器上激活從天空為世界指針無人駕駛飛機投射的光束可以附着到任何對象。
032_Controller_CustomControllerModel
演示如何使用控制器的自定義模型而不是默認HTC Vive控制器的場景。它使用兩個簡單的指針代替默認控制器,並根據是否按下了抓取按鈕或使用按鈕顯示簡單的狀態更改。
033_CameraRig_TeleportingInNavMesh
一個場景,演示如何使用烘焙的NavMesh來定義允許用戶傳送到的區域。
034_Controls_InteractingWithUnityUI
演示如何與Unity UI元素交互的場景。場景使用VRTK_UIPointer右側控制器上的腳本,允許使用簡單指針光束與Unity UI元素進行交互。左側控制器控制耳機上的簡單指針,以演示與Unity UI元素的凝視交互。
035_Controller_OpacityAndHighlighting
演示如何更改控制器的不透明度以及如何突出顯示控制器元素(如按鈕甚至整個控制器模型)的場景。
036_Controller_CustomCompoundPointer
一個場景,演示Bezier指針如何僅在傳送位置有效時才能顯示對象(傳送光束),並且可以沿着跟蹤曲線創建動畫軌跡。這個場景提供了一個紋理環境,用於測試傳送,牆上的一些活躍的“等離子”球體可以用指針激活,另一個球體也可以被抓取和發射。
037_CameraRig_ClimbingFalling
一個演示如何設置具有不同活動的攀爬機制的場景。具有VRTK_InteractableObject組件的各種對象分散在整個級別中。它們都具有GrabAttachMechanic設置為Climbable。
038_CameraRig_CameraRig_DashTeleport
一個場景,顯示傳送行為,並演示了使用廣播的RaycastHit數組的方法。在示例中,破折號方式中的障礙物在破折號正在進行時關閉其網格渲染器。
039_CameraRig_AdaptiveQuality
僅與Unity 5.4及更高版本兼容
場景在耳機視圖的中心顯示每秒的幀數。此腳本的調試可視化顯示在耳機視圖的頂部邊緣附近。按下觸發器會生成一個新球體,按下觸摸板會生成十個新球體。最終當存在大量球體時,FPS將丟棄並演示腳本。
040_Controls_PanelMenu
演示如何將可交互的面板預制件附加到游戲對象以提供其他設置的場景。
041_Controller_ObjectSnappingToDropZones
使用VRTK_SnapDropZone預制件為一系列對象設置預定捕捉區域的場景,並演示如何僅將某些類型的對象捕捉到某些區域。
042_CameraRig_MoveInPlace
一個場景,演示用戶如何通過以步行方式擺動控制器或通過利用頭部擺動運動的現場跑步來移動和穿越碰撞器。
043_Controller_SecondaryControllerActions
一個場景,演示了使用一個控制器抓取對象的能力,並通過抓取和拉動第二個控制器來縮放它。
044_CameraRig_RestrictedTeleportZones
使用VRTK_DestinationPoint預制件設置預定義傳送位置集合的場景。
5.UI交互說明:
1.UI需要添加VRTK_UI canvas
- 手柄處需要添加 VRTK_ControllerEvent,VRTK_Straight Pointer,VRTK_UI Point,VRTK_Point
- 支持Unity原生的Ugui和常用的EventTrigger,也可以使用物體交互模式。
Demo:查看:034
6.物體交互