気ままにI/O

プログラムとかものづくりのインプット・アウトプットのためのブログ。

HoloLensアプリのリリース日設定を間違って購入できなくなってた

起きたこと

先日、はじめてのHoloLensアプリをストアで公開しました。

kzonag.hatenablog.com

 

有料で7日間の無料試用版が使える設定にしてリリースしたところ、上記事にチラッと書いた通り試用版をDLした後に有料版購入の導線がありませんでした。

試用期限が終わったときにストアに誘導されるのかなーと思って数日放置していたところ、

 

ということになり、一度試用期限が切れると購入も再DLもできない状態になってしまいました。

 

 原因

サポートに問い合わせてみたところ、リリース日の設定が未来に設定されているためだという回答を頂きました。

HoloLensアプリを申請する際いくつか日程を設定できるのですが、今回は下記の項目を設定していました。(画像は現在の正しい設定)

 

f:id:k_nagamine:20180514125910p:plain

 

 

f:id:k_nagamine:20180514130633p:plain

 

f:id:k_nagamine:20180514130731p:plain

 

このうち、「スケジュール」というのがストアで購入可能になる日程の設定のようで、ここに間違って未来の日程を入れてしまっていました。

「申請を送信して公開する」ですぐに公開する設定にしていても、「スケジュール」で日程が指定されているとそちらが優先されるようです。

さらに今回わかりづらかったのは、「無料試用版」を「できるだけ早く公開」にしており、試用版のDLだけはできるようになっていたことです。

これにより、問題なくリリースされたと勘違いしてしまいました。

 

解決方法

「スケジュール」のリリース設定を「できるだけ早く」に変更してもう一度申請したところ、購入できるようになりました。

無料試用版をインストールした状態でストアを見ると下画像のようになっています。

また、検索可能になるのもリリース日設定が使われるようで、今回の問題を解決したと同時に検索でも出てくるようになりました。

 

f:id:k_nagamine:20180514132804j:plain

 

参考ページなど

日程等の設定についてはこのあたりに書いてます。

アプリの価格と使用可能状況の設定 - UWP app developer | Microsoft Docs

 

無料試用版の挙動についてはここに書いてました。

アプリの試用版の実装 - UWP app developer | Microsoft Docs

 

試用期限が切れた場合は

ユーザーがアプリを起動する前に試用ライセンスが期限切れになった場合、アプリは起動しません。 ユーザーには、ストアからそのアプリを購入できることを伝えるダイアログ ボックスが表示されます。

とあります。今回の場合はアプリが起動しないだけで、ダイアログは出ませんでした。 

正しくリリースされて購入できる状態になっているとダイアログが出るのかなと予想しています。

 

まとめ

購入できない状態になっていた原因と解決策でした。

先行して申請しておいて良きタイミングで手動で公開する、みたいなことはモバイルアプリでもやったりするんですが、Windowストアアプリは項目が多いので設定漏れがないように注意する必要がありそうです。

試用期間が切れてアプリが起動しない&ストア誘導も無しだと、そのままアプリ削除&「起動しません」でレビューされそうで、かなり怖いなと思いました。

今後は気をつけます!

 

 

HoloLensアプリ『Boxello』 をリリースしました

※購入できない状態になっていた件について追記しました(2018/5/14)

はじめてのHoloLensアプリをリリースしました!

www.microsoft.com

5/2の時点では検索で出てこないので、リンクから飛んでみてください。

200円の有料アプリにしていますが、7日間の試用期間を設けてみたので、とりあえず試してみて気に入ったら購入してもらえると嬉しいです。(Vuforiaの有料ライセンスを使っているのでその費用が回収できると嬉しい)

ちなみに自分でも試用期間ということでDLしてみたんですが、そのあと購入ボタンが出るとかじゃないんですね。試用期間が終わった状態でアプリ開くとストアに飛ばされるとかなんでしょうか?

 

(追記)

リリース設定に不備があり購入できない状態になっていました。修正して現在は試用版インストールしてそのまま購入もできます。

詳しくは下記事にて。

HoloLensアプリのリリース日設定を間違って購入できなくなってた - 気ままにI/O

 

