輸入動畫錄製 — MRTK2

MRTK 具有錄製系統,讓頭部移動和手部追蹤資料可以儲存在動畫檔案中。 接著,可以使用 輸入模擬系統來播放錄製的資料。

錄製輸入是各種情況的公用程式:

  • 建立互動、操作、解算器等自動化測試。為這些測試建立控制器和手部的移動可能相當耗時。 直接錄製輸入可以加速程式並提供真實世界的資料。
  • 透過動畫教導 UX 元素的使用方式。 向使用者示範如何與按鈕和其他物件互動,可以平滑學習曲線。
  • 對一般使用期間可能會遇到的非預期行為進行偵錯。 錄製系統支援「滾動緩衝區」概念,允許在背景錄製最近的輸入。 請參閱 輸入錄製服務

錄製和播放服務

會分別提供兩個輸入系統服務來記錄和播放輸入。

輸入錄製服務

InputRecordingService 從主要相機轉換和主動式手部控制器取得資料,並將其儲存在內部緩衝區中。 當要求時,此資料會序列化為二進位檔案以供儲存及稍後重新執行。

圖表

開始錄製輸入呼叫 函式 StartRecordingStopRecording 會暫停錄製 (,但不會捨棄到目前為止記錄的資料, DiscardRecordedInput 請視需要) 使用此動作。

根據預設,錄製緩衝區的大小限制為 30 秒。 這可讓錄製服務在背景中持續錄製,而不會累積太多資料,然後在需要時儲存過去 30 秒。 您可以使用 屬性來變更 RecordingBufferTimeLimit 時間間隔,或使用 選項可以無限制 UseBufferTimeLimit 錄製。

錄製緩衝區中的資料可以使用 SaveInputAnimation 函式儲存在二進位檔中。

如需二進位檔案格式的詳細資訊,請參閱 輸入動畫檔案格式規格

輸入播放服務

InputPlaybackService 讀取具有輸入動畫資料的二進位檔案,然後透過 InputSimulationService 套用此資料,以重新建立錄製的移動。

回圖

若要開始播放輸入動畫,應該使用 LoadInputAnimation 函式從檔案載入。

呼叫 PlayPauseStop 來控制動畫播放。

目前的動畫時間也可以使用 LocalTime 屬性直接控制。

警告

藉由清除時間軸,迴圈或重設輸入動畫或直接設定 LocalTime ,可能會在操作場景時產生非預期的結果! 只會記錄輸入移動,不會重設任何額外的變更,例如移動物件或翻轉開關。 如果已進行無法復原的變更,請務必重載場景。

用於錄製和播放輸入動畫的編輯器工具

Unity 編輯器中有數個用來錄製和檢查輸入動畫的工具。 這些工具可以在輸入模擬工具視窗中存取,您可以從Mixed Reality [工具組 > 公用程式 > 輸入模擬] 功能表開啟。

注意

輸入錄製和播放只能在播放模式期間運作。

輸入錄製視窗有兩種模式:

  • 錄製 以在播放模式期間錄製輸入,並將它儲存至動畫檔案。

    在錄製按鈕上切換時, InputRecordingService 會啟用 來錄製輸入。 切換錄製按鈕時,會顯示檔案儲存選取範圍,並將錄製的輸入動畫儲存到選取的目的地。

    緩衝時間限制也可以在此模式中變更。

  • 播放 以載入動畫檔案,然後透過輸入模擬系統重新建立輸入。

    必須先在此模式中載入動畫。 在錄製模式中錄製輸入之後,會自動載入產生的動畫。 或者,按一下 [載入] 按鈕以選取現有的動畫檔案。

    時間控制按鈕從左至右為:

    • 播放時間重設為動畫的開頭。
    • 隨著時間持續播放動畫。
    • 前一個步驟。

    滑杆也可以用來清除動畫時程表。

警告

迴圈或重設輸入動畫或清除時程表可能會在操作場景時產生非預期的結果! 只會記錄輸入移動,不會重設任何額外的變更,例如移動物件或翻轉開關。 如果已進行無法復原的變更,請務必重載場景。