1.前言
- 使用 ConstraintManager,可以將一組約束組件應(yīng)用于轉(zhuǎn)換。 默認(rèn)情況下,約束管理器會(huì)自動(dòng)收集所有附加的約束組件,并將它們應(yīng)用到目標(biāo)對(duì)象。 但是,用戶也可以選擇手動(dòng)配置應(yīng)用的約束列表,只允許使用附加約束的子集.
- 目前,以下 MRTK UX 元素支持約束:
- (BoundsControl)邊界控制
- (ObjectManipulator )對(duì)象操控器
- 約束管理器可在兩種模式下運(yùn)行:
- 自動(dòng)約束選擇
- 手動(dòng)約束選擇
2.約束選擇
2.1 自動(dòng)約束選擇
- 默認(rèn)的“Auto”模式將列出所有附加的約束組件。 可以使用“Go to component”按鈕直接跳轉(zhuǎn)到檢查器中的組件,也可以從下拉列表中添加新約束。
2.2 手動(dòng)約束選擇
- 如果將束管理器設(shè)置為手動(dòng)模式,則僅處理約束列表中鏈接的約束并將其應(yīng)用于轉(zhuǎn)換。 首次啟用手動(dòng)模式時(shí),管理器將使用所有當(dāng)前附加的約束自動(dòng)填充列表。
3.執(zhí)行順序
- 每個(gè)約束的執(zhí)行順序可以在約束本身的“執(zhí)行順序”選項(xiàng)中定義。 該順序?qū)⒎从吃诩s束管理器中顯示的列表中。 當(dāng)某些約束以不同的順序組合時(shí),它們的行為會(huì)有所不同,因此請(qǐng)記住每個(gè)約束的優(yōu)先級(jí),并相應(yīng)地調(diào)整它們的順序。
4.轉(zhuǎn)換約束
- 可以使用約束以某種方式限制操作。 例如,某些應(yīng)用程序可能需要旋轉(zhuǎn),同時(shí)要求對(duì)象保持垂直。 在這種情況下,可以向?qū)ο筇砑?RotationAxisConstraint,并用于將旋轉(zhuǎn)限制為 y 軸旋轉(zhuǎn)。 MRTK 提供了許多約束,所有這些約束如下所述。
- 也可以定義新約束,并使用它們創(chuàng)建某些應(yīng)用程序可能需要的唯一操作行為。 為此,可以創(chuàng)建一個(gè)繼承自 TransformConstraint 的腳本,并實(shí)現(xiàn)抽象的 ConstraintType 屬性和抽象的 ApplyConstraint 方法。 新約束應(yīng)顯示在下拉列表中,并且應(yīng)在添加到對(duì)象時(shí)自動(dòng)在約束管理器中注冊(cè)。
- MRTK 提供的所有約束共享以下屬性:
- Hand Type 指定約束是用于單手操作、雙手操作還是同時(shí)用于這兩種操作。 由于此屬性是一個(gè)標(biāo)志,因此可以同時(shí)選擇這兩個(gè)選項(xiàng):
- (One Handed)單手:如果選擇,約束將在單手操作期間使用。
- (Two Handed)雙手操作:如果選擇,約束將在雙手操作期間使用。
- 手ProximityType 指定約束是用于近操作、遠(yuǎn)操作還是同時(shí)用于這兩種操作。 由于此屬性是一個(gè)標(biāo)志,因此可以同時(shí)選擇這兩個(gè)選項(xiàng):
- (Near)近:如果選擇,約束將在近操作期間使用。
- (Far)遠(yuǎn):如果選擇,約束將在遠(yuǎn)操作期間使用。
- Hand Type 指定約束是用于單手操作、雙手操作還是同時(shí)用于這兩種操作。 由于此屬性是一個(gè)標(biāo)志,因此可以同時(shí)選擇這兩個(gè)選項(xiàng):
5.約束類型
5.1 FaceUserConstraint
- 此約束限制對(duì)象的旋轉(zhuǎn),以使其始終面向用戶。 “Face Away”選項(xiàng)控制是使用正 Z 軸還是負(fù) Z 軸。
5.2 FixedDistanceConstraint
- 此約束固定了操作開始時(shí)被操作對(duì)象與另一個(gè)對(duì)象轉(zhuǎn)換之間的距離。 這適用于諸如固定被操作對(duì)象與頭部轉(zhuǎn)換之間的距離等行為。 Constraint Transform字段默認(rèn)為相機(jī)轉(zhuǎn)換,是操作對(duì)象將具有固定距離的另一個(gè)轉(zhuǎn)換。
5.3 MaintainApparentSizeConstraint
- 當(dāng)此約束被附加到對(duì)象時(shí),無論對(duì)象與用戶有多遠(yuǎn),它都將保持與用戶相同的表面大?。此鼘⒄紦?jù)用戶視野的相同比例)。 這可用于確保在操作時(shí)蓋板或面板仍然可讀。
5.4 MoveAxisConstraint
- 此約束可用于固定被操作對(duì)象沿哪個(gè)軸移動(dòng)。 這可用于在平面表面或沿直線操作對(duì)象。
Constraion on Movement 字段指定要阻止移動(dòng)的軸。 默認(rèn)情況下,這些軸是全局軸而不是局部軸,但可以在下方進(jìn)行更改。 由于此屬性是一個(gè)標(biāo)志,因此可以選擇任意數(shù)目的選項(xiàng)。
5.5 MinMaxScaleConstraint
- 此約束限制對(duì)象的縮放,這有助于防止用戶將對(duì)象縮放到無法使用的大小。 它適用于基于句柄的縮放(使用 BoundsControl)和通過雙手操作的直接縮放(使用 ObjectManipulator)。 Relative to Initial State選項(xiàng)定義特定的最小和最大縮放值是否為絕對(duì)值,或者它們是否與對(duì)象的初始縮放比例相乘。
5.6 RotationAxisConstraint
- 此約束可用于固定被操作對(duì)象可沿哪個(gè)軸旋轉(zhuǎn)。 這可用于使被操作對(duì)象保持垂直,但仍允許圍繞 y 軸旋轉(zhuǎn),例如。Constraint On Rotation字段指定要阻止旋轉(zhuǎn)的軸。 默認(rèn)情況下,這些軸是全局軸而不是局部軸,但可以在下方進(jìn)行更改。 由于此屬性是一個(gè)標(biāo)志,因此可以選擇任意數(shù)目的選項(xiàng)。
文章來源地址http://www.zghlxwxcb.cn/news/detail-774676.html
文章來源:http://www.zghlxwxcb.cn/news/detail-774676.html
到了這里,關(guān)于Unity Hololens2開發(fā)|(九)MRTK3空間操作 ConstraintManager(約束)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!