動画

youtu.be

このアプリはMicrosoft HoloLens アプリケーションコンテストに向けて制作したアプリです。コンテストに概要紹介動画が必要だったのでPV風に作ってみました。

 

アプリ概要

オセロの盤面を立体にしたゲームです。相手を挟んで自分の色にするのはオセロと一緒です。

ポイントは、立方体をマスに分割した構造になっていて、辺・角のマスが複数の面に属している点です。これにより面をまたいで相手を挟むことができ、グルっと一周挟んで裏返すようなこともできます。

盤面のサイズは4・6・8・10の4段階で選択できます。10にするとマジで終わらないので初めは4からプレイすることをお勧めします。

プレイ人数も2~4人まで設定できます。アタック25のパネルのイメージに近いですかね。

そしてココが肝ですが、ローカルなWi-Fi通信でのマルチプレイに対応しており最大4人対戦できます!実装的にはUNETでコマンドとRpcあたりを使って状態を同期しています。

実は3人以上でプレイするときの問題が申請後に発覚し、公開前に一度アップデートをかけています。そのためバージョンが1.0.1.0。アプリコンテストのほうは修正前の状態になってしまったので無念です、、、

ここまでは動画で説明してるポイントですが、動画に入ってないところも紹介しておきます。

日本語・英語の2ヵ国語対応

f:id:k_nagamine:20180502121043p:plain

GoogleスプレッドシートでIDと日本語・英語を入力してUnityのエディタ拡張でアクセスしてScriptableObjectを作るようなことをしてます。インスペクターでIDを設定すれば対応するテキストが言語設定に応じてセットされるような仕組みにしてます。

マーカー・ジェスチャーでのボックスの配置

アプリを起動すると最初にボックスを配置するフローが始まります。

その際の配置方法としてARマーカーを使う方法と、ジェスチャー操作で配置する方法の2通りを用意しました。

1人でプレイする分にはジェスチャーで適当に配置すれば良いですが、マルチプレイの場合にはボックスの位置と向きを合わせる必要があります。(この位置がアンカーになるため)

このときにARマーカーがあれば簡単に位置を揃えることができます。

ちなみにマーカーはここからDLできます。 A4サイズで印刷して使ってください。

https://drive.google.com/open?id=15rOsP_qIxzHm-caf0JvgKQI0sdFhAa2b 

f:id:k_nagamine:20180502122321p:plain

ジェスチャーの場合はナビゲーション操作で回転させる

 

制作の意図・経緯

ARが一般的になった世界で遊ばれるカジュアルゲームをイメージして作っています。

元々はモバイルのARKitやARCore向けのアプリとして考えて作り始めました。というかだいたい遊べるところまではモバイル向けに作ってました。

もちろんHoloLens版も想定していたので、この時点でマルチプラットフォームで動かせるVuforia、UNETを使って作っています。

ベースができたところでHoloLensのアプリコンテストが近づいてきたので、先にHoloLens版から作ることにしたかんじです。

 

今後の展開

というわけで、モバイル版も公開したいなと思っています。モバイル版はできるだけたくさんの人にARに触れてもらうべく、基本無料にしたい。

機能的にもまだ入れられていないものがあるので、HoloLens版もアップデートする予定です。

 

 

Mixed Reality 250の動かし方メモ

追記(2017/9/14)

Unity2017.2.0b11がリリースされ、HoloLensで動作しない問題が解消されているみたいなので、これから試す人はb11をゲットするのが良さそうです。

 

 

 

はじめに

AcerWindows Mixed Reality Headset が届いたのでHoloLensとの組み合わせを試してみようとチュートリアルをやってみました。

開発環境もベータ版で動かすのにいろいろ苦労したので、最終的な環境や手順について書いておきます。

 

f:id:k_nagamine:20170905152136j:plain

注意

2017/9/5の時点で書いています。

今後のアップデートによってはこの記事の手順では動作しない可能性があります。

また、いろいろ試してみた結果なので、これ以外のバージョンでも動作する、この手順は実は不要だ、などなどあるかもしれません。

 

試してみたチュートリアル

Mixed Reality 250

