輸入動畫錄製 — MRTK2

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

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

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

錄製和播放服務

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

輸入錄製服務

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

Recording diagram

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

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

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

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

輸入播放服務

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

Play Back diagram

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

呼叫 PlayPauseStop 來控制動畫播放。

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

警告

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

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

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

注意

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

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

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

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

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

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

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

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

    • 播放時間重設為動畫的開頭。
    • 持續播放一段時間的動畫。
    • 向前逐步執行 一次。

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

警告

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