演習 - ObjectManipulator を使用して手による操作を追加する

完了

ObjectManipulator スクリプトは、手とモーション コントローラーの入力モデルの 直接操作 モダリティをサポートします。 スクリプトがオブジェクトにアタッチされている場合、ユーザーはオブジェクトを手で移動、拡大縮小、または回転できます。 この演習では、2 つの立方体を作成して、必要なスクリプトをアタッチし、立方体を動かします。

1 つ目の立方体を追加して調整する

  1. メニュー バーで、 GameObject>3D オブジェクト>Cube を選択します。

    キューブを追加するためのメニュー コマンドのスクリーンショット。

    キューブの既定のサイズは 1 立方メートルで、ここでは大きすぎます。 サイズを 20 立方センチメートルに縮小します。

  2. キューブを選択し、[インスペクター] で、[変換] セクションのキューブの [スケール] の値を次のように変更します。

    X = 0.2、Y = 0.2、Z = 0.2

    立方体は、シーンの既定の位置 (0,0,0) に配置されました。 これは、立方体がユーザーのヘッドセットと同じ位置にあることを意味します。ユーザーは後方に移動するまで立方体を見ることができません。 見やすい位置になるように、立方体の位置の値を変更します。

  3. インスペクターで、[変換] セクションのキューブの Position 値を次のように変更します。

    X = -0.2、Y = 1.6、Z = 0.5

    更新後のキューブの変換コンポーネントのスクリーンショット。

    立方体の 3 つの側面が見えるようにしたいので、立方体の回転も変更します。

  4. インスペクターで、[変換] セクションのキューブの [回転] の値を次のように変更します。

    X = 9、Y = 14、Z = 0

    ヒント

    キューブを拡大するには、キューブを選択し、カーソルが [シーン ] ウィンドウの上に置いていることを確認し、 F キーを押します。 この方法で、任意のオブジェクトを拡大できます。

スクリプトを立方体に追加する

追跡対象の手でオブジェクトを "グラブ可能" にするには、次の 3 つのコンポーネントがアタッチされている必要があります。

  • Collider コンポーネント (ここでは何もする必要はなく、Unity の立方体には既定で [ボックス コライダー] が既にあります)
  • オブジェクト マニピュレーター (スクリプト) コンポーネント
  • 制約マネージャー (スクリプト) コンポーネント
  1. キューブを選択したまま 、[インスペクター] ウィンドウで [ コンポーネントの追加 ] ボタンを選択し、 オブジェクト マニピュレータ ー スクリプトを検索して選択します。

    オブジェクト マニピュレーター スクリプトの追加のスクリーンショット。

    オブジェクト マニピュレーター スクリプトは、1 つまたは 2 つの手を使用してオブジェクトを移動可能、スケーラブル、回転可能にします。 オブジェクト マニピュレーター スクリプトを追加すると、制約マネージャー スクリプトも自動的に追加されます。これは、オブジェクト マニピュレーター スクリプトがそれに依存しているからです。

    キューブに追加された制約マネージャー スクリプトのスクリーンショット。

キューブの素材を更新する

パフォーマンス上の理由から、既定の Unity 素材ではなく MRTK 素材を使用することをお勧めします。

  1. キューブを選択したまま、メッシュ レンダラー コンポーネントの [マテリアル ] セクションを見つけて展開します。
  2. 既定のマテリアルを MRTK 標準アセット>の下にあるMRTK_Standard_Whiteマテリアルに置き換えます。 これを行うには、[マテリアル]セクションの[要素]フィールドにマテリアルを直接ドラッグします。

2 つ目の立方体を追加する

  1. [階層] で、キューブを右クリックし、[複製] を選択します。 重複したキューブは、 キューブ (1) という名前で表示されます。

  2. 元のキューブを右クリックし、[ 名前の変更] を選択し、キューブに Near Cube という名前を付けます。

  3. 複製したキューブを右クリックし、[ 名前の変更] を選択し、キューブに Far Cube という名前を付けます。

    現時点では、 シーン ビューにはキューブが 1 つしかないように見えます。 これは、近くの立方体と遠くの立方体がまったく同じ場所にあるからです。 遠くの立方体の位置と回転を変更しましょう。

  4. Far Cube を選択したまま、 Transform コンポーネントの値を次のように変更します。

    位置: X = 0.6、Y = 1.6、Z = 1.1

    回転: X = 27、Y = 0、Z = 0

    カメラの左側に近くのキューブ、右に少し離れた位置に遠くのキューブが見えるはずです。 これを確認するには、階層メイン カメラ (MRTK XR リグ>カメラ オフセット) を選択し、[シーン] ウィンドウのメイン カメラ ウィンドウを確認します。

    [シーン] ウィンドウのメイン カメラ ビューのスクリーンショット。

    ヒント

    [シーン] ウィンドウのビューをカメラが見ているような外観にする場合は、[シーン] ウィンドウ内をスクロールします。 デフォルトでない場合、カメラの クリア フラグSkybox に設定する必要がある場合があります。

再生モードで立方体をつかんで動かす

  1. [再生] ボタンを選択します。 プロジェクトの再生が開始されると、ビューが ゲーム ウィンドウに切り替わります。

    プレイ モードに入った後の [ゲーム] ウィンドウのスクリーンショット。

    再生する前に、プロジェクト設定>の下に有効なプロファイルセットがあることを確認します。

  2. [ゲーム] ウィンドウの右上隅にある 3 点ボタンを選択し、[最大化] を選択します。

    [ゲーム] ウィンドウの [最大化] コマンドのスクリーンショット。

  3. スペース バーを長押しして、シミュレートされた右側がビューに表示されるようにします。

  4. 立方体の側面または底面に触れるまで、シミュレートされた手を近くの立方体に近づけていきます。

    シミュレーションされた右手が Near Cube に接触するスクリーンショット。

  5. マウスの 左ボタン をクリックし (これにより、手がキューブを "グラブ" し、シーンの周りにキューブをドラッグします。

    キューブの移動のスクリーンショット。

    遠くの立方体をつかんで動かすには、シミュレートされた手にアタッチされている far ポインターを使用します。

  6. 必要に応じて、もう一度 スペース バー を長押しして、シミュレートされた右側を表示します。 手の人さし指の先から伸びる far ポインターに注目します。

    シミュレートされた手の遠いポインターのスクリーンショット。

  7. 立方体にポインターの先端が触れるまで、手を遠くの立方体に近づけていきます。 ポインターの先端を立方体に触れさせるには、何度か円を描くように手を動かす必要がある場合があります。

    キューブに触れる遠いポインターのスクリーンショット。

  8. マウスの左ボタンをクリックすると(これにより手が閉じて、ピンチジェスチャと呼ばれる動作を行います)、キューブをシーン内でドラッグします。