HoloLensとImmersiveヘッドセット間のシェアリングコンテンツのチュートリアル

デコ氏さんが翻訳記事を書いてくれています。(5章まであります)

dhero.hatenablog.com

 

 

開発環境

PCはRazer Blade(ラップトップ)で、OSはWindows10のInsider Previewにアップデートしました。

Insider Previewにする際、どのバージョン?を取得するかの選択では「次のバージョンのWindows」「ファースト」を選択しています。

 

f:id:k_nagamine:20170905145533p:plain

 

VisualStudioのバージョンは15.2です。

Immersiveヘッドセットの開発にはUnity2017.2が必要で、現在ベータ版として提供されています。

ベータ版は現時点で2017.2.0b10までリリースされているのですが、b7以降ではHoloLensでの実機実行ができない問題があります。

そのため、b5とb8をインストールして、HoloLens向けにはb5、Immersive向けにはb8でビルドするようにしました。

ひとつのプロジェクトを複数バージョンで何度も切り替えるのが怖かったことと、後述するバージョン間でのコード修正のしやすさを考えて、それぞれプロジェクトを用意してGitで管理しています。

 

プロジェクトの準備

チュートリアルのはじめにプロジェクトファイル(.zip)を取得するためのリンクがあります。

チュートリアルはこのプロジェクトをベースに、シーンを作成してプレハブを配置していくことで進む形式となっています。

ただ、現在取得できるプロジェクトはb8向けにコードが修正されたバージョンであり、b5で開くとコンパイルエラーが発生します。

そのため、zipをダウンロードするのではなく、GitHubからプロジェクトをクローンすることにしました。

github.com

 

コミットログを見てみると「update to 2017.2b8」というログのコミットがあるので、ここでb8対応がされたことが分かります。

その直前の[485857f~]のハッシュのコミットまでプロジェクトを戻すと、b5で開いてもエラーが出ずHoloLens向けにビルドできるようになります。

ただ、コミットログをよく見るとb8対応のあとに「Fix null reference on HoloLens
」というコミットがあります。

これはHoloLens向けの修正っぽいので、b5向けに戻した[485857f~]のコミットから作成したブランチに対して、チェリーピックで修正を適用しました。

画像のようなツリーになります。

 

f:id:k_nagamine:20170905124528p:plain

 

ここまでがプロジェクトの準備です。

HoloLens向けにはb5用ブランチから、Immersive向けにはmasterブランチから、それぞれチュートリアルの内容を進めていきます。

両方で同じ作業したくないので、b5用ブランチで進めてコミットし、それをmaster側にマージして進めました。(正確にはmaster直接ではなく、masterから作成したb8用ブランチに)

 

チュートリアルを動かすための修正

プロジェクトの準備ができたらそれぞれビルドして実機で起動することができます。

しかし、チュートリアルを最後まで進めただけでは正しくコンテンツが動作しなかったため、いくつか修正した点があります。

 

CapabilitiesのInternetClientの追加

チュートリアルの準備のところに書いてありますが、UNETが使われているためUDP通信ができる状態にする必要があります。

はじめ試したときに接続がうまくいかず、UDPでの接続実験などいろいろ試して、翌日にCapabilitiesにInternetClientを追加したら接続成功しました。

ただ、これは本来必要なさそうな気がするので、たまたまそのタイミングでうまくいっただけで、自分のネットワーク環境によるものかもしれません。

 

f:id:k_nagamine:20170905145350p:plain

 

カメラのNear/FarClip設定

Immersiveで起動すると、遠景が切れたような不自然な表示になっていました。

CameraのClip設定が効かない不具合があるようで、それが原因だと思います。

以下の記事で回避方法が紹介されていたので、参考にさせていただきました。

XVI Inc. | Immersiveヘッドセット向けアプリ開発落とし穴集 (Unity 2017.2.0b10)

※現在はb10向けに記事が更新されていていました。b10ではFarClipのほうは修正されているようですね。

 

LevelControlコンポーネントの設定

実はチュートリアルのプロジェクトには各章ごとのシーンも含まれていて、完成版のシーンを確認することができます。(AppPrefabs/Support/ChapterScenes/Chapter5_Collaboration_Finale.unity)

