次の方法で共有


BoundsControl — MRTK3

境界コントロール

BoundsControl には、回転とスケールの操作アフォーダンスと共に、自動的にサイズ設定された境界ボックスが用意されています。

MRTK 2.x では、BoundsControl は主に、構成 ScriptableObjects を使用してランタイムによって生成されました。 MRTK3 では、BoundsControl のセットアップとカスタマイズが大幅に簡略化されました。 境界ビジュアルとハンドルは、BoundsControl が実行時にインスタンス化するカスタマイズ可能なプレハブです。 開発者は、ビジュアル プレハブを調整してカスタマイズしたり、新しい境界ビジュアルをゼロからビルドしたりできます。 新しいMixed Realityデザイン言語に従って、標準の境界ビジュアルの実装を提供します。

新しいビジュアルでは、ユーザーの意図と操作を最小限に抑えた視覚的ノイズを示す、合理化されたビジュアル フィードバックが提供されます。

セットアップ

既存のオブジェクトに BoundsControl を追加し、使用する境界ビジュアルを参照に設定 BoundsVisualsPrefab するだけです。 使用できる、いくつかの異なる事前構築済みの境界ビジュアルが用意されています。

重要

MinMaxScaleConstraint を追加して、ユーザーがオブジェクトを使用できないサイズまたは大きなサイズにスケーリングできないようにすることを強くお勧めします。

境界ビジュアルの意図とフォーカス効果を使用するには、 オブジェクトに が必要 StatefulInteractable です。 対話可能な が自動的に検出されない場合は、BoundsControl インスペクターで接続を指定できます。

Note

開発者は BoundsControl と共に ObjectManipulator を使用 して、アフォーダンス ベースの操作に加えてユーザーに直接操作を提供することをお勧めします。 ObjectManipulator は、境界ビジュアルが応答するホバー/フォーカス状態の として機能 StatefulInteractable できます。

境界ビジュアルプレハブ

BoundsControl で使用するための事前構築済みの境界ビジュアルがいくつか用意されています。 開発者は、これらのビジュアルのプレハブバリアントを作成し、ニーズに合わせてカスタマイズすることをお勧めします。 ハンドルのアニメーションと状態には StateVisualizer が搭載されているため、開発者はアフォーダンスの外観をさらにカスタマイズできます。

オクルージョン スタイルを処理する

これらの境界ビジュアルは、ユーザーの注意を散らすのが少ない簡略化されたビジュアルデザインを提供します。 境界の端に沿った関連するハンドルのみが表示されます。 境界ビジュアルは、ユーザーの意図と選択の進行状況に応じて、色/太さを縮小、展開、および変更します。 この境界の表示スタイルを使用することを強くお勧めします。

Occluded ハンドル

意図のみ

コンテキストによってはハンドルが望ましくない場合があり、開発者は境界ビジュアルだけをユーザーの意図の楽しいインジケーターとして使用する必要があります。 このプレハブはジョブを実行しますが、HandleType.None を選択することで、他の境界ビジュアルで同じ効果を実現できます。 絞り込み可能な境界ビジュアルは、ハンドルベースの操作だけでなく、多くの異なるコンテキストに対して満足のいく楽しいビジュアル フィードバック要素であることがわかりました。

ハンドルなし

従来のスタイル

これらの境界ビジュアルには、ボックスのすべてのハンドルとエッジが表示されます。 これは、従来の設計言語と、MRTK 2.x で見られる以前の動作とより密接に一致します。ただし、この設計は、不要な視覚的ノイズのためにユーザーにとってより気が散る可能性があります。 さらに、オブジェクトの前 (および背後) にあるハンドルが存在すると、間接的な視線入力ピンチ操作で問題が発生する可能性があります。 新しいアプリケーション 、特に視線入力のターゲット設定を利用するアプリケーションには、このスタイルを使用することはお勧めしません。

従来のハンドル

操作の設計

現在のイテレーションでは、単純なアクティブ化/非アクティブ化の相互作用が提供されています。 境界をインプレース (つまり、オブジェクトを選択し、移動せず、解放) することで、ハンドルのオンとオフを切り替えることができます。 このチェックの距離許容値は、 を使用してDragToggleThreshold調整でき、 プロパティを使用してこのアクティブ化動作自体をToggleHandlesOnClick有効または無効にすることができます。

境界コントロールの切り替え

ハンドルは、 を設定 HandlesActiveすることで、いつでもコードから手動でアクティブ化または非アクティブ化できます。

自動境界計算

BoundsControl は、関連付けられたオブジェクトの境界を自動的に計算しようとします。 特定の境界図形が必要な場合は、オプションをチェックOverrideBoundsし、境界オブジェクトを直接指定します。 境界計算システムは、指定されたオーバーライド オブジェクトの境界のみを計算します。

BoundsCalculationMethod 、アルゴリズムによる境界の計算方法に影響します。 囲まれたオブジェクトの視覚的な形状が必ずしもコライダーと一致しない場合、またはその逆が true の場合、開発者はレンダラーまたはコライダーの境界を使用するか、またはその両方の組み合わせを使用するように計算方法を調整できます。

計算方法に Padding 関係なく、このオプションでは境界がワールド単位で均一に埋め込まれます。 境界がフラット化されている場合、フラット化された軸は埋め込まれません。

フラット化

フラット化された BoundsControl

BoundsControl は、2D コンテンツの操作にも使用できます。 が にAuto設定されている場合FlattenMode、オブジェクトが任意の軸に沿って十分に平坦な場合、BoundsControl はそれ自体を 2D 四角形の境界にフラット化します。 オブジェクトが十分にフラットでないが、四角形の境界アフォーダンスが必要な場合は、 FlattenMode.Always 常に最も細い軸に沿って BoundsControl がフラット化されます。 逆に、 FlattenMode.Never オブジェクトが非常に薄い場合でも、BoundsControl がフラット化されないようにします。

操作オプション

BoundsControl の操作動作は、いくつかの方法で調整できます。 オプションは RotateAnchor 、回転アフォーダンスを使用するときに BoundsControl を回転させるピボット ポイントを制御します。 一部のオブジェクトのピボット ポイントは、視覚的な中心から遠く離れているため、回転ハンドルを使用して操作するときに不快感や不正確を引き起こす可能性があります。 に RotateAnchorBoundsCenter指定すると、BoundsControl は常に、オブジェクトの実際の原点ではなく、計算された境界の幾何学的中心を中心に回転します。

スケーリング動作は、 または Non UniformのいずれかにUniform設定できます。 均一モードでは、オブジェクトのすべての軸が一緒に拡大縮小され、縦横比と外観が維持されます。 非均一スケーリングを使用すると、オブジェクトの各軸を個別にスケーリングできます。