BoundsControl — MRTK3

Bounds control

BoundsControl 提供自動調整大小的周框方塊,以及旋轉和縮放的操作能供性。

在 MRTK 2.x 中,BoundsControl 主要是透過使用 Configuration ScriptableObjects 來產生執行時間。 在 MRTK3 中,BoundsControl 的設定和自訂已大幅簡化。 界限視覺效果和控制碼只是 BoundsControl 在執行時間具現化的可自訂預製專案。 開發人員可以調整和自訂視覺效果預製專案,甚至從頭開始建置新的界限視覺效果。 我們會遵循新的Mixed Reality設計語言,提供標準界限視覺效果實作。

新的視覺效果提供簡化的視覺回饋,說明使用者對物件的意圖和操作,幾乎不會干擾視覺雜訊。

安裝程式

只要將 BoundsControl 新增至現有的物件,並使用您想要使用的界限視覺效果填 BoundsVisualsPrefab 入參考。 我們提供幾個預先建置的界限視覺效果供您使用。

重要

強烈建議開發人員新增 MinMaxScaleConstraint ,以防止使用者將物件調整為未使用的小型或大型大小。

若要使用界限視覺效果的意圖和焦點效果,您必須在 物件上擁有 StatefulInteractable 。 如果未自動偵測到可互動,您可以在 BoundsControl 偵測器中指定連接。

注意

我們建議開發人員搭配 BoundsControl 使用 ObjectManipulator ,除了能供性型操作之外,還提供使用者直接操作。 ObjectManipulator 可作為 StatefulInteractable 界限視覺效果回應之暫留/焦點狀態的 。

界限視覺效果預製專案

我們提供數個預先建置的界限視覺效果,以搭配 BoundsControl 使用。 我們鼓勵開發人員製作這些視覺效果的預製變數,並加以自訂以符合其需求。 控制碼動畫和狀態是由 StateVisualizer 所提供,可讓開發人員進一步自訂能供性的外觀和風格。

處理遮蔽樣式

這些界限視覺效果提供簡化的視覺效果設計,讓使用者的干擾較少。 只有沿著界限邊緣的相關控點才會顯示。 界限視覺效果會根據使用者意圖和選取進度來合約、展開和變更色彩/粗細。 我們強烈建議使用此界限視覺化樣式。

Occluded handles

僅限意圖

在某些內容中,控制碼可能不想要,開發人員可能會想要單獨使用界限視覺效果作為使用者意圖的指標。 雖然此預製專案會執行此作業,但選取 HandleType.None,即可使用任何其他界限視覺效果來達成相同的效果。 我們發現 squeezable 界限視覺效果是許多不同內容的滿足且令人滿意的視覺回饋元素,而不只是處理型操作。

No handles

舊版樣式

這些界限視覺效果會顯示方塊的所有控制碼和邊緣。 這更符合舊版設計語言和 MRTK 2.x 中所見的先前行為;不過,由於不必要的視覺雜訊,此設計可能會對使用者造成干擾。 此外,物件前面有控制碼 (和後方) 可能會導致間接注視捏合操作的問題。 我們不建議針對新的應用程式使用此樣式,特別是利用注視目標的應用程式。

Traditional handles

互動設計

在目前的反復專案中,我們提供簡單的啟用/停用互動。 按一下就地系結 (換句話說,選取物件、不移動物件,並將它放開,) 可以開啟和關閉控點。 此檢查的距離容錯可以使用 來調整 DragToggleThreshold ,而且可以使用 屬性來啟用/停用 ToggleHandlesOnClick 此啟用行為本身。

Bounds control toggle

您可以藉由設定 HandlesActive ,隨時從程式碼手動啟動或停用控制碼。

自動界限計算

BoundsControl 將嘗試自動計算相關聯物件的界限。 如果需要特定界限圖形,請檢查 OverrideBounds 選項並直接指定界限物件。 界限計算系統只會計算指定覆寫物件的界限。

會影響 BoundsCalculationMethod 演算法計算界限的方式。 如果封閉物件的視覺圖形不一定符合碰撞器,或相反的則為 true,開發人員可以調整計算方法,以偏好使用轉譯器或碰撞器界限,或兩者的組合。

不論計算方法為何, Padding 選項都會以世界單位統一填補界限。 當界限扁平化時,不會填補扁平化座標軸。

壓平合併

Flattened BoundsControl

BoundsControl 也可以用來操作 2D 內容。 如果 FlattenMode 設定為 Auto ,則 BoundsControl 會在物件沿著任何軸夠平面時,將本身扁平化為 2D 矩形界限。 如果物件不夠平面,但您仍想要矩形界限能供性, FlattenMode.Always 則一律會沿著面板軸將 BoundsControl 壓平。 相反地, FlattenMode.Never 即使物件非常精簡,也會防止 BoundsControl 壓平合併。

操作選項

BoundsControl 的操作行為可以透過數種方式進行調整。 選項 RotateAnchor 會控制使用旋轉能供性時,BoundsControl 繞著旋轉的樞紐點。 有些物件的樞紐點遠于其視覺中心,當使用旋轉控點操作時,可能會造成不適和不精確。 指定 BoundsCenterRotateAnchor 會導致 BoundsControl 一律繞著計算界限的幾何中心旋轉,而不是物件的實際原點。

調整行為可以設定為 UniformNon Uniform 。 在統一模式中,物件的所有軸都會一起縮放,並維持外觀比例和外觀。 非統一縮放可讓物件的每個軸獨立縮放。