チュートリアルに沿って自分で作成したシーンと完成版のシーンを比べると、UslandオブジェクトのLevelControlコンポーネントの設定が異なっていることに気づきました。

完成版に合わせて以下の変更をしました。

・"Parent Object"がNoneになっているのでUslandの子であるMixedRealityLandを設定

・"GiantAvatar"がPlayerAvatarになっているのをGiantCloudsプレハブに変更

 

f:id:k_nagamine:20170905145228p:plain

 

完成

以上の対応をしたところ、実機で正しく動作しているであろうところまで確認。HoloLens x 2、Immersive x 1の計3台でのシェアリングに成功し、コンテンツも最後までプレイして最初に戻り再プレイができました。

ここまで対応したリポジトリを以下に公開してます。"2017.2b5"ブランチがHoloLens向け、"2017.2b8"ブランチがImmersive向けです。

github.com

 

おわりに

InsiderPreviewの正式リリースやUnityベータのアップデートにより状況は刻々と変わっていくと思いますが、今このタイミングで試そうとしている人にとって、少しでも参考になれば幸いです。

 

「GoogleがTangoブランドをリタイアする」という記事を見て考えたARのことアレコレ

タイトルの記事はコレ。

Google retires the Tango brand as its smartphone AR ambitions move wider | TechCrunch

 

記事を見て考えたことをツイートしようと思ったけど長くなりそうだから久しぶりにブログに残しておこうと思って書く。

取り留めもなく書いたもので脈絡が無かったり推測や妄想が多分に含まれているので、読んでくれている方はご注意くださいませ。

 

さて、まずは前述の記事。

英語力が足りず正確には理解できないんだけど、Tangoは特別なハードウェアが必要でなかなか本格的な普及には至らず、AppleのARKitに追随して現状のハードウェアで使えて多くのユーザーをターゲットにできるARCoreにシフトした、みたいなことなのかなーと思って、Tangoの立ち位置がどうなるかよく分からんなーとモヤモヤ。

どうなるのかなーと思って読み返して、別の記事へのリンクがあるのに気づきそれも読んで見る。

Google shows off ARCore, its answer to Apple’s ARKit | TechCrunch

 

注目したのがココで、

“We’ve architected ARCore to be able to perceive a wide variety of sensors,” Google AR/VR head Clay Bavor told TechCrunch. “We foresee, in the future, many more phones having depth-sensing capabilities and as those come into mainstream phones, that’s great, ARCore will work seamlessly with those and benefit from the additional sensing capabilities.”

いずれはより多くの端末がデプスセンシングできるようになって、それが主流になると思ってるから、ARCoreは追加されてくるセンシング能力をうまく取り入れて使えるように設計されてるよ、みたいなことをGoogleのAR/VR部門の偉い人が言ってるぽい。

 

2つの記事を読んだまとめとしては、いずれTango的なものが主流になると思うけど、まだなかなか普及させるのは難しいから一旦Tangoを前面に出して推すのは置いといて、今のハードウェアで多くのユーザーにリーチできるARCoreという枠で進めていきますよ、Tango的なものもその枠でいずれやっていきますよ、というかんじなのかなと思った。

 

次に、そもそもARKitとARCoreでどんなことができるんだっけーというところで、どっちも試せてない上に簡単に調べた程度なのでアレだが、どちらも平面検出、光源推定、端末自身のトラッキング、あたりが主な機能なのかなという印象。

前述のARCoreの記事に載ってる写真が分かりやすくて、キャラクターの3Dモデルが現実世界の床に建っていて、現実世界と同様に影が落ちてる。

んで、これを見てパッと思ったのが、インスタ映えしそうだなーということ。

誰でも簡単に写真・動画を撮って、綺麗に加工して、投稿して、いろんな人に見てもらったり、友だちと内輪で楽しんだり、そういう楽しみ方が日常になった今の世界で活かすのに必要十分なAR、というのが、初期のARKit / ARCoreが見ているところなのかなーと勝手に納得した。(僕はそういった楽しみ方をよく分かっていないのであまりピンと来てないけど)

 

