ARあるある言いたい

VR・ARについて書いていきます

ADF(Area Description File)の取得方法

AreaLearningとは

TangoにはArea Learningという機能があり、デバイスを持って周囲を撮影しながらウロウロしていると、デバイスがその場所を覚えてくれます。これはどういうことかというと、現実空間に置いた3Dオブジェクトの場所をセーブ/ロードできる、ということです。 例えばAreaLearningしながらナビゲーション用の3Dオブジェクトとかを配置しておくと、その後はその場所でいつでもナビゲーションを高精度で復元できるようになります。

(まだArea Learningを触ったことのない方は、Tango SDK for Unityに含まれているAreaLearningシーンをビルドして実際に試してみるのが良いでしょう。操作方法についてはここでは割愛します。)

やりたいこと

こうなってくると次はセーブデータを他のユーザーと共有したくなりますよね?Tangoでは、この覚えた場所の情報をADF(Area Description File)と呼んでいます。素直に考えるとADFはArea Learningを行った端末のどこかのディレクトリ以下に置いてあって、それをコピペとかすればいいような気がします。しかしファイルエクスプローラーを使っても公式ドキュメントを探しても、ADFの具体的なファイルパスは見つかりません。

解決方法

どうやらADFは、ファイルパス指定の方法ではアクセスできない形で、同一端末においてアプリケーションの区別なくまとめて保管されているようです。

ではどうやってADFを取得すれば良いのか?SDKで用意されているExportToFile(string filePath)メソッドを使用します。

使い方は以下の通りです。

AreaDescription[] ads = AreaDescription.GetList(); // 端末内の全ADFの情報を配列に呼び出し
AreaDescription m_areaDescription = ads[0]; // 簡単化のため先頭のADFを取得対象にする
m_areaDescription.ExportToFile(Application.persistentDataPath); // 引数は任意のパスを指定可能

これで指定したパスにADFが出力されます。ちなみにADFはバイナリファイルで、Tango端末内でしか扱うことができません。Tango端末でスキャンした部屋とか物体をメッシュにしてobjファイルとかで扱いたい、という場合はTango SDK for Unity内にあるExperimentalMeshBuilderWithColorシーンなどが参考になるかもしれません。

参考 Tango.AreaDescription Class Reference  |  Tango Unity SDK  |  Google Developers

ノンデザイナーズ・デザインブック(とりあえず)読了

ノンデザイナーズ・デザインブック [第4版]

ノンデザイナーズ・デザインブック [第4版]

とりあえずざーっと一周。いくつかクイズとか実習が用意されていて、ちゃんとやろうとするともう少し時間が必要かも。

実習については「このデザインの何が問題かを言葉にして説明してください」とかがいくつかある。著者は「言葉にすることで現状や問題を捉えて、それから征服が可能になる」と考えているらしく、それは自分も納得するところなので一度しっかりやっておきたいですね。

それをやったとしても、実際にイチから自分でデザインしようとしたときは手こずることになるのだろうけど。

デザインの本ということで、kindleよりも紙の方がレイアウトこなれてたりして良いかも、と思って紙の本買ったんだけどべつにどっちでもよかったかな。

HoloLensがうちに来てから1か月が経ちました

なかなかブログ書くことに慣れなくて時間が空いてしまった。当初、HoloLens関連記事はタイトルに日数を含めるつもりでいたのだが、HoloLensがうちに来たのは発送日翌日の1/20金曜日で、公式の発売日である1/18とはズレがある。HoloLens予約開始と同時に購入したのに記事タイトルに書く日数が発売日とずれることは、なんとももどかしいところ。なので今回は一か月とお茶を濁した。このタイトル形式は無理があるかもしれない。いつかしれっと変えるかもしれない。


間が空いてしまっていろいろあったが、twitterを見ながらつらつら振り返っていこう。


初のARみたいな。


HoloLensを普段使いするための環境を整える。

ここで言っている「ダッシュボードアプリ」というのは、時計とか天気情報とかスケジュールとかをまとめて表示するアプリのことです。ダッシュボードっていうのはmacの機能の名前だったそうで、不適切だった。なんて言うべきか…。ともかく、そういう環境が欲しいわけです。基本的な情報を、常に大きく壁に貼っておきたい。twitterも常時表示しておきたい。

いろいろストアアプリから探したんですが、まず情報をまとめて表示させるものは無さそう。なので1つずつアプリを起動して並べておくことにしたんだけど、ちょうどいい塩梅のものがなく。まず前提として、HoloLensはアプリを起動したらまずそのアプリのホロ(ウィンドウのこと)を空間や壁に設置して、それに対して操作を行う、という流れなんですね。で、このとき同じアプリを複数ウィンドウで立ち上げると、その表示は同期してしまうのです。これがいろいろなところでネックになりました。

まず、時計は日本の時間と知り合いのいるベルリンの時間を一緒に表示させておきたかったんですが、同時に表示できるアプリは「」くらいしか見つからず、デザインはあまり気に入らなくて微妙だなー思いながらもこれを使うことにしました。

次に天気だけ表示する、というのは無かったので、時計アプリの「」で代用。普段使いの時計は「」で、ちょっと気取ってにベルリンの時間を見ようってときは「」としました。

