一覧に戻る

ARKitが統合されたWikitude SDKのBeta版が公開!

2017.12.18技術系記事

クリスマスシーズンがやってきました。Wikitudeは開発者の方々が、休日をより楽しめるように貢献します!

最初に良いニュースがあります。ARKitがWikitude SDKに統合され、そのSDKのBetaが公開されました。ダウンロードページから、JavaScriptおよびネイティブSDKの開発者向けプレビューを入手できます。
この統合により、開発者はアップルのハイエンド機器で最適なマーカレスARを提供し、インスタントトラッキング機能でARKitのアクセシビリティの制限を克服することができます。
つまり、ARKitがサポートされていないデバイスでは、代わりにWikitudeの信頼性の高いSLAM技術を使用してAR体験が提供されます。
ARCoreについてもこのアプローチで取組み中で、すべての人にAR体験を提供できるような日が近づいています。

WikitudeのSDKにARKitを追加することで、マーカーレスAR体験を単一のAPI内で最適化し、クロスプラットフォーム開発をより迅速かつ円滑に行うことができます。
Wikitude SDKは、ARKitよりも多くのスマートデバイスをサポートし、複数のプラットフォーム展開を備えた世界クラスのロケーション、画像認識、オブジェクト認識のAR機能を提供します。

クリスマス休暇の楽しみとして、Wikitudeは、ARクリスマスツリーのチュートリアルを準備したので、みなさんも今すぐお試しできます!
このARクリスマスツリーでは、クリスマスの準備を手助けします!リビングに飾るクリスマスツリーの最適なサイズがわからない場合、このARクリスマスツリーを活用できます。

Wikitude SDK with ARKit - Christmas Tutorial

AR体験の構築

Wikitude SDK JavaScriptを使用してARKitの機能にアクセスするには、これまでの実装をほとんど変更する必要はありません。実際、AR.InstantTrackerの設定では、フラグを1つだけ有効にするだけです。

this.tracker = new AR.InstantTracker({
    [...]
    arKitCoreEnabled: true
});

arKitCoreEnabledフラグをtrueに設定すると、ARKitのアルゴリズムがWikitudeのアルゴリズムよりも優先されます。 ARKitをサポートしていないデバイスでは、トラッキングは正常に機能しますが、ARKitのアルゴリズムは使用されません。

arKitCoreEnabledフラグでARKitを有効にできますが、新しく導入されたonChangeStateErrorコールバックをあわせて追加することをお勧めします。カメラビューでテクスチャの詳細が不足しているか、または平面推定がない状況でARKitを使用すると、初期化状態からトラッキング状態に切り替えることができない場合があります。具体的な失敗理由は、入力パラメータとして関数に渡されます。

this.tracker = new AR.InstantTracker({
    [...]
    arKitCoreEnabled: true,
    onChangeStateError: function(error) {
        alert("Failed to change state. Error code: " + error.id + " Error message: " + error.message);
    }
});
ARKitは現実のスケーリングを提供するため、地上面からのデバイス高さは入力パラメータとして初期化フェーズでのみ必要です。
トラッキングフェーズでは、それを無視してARKit提供のスケールを使用します。
実世界のスケールを活用するのは簡単で直感的です。1SDUは1メートルです。私たちの3Dモデルの場合、それは単純にモデルのジオメトリの1の距離が1メートルに相当することを意味します。

任意の3Dモデリングソフトウェアで使用している3Dモデルを調べると、そのサイズを知ることができます。ARクリスマスツリーで使用している3Dモデルの場合、サイズは次のようになります。

var modelSize = {
    x: 243.1,
    y: 246.7,
    z: 357.9
}

高さが357.9メートルのクリスマスツリーは大きすぎるため、カメラビューに適切な高さで表示されるようにスケールを計算します。

var initialModelHeightMeters = 1.5;
var scaleValue = initialModelHeightMeters / modelSize.z;

このスケール値をAR.Modelに適用すると、正確に1.5メートルの高さのツリーが表示されます。

var treeModel = new AR.Model("assets/tree.wt3", {
    scale: {
        x: scaleValue,
        y: scaleValue,
        z: scaleValue
    }
});

最後に、onScaleChangedとonScaleEndedジェスチャコールバックを使用することで、特定の環境に適合するようにモデルを簡単にスケールすることができます。

var treeModel = new AR.Model(
    [...]
    onScaleChanged: function(scale) {
        var s = scaleValue * scale;
        this.scale = {x: s, y: s, z: s};
    },
    onScaleEnded: function(scale) {
        scaleValue = this.scale.x;
    }
});

このチュートリアルで使用できるSDKをダウンロードページのBetaタブからダウンロードできます。
クリスマスツリーの3Dモデルを提供してくれた私たちのコミュニティメンバーであるFlorin Neculaに感謝します。

ARKitが統合されたWikitude SDKのプレビューをぜひお楽しみください。
そして、Twitter、Facebook、Instagramなどのソーシャルメディアを通じて、#wikitudeタグを使用して、ぜひあなたの体験を共有してください。