「Occlusion Management」は立体のマーカーを用いて表現できるサンプルです。立体のマーカーがあたかも透けたように見え、その中にオブジェクトが入っているような表現ができます。
Unityで新しいプロジェクトを立ち上げ、「Advanced Topics」でダウンロードした「vuforia-samples-advanced-unity-5-0-5」の「OculusionManagement-5-0-5.unitypackage」と今回使用するマーカーのDatabaseのパッケージをインポートしてください。
このサンプルの構成を、最初から構築しながら説明していきます。
新しいシーンを作成する前に「Hierarchy」にある「SceneManager」と、「MultiTarget」の子オブジェクトである「BlenderCube」「GridCube」をプレハブとして登録してください。こちらは後で使用します。
それでは、新しいシーンを作成してください。
まず、前回同様に「Hierarchy」に「ARCamera」「MultiTaregt」をドラッグ&ドロップして各設定を行ってください。また、先ほどプレハブ化した「SceneManager」を「Hierarchy」に追加してください。
「SceneManager」の子オブジェクトである「AppManager」の「Inspector」の「M Handler」に今回使用する「MultiTarget」を設定してください。
次に、先ほどプレハブ化した「BlenderCube」と「GridCube」を「Multi Target」の子オブジェクトとしてドラッグ&ドロップしてください。
「BlenderCube」は透過したような面を表示するオブジェクトで、適宜大きさを今回使用する「Multi Target」と同一になるように合わせてください。
「GridCube」は透過しているマーカーの内部の奥行きを見やすくするためのグリッド状のマテリアルが設定されたオブジェクトです(こちらは使用しなくても透過処理は行えます)。
こちらも大きさを「MultiTarget」と同一になるように合わせてください。
続いて、「Asset」→「Script」の「Occlusion Management Event Handler」を「MultiTarget」にドラッグ&ドロップしてください。その後、「MultiTarget」の「Default Trackable Event Handler」をRevertしてください。
次に今回設定したマーカーが透過するように設定します。
57 #region PRIVATE_METHODS 58 private void OnTrackingFound() 59 { 60 Renderer[] rendererComponents = GetComponentsInChildren<Renderer>(); 61 62 // Enable rendering: 63 foreach (Renderer component in rendererComponents) { 64 if (!component.name.Contains("ここを使用するマーカー名に変更する")) 65 { 66 component.enabled = true; 67 } 68 } 69 70 Debug.Log("Trackable " + mTrackableBehaviour.TrackableName + " found"); 71 }
先ほど「MultiTarget」にドラッグ&ドロップした、「Occlusion Management Event Handler」をダブルクリックして開いてください。64行目にある「if(!component.name.Contains(」に続く部分を今回使用したマーカー名に変更します。
これで今回設定したターゲットが透過するはずです。実行してみます。
透過されました。「MultiTarget」なので、どの面から見ても透過されていることが確認できます。
Copyright © ITmedia, Inc. All Rights Reserved.