続いて技術的なところで、単純なカメラでどうやって平面推定とかしてるんだろうという疑問。これはよく分かってないけど、画像から特徴点出してそれを連続した画像間でトラッキングすることで点の空間上の位置を推定して、平面とか出してるかんじかな。デプス画像ができてるわけでは無さそうだし。あとは加速度やジャイロのデータも使ってるのかな。

iPhone7plusとかにはデュアルカメラがあってデプス画像的なものが取れるらしいんだけど、以下の記事によると、「デプスが取れる端末なら併用して精度上げる」みたいなことはしてないとの回答があったみたい。

【iOS 11】ARKitについてWWDCのラボで聞いてきたことのメモ - Over&Out その後

とはいえ、ARCoreがTango的な未来を見据えてるように、ARKitもそのうちデプス情報を使えばオクルージョンの処理とかも簡単にできるよーなところを考えてるだろうなーと予想(というか期待)している。是非なってほしい。

 

あと、これ関連の野生の男さんの下記ツイート見て、

 そういえばKudanもカメラ画像からのSLAMやってたよなーと思ってKudanのサイト見てみたら、「Kudan SLAM」なるもののリリースが出てた。

 

【リリース発表の件】空間・物体認識ソフトウェア技術「SLAM」を実用化へ AR/VRに加え自動運転、ドローン、ロボット分野へ独自技術を提供開始 -高精度(1mm-1cm)・高速/低消費(CPU5%以下)・ロバスト性に強み- | Kudan株式会社 | Kudan Inc.

 

この動画とかすごい。特徴点を空間にマッピングして点群を生成しつつ自身の位置も空間上でトラッキング。IMU使わずにカメラ画像だけでやってると。リアルタイムでできてるのかな。すごい。

 

www.youtube.com

 

画像の特徴点をマッピングしてできる点群ってどれくらいの粗さなんだろうか。

精度が上がっていったら、デプスセンサを使うのと同等の点群ができるのかな?その点群からメッシュ作ったり、オクルージョン処理することもできる?

 

というのも、AR的な世界が進むと、現実の世界にデジタル的なものが違和感なく溶け込んでいるようになる。MicrosoftのMixedRealityが見据えているのはそういう世界なんだろうなーと思っていて、HoloLensを使ってるとその第一歩が垣間見れるかんじで非常にワクワクする。

そのHoloLensの体験で衝撃なのが、高精度のトラッキングと、現実空間のメッシュ化とそれを利用したオクルージョンの処理。「そこにある/いる」感。

なので、ARKitやARCoreやKudanでも、特別センサーが付くとかデプス画像が取れるかというのはさておき、点群が取れてオクルージョンなどの処理ができるようになるとしたら、未来の世界に近づくなーと期待してしまうわけです。

 

と、いうところで、本当に取り留めのない内容になってしまったけど、特にまとめとかはないです。最後まで読んでくれた皆さんありがとうございます。

Tangoのこと書いたけど、ここ3日くらいはHoloLensとImmersiveヘッドセットのシェアリングのサンプルと格闘してます。明日には動きますように。

あと、もう少ししたらいろいろ落ち着くので、こういう話を肴にお酒飲んだりする会をしたい。@ふくおか

 

では。

 

 

JoyConをUnityで使うときのインプット設定

Nintendo SwitchのJoyConはBluetoothでPCに接続するとジョイパッドとして認識される。

JoyCon(L)とJoyCon(R)はそれぞれ別ものとして認識される。

つまり両方接続すると2つのジョイパッドが接続された状態になる。

 

Unityではジョイパッドを入力として扱うことができる。

一般的なスティック・ボタンはデフォルトで設定されてるので接続するだけで使える。

ただしデフォルトの設定では複数のジョイパッドからそれぞれの入力をとることはできない。

デフォルト以外のボタンや複数のジョイパットの入力を別々に扱いたい場合はEdit > Project Settings > Input で設定する必要がある。 

JoyConを左右それぞれ手に持って同時に使う場合はこれに該当する。

そのための設定を調べてみたのでメモしておく。

 

自分の環境ではJoyCon(L)はUnity上でのJoystick 1、JoyCon(R)はUnity上でのJoystick 2になっていたのでその場合での設定。

