彈性系統 - MRTK2
MRTK 隨附彈性模擬系統,其中包含各種可延伸且彈性的子類別,提供 4 維四元數彈簧、3 維磁片區彈簧和簡單的線性彈簧系統的系結。
目前支援 彈性管理員 的下列 MRTK 元件可以利用彈性功能:
Elastics 管理員
彈性管理員會處理傳遞的轉換,並將其饋送至彈性系統。
您可以透過兩個步驟來啟用自訂群組件的彈性:
- 在操作啟動時呼叫 Initialize 方法,以目前的主機轉換更新系統。
- 每當應在更新的目標轉換上執行彈性計算時,查詢 ApplyHostTransform。
請注意,一旦操作結束 (彈性管理員更新迴圈) ,彈性就會繼續模擬。 若要封鎖行為,彈性自動更新 EnableElasticsUpdate 可以設定為 false。
根據預設,將彈性管理員元件新增至遊戲物件時,不會針對任何轉換類型啟用彈性。
特定轉換類型必須啟用欄位 Manipulation types using elastic feedback
,才能為選取的類型建立彈性組態和範圍。
彈性設定
與 界限控制項設定類似,彈性管理員隨附一組可儲存為可編寫腳本物件的組態物件,並在不同的實例或預製專案之間共用。 設定可以共用並連結為個別可編寫腳本的資產檔案,或預製專案內的巢狀可編寫腳本資產。 進一步的組態也可以直接在實例上定義,而不連結至外部或巢狀可編寫腳本的資產。
彈性管理員偵測器會藉由在屬性偵測器中顯示訊息,指出設定是共用或內嵌為目前實例的一部分。 此外,共用實例將無法直接在彈性管理員屬性視窗中編輯,而是直接修改其連結的資產,以避免共用組態發生意外變更。
Elastics Manager 提供下列轉換類型的組態物件選項,每個類型都由 彈性組態物件表示:
- 翻譯彈性
- 旋轉彈性
- 調整彈性
彈性設定物件
彈性組態會定義受抑制的調音器差異系統的屬性。 您可以調整下列屬性,但已隨附 MRTK 中的一組預設值:
- 品質:模擬的模數元素品質。
- HandK:手彈簧常數。
- EndK:結束端點彈簧常數。
- SnapK:貼齊點彈簧常數。
- 拖曳:拖曳/降低因數,與速度成正比。
彈性範圍
彈性範圍設定會根據操作類型而有所不同。 轉譯和縮放以磁片區 彈性範圍表示, 而旋轉則以 四元數彈性範圍表示。
磁片區彈性範圍
磁片區範圍會定義一個三維空間,其中受抑制的調音器可以自由移動。
- StretchBounds:代表彈性空間的下限。
- UseBounds:系統是否應遵守延展界限。 如果為 true,當目標位置的目前反復專案超出延展範圍時,將會套用結束強制。
- SnapPoints:系統將貼齊的空間內點。
- RepeatSnapPoints:將貼齊點重複為無限大。 現有的貼齊點會做為模數,其中實際貼齊點會對應到每個貼齊點最接近的整數倍數。
- SnapRadius:貼齊點開始強制彈簧的距離。
四元數彈性範圍
四元數範圍會定義四維旋轉空間,其中可自由旋轉受阻的調音器。
- SnapPoints:系統將貼齊的 euler 角度。
- RepeatSnapPoints:重複貼齊點。 現有的貼齊點會做為模數,其中實際貼齊點會對應到每個貼齊點最接近的整數倍數。
- SnapRadius:貼齊點開始以 euler 度強制彈簧的弧形角度。
彈性範例場景
您可以在場景中找到彈性設定 ElasticSystemExample
的範例。