オブジェクト マニピュレーター — MRTK3

オブジェクト マニピュレーター

ObjectManipulator を使用すると、任意の入力デバイスまたはモダリティを使用して、3D スペース内のオブジェクトを直感的に操作できます。 XRI の XRGrabInteractable と同様のタスクを実行しますが、追加の機能と Mixed Reality 固有の対話式操作を提供します。 XRGrabInteractable は Microsoft の対話機能と完全に互換性がある (そしてその逆も当てはまる) ものの、それでも最適なエクスペリエンスを得るには Microsoft の実装を使用することをお勧めします。

注意

ObjectManipulator は、3D オブジェクトを直接かつ直感的に操作するように特別に設計されています。 スライダーやボタンなどの一般的な UI 対話式操作を探している場合は、代わりに「スライダー」と「ボタン」の記事を参照してください。 ObjectManipulator を使用してマイクロ対話式操作を記述しないでください。

Architecture

MRTK v2 では、さまざまな種類の入力の複雑なロジックと数学のほとんどが ObjectManipulator 自体によって処理されました。 対話式操作の種類ごとに個別のコードパスを維持する必要があり、新しい種類の対話式操作を導入する際の柔軟性が低下します。 MRTK3 では、 インタラクター は、特定の種類の入力を操作に変換する方法の詳細を担当します。 ObjectManipulator は、単にこれらの対話機能をリッスンし、関連する変換化をオブジェクトに適用します。 その結果、MRTK3 の ObjectManipulator の方が大幅にシンプルになり、範囲が小さくなります。 アタッチ変換を介してインタラクターが通信する方法の説明については、 インタラクター アーキテクチャ を参照してください。

n-ハンドの操作

ObjectManipulator では、任意の数の関係する対話機能がサポートされているため、片手、両手、さらには n-ハンド操作で一般化可能な対話式操作動作を実現できます。 一般に、すべての参加するインタラクターのアタッチ変換の幾何学的重心は、複数のハンドによる対話式操作に使用されます。 XRI インタラクタブルとして、これは、適切に動作するアタッチ変換を送信する任意の種類のインタラクターと互換性があります。

マルチハンド操作を許可しない場合は、XRI Selection ModeSingle に設定します。 Misrosoft では、弊社の MRTK Selection Mode との混同を避けるために、インスペクター内のこのプロパティの別名を、より具体的な名前の Multiselect Mode にしています。これは、インタラクタブルが切り替えできるかどうかを指定するために使用されます (詳細については、「ボタン」ドキュメントを参照してください)。

複数選択モード

制約

ObjectManipulator では、Constraints API を使用して操作を制限します。 詳細については、 制約に関するドキュメント を参照してください。

操作ロジックの挿入

開発者は、スクリプト自体のサブクラス化や変更を行わずに、ObjectManipulator の操作動作をカスタマイズできます。 新 ManipulationLogic<T> しい を記述し、 プロパティを使用してインスペクターで型を ManipulationLogicTypes 指定するだけです。

同様に、開発者は の新しい実装 ITransformSmoothingLogic を記述し、 プロパティを使用してインスペクターで型を指定することで、スムージング動作を TransformSmoothingLogicType カスタマイズできます。

重要

新しい種類の対話式操作または入力デバイスの新しい操作ロジックの種類を記述していると気づいた場合は、おそらく間違ったパスを下っています。 アタッチ変換が適切に動作している限り、既存の操作ロジックは任意の入力型に対して機能するはずです。 代わりに、新しいインタラクターを調整または記述することを検討してください。 適切に動作する対話式操作ロジックを記述する方法の詳細については、 インタラクター アーキテクチャのドキュメント対話式操作可能なアーキテクチャのドキュメント を参照してください。