JoyNumはJoystick1かJoystick2を指定。

ボタン系は "joystick 1 button 0" のようにジョイパッドとボタンの番号を指定。

各ボタンとスティック軸の番号は以下。

 

入力種別 軸/番号 その他
左スティック(左右) 10th  
左スティック(上下) 9th Invert
左スティックボタン 10  
2  
1  
3  
0  
L 14  
ZL 15  
SL(左) 4  
SR(左) 5  
8  
キャプチャー 13  
     
右スティック(左右) 10th Invert
右スティック(上下) 9th  
右スティックボタン 11  
A 0  
B 2  
X 1  
Y 3  
R 14  
ZR 15  
SL(右) 4  
SR(右) 5  
9  
ホーム 12  

HoloToolkit-Unityを一発でダウンロード&インポートするエディタ拡張

HoloLensアプリケーションをUnityで開発するときに便利なのが、MicrosoftGitHubで公開しているHoloToolkit-Unityというツールキットです。

利用するためにはクローンするかZIPをダウンロード&解凍した後、HoloToolkitプロジェクト全体をUnityPackageとしてエクスポートし、自分のプロジェクトでインポートする必要があります。

一度パッケージ化しとけば使いまわせはしますが、HoloToolkitの更新があった場合には再度、取得→パッケージ化→インポートする手間が発生します。

そこで以前、

kzonag.hatenablog.com

という記事を書きました。

これは、HoloToolkit-Unityを自分のリポジトリにサブモジュールとして追加し、エディタ拡張でパッケージ化→インポートを自動化してみた、という話でした。

本格的に開発する場合はHoloToolkitのソースも欲しいのでこれで良いかな、と思っているのですが、テスト用のプロジェクトを作って軽く試したいときにその都度サブモジュール追加して〜というのは正直メンドくさい。。。

 

というわけで、もっと簡単にHoloToolkitを導入するためのエディタ拡張を実装してみました。

このスクリプトを任意のEditorフォルダに入れると、メニューに"Assets/Import HoloToolkit"という項目が追加されるので、それを実行するだけです。

するとGitHubからZIPをダウンロードし、ZIP解凍、Unityパッケージ化、インポート、が自動で行われます。とっても簡単ですね!

 

