ObjectManipulator
任意の入力デバイスまたはモダリティを使用して、3D 空間内のオブジェクトを直感的に操作できます。 XRI XRGrabInteractable
と同様のタスクを実行しますが、追加の機能と Mixed Reality 固有の相互作用を提供します。
XRGrabInteractable
は対話機能と完全に互換性があります (また、その逆も同様です)、最適なエクスペリエンスを得るには実装を使用することをお勧めします。
注:
ObjectManipulator
は、3D オブジェクトを直接直感的に操作するために特別に設計されています。 スライダーやボタンなどの一般的な UI 操作をお探しの場合は、代わりに スライダー と ボタンに関する 記事を参照してください。
ObjectManipulator
を使用してマイクロ相互作用を記述しないようにします。
アーキテクチャ
MRTK v2 では、さまざまな種類の入力の複雑なロジックと数学のほとんどは、 ObjectManipulator
自体によって処理されました。 相互作用の種類ごとに個別のコードパスを維持する必要があり、新しい種類の相互作用を導入する際の柔軟性が低くなります。 MRTK3 では、 対話機能 は、特定の種類の入力を操作に変換する方法の詳細を担当します。 ObjectManipulator は、これらの対話機能をリッスンし、関連する変換をオブジェクトに適用するだけです。 その結果、MRTK3 の ObjectManipulator
が大幅に単純になり、スコープが小さくなります。 アタッチ変換を介して対話機能が通信する方法の説明については、 Interactor アーキテクチャ を参照してください。
n
-handed manipulations
ObjectManipulator
は、任意の数の参加する対話機能をサポートし、1 つ、2 つ、さらには n
操作全体で一般化可能な操作動作を可能にします。 一般に、参加するすべての対話者の attachTransforms の幾何学的重心は、多手操作に使用されます。 XRI は対話可能であるため、適切に動作するアタッチ変換を送信する任意の種類の対話機能と互換性があります。
複数手操作を許可しない場合は、XRI Selection Mode
を Single
に設定します。 インスペクターのこのプロパティに、mrtK Selection Mode
との混同を避けるために、より具体的な名前Multiselect Mode
にエイリアスを付けます。これは、対話可能な操作を切り替えることができるかどうかを指定するために使用されます (詳細については、Button のドキュメントを参照してください)。
制約
ObjectManipulator
では、Constraints API を使用して操作を制約します。 詳細については、 制約に関するドキュメント を参照してください。
操作ロジックの挿入
開発者は、スクリプト自体をサブクラス化したり変更したりすることなく、 ObjectManipulator
の操作動作をカスタマイズできます。 新しい ManipulationLogic<T>
を記述し、 ManipulationLogicTypes
プロパティを使用してインスペクターで型を指定するだけです。
同様に、開発者は、 ITransformSmoothingLogic
の新しい実装を記述し、 TransformSmoothingLogicType
プロパティを使用してインスペクターで型を指定することで、スムージング動作をカスタマイズできます。
重要
新しい種類の操作または入力デバイスの新しい操作ロジックの種類を記述している場合は、おそらく間違ったパスを下ります。 アタッチ変換が適切に動作している限り、既存の操作ロジックは任意の入力型に対して機能する必要があります。 代わりに、新しい対話機能を調整または記述することを検討してください。 適切に動作する操作ロジックを記述する方法の詳細については、 Interactor アーキテクチャのドキュメント と Interactable アーキテクチャのドキュメントを参照 してください。