Unityに関連する記事です

 AR Camera による平面感知機能と、感知した部分をタップすることで、そこにオブジェクトを生成して表示する機能を実装します。


実行動画 エディター
動画ファイルへのリンク


 以下の内容で順番に実装を進めていきます。



手順5 ーAR Camera による平面の感知機能とオブジェクトの生成機能の実装ー

 新しい学習内容は、以下の通りです。

 ・AR Camera による平面感知



1.設計


 この手順では ARCamera で平面感知した部分をグラフィカルに表示し、タップすることにより、
タップした位置にプレハブのゲームオブジェクトを生成する機能を追加します。


1つずつ、処理を積み重ねてゲームを作っていきますが、全体としての目標も念頭に置いておくと、
現在の手順で出来ることと、次の手順で行うことへの理解度が深まり、作っていくイメージがわきやすくなります。


2.AR Session Origin ゲームオブジェクトを修正する


 平面感知に関係するコンポーネント(用意されているスクリプト)を新しく2つアタッチします。
AR テンプレートを利用している場合、最初から AR Session Origin にこれらがアタッチされていますので、スキップしてください



 AR テンプレートを利用していない場合、AR Session Origin ゲームオブジェクトのインスペクターの一番下にある Add Component ボタンを押して、
AR Plane Manager コンポーネントAR Raycast Manager コンポーネントの2つを追加してください。


インスペクター画像(AR テンプレートを利用していない場合)



インスペクター画像(AR テンプレートを利用している場合)



 追加だけすれば、他の設定は不要です。

 以上で完了です。


3.平面感知をした際に生成するゲームオブジェクトを作成し、プレハブにする


 ARCamera が平面感知をした際、どの平面を感知しているのを表示するためのゲームオブジェクトを作成し、プレハブにします。
 
この手順は AR テンプレートを利用している場合、スキップしてください。すでに下記のフォルダに必要なプレハブが用意されています。


フォルダ




 ヒエラルキーの空いている場所で右クリックをしてメニューを開き、XR => AR Default Plane を選択します。
名前もそのままで構いませんし、AR Plane のように変更しても構いません。


ヒエラルキー画像



インスペクター画像



 この AR Default Plane ゲームオブジェクトをそのままプレハブにします
プレハブにしたら、ヒエラルキーより削除します。


Prefabs フォルダ




4.AR Session Origin ゲームオブジェクトの設定を行う


 先ほど作成した AR Default Plane ゲームオブジェクトのプレハブを、AR Session Origin ゲームオブジェクト内に設定します。

 AR Session Origin ゲームオブジェクトのインスペクターを確認し、アタッチされている AR Plane Manager スクリプトの Plane Prefab 変数に、
プレハブになっている AR Default Plane ゲームオブジェクトをドラッグアンドドロップしてアサインしてください。

 なおこの手順も AR テンプレートを利用している場合には、最初からアサインされていため、スキップできます

 この設定を行うことにより、AR Camera が平面を感知すると、その地点に AR Default Plane ゲームオブジェクトを生成してくれるようになります。
また、感知範囲に合わせて、サイズを自動的に変更してくれます。 


インスペクター画像(AR テンプレートを利用していない場合)



インスペクター画像(AR テンプレートを利用している場合)



 以上で設定は完了です。


5.ARTextureManager スクリプトを作成する


 平面感知の機能を実装するためのスクリプトを作成します。ARGameMangaer という名称で作成されることもあります。
なお、この書き方がすべてではありません。
内容的には同じ処理であっても書式は異なりますので、色々なサイトを確認してみてください。

 今回は、このスクリプト内で平面感知の処理を行い、感知した部分に AR Default Plane プレハブを生成して
感知した部分を ARCamera 内にグラフィカルに表示します。

 そしてその感知部分をタップした際に、前回の手順で作成している TextureGenerator スクリプト内の
GenerateTextureImage メソッドの処理を実行して、AR 空間内に TextureView ゲームオブジェクトを生成します。

 デバッグについては、エディター用には Debug.Log メソッドを利用して Console ビューにログを表示し、
AR 用には LogDebugger.instance.DisplayLog メソッド を利用して Text コンポーネントにログを表示するようにしましょう。


ARTextureManager .cs

<= クリックすると開きます。


 スクリプトを作成したらセーブします。


6.AR Session Origin ゲームオブジェクトに ARTextureManager をアタッチして設定を行う


 AR Session Origin ゲームオブジェクトに、ARTextureManager スクリプトをドラッグアンドドロップしてアタッチします。

 インスペクターを確認し、アタッチされていることを視認してください。


インスペクター画像(AR テンプレートを利用していない場合)



インスペクター画像(AR テンプレートを利用している場合)



 以上で完成です。


7.ゲームを実行して動作を確認する


 ここでもエディターと実機の双方でデバッグを行います。

 エディターの場合、クリックのみを判定しているため、どの位置でクリックしても原点地点(0, 0, 0)に TextureView ゲームオブジェクトが生成されれば制御成功です。
再度クリックしても同じ位置に移動します。(そのため画面上の移動はありません。)


実行動画 エディター
動画ファイルへのリンク




 エディターでの制御が問題なければ、ビルドを行い、実機にてテストを行います。

 カメラを床やテーブルなどに向けて動かしてみてください。
平面感知に成功すると、その地点に AR Default Plane ゲームオブジェクトが生成されて、範囲が自動的に調整されます。

 平面感知している部分をタップすることで、画像の添付された TextureView ゲームオブジェクトが生成されれば制御成功です。
生成後には、再度タップした場合、新しいゲームオブジェクトは生成されず、すでに生成されているものが移動すれば、こちらも制御成功です。



 以上でこの手順は終了です。

 => 次は 発展1 AR空間にリストから選択した画像のオブジェクトを生成する です。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます