Introduction
AR_FukuokaでTangoを扱える機会があったので、
早速応募して使ってきた。
最近アウトプットが少ないと思っていたので、超絶タイミングが良い。
AR_Fukuoka最高。
尚、この記事の内容は、
AR_Fukuokaで行われたハンズオンの内容をそのまま記載してます。
興味がある方は是非AR_Fukuokaへ!!
Tangoを使ってやる事
Unityを使って、タップした所に3Dモデルを置くアプリを作る。
Environment
- Phab2 Pro
- Windows 10
- Android SDK
- JDK 1.8.0_121
- Unity 5.5
手順
事前準備
-
ココからUnity用のSDKをダウンロードする。
- Unityを起動し、新規プロジェクトを作成する。
- Window->AssetStoreを開き表示させるモデルをダウンロード後、Import。
- AssetsのModelをHierarchyへドラッグ&ドロップしてモデルが使える事を確認する。
- Assets->Import Package->Custom PackageからTango SDKをImportする。
今回使ったのはカイル君
まずはTangoSDKに触る
- Assets内のTangoPrefabsからTangoManagerを見つけて、Hierarchyにドラッグ&ドロップする。
- 既存のカメラを削除する。
- Assets内のTangoPrefabsからTango Simple Cameraを見つけてHierarchyへドラッグ&ドロップする。
- File->Build Settingsを開き環境をAndroidへ変更する。
- Build SettingsのPlayer Settingsをクリックし、Inspector上で下記設定を変更する。
- OtherSettings.BuildIdentifer : com.miyatama.tangoapp
- Default Orientation : Landscape Left
- Build Settings上でBuild And Run!!
failed to re-package resource.see the console for details
というエラーが出たら、
- Javaのバージョンを上げる
- Android SDK 24をアンインストール
ここまで来ると分かる事実。
後ろに下がらないと見えない!!
これは、Tango起動時の位置が0,0,0の座標だから。
なので、下記修正を行う
- カイル君を後ろにずらす
- HierarchyからTango Simple Camera->Tango Poseをクリックし、InspectorのTrail Rendererのチェックを外す
Tango SDK
Tango SDKで空間計測を可視化してみる
- Tango Point CloudをHierarchyへD&D
- Tango ManagerのInspectorを開き、Enable Depthのチェックを入れる。
- Tango Point CloudのInspectorを開き、下記点を変更
- MeshRendererのチェックを入れる。
- Tango Point Cloud.Update Points Meshのチェックを入れる。
- Tango Simple Camera->Gesture CameraのInspectorを開きTangoGestureCamera.DefaultCameraModeをTHERD_PERSONへ変更
ARっぽくしてみる
新規Unityプロジェクトを作成し、まずはTangoSDKに触る
の手順を終わらせた後。
- Tango Simple Cameraを削除し、Tango AR Cameraを追加する。
- Tango ManagerのInspector
- Enable Video Overlayのチェックを付ける
- File->Build SettingsからBuild And Run
無事にカイル君が浮いている事を確認したら、
今度はカイル君を地面に立たせる。
- カイル君にAdd Componentでスクリプトを追加する。
- スクリプト名 : kylebehavia
- Assetsのkylebehaviaをダブルクリックしてスクリプトを編集する。
kylebehavia
using System.Collection
using System.Collection.Generic;
using UnityEngine;
using Tango;
public class kylebehavia : MonoBehavior {
public TangoPointCloud pointCloud;
void Start(){}
void Update(){
if (Input.touchCount > 0){
Touch t = Input.getTouch(0);
TouchPhase p = t.phase;
if ( p == TouchPhase.Began){
StartCoroutine(FindPlane(t.position));
}
}
}
private IEnumerator FindPlane(Vector2 touchPosition){
Camera cam = Camera.main;
Vector3 pos;
Plane plane;
if ( !pointCloud.FindPlane(cam, touchPosition, out pos, out plane)){
yield break;
}
transform.position = pos;
transform.forward = new Vector3(
cam.transform.position.x - transform.position.x,
0,
cam.transform.position.z - transform.position.z).normalized;
}
}
- カイル君のInspectorにPoint CloudをD&Dで設定する。
- File->build settingsからbuild and runをクリック!!
以上です。
お疲れさまでした!!
修正履歴
2017/02/26
AR_Fukuokaで本内容をご教授いただいた方から"AR Cameraを追加する手順が抜けている"
と、ご指摘を頂く。
恥ずかしいので、こそっと加筆する。