トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

Hololens2のSolver(公式チュートリアル4)

このチュートリアルをする

docs.microsoft.com

Solverについて

microsoft.github.io

「事前定義されたアルゴリズムに従ってオブジェクトの位置と方向を計算する手段を容易にするコンポーネント」だって

Solvers | Mixed Reality Toolkit Documentation

 

壁に沿う、視界に常に入る、見た目の大きさが常に同じ(距離で変化する)、手に追従するものなどいろいろある

f:id:bibinbaleo:20200424133029p:plain

 

  • Orbital:指定された位置にロックされ、参照オブジェクトからのオフセット。
  • ConstantViewSize:参照されるオブジェクトのビューに対して相対的に一定のサイズを維持するようにスケーリングします。
  • RadialView:参照オブジェクトによってキャストされたビューコーン内にオブジェクトを保持します。
  • SurfaceMagnetism:ワールド内のサーフェスに光線を投影し、オブジェクトをそのサーフェスに位置合わせします。
  • Momentum:加速度/速度/摩擦を適用して、他のソルバー/コンポーネントによって移動されるオブジェクトの運動量と弾力性をシミュレートします。
  • InBetween:2つの追跡されたオブジェクトの間にオブジェクトを保持します。
  • HandConstraint:GameObjectと手で交差しない領域で、手に追従するようにオブジェクトを制限します。メニューなどの手に制約のあるインタラクティブコンテンツに役立ちます。このソルバーは、IMixed Reality Handで動作するように設計されていますがIMixed Reality Controllerでも動作します
  • HandConstraintPalmUp:HandConstraintから派生しますが、アクティブ化の前に手のひらがユーザーの方を向いているかどうかをテストするロジックが含まれています。このソルバーはIMixed Reality Handコントローラーでのみ機能します。他のコントローラータイプでは、このソルバーは基本クラスと同じように動作します。

Solvers | Mixed Reality Toolkit Documentation より

Orbital

指定された位置とオフセットにオブジェクトをロックする

Orbitalを追加したら、SolverHandlerも追加されて頭に追従するようになった

f:id:bibinbaleo:20200427151849p:plain

WorldOffsetを設定したらX以外はその場所に表示された

f:id:bibinbaleo:20200427151851p:plain

実機ビルドして分かったけど、移動してもついてくるんだ。

自分を中心として常に視界に入る感じ。高さ(Y)と奥行き(Z)は固定

RadialView

別のオブジェクトにRadialViewを追加して、以下のように設定したら手首に追従する

Solver Handler (Script) コンポーネントを構成する

  • [Tracked Target Type](追跡対象の種類) を [Hand Joint](手の関節) に変更します
  • [Tracked Handness](追跡対象の手) を [Right](右) に変更します
  • [Tracked Hand Joint](追跡対象の手の関節) を [Wrist](手首) に変更します

Radial View (Script) コンポーネントを構成します。

  • [Reference Direction](参照方向) を [Object Oriented](オブジェクトの向き) に変更してから、 [Orient To Reference Direction](参照方向に向ける) チェックボックスをオンにします
  • [Min Distance](最小距離) および [Max Distance](最大距離) を 0 に変更します

f:id:bibinbaleo:20200427153026p:plain


Orient To Reference Directionはキューブの角度が手首の角度によって変わった

最後に

前、UIを頭に追従させるときRadialViewでやったけどOrbitalのほうがよかったのかな?

bibinbaleo.hatenablog.com

 HandConstraintPalmUpはこの記事でやった

bibinbaleo.hatenablog.com