約束管理器 — MRTK2

限制管理器允許將一組約束元件套用到轉換中。 可考慮附加於遊戲物件的類型 TransformConstraint 元件。 依照預設,限制管理器會自動收集所有附加在遊戲物件上的 約束元件 ,並將其套用到處理中的轉換中。 然而,使用者可選擇手動設定套用的約束清單,並只允許套用部分附加約束。

目前以下 MRTK UX 元素支援約束管理器:

檢查器性質與場

限制管理器可以兩種模式運作:

  • 自動限制選擇
  • 手動限制選擇

自動限制選擇

自動選擇

限制管理器的預設模式自動限制選擇會提供所有附加的限制元件清單,並提供 前往按鈕新增限制按鈕

對遊戲物件新增約束

此按鈕允許直接從約束管理檢查器新增限制元件。 專案中的所有限制類型都應該在這裡可見。 更多資訊請參見 轉換約束

前往元件

物件上的所有約束會在這裡列出,並附上 「前往元件 」按鈕。 這個按鈕會讓檢查器捲動到選中的約束元件,以便進行設定。

手動限制選擇

手動選擇

若限制管理工具設為手動模式,則僅處理與約束清單連結的限制,並套用至轉換中。 顯示的清單只會顯示使用者所選的限制,並 會前往 按鈕或選項來移除或新增條目。 首次啟用手動模式時,限制管理器會將所有可用元件清單填入,作為選擇附加約束元件的起點。

移除條目

這會將該條目從手動選取的列表中移除。 請注意,這個選項不會移除遊戲物件中的約束元件。 限制元件必須手動移除,以確保不會意外破壞指向該元件的其他元件。

新增條目

新增條目會開啟一個下拉選單,顯示所有尚未在手動清單中的可用約束元件。 點擊任一項目,該元件就會被加入手動限制選擇中。

新增約束

此選項會將所選類型的元件加入遊戲物件,並將新建立的約束元件加入手動約束清單。

轉換約束

限制可以用來限制操作。 例如,有些應用可能需要旋轉,但同時也要求物體保持直立。 此時,可以將 a RotationAxisConstraint 加到物件上,並用來限制旋轉為 y 軸旋轉。 MRTK 提供了多項限制條件,以下將全部說明。

也可以定義新的約束,並用它們來創造某些應用可能需要的獨特操作行為。 為此,請建立一個腳本,繼承 TransformConstraint 並實作 ConstraintType 抽象屬性與抽象 ApplyConstraint 方法。 在物件新增限制後,應該會以先前定義的方式限制操作。 這個新限制也應該會出現在限制管理員 的自動選擇手動模式下新增條目 下拉選單中。

MRTK 提供的所有約束條件都具有以下特性:

手型

指定該限制是否用於單手操作、雙手操作或兩種操作方式。 由於此屬性為旗標,兩個選項皆可選擇。

  • 單手操作:若選擇單手操作,限制會被使用。
  • 雙手:若選擇,限制會在雙手操作時使用。

鄰近類型

指定該約束是否用於近距離、遠距離或兩種操作。 由於此屬性為旗標,兩個選項皆可選擇。

  • 近:若選擇近操作,限制將被使用。
  • Far:若選擇 Far,則在操作 Far 時會使用限制。

臉使用者約束

約束面使用者

當此約束附加於物件時,旋轉會被限制,使該物件始終面向使用者。 這對於板材或面板非常有用。 的 FaceUserConstraint 性質如下:

背對

如果為真,物件會背對使用者。

固定距離約束

限制 固定距離

此限制固定了操作開始時,作物件與另一個物件轉換之間的距離。 這對於固定操作物件到頭部變換距離等行為非常有用。 的 FixedDistanceConstraint 性質如下:

約束轉換

這是另一個變換,操作物件會有固定距離。 預設是相機變換。

固定旋轉至使用者限制

固定旋轉

此限制固定使用者與作物件在作物件間的相對旋轉。 這對於板片或面板非常有用,因為它確保作的物件在操作開始時,對使用者來說總是呈現相同的臉孔。 沒有 FixedRotationToUserConstraint 任何獨特的特性。

固定旋轉至世界限制

固定旋轉至世界

此約束固定作物體在作時的全域旋轉。 這在不應該透過操作施加旋轉的情況下非常有用。 沒有 FixedRotationToWorldConstraint 任何唯一性質:

維持顯面積限制

維持表觀大小

當此限制附加於物件時,無論物件距離使用者多遠,使用者眼中都會維持相同的表觀大小, (即佔據使用者視野) 的比例相同。 這可以用來確保在操作時,板塊或文字面板仍能保持可讀性。 沒有 MaintainApparentSizeConstraint 任何唯一性質:

移動軸約束

約束移動軸

此限制可用來固定作物體可沿哪些軸線移動。 這對於在平面表面或沿線進行物體操作非常有用。 的 MoveAxisConstraint 性質如下:

行動限制

指定哪些軸線要防止移動。 預設情況下,這些軸線會是全域而非局部,但這點可以在下方進行調整。 由於此屬性為旗標,可選擇任意數量的選項。

  • X 軸:選擇 x 軸時,沿 x 軸的移動會受到限制。
  • Y 軸:選擇 y 軸移動會受到限制。
  • Z軸:選擇Z軸時,沿z軸的移動會受到限制。

使用局部空間作為限制

如果為真,會相對操作物件的局部轉換軸進行約束。 預設值為 False。

旋轉軸約束

限制旋轉軸

此限制可用來固定控物體可旋轉的軸。 這對於保持控物體直立,同時仍允許 y 軸旋轉等方式非常有用。 的 RotationAxisConstraint 性質如下:

旋轉限制

指定哪些軸線要防止旋轉。 預設情況下,這些軸線會是全域而非局部,但這點可以在下方進行調整。 由於此屬性為旗標,可選擇任意數量的選項。

  • Y 軸:若選擇 y 軸旋轉會受到限制。
  • Z軸:若選擇Z軸旋轉,則受限。
  • X 軸:若選擇 X 軸旋轉,則會受限於 x 軸旋轉。

使用局部空間作為限制

如果為真,會相對操作物件的局部轉換軸進行約束。 預設值為 False。

最小最大縮尺約束

Min Max Constatint

此限制允許設定作物件的縮放最小值與最大值。 這對於防止使用者將物件縮放得過小或過大非常有用。 的 MinMaxScaleConstraint 性質如下:

比例最小值

操作過程中的最小比例值。

比例極大值

操控時的最大比例值。

相對於初始狀態

若為真,上述數值將相對於物件初始比例被解釋為相對於。 否則它們會被解釋為絕對比例值。