注意点としては、ZIP解凍のためにWindowsPowerShell v5のコマンドを利用しているので、基本的にはWindows10でしか動かないと思います。(未確認ですが 

まあ、HoloLens開発自体がWindows10じゃないとできないので問題ないはず・・・!

 

あと、ダウンロード、解凍、パッケージ化は非同期で処理が走っていて、一応プログレスバーは表示していますが、普通に操作できる状態になってしまってます。

アセットのインポート時のように操作を受け付けない状態にしたいのですが、その方法はまだ分かっていません、、、

 

gist.github.com

 

 

大八耐でVisionAPIを使ったARコンテンツを作ってきた

9/24~25で開催された大八耐というハッカソンイベントに参加してきました。

 

atnd.org

 

大八耐とは

大八耐は2日間で何かしらものづくりをしようというイベントで、基本的にテーマやルールはありません。

普段作っているものを継続して開発してもよし、2日間だけで作ってもよし。

内容も、プログラムでもCGでも絵画でも音楽でも立体物でも手芸でもなんでもOK。

お互いの作品を披露し合って交流しましょう、というような会です。

 

作ったもの

タイトルにある通り、GoogleのVisionAPIを使ったARコンテンツを作りました。

スマホをセットするタイプのHMDを装着してプレイします。

作品名は「識り神の眼」(しりがみのめ)

すべての物の名前を知っている識り神という神様がいます。(いません)

HMDを装着し特別な手袋を身につけることで識り神の眼を体験できます。

名前を知りたい物に手をかざすと、識り神の力によりその物の名前が分かります。

 

f:id:k_nagamine:20160928190050j:plain

 

こんな風に見えてます。

 

www.youtube.com

 

分かりやすいように全画面表示していますが、実際はHMD用の2眼表示になってます。

手をかざすと魔法陣が表示され、その内側にあるものが何かを表示します。

対象は何でもOK。小さいものでも、大きな建物でも、魔法陣の中に収まるように調整すれば認識されます。(結果はGoogle先生しだい)

 

環境など

用意したもの

f:id:k_nagamine:20160928190827p:plain

 

  1. Nexus6
  2. ハコスコDX(外カメラが使えるスマホHMD
  3. 識り神の手袋(100円ショップで軍手と柄のついた布を買って縫い合わせた)
  4. 識り神のマスク(にぎやかし。識り神のイメージ。100円。)

 

開発環境

Unity5.4

Vuforia6.0

 

使用したAPI

Google Cloud Vision API

Microsoft Translator API

 

処理の流れ

  1. 手袋の模様(ARマーカー)をVuforiaで認識して手の位置を把握
  2. 手の横に魔法陣を徐々に大きくなるように表示
  3. 魔法陣が一定の大きさになったら認識開始
  4. 魔法陣が表示されている画像領域を切り取りVision APIに投げる
  5. 認識結果が英語で返ってくるのでTranslator APIに投げる
  6. 日本語で返ってきた結果を画面に表示

  

ポイントとしては、4.で魔方陣の領域に合わせて画像を切り取っているところです。

手の位置を上下左右前後に動かすことで魔方陣の位置と大きさを調整できるので、自分が調べたい範囲を任意に指定することができるようにしています。

画像の切り取りは、ARマーカーとカメラの位置関係、カメラのFoV値などからごにょごにょ計算しています。多分ここが一番複雑だった。

 

APIについて

APIGoogleのVision APIMicrosoftのTranslator APIを使っています。

このAPIがUnityから使えることだけは事前に確認してから臨みました。

 

Google Cloud Vision API

Googleの学習済みの機械学習モデルを外から簡単に利用できるAPIです。

今回は物体検知の機能を使いましたが、顔検知、ランドマーク検知、テキスト抽出など、いろいろな機能があります。

Unityからの使い方はこちらのブログGitHubが大変参考になり、割とすんなりいけました。ありがとうございます!

Vision APIは1000リクエスト/月までは無料で利用できますが、それを超えると1000リクエストごとに5ドル程度かかるようなので、無料アプリとかで公開したら大変なことになります。

 

Microsoft Translator API

Microsoftが提供している翻訳APIです。テキスト翻訳と音声翻訳があるようですが、今回はテキスト翻訳を利用しています。

VisionAPIの結果が英語で返ってくるので、日本語に翻訳するために使いました。

最初はGoogleの翻訳APIを使おうと思ったのですが、無料での利用ができないようだったので、無料で使えるMicrosoftAPIに切り替えました。こちらは2,000,000文字/月までは無料で利用できるようです。

Translator APIはUnityから扱うサンプルなど見あたらなかったのでドキュメントや他言語での記事を見ながら実装しました。コンポーネントとしてGistに上げてます。

 

UnityからMicrosoft Translator Text APIを利用するコンポーネント · GitHub

 

感想

Googleの物体認識の精度がすごいです。

もちろん周囲の環境にもよりますが、対象の画像範囲を絞っているのでなかなかいいかんじで結果を表示してくれます。

多くの人に使ってもらいましたが、「じゃあこれはどうだろう?」「これならどう?」といったかんじでいろいろ試してもらえたので良かったです。

 

また、ありがたいことに審査員賞をいただくことができました。

技術、アイデア、手袋による入力インターフェイス、「識り神」という世界観、といったコンテンツ全体を含めて評価していただけました。

入力インターフェイスをどうするか悩んでいたのですが、識り神の手袋というアイテムにすることで世界観を表現しつつ認識範囲の調整もできるようになったので良かったです。

 

おまけ

識り神のマスクは世界観を演出する賑やかしアイテムなので別に無くても遊べます。

が、実はHMDの上からかぶることもできます。むしろかぶることで本物の識り神に近づけます。

マスクの目の部分に穴を開けており、ちょうどカメラが眼球っぽくなります。

まさしく「識り神の眼」ですね。

 

 

f:id:k_nagamine:20160928191536p:plain

 

f:id:k_nagamine:20160928191737p:plain