夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

MRTK StandardShaderの機能を用いてHoloLens 2で人体模型を作る 後編

本日はHoloLensの表現の実験枠です。

 9月に入り季節が秋に傾いていきます。[○○の秋]と秋は何事にも取り組みやすい季節ですが、筆者自身は[運動の秋][勉学の秋]にしたいと思っています。

 1日のデスクワークの3時間を立つなど筋トレを意識した生活を始めたのですが、何事にも知識 筋肉を知ることから始まります。

 そこで今回HoloLens2を用いて思い付きで等身大人体模型を作ることにしました。 

〇前回の記事

前回は人体模型の3Dモデルを作成しました。

redhologerbera.hatenablog.com

〇Unityでの実装

 すでにMRTKを導入したUnityプロジェクトから進めていきます。

 MRTKの導入は過去の記事を参考にしてください。

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

〇モデルの配置

 ①前回作成した筋肉と骨格をシーンに配置します。 Blenderで書き出す前にスケールなどを変更していない場合筋肉と骨格のモデルはぴったりと重なるように配置されます。

f:id:Holomoto-Sumire:20200904084258j:plain

 ②皮膚に当たるモデルでは以前より作成している[MB-Lab]のモデルを使用しました。 こちらもシーンに配置します。

 f:id:Holomoto-Sumire:20200904084731j:plain

 ③[MB-Lab]のモデルはスケールや位置がずれているため重なるように合わせます。もともとのモデルの体格が違うので大体で合わせました。

f:id:Holomoto-Sumire:20200904085135j:plain

 ④新規でマテリアルを作成、[MRTKStandardShader]に変更後筋肉と骨格のモデルにそれぞれアタッチします。

 f:id:Holomoto-Sumire:20200904085325j:plain

クリッピングの実装

今回は[MRTKStandardShader]とMRTKのクリッピング機能を用いてモデルをスライスできるようにしました。 

redhologerbera.hatenablog.com

①[Plane]オブジェクトを追加します。

f:id:Holomoto-Sumire:20200904085706j:plain

②[Plane]オブジェクトに[BoxCollider],[ClippingPlane],[NearInteractionGrabbable],[Object Manipulator]コンポーネントをアタッチします。

 f:id:Holomoto-Sumire:20200904090635j:plain

[NearInteractionGrabbable]コンポーネントはHoloLens 2 の[HandTracking]を用いた[Grab] の動作を検知します。

[Object Manipulator]コンポーネントはGrabの動作を用いてオブジェクトの移動、スケール、回転の調整が行えます。

③[ClippingPlane]コンポーネントの[Renderers]の[Size]を1に変更し[Element0]にMB-Labのモデルの[Renderer]を設定します。

 また[Clipping Side]を[Outside]へと変更します。

f:id:Holomoto-Sumire:20200904091724j:plain

これによって[Plane]でMB-Labのメッシュがクリップされます。

f:id:Holomoto-Sumire:20200904091823j:plain

④[Cube][Sphere]オブジェクトを追加し[NearInteractionGrabbable],[Object Manipulator]コンポーネントをアタッチします。

 それぞれ区別がつくように透明なマテリアルをアタッチしています。

⑤[Cube]には[BoxCollider],[ClippingBox]コンポーネント、[Sphere]には[Sphere Colloder],[ClippingSphere]コンポーネントを追加します。

 f:id:Holomoto-Sumire:20200904092133j:plain

f:id:Holomoto-Sumire:20200904092217j:plain

⑥[ClippingBox]には筋肉の[Renderer]、[ClippingSphere]には骨格の[Renderer]を設定します。

[ClippingBox]の[ClippingSide]を[Outside]、[ClippingSphere]の[ClippingSide]を[Inside]に設定します。

f:id:Holomoto-Sumire:20200904092133j:plain

f:id:Holomoto-Sumire:20200904092217j:plain

〇実機で確認

実機で確認すると次のようになります。

www.youtube.com