次の方法で共有


BoundsControl — MRTK3

境界コントロール

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

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

新しいビジュアルは、最小限の侵入視覚的ノイズを持つオブジェクトのユーザーの意図と操作を示す合理化されたビジュアル フィードバックを提供します。

セットアップ

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

重要

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

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

注:

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

境界ビジュアルプレハブ

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

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

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

オクルージョンハンドル

意図専用

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

ハンドルなし

従来のスタイル

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

従来のハンドル

相互作用の設計

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

境界コントロールのトグル

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

自動境界計算

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

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

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

平坦 化

フラット化された境界コントロール

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

操作オプション

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

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