本日はHoloLens 2のアプリレビューです。
その1ではMRTKExampleHubのインストールを行いました。
MRTKExampleHubはストアではなくMRTKのGithubのリリースでアプリケーションパッケージとしてリリースされているためインストールを行いました。
その2ではHand Interaction Examplesを見ました。 これはBoundingBoxなど基本的なHoloLens 2でのHandTrackingの体験を行えます。
今回はClippingExamplesを見ていきます。
〇ClippingExamplesとは?
前回のHand Interaction ExamplesはHand Trackingでの体験でしたがClippingExamplesはオブジェクトのShader表現を見ることができます。
MixedRealityToolkit ExamplesではMixedRealityToolkit.Examples/Demos/StandardShader/Scenesにあります。
シーンには心臓を模した3Dオブジェクトがあり、ユーザーの手でつかみ、移動、回転、拡大縮小が行えます。
プレート、球、キューブの3つのガラスのような透明度のオブジェクトがあり、これらも手でつかみ移動回転拡大縮小が行えます。
ガラスのようなオブジェクトを心臓の3Dオブジェクトに当てることで、干渉している部分がClipping(部分的にくりぬかれる)されます。
プレートのみ他と違い、プレートの表・裏でClippingされます。プレーンだけはプレーンの大きさにかかわらずすべてがClippingされます。
これはMRTK/StandardShaderとClippingPlane, ClippingSphere, ClippingBoxを組み合わせて、メッシュ上のピクセルを動的にクリップしています。
〇心臓の3Dオブジェクト
[NearInteractionGrabbable]コンポーネントと[ManipulationHandler]コンポーネントがアタッチされています。
[NearInteractionGrabbable]コンポーネントでつかみを検知して[ManipulationHandler]で移動や回転拡大縮小を指定します。
マテリアルのClipping BorderのColorとWidthでclipされる断面の色に変化を与えています。
〇Clipping オブジェクト
・Sphere
[Clipping Sphere]コンポーネントがアタッチされています。
このRenderersに心臓のMeshRendererが設定されていることで心臓のオブジェクトをクリッピングします。
[Clipping Size]はInsideの状態でオブジェクトが干渉している部分をクリップしOutsideの状態で干渉していない部分をクリップします。 Outsideの場合干渉している部分のみ表示されるようになります。
・Cube
Sphere同様ClippingBoxコンポーネントがアタッチされています。
・Plane
Planeの表と裏の領域でClippingすることができます。
これは前述のとおりPlaneの形状にかかわらずワールド座標でClippingが行われます。
Clippingはオブジェクトに変化を与えアイデア次第で非常に表現の幅が広がります。