マーカー

マーカーと Kudan 画像トラッキングに関する役立つ情報


機能

  • ロード可能なマーカー数は無制限 ― 何百もの処理が可能。
  • 画像ファイルを使用してプログラムで画像を作成するための API。
  • マーカーのセットを結合/操作するための API ― 差分更新が可能。
  • フレームワークで使用するマーカーを処理するオフライン ツール。
  • 長距離のマーカーをトラッキングするために拡張された検出とトラッキング機能。
  • トラッキング パフォーマンスを向上するための自動クロッピング機能。

今後予定されている機能

  • スクリプトでバッチ処理可能な、ツールキットを使用せずにマーカーを変換するためのコマンドライン ツール (Kudan AR Toolkit の CLI 版をご要望の場合には、お問い合わせください)

マーカー

マーカーとは、画像トラッカーにロードされた画像です。理論上は任意のマーカーを使用できますが、適切なマーカーと不適切なマーカーがあります。マーカーが検出できない場合や、確実にトラッキングできない場合、トラッカーはそのマーカーをロードしません。

適切なマーカーは、次の特徴があります:

  • ハイコントラストのコーナーがたくさんあります。
  • 反復パターンがありません。
  • 典型的な視野位置からのカメラの視野がかなり大きいです。
  • 同じトラッカブル セットのほかのマーカーと結合したときに、ほかのマーカーと比べてかなりユニークです。

詳細は、「良いマーカーとは?」ページをご覧ください。

マーカーの作成

独自のカスタム マーカーを使用するには、2 つの方法があります:

  1. API を使用してマーカーを作成

Kudan AR は、画像ファイルからマーカーを作成するための API を提供しています。これにより、画像をデバイスに追加して、実行時にマーカーとしてロードできます。Kudan 画像トラッカーは、ネイティブ OS でサポートする形式をサポートします。

画像ファイルからマーカーを作成するには、ARImageTrackable クラスを使用します:

Objective-CSwiftJava
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");
  1. ツールキットを使用してマーカーを作成する

KudanAR は、画像ファイルを変換して 1 つの KARMarker ファイルにまとめる外部ツールも提供しています。この軽量な形式は、スマート デバイス向けに最適化されており、ファイル サイズを縮小し、複数のマーカーを格納します。

同じ ARImageTrackable クラスを使用して .KARMarker ファイルをロードできます。2 つのオプションがあります。1 つ目のオプションでは、アプリにバンドルして必要なときにロードします:

Objective-CSwiftJava
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 つ目のオプションとして、ファイル パスからファイルをロードすることができます。マーカとして使用されるファイルは、カメラ ロールを含むデバイスの任意の場所に格納されるだけでなく、実行時にダウンロードされることもあるため、そのような場合にはこのオプションが役立ちます:

Objective-CSwiftJava
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 を利用して設定できます。また、この名前を使用して、マーカーを容易に特定できます:

Objective-CSwiftJava
imageTrackable.name = @"Example Marker";
imageTrackable.name = "Example Marker"
imageTrackable.setName("Example Marker");

マーカーのサイズ

マーカーには任意のサイズ プロパティがあります。これは、レンダリングのシーン単位を定義するのに使用され、マーカー ツールまたは API を利用して設定できます。マーカーのサイズが 20×10 の場合、幅 20、高さ 10 の 3D モデルはマーカーにぴったり収まります。場合によっては、マーカーに実際の単位 (例えば、マーカーのサイズがミリメートル) を割り当てたほうが良いこともあります。

サイズは任意ですが、縦横比はソース画像と同じにすべきです。そうしないと、未定義の動作になります。