CrossRoadスマートフォン用の表示で見るCrossRoadAR、MR、VR、Babylon.jsを中心とした技術ブログ。センサ、デバイスHoloLensやTangoなど、最近のデバイスは空間認識機能に関するものが増えています。Sensor」を試してみました。概要はこちらにまとめられてますのでご確認ください。PointCloudConsortiumだいたいの内容はすでに皆さんが書かれているので、今回はUnityでアプリを作る方法を紹介したいと思います。Program」をクリックします。個人利用か企業での利用かを選択し名前とメールアドレスを入力します。入力するとURLがメールで届きます。ページにあるダウンロードの部分をクリックすると、SDK一式をダウンロードできます。packageが入っています。ここではUnity側について解説します。UnityのSDKは2種類あります。Sensorを使って、対象物のメッシュデータを取得し、UnityのCollisionを使ってGameobjectとの衝突判定をさせる機能です。Sensorのカメラでキャプチャした画像のフレーム単位の変化から、実空間の移動をUnity空間にマッチングさせる機能です。アプリ開発には以下の環境を準備する必要があります。()は、私の動作環境です。packageは排他的なので、別々のUnityプロジェクトで開発する必要があります。StructureUnityAR.unitypackageをインポートした後、StructureUnityUBT.unitypackageを同じUnityプロジェクトにインポートすると、このようなエラーがでます。概要まずはダウンロードしたSDKから、StructureUnityAR.unitypackageをインポートします。インポートすると、3種類のサンプルシーンがあります。これをベースに開発するのがよいです。BallPhysics空間のメッシュを取得して、"DropBall"ボタンをタップすると、たくさんボールが落ちてきます。メッシュにはColliderがついているので、ボールはメッシュに当たるとバウンドします。メッシュは普段見えないようになっていて、ボールがぶつかると、この画像のようにぶつかった付近だけが見えます。Hoop"ボタンをタップすると、キャラクターが出てきます。キャラクターをタップして、星形のオブジェクトまで連れて行けばよいようです。Simple空間のメッシュを取得してカメラプレビューに重ねて表示します。これが基本のサンプルです。文字がたくさんあるのは、ソフトの挙動をテキスト表示するようになっているためです。ちなみに、空間スキャンをするためには、Assets/StructureUnityAR/Sample/Simple/Scripts/SimpleObject.csの処理を使います。"Simple"の場合、ここで定義したCubeの大きさの範囲内にある物体をスキャンします。StructureUnityUBTの概要ダウンロードしたSDKから、StructureUnityUBT.unitypackageをインポートします。インポートすると、5種類のサンプルシーンがあります。Example、Barehouse、Stackerの違いはよくわかりませんでした。ここでは、Example、MotionLoggingEnabled、SanFranciscoApartmentの3つを解説します。Sensorを装着したiOSデバイスを持って歩き回ると、画面上のUnity空間が歩行量に合わせて移動します。MotionLoggingEnabled歩いた軌跡をUnity空間に保存する機能です。Pathボタンをタップします。Recordingをタップするまでの歩いた軌跡がUnity空間で保存されます。Pathをタップすると、保存した軌跡に合わせて、カメラオブジェクトが動きます。EditorだけでExampleの雰囲気を体感するものです。WASDキーでシーン内を移動できます。Unityに慣れてない人向けです。UBT機能を使うために、いくつかのPrefabが準備されています。STPlayerトラッキングさせるための機能が入ったPrefabです。Viewにドラッグしておきます。StructureStatusUIUI関係の機能が入っています。Viewにドラッグしておくと、debugログや、uGUIのテキスト表示、バッテリー状態の表示ができます。MotionLoggingEnabledで使った、モーションパスを保存し、iTunes経由で取り出すこともできるようです。MiniMapCanvasSTPlayerの動いた量を地図で表示します。BarebonesPlayerすいません、これはちょっとわかりませんでした。HoloLensの空間スキャンのような描画を作ってみるHoloLensには、一定時間で空間をスキャンするとき、アニメーション付きでメッシュが生成されます。自動的にメッシュ生成のアニメーションをつけるとHoloLensのようになって面白いかも、ということで、アニメーション付きメッシュの自動生成方法を調べました。StructureUnityARのunitypackgeをインポートします。Assets/StructureUnityAR/Samples/Simple/Scenesから、Simpleシーンを開きます。以下のようなスクリプトを準備します。intervalまた、AutoScanController.csをCubeにアタッチし、さらに、ActionButtonオブジェクトをAutoScanControllerコンポーネントにドラッグします。デバッグログは残りますが、これで実機を見ると、4秒おきにスキャンするアニメーションを見ることができます。補足やっていることは非常に単純で、単にSimpleアプリに実装されていたuGUIのボタンを4秒おきに押しているだけです。Simpleアプリは、以下の処理でボタンがタップされるたびに内部の状態を1ずつインクリメントしています。Teamなので、そこを利用して、ボタンタップのエミュレーション処理を入れました。ちなみに、ボタンタップのエミュレーションは下記のようなコードとuGUIのボタンがあれば再現できます。この場合、キーボードのEをクリックすると、ボタンタップに合わせた動きをします。PlatformをiOSに変更します。・実機転送に失敗する・実機転送は成功するが、アプリが起動しない・アプリは起動するが何も動かないのどれかになります。わかるまで少し時間がかかりました。