マーカーと Kudan 画像トラッキングに関する役立つ情報
機能
- ロード可能なマーカー数は無制限 ― 何百もの処理が可能。
- 画像ファイルを使用してプログラムで画像を作成するための API。
- マーカーのセットを結合/操作するための API ― 差分更新が可能。
- フレームワークで使用するマーカーを処理するオフライン ツール。
- 長距離のマーカーをトラッキングするために拡張された検出とトラッキング機能。
- トラッキング パフォーマンスを向上するための自動クロッピング機能。
今後予定されている機能
- スクリプトでバッチ処理可能な、ツールキットを使用せずにマーカーを変換するためのコマンドライン ツール (Kudan AR Toolkit の CLI 版をご要望の場合には、お問い合わせください)
マーカー
マーカーとは、画像トラッカーにロードされた画像です。理論上は任意のマーカーを使用できますが、適切なマーカーと不適切なマーカーがあります。マーカーが検出できない場合や、確実にトラッキングできない場合、トラッカーはそのマーカーをロードしません。
適切なマーカーは、次の特徴があります:
- ハイコントラストのコーナーがたくさんあります。
- 反復パターンがありません。
- 典型的な視野位置からのカメラの視野がかなり大きいです。
- 同じトラッカブル セットのほかのマーカーと結合したときに、ほかのマーカーと比べてかなりユニークです。
詳細は、「良いマーカーとは?」ページをご覧ください。
マーカーの作成
独自のカスタム マーカーを使用するには、2 つの方法があります:
- API を使用してマーカーを作成
Kudan AR は、画像ファイルからマーカーを作成するための API を提供しています。これにより、画像をデバイスに追加して、実行時にマーカーとしてロードできます。Kudan 画像トラッカーは、ネイティブ OS でサポートする形式をサポートします。
画像ファイルからマーカーを作成するには、ARImageTrackable
クラスを使用します:
ARImageTrackable *imageTrackable = [[ARImageTrackable alloc] initWithImage:[UIImage imageNamed:@"example.jpg"] name:@"Example Marker"];
let imageTrackable = ARImageTrackable(image: UIImage(named: "example.jpg"), name: "Example Marker")
ARImageTrackable imageTrackable = new ARImageTrackable("Example Marker"); imageTrackable.loadFromAsset("example.jpg");
- ツールキットを使用してマーカーを作成する
KudanAR は、画像ファイルを変換して 1 つの KARMarker
ファイルにまとめる外部ツールも提供しています。この軽量な形式は、スマート デバイス向けに最適化されており、ファイル サイズを縮小し、複数のマーカーを格納します。
同じ ARImageTrackable
クラスを使用して .KARMarker
ファイルをロードできます。2 つのオプションがあります。1 つ目のオプションでは、アプリにバンドルして必要なときにロードします:
ARImageTrackable *imageTrackable = [[ARImageTrackable alloc] initWithBundledFile:@"example.KARMarker"];
let imageTrackable = ARImageTrackable(bundledFile: "example.KARMarker")
ARImageTrackable imageTrackable = new ARImageTrackable("Example Marker"); imageTrackable.loadFromAsset("example.KARMarker");
しかし、このオプションは多数のマーカーを使用するアプリには適していません。例えば、500 マーカーをバンドルすると、アプリのサイズが非常に大きくなります。幸いにも、2 つ目のオプションとして、ファイル パスからファイルをロードすることができます。マーカとして使用されるファイルは、カメラ ロールを含むデバイスの任意の場所に格納されるだけでなく、実行時にダウンロードされることもあるため、そのような場合にはこのオプションが役立ちます:
NSString *filePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"example.KARMarker"]; ARImageTrackable *imageTrackable = [[ARImageTrackable alloc] initWithPath:filePath];
var filePath: String = Bundle.main.resourcePath? + ("example.KARMarker") let imageTrackable = ARImageTrackable(path: filePath)
ARImageTrackable imageTrackable = new ARImageTrackable("Example Marker"); imageTrackable.loadFromPath("/mnt/sdcard/images/example.KARMarker");
マーカー名
同じトラッカブル セットのマーカー、またはマーカー セットが結合された場合は同じトラッカーに登録されているマーカーには、固有の名前が必要です。この名前は、マーカー クリエーター ツールまたは API を利用して設定できます。また、この名前を使用して、マーカーを容易に特定できます:
imageTrackable.name = @"Example Marker";
imageTrackable.name = "Example Marker"
imageTrackable.setName("Example Marker");
マーカーのサイズ
マーカーには任意のサイズ プロパティがあります。これは、レンダリングのシーン単位を定義するのに使用され、マーカー ツールまたは API を利用して設定できます。マーカーのサイズが 20×10 の場合、幅 20、高さ 10 の 3D モデルはマーカーにぴったり収まります。場合によっては、マーカーに実際の単位 (例えば、マーカーのサイズがミリメートル) を割り当てたほうが良いこともあります。
サイズは任意ですが、縦横比はソース画像と同じにすべきです。そうしないと、未定義の動作になります。