SmartARの実力の程を確認する。

  • このエントリーをはてなブックマークに追加
  • 80

実行結果

2016/01/27から、凄い凄いと噂だったSONYのARライブラリ、SmartAR SDKが一般利用できるようになった

Unityでも使えるので簡単なはずなので、取り敢えず試してみることにした。今回は、UnityちゃんのSDモデルと画像を使う。

ARライブラリで重要なのは、画像認識用のファイルだが、SmartARではこの認識用ファイルを「dictool」というコマンドライン式の実行ファイルで作る。こいつはWindows専用なので、SmartARをやるなら、例えiOS向けだろうとWindowsは絶対必要だ。

ちなみに、感想としては「コンテンツ屋には不親切なドキュメントだが、性能はいいのでライセンスを買う価値はありそう」かな。

ダウンロード&解凍

ということで、まずはSDKをダウンロードする。
SmartAR_SDKを解凍すると、中にまたいくつかZIPファイルがあるが、取り敢えずSmartAR_UnityとSmartAR_Toolが必要になるので解凍する。

Unityで試してみる

まず、Unityで3Dのプロジェクトを新規作成し、「Assets->Import Package->Custom Package…」で、SmartAR_Unity/SmartAR/smartar_moving_camera.unitypackageをインポートする。ついでに、Unityちゃんのモデルもインポートしておく。
SmartARとUnityちゃんのパッケージをインポート

で、インポートされたAssetsの中から、SmartAR/Prefabs内にあるSmartARCameraとSmartARTargetを、Hierarchyにドラッグ&ドロップする。ついでにUnityChan/SD_unitychan/Prefabs/内にある、SD_unitychan_generic.prefabをHierarchyにドラッグ&ドロップし、さらにSmartARTargetの下にドラッグ&ドロップしておく。

で、Main Cameraは削除する。
Hierarchy

次に、それぞれ設定する。
その前に、画像認識用のファイルを作ろう。今回は、「ユニティちゃん画像HDパック vol.1」内の「Sign_Okay.png」を利用する。

dictoolで画像認識用のdicファイルを作る

SmartAR_Toolを解凍したフォルダに、「Sign_Okay.png」を置く。のだが、なんと透過pngを認識してくれないので、適当な画像編集ツールで白背景にしておく。実はこの作業が一番大変かも・・・。
で、白背景になった「Sign_Okay.png」を置いたとして、以下のコマンドを実行する。ちなみに、これは「画像Sign_Okay.pngを、幅19cmの紙に印刷した」を意味している。

  1. >dictool.exe build -image Sign_Okay.png -physicalWidth 0.19

するとこうなる。結構時間がかかる。

  1. >dictool.exe build -image Assets\Sign_Okay.png -physicalWidth 0.19
  2. Copyright 2012,2013,2014,2015,2016 Sony Corporation.
  3.  
  4. Build dictionary:
  5.          input         : Sign_Okay.png
  6.          physicalWidth : 0.190000 [m]
  7.          serialID      : 0
  8.          vendor        : 0-0
  9.          dicfile       : Sign_Okay.png.v9.dic
  10. autoresize (1495, 1495) -> (200, 200)
  11. points: 33 31
  12. ....................................................................................................
  13.  
  14. the score of this target = 89.40 [0.00:bad - 100.00:excellent]
  15. store the dictionary file to 'Sign_Okay.png.v9.dic'

出来上がったファイル「Sign_Okay.png.v9.dic」を、Assets/StreamingAssetsに格納する。

SmartARCamera

AR用のカメラの設定をする。
SmartARCamera
Smart AR Controllerというところを開き、Recognizer Settingsを以下にする。。

Recognition Mode:RECOGNITION_MODE_TARGET_TRACKING
Scene Mapping Init Mode:SCENE_MAPPING_INIT_MODE_TARGET

で、次に「Targets」の「Size」を1に変える。すると、「File name」「Id」というテキストフィールドが出来る。「File name」に「Sign_Okay.png.v9.dic」と入力し、「Id」に適当なID(今回はt1)と入力する。

SmartARTarget

Target IDと言うのがあるので、そこに先程Idとして入力した「t1」を入力する。
SmartARTarget

SD_unitychan_generic

SmmartARは、結構モデルをでかくしないと見えないので、Scaleをそれぞれ200に設定する。

ビルド&実行

Nexus 6Pを接続し、実行してみた結果が以下。
実行結果

さすがのSmartARだけあって、こんなに斜めにしても普通に画像が認識されている。今回は、Unityちゃんの使い方を間違えたので左右に変なメニューが見えているが、実際はカメラと「Smart AR」のウォーターマークだけだ。

総括

見た感じ、結構簡単にいい感じのARコンテンツを作れそうだなと思った。ただ、ドキュメントが「ゴリゴリの開発者が作りました」って感じがする。Overviewという名前の付いたドキュメントにソースコードがガッツリ書いてあって、いわゆる「詳細設計書」っていう感じのドキュメントだった。
ドキュメントは全体的にそんな感じだし、画像認識ファイルを作る手段がdictoolしかないというのが結構大変だな、と思った。俺のような開発者側の人間になら簡単だが、クリエイター側の人には作れないだろうな・・・。

あと、リリースノートやREADMEなどのテキスト系のファイルの改行コードがWindows用のCRLFではなくLFのみなので、メモ帳で開くと1行になってしまうという、もう本当に、Windows嫌いの開発者が作りました感があふれている。
それともアレかな。ワザと不親切な解説にして、AR作成サービスも併せて売ろうとしてるのかな。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク