Complete Virtual Reality and Augmented Reality Development with Unity
10章: What AR is and How to Get Set up
Setting up Vuforia
- Vuforia にreigster(登録)する。
Register
- License Keyを発行する。本にしたがって LicenseKey の名前は VuforiaIntro とした。
License Key
- Unity Hapから Unity2019.1.系列をインストールする。
Vuforia Augmented Reality Support, iOS Build Support パッケージのインストールも忘れないこと。
- Unity2019.1系列を起動して、新しいProjectを生成する。本にしたがってプロジェクト名は VuroriaIntro
- Vuforia関係のitemを見る。GameObject → Vuforia → items
- AR Camera ... 2つのscriptが付属している。VuforiaBehavior, DefaultInitializationErrorHander
- Image ... trackable object を追加するためのもの。
- Multi Image ... multiple trackable objects を追加するためのもの。
- Cylindrical Image ... 円筒状の物体にImageを貼り付けるためのanchor
- VuMark ... custom barcode。AR targetとして使用できる。
- Cloud Provider ... クラウド・データベースへのリンク。
- Cloud Image Target ... Coud Providerのデータベースからtrackable objectを追加するためのもの。
- Cloud Image Builder ... データベースに記憶されている target imageを使うため。
- Camera Image Target ... 自分で定義したtarget image を使うためのanchor。
- Vuforia関係のitemを見る。Component → AR → Scripts →Vuforia
sceneの中にGameObjectがあって、toolbarからコンポーネントを追加する。
World Anchor, Tracked Pose Driver, Spatial Mapping Collider, Spatial Mapping Renderer が使用できる。
Setting up ARToolkit
Setting up ARCore
Setting up ARKit
- MacOS で ARKit をインストールするには2つの方法が
ある。あった。現在は1つのみ。
- Unity Hub から Unity2019.1 系列の新しいプロジェクトを生成する。プロジェクト名は本にしたがって ARKitTutorial 。
- Bitbucket からダウンロードしたUnity-ARKit-plugin のzipファイルを展開する。
展開ファイルの中の
Unity-Technologies-unity-arkit-plugin-XXXX/Assets/UnityARKitPlugin/Plugins/iOS/UnityARKit/ の下のファイル群は以下の通り。
(これらのファイルは本来は プロジェクト名/Assets/Plugins/iOS/UnityARKit/ として配置されるようだ。)
- NativeInterface/ARsessionNative.mm --- ARKit SDK の実際のinterfaceである Objective-C コード
- NativeInterface/UnityARSessionNativeInterface.cs --- ARKit のnative coce に対応する scripting API.
- NativeInterface/AR*.cs --- ARKitのデータ構造。
- Utility/UnityARAnchorManager.cs --- ARKit から更新される anchor をtrackするためのscript。それぞれに対応する Unity のGameObjectを生成することができる
- Editor/UnityARBuildPostprocessor.cs --- iOS でbuildされるときに動くscript。
- UnityARCameraManager.cs --- カメラの参照となる、scene中に配置されるGameObjectに付加されるべき component。ARKit Sessionによって初期化される。
- UnityARVideo.cs --- cameraに付加されるべき component で、レンダリングされるべきビデオ画像を掴んでいる。
- UnityARUserAnchorComponent.cs --- GameObjectの生成サイクルに基いて、ARKitからのAnchorsをaddしたりremoveしたりする component。
- "Hello World" example をbuildする前に、UnityARKitScene.unity を iOS 向けに build しておく必要がある。
- UnityARKitScene は他のexample project にもpluginに含まれていたりするけれども、我々は UnityARKitScene をまず最初にコンパイルすることにする。
- Unity-Technologies/Assets/ の下にある UnityARKitPlugin を自分のプロジェクトの下の ARKitTutorial/Assets/にコピーする。
- UnityARKitPlugin/
- ARKitRemote ---
- Examples ---
- Plugins ---
- iOS/UnityARKit/NativeInterface/
- iOS/UnityARKit/Helpers/
- iOS/UnityARKit/Shaders/
- Resources ---
- ARKitの Hello World を Build する。
- UnityARKitScene シーンを開く。
File → Open Scene → Assets → UnityARKitPlugin → Examples → UnityARKitScent → UnityARKitScene.unity → Open
- iOS用にBuildする。
File → Build Settings ... → Platform: iOS を選択して → Development Build にチェックを入れて → Switch Platform
- buildするsceneを選択する。
Build Settings ウィンドウの "Scenes In Build" で "Add Open Scenes" をクリックして UnityARKitScene を選択する。
- Player Settings... を変更する
Identification までスクロールして、以下のように設定する。
Bundle Identifier: com.unity.ARKitHelloTutorial
Version: 0.1
Build: 10.1
Automatically Sign: チェックをつける
Automatic Signing Team ID: 空白のまま
- Build Settings ウィンドウの Build ボタンをクリックして、Build する。生成する Xcode のプロジェクトのフォルダは外に置いた方がよい。
Xcodeのプロジェクト名は ARKitTutorial_UnityARKitScene とした。
- 生成された Xcode のプロジェクトのフォルダの中の .xcodeproj 拡張子を持つファイルを Xcode で開く。
- Xcode のウィンドウの左にある ファイル一覧からトップレベルのプロジェクト ARKitTutorial_UnityARKitScene を選択して、
General → Identity タブを調べる。
- Xcode のウィンドウの左にある ファイル一覧からトップレベルのプロジェクト ARKitTutorial_UnityARKitScene を選択して、
Signing を設定する。
Team に 自分のPersonal Team を選択する。
- 「Deployment Info を設定する」と本には書いてあるが、自分はやらずに、デフォルトのまま。
Deployment Target: 「11.2 に変更する」とのことだが特に設定を変更せずに、デフォルトのまま。
Device は「iPhone only にする」とのことだが、私はiPadも有効にしたままにする。
Main Interface: 「LaunchScreen-iPhone.xib とする」とのことだが、空白のままにしておく。
Main Interface: 「LaunchScreen-iPhone.xib 」に変更してみた。 → 実行画面かわらず。(2019/Dec/02)
- 「Architectures を設定する」と本には書いてあるが、自分はやらずに、デフォルトのまま。
- 実機をつないで、実行する。
- unity2019.1.4f1 で作成したプロジェクトと、iPhone用に生成した xcodeのプロジェクトは以下の通り。
Unityのプロジェクト: ARKitTutorial.zip
Xcoddeのプロジェクト: ARKitTutorial_UnityARKitScene.zip
- 他のシーンを試す。Examples/UnityParticlePainter/UnityParticlePainter.unity → 何か動くがよくわからない。
- 他のシーンを試す。Examples/UnityFaceTracking/FaceAnchorScene.unity → iPad (iOS 13)では SIGABRT
- 他のシーンを試す。Examples/UnityFaceTracking/AddRemoveAnchorScene.unity → iPad (iOS 13)では SIGABRT
- Unity ARKit Remote を使う
- UnityARKitRemote/UnityARKitRemote.unity シーンをiOS用にコンパイルして、実機に送りこむ。
- 実機で UnityARKitRemote プログラムを動作させる。
- UnityARKitRemote/EditorTestScene.unity シーンをunityで動作させる。unity のconsoleにあるメニューで"Editor"となっている部分がポップアップメニューになっているはずなので、iOS実機を指定する。
- unity側で "Start Remote ARKit Session" が表示されたらタップする。 → iPad (iOS 13)では iOS側のプログラムが落ちる。
Yoshihisa Nitta
http://nw.tsuda.ac.jp/