⑧[Android][Kotlin][Vuforia][AR]Vuforia(Image Target)を独自マーカーで動かしてみた
第1回 VuforiaでARの初めの一歩
第2回 Vuforiaのサンプルコード(Image Targetのみ)を動かしてみた。
第3回 動画再生を板ポリ上で実行するサンプルコードを作ってみた。
第4回 Vuforiaで動画再生ARを実装してみた。
第5回 Vuforia11.4.4の公式サンプルコードを動かしてみた。
お薦めしません: 第6回 VuforiaのVuMarkを動かしてみた。
お薦めしません: 第7回 Vuforiaで独自VuMarkを作ってみた。←挑戦中 ←無理ゲーすぎた
第8回 Vuforia(Image Target)を独自マーカーで動かしてみた。
第9回 Vuforia(Image Target)を独自マーカーの複数検出させてみた。
VuMarkに惨敗な今日この頃、皆様に於かれましてはお元気で在らせられますでしょうか?
さてと気を取り直して、VuMark が無理ゲーだったのは仕方ないとして、
Image TargetのImage Makerの方で FrameMarker と同じ仕様に出来ないかの方向で調査を進めたいと思います。
出来た!!
ソースコードはここに↓
Abstruct
- 独自マーカーでImage Targetを動作させてみた。
- Vuforiaのバージョン 11.4.4。
背景
Image TargetのImage Maker を使って複数(目標100個)のARマーカーを動作再生したいと思います。
本来この用途だと、VuMarkの方が適合すると思うのだけど、マーカー作成が無理だったので。(第7回読んでください)
※複数個の認識は次のテーマで。
ざっくり手順
- 画像を準備
- Vuforiaサイトで登録 → データセット取得
- プロジェクトに組み込み → ビルド
準備
- android端末
- 開発用PC(Android Studioのインストールは済ませておく。)
- android端末をつないで、デバッグができる様にしておく。
- SDKと公式サンプルコードは今回一緒にgithubにコミットしたんで不要。
- Vuforiaのアカウント作成 前回の説明の準備1をやっておく。
- Vuforiaのライセンスキー取得 前回の説明の準備2をやって取得しておく。
手順1. 画像を準備
今回下記画像を準備した。
サンプルマーカーの中身を白四角で埋めたもの。これで認識精度いいマーカーになるはず。
※中身はいつでも差し替えれる様に枠だけ。
手順2. Vuforiaサイトで登録 → データセット取得
-
Target Manager → Generate Database 押下
Database Name: 適当に
Type: Device
→ Generate 押下 -
生成したDatabase(bbb)を選択
-
Add Target 押下 → 下記入力 → Add 押下
File: 手順1で準備した画像ファイル(jpgがいいです)
width: 10cmとするので0.1
Name: 001_stones ※これも適当に -
マーカー確認
このままデータセットを取得してもいいけど、マーカ精度がどんなもんかを確認しとく。
※Refreshボタンで表示更新
星5つ 精度完璧!!
特徴点ビッシリ!! -
データセット取得
元の画面に戻って、データセットを取得する。
bbb.zipがダウンロードされる。
手順3. プロジェクトに組み込み → ビルド
- 今回使用するコードをguthubからDL。
-
Android Studioでプロジェクトを開く。
cloneしたAndKot-VuforiaVideoPlaybackを開く。
-
認証情報を設定した後、ビルドする。
Vuforiaのライセンス画面を開いて license Key をコピー。
↓
Android Studioで、"AppController.cpp"を開き、licenseKeyに、準備2でコピーしたライセンスを貼り付けます。
そして、ビルド。
※もし、この手順を飛ばしたら、アプリ起動時に下記エラーが発生します。
- 手順2でDLしたvuforiaのデータセット(.xml/.dat)をプロジェクトに組み込む
ゲットした bbb.zip は解凍するとbbb.xml / bbb.datの2ファイルが出来るので、その2つをAndroid プロジェクトに追加する。
app/
└── src/
└── main/
└── assets/
└── original/
├── bbb.dat
└── bbb.xml
- kotlin/c++でデータセット読込み処理を書く
auto imageTargetConfig = vuImageTargetConfigDefault();
- imageTargetConfig.databasePath = "ImageTargets/StonesAndChips.xml";
- imageTargetConfig.targetName = "stones";
+ imageTargetConfig.databasePath = "orignal/bbb.xml";
+ imageTargetConfig.targetName = "001_stones";
imageTargetConfig.activate = VU_TRUE;
で、実行。
出来た!!
今回特に迷うことないかな。
「誰かの役に立つと思って」
Discussion