次にメールとカレンダーは、「Outlook Calendar & Mail」。これはメールとカレンダーで別アプリなので同時に表示させておくことができます。問題はカレンダーで、予定を一望できる一か月表示と、予定の時間まで確認できる一週間表示を一緒に出しておきたかったんですけど、これが上記の「同じアプリを複数ウィンドウで立ち上げると、その表示は同期してしまう」に引っかかってしまいました。二つ立ち上げることはできても両方が同じ表示形式になってしまうんですよね。なのでこれは未解決となりました。

それで完成したのがこれ。

www.youtube.com

いろいろ直していかないとね。


それから、Tokyo HoloLens Meetupがあって遊びに行きました。こういうイベントは初めてだったので雰囲気が知れてよかった。よーし、頑張るぞー。


今は作りたいアプリがあるのでHoloAcademyで勉強しながらボチボチやってます。並行してPhab2Proとも遊んでます。そっちも何か書きたいネ。

Hololensがうちに来てから5日が経ちました

楽譜を表示してピアノを弾いてみる。

とりあえずはページの分だけwindowを出して並べただけ。距離の調整が難しかった。そして実際に演奏してみると、演奏中は結構頭の動きと目線の動きが激しくて、このままだと実用は難しい。 視線追従してくれた方が良いのだろうか。というかわざわざ現実の譜面立てと同じような場所に置く必要はないのだから、半透明にして鍵盤の上に出してしまうなど、もっとhololensファーストな考えをした方が良いのかもしれない。

やはり曲に合わせた自動譜めくりも欲しい。というか譜めくりというより、目の位置は固定で曲に合わせて楽譜が右から左に、下から上にスルスル流れていくのがベストなのかもしれない。 色々試してみたい。取り急ぎは

  • PDFリーダーのアプリを探す
  • “Next"などでページめくりできるかどうか
  • 半透明表示
  • 手元に合わせて表示させるなど、hololensファーストの考えで

この辺りを試していきたい。


音声操作はちょっと慣れてきた。"select"の打率上昇。"adjust"もちょっと難しい。"done"がかなり難しい。


hololensの装着もこなれてきた。オーバーヘッドストラップを広い方から4,5つ目の穴で閉めて、ヘッドバンドもきつめ、若干上向きで、長い方のノーズパッドつけるとかなり良い感じになった。しかしノーズパッドは鼻の骨に負担がかかって疲れる…メガネが少し大きいというのも問題なのかも。


それと開発環境構築。 Tokyo Hololens Meetup に向けてこのページを見ながら準備中。

www.naturalsoftware.jp

確かに時間がかかる。Unityを最新版にしてVisual Studioも設定。さて、Visual Studioからアプリをhololens上にビルド…というところで詰まる。

本来はここでvisual studioから「hololensとペアリングのためのPINを入力してくれ」といったポップアップが出るっぽいんだが出ない。対処法がわからず、無視しても先に進めないので良くわからないがとりあえず言われるままにwindows phoneのemulator入れてみるも解決せず。無駄なものを入れてしまった…。

hololensのsettingsを探してみる。すると今のOSは最新版じゃないという表示があったのでアップデート、しようとしたんだが充電してくれ、とのこと。充電しながらアップデート。この辺で変な操作してしまったのか、なんとアップデート後の再起動でこける。時間がかかるのかなと思ってそのまま充電して出社してみたものの、帰ってきても起動中?の「Hello」のまま。

仕方ないので電源ボタンを長押し。10秒くらいで電源が落ちたので少し(30秒以上)待って起動。なんとか無事立ち上がった、よかった…

それでもvisual sudioからのアプリのビルドはwindows phoneを探しに行ってしまうので、他にできることはないか探す。Device Portalに接続してみよう。 デバイスポータルは、PCのブラウザ越しにHololensの状態を見たり操作を行ったりできる仕組みですね。

msdn.microsoft.com UnityでHoloLensアプリケーション開発Tips | develog.holo

ここでも問題発生。ネットワーク経由でデバイスポータルにアクセスできない! 仕方ないのでUSB接続して http://127.0.0.1:10080 にアクセスすると、今度はちゃんと行けました。

ユーザIDとパスワードを設定して、ログイン。色々見て、wifiで接続できなかった問題を解決。

僕がよく使うwifiのアクセスポイントは家のmacの「インターネット共有」かスマホテザリングの2種類があって、これが混乱の元だったようだ。 今度はwifiでデバイスポータルに接続できた。

改めてVisual Studioでアプリのビルド。今度はhololensを探しに行ってくれた!PINを聞かれたので、上記のmeetup用資料に書かれた方法でPINを取得して入力。アプリが起動した!

おやすみ!

Hololens買いました

Hololens日本発売めでたいですな。 買いました。昨日は疲労のあまり寝てしまったのですが起きたら中村薫さんが「hololens瞬殺」とツイートしてまして。

朝風呂入りながらあまりにへこんでしまいまして。「ああ、おれってこんなにホロのこと好きだったんだ」と気づかされました。俺の人生はこんなのばっかりだ。 で、風呂入ったら復活していたそうで。

もう迷うことはない。速攻買いました。

f:id:mojo_nobu:20161202155015p:plain

今日のARあるある - デバイスを買うだけで人生の大切なことを教えてくれる。