彈性系統 - MRTK2

Elastic System

MRTK 隨附彈性模擬系統,其中包含各種可延伸且彈性的子類別,提供 4 維四元數彈簧、3 維磁片區彈簧和簡單的線性彈簧系統的系結。

目前支援 彈性管理員 的下列 MRTK 元件可以利用彈性功能:

Elastics 管理員

Elastic System2

彈性管理員會處理傳遞的轉換,並將其饋送至彈性系統。

您可以透過兩個步驟來啟用自訂群組件的彈性:

  1. 在操作啟動時呼叫 Initialize 方法,以目前的主機轉換更新系統。
  2. 每當應在更新的目標轉換上執行彈性計算時,查詢 ApplyHostTransform。

請注意,一旦操作結束 (彈性管理員更新迴圈) ,彈性就會繼續模擬。 若要封鎖行為,彈性自動更新 EnableElasticsUpdate 可以設定為 false。

根據預設,當新增至遊戲物件時,彈性管理員元件不會針對任何轉換類型啟用彈性。 特定轉換類型必須啟用欄位 Manipulation types using elastic feedback ,才能為選取的類型建立彈性組態和範圍。

彈性設定

界限控制群組態類似,彈性管理員隨附一組可儲存為可編寫腳本物件的組態物件,並在不同的實例或預製專案之間共用。 設定可以共用並連結為個別可編寫腳本的資產檔案,或預製專案內的巢狀可編寫腳本資產。 進一步的組態也可以直接在實例上定義,而不連結至外部或巢狀可編寫腳本的資產。

彈性管理員偵測器會藉由在屬性偵測器中顯示訊息,指出設定是共用或內嵌為目前實例的一部分。 此外,共用實例將無法直接在彈性管理員屬性視窗中編輯,而是直接修改其連結的資產,以避免共用組態發生意外變更。

Elastics Manager 提供下列轉換類型的組態物件選項,每個類型都由 彈性組態物件表示:

  • 翻譯彈性
  • 旋轉彈性
  • 調整彈性

彈性設定物件

彈性組態會定義受抑制的調音器差異系統的屬性。 您可以調整下列屬性,但已隨附 MRTK 中的一組預設值:

  • 品質:模擬的模數元素品質。
  • HandK:手彈簧常數。
  • EndK:結束端點彈簧常數。
  • SnapK:貼齊點彈簧常數。
  • 拖曳:拖曳/降低因數,與速度成正比。

彈性範圍

彈性範圍設定會根據操作類型而有所不同。 轉譯和縮放以磁片區 彈性範圍表示, 而旋轉則以 四元數彈性範圍表示。

磁片區彈性範圍

磁片區範圍會定義一個三維空間,其中受抑制的調音器可以自由移動。

Elastic Volume Stretch Bounds

  • StretchBounds:代表彈性空間的下限。
  • UseBounds:系統是否應遵守延展界限。 如果為 true,當目標位置的目前反復專案超出延展範圍時,將會套用結束強制。
  • SnapPoints:系統將貼齊的空間內點。
  • RepeatSnapPoints:將貼齊點重複為無限大。 現有的貼齊點會做為模數,其中實際貼齊點會對應到每個貼齊點最接近的整數倍數。
  • SnapRadius:貼齊點開始強制彈簧的距離。

Elastic Volume Snap Grid

四元數彈性範圍

四元數範圍會定義四維旋轉空間,其中可自由旋轉受阻的調音器。

Elastic Rotation Example

  • SnapPoints:系統將貼齊的 euler 角度。
  • RepeatSnapPoints:重複貼齊點。 現有的貼齊點會做為模數,其中實際貼齊點會對應到每個貼齊點最接近的整數倍數。
  • SnapRadius:貼齊點開始以 euler 度強制彈簧的弧形角度。

彈性範例場景

您可以在場景中找到彈性設定 ElasticSystemExample 的範例。

Elastics Example Scene