ストリーミングはほとんどのブラウザと
Developerアプリで視聴できます。
-
DockKitを利用した電動iPhoneスタンドとの統合
DockKitと互換性がある電動スタンドと統合して、カメラアプリで素晴らしい写真やビデオの体験を作成する方法を紹介します。 アプリが360度の視野全体でライブビデオ内の被写体を自動的にトラッキングし、スタンドを直接制御してフレーミングをカスタマイズしたり、モーターを直接制御したり、他のオブジェクトのトラッキングのための独自の推論モデルを提供したりする方法を説明します。 最後に、動的なデバイスアニメーションを通じて感情を演出する方法も紹介します。 画像トラッキング技術の詳細については、WWDC23の「Visionで動物のポーズを検出」および WWDC21 の「Create MLを使用したアクションクラシファイアの構築」をご覧ください。
リソース
関連ビデオ
WWDC23
WWDC21
WWDC20
-
ダウンロード
♪ ♪
こんにちは Onur Tackinです エンジニアリングマネージャーです 今日はDockKitを使用した 電動iPhoneスタンドとの統合について 紹介します このビデオではDockKitとは何かを説明し 次に どのように機能するか 詳しく説明します そのあと DockKitを使用して アプリをカスタマイズする方法を説明し 最後にデバイスアニメーションを使用して アフォーダンスとして動作を開始します
では DockKitとは何でしょうか?
DockKitはiPhoneが電動カメラスタンドの 中央コンピューティングとして 機能できるようにするフレームワークです DockKitスタンドはあらゆる iPhoneカメラの視野を 360度パン 90度チルトに拡張します ピッチおよびヨー運動モデルと 自動システムトラッカーをサポートし ユーザーはカメラアプリの フレーム内に収まることを気にせずに コンテンツに集中できるようになります スタンドには電源とトラッキングを 無効にするシンプルなボタン トラッキングがアクティブかと ユーザーがフレームの中にいるかを知らせる LEDインジケータが含まれる場合があります iPhoneをスタンドとペアリングすれば 準備完了です すべての魔法はiPhone自体のアプリと システムサービスで起こります モーター制御と被写体トラッキングは システムレベルで処理されるため iOSカメラAPIを使用するアプリは すべてDockKitを利用できます これでアプリの体験が向上し ビデオキャプチャ ライブストリーミング ビデオ会議 フィットネス エンタープライズ 教育 ヘルスケアなど各分野のアプリで 新機能が追加する機会を生みます DockKitについて話すだけでなく 実際にデモをしてみましょう
目の前に DockKitスタンドのプロトタイプがあります iPhoneとペアリングしました スタンドにあるとき iPhoneはDockKitを介して ペアリングされたドックと通信します 試してみましょう 組み込みのカメラアプリを起動します ここのボタンを押すと トラッキングを開始します 私がテーブルの周りを動き回ると Dockが私の位置をトラッキングします 緑色のLEDが点滅して フレーム内にいることを示します
バックカメラに切り替えましょう
Dockが 180度回転して 私を視野に入れる様子に注目してください クールですね でもこれは組み込みのカメラアプリだけでは 機能しません カメラAPIを使用するアプリは すべてDockで使用できます
例えばFiLMiC Proを試してみましょう これは現在App Storeからダウンロード できるのと同じFiLMiC Proです
アプリを起動すると デフォルトで背面カメラになります 何も設定しなくても機能します DockKitスタンドを使用すると 周囲の空間やオブジェクトと対話できます 例えばここにある本の山に行って 本について話したり スペースを再配置して オブジェクトを操作できます
DockKitアプリを使用すると 語り手は視野を気にすることなく ストーリーに集中できます
iPhoneに組み込まれた 画像インテリジェンスと スムーズなモーターで スタンドは本当に生き生きしています これがどのように機能するか見てみましょう DockKitシステムトラッカーは カメラ処理パイプライン内で実行され 組み込み推論を通じて カメラフレームを分析し どの被写体をトラッキングするかを決定し 被写体の軌道を推定しモーターを駆動して 被写体を適切にフレーミングします 映画監督が現実世界の出来事を観察し カメラの視点を調整するのと同じように DockKitはカメラフレームから オブジェクトを推測し ドックへの動作コマンドを通じて モーターを調整します
モーター制御はDockKitスタンドを管理し 通信するDockKitデーモンを通じて 実現されます 作動コマンドはDockKitプロトコル経由で スタンドに送信され センサーのフィードバックを使って モーター制御ループが閉じられます トラッキングを処理するカメラフレームは ISP推論によって分析され1秒あたり 30フレームでDockKitに渡されます 内部には複数ユーザーのシナリオに対応する Visual Understanding Frameworkがあります 顔と体のバウンディングボックスが生成され マルチモデルのシステムレベルトラッカーに 送られます トラッカーはトラッキングされる各人物や オブジェクトのトラックを作り出し 統計的なEKFフィルターを実行して 推論からのギャップやエラーを軽減します 現実世界のシグナルが 常に完璧とは限りません 対象者のトラッカー推定値は モーターの位置と速度のフィードバック そして電話IMUと組み合わされ 最終的な軌道とアクチュエータコマンドに 到達します 多くの場合 1 つのフレーム内に 複数の被写体が存在することがあります デフォルトでDockKitは中央のフレームの 主要な被写体をトラッキングします 2人目の人やオブジェクトと関わる場合 DockKitはその人やオブジェクトを フレームに収めようとします 例えば Mahmut Steve Dhruv Vamsiの 4人がいたとします Mahmutは緑色のバウンディングボックスで 示される主要人物です 顔だけでなく体にもバウンディング ボックスがあることに注意してください 他のチームメンバーがMahmutの邪魔したり 道を横切ったりしても トラッカーは主要な被写体をトラッキングし続けます
認識や推論が障害物により 誤った結果をもたらした場合 統計ラッカーがエラーを修正し Mahmutトラッキングし続けることができます これがアプリにコードを追加しなくても DockKitが機能する仕組みです ただし DockKitと統合して 顧客が気に入る新機能を提供すると 事態は非常にエキサイティングになります DockKitアクセサリを制御する方法を 見てみましょう
これにはDockの参照の取得が含まれます そこからフレームの変更を選択でき トラッキング対象を指定するか システムトラッキングを停止したあと モーターを直接制御します まずDockアクセサリの状態変更を 登録します ドッキングやドッキング解除の通知は iPhoneを互換性のあるドックアクセサリに ユーザーがドッキングや取り外したときに 発生します 通知はトラッキング動作を変更するための 前提条件です
Dockアクセサリマネージャーイベントを 通じて Dockの状態をクエリできます 関連する状態は ドッキングとドッキング解除のみです 接続はDockKit 自体によって管理されます ドッキング状態は iPhoneがDockKitプロトコルを介して Dockに接続されていることも意味します 状態イベントを通じてアプリは トラッキングボタンの状態を取得することもできます iPhoneのドッキングを確認したら アクセサリの他の側面を 制御できるようになります 最も便利な機能の1つは ビデオのトリミング方法を アプリで管理できることです
カメラの視野のトリミングを制御するには 2 つの方法があります
自動フレーミングの 「左揃え」「中央揃え」「右揃え」を 選択するか 特定の関心領域を指定することもできます どちらかを選択する必要がある場合について 見てみましょう DockKitはデフォルトで 被写体をフレームの中央です これはビデオストリーミングなどの 単純な場合にはうまく機能しますが 理想的ではない使用事例もあります 例えばアプリがこのロゴのような カスタムグラフィックオーバーレイを ビデオ フレームに挿入した場合は どうなるでしょうか? この場合 被写体がアートワークによって 隠されないようにする必要があります
これはフレーミングモードを変更するだけで 修正できます ここではフレームの左3分の 1に配置された 文字とのバランスをとるために 「right」を指定しています この単純なコードにより このビデオのオープニングシーンに 最適な構成が得られます トリミングを制御するもう 1 つの方法は ビデオフレーム内の特定の関心領域を 指定することです
例えばこのビデオ会議アプリを 見てみましょう ビデオフレームは正方形のアスペクト比に クロップされるように設計されていますが DockKitのデフォルトのフレーミングでは 誰かの顔が切り取られる可能性があります この問題はDockKitアクセサリに 関心領域を設定することで修正できます iPhoneのディスプレイの 左上隅が起点と考えます 関心領域は正規化された座標で定義されます この例は対象領域が 中央の正方形であることを DockKitアクセサリに伝えています 関心領域を調整すると 被写体がフレーム内で完全に切り取られます DockKitを使用すると ユーティリティまたはアフォーダンスとして アプリで独自のモーター制御を 行うこともできます より多くの新機能の可能性が開かれます
DockKitはデフォルトで システムトラッキングを有効にするため モーター制御や独自のカスタムトラッキングを 実行する前に この値をfalse に設定する必要があります DockKitスタンドは XとYの2つの回転軸で動作します 傾き 特にピッチ回転は マグネットドックポイントの後ろにある モーターと位置合わせされた X軸を中心に行われます ヨーイングとして知られるパン撮りの場合 回転はスタンドのベースにある モーターと一致するY軸を中心に行われます これをコードで制御する例を見てみましょう
モーターを毎秒 0.2 ラジアンの低速で 右に動かしたいとします 1 秒あたり 0.1 ラジアンずつ ピッチを下げます まず 初期速度ベクトルを定義し 次にそのベクトルをドックに送信します タスクをスリープすると 動作を2秒間継続できます そして別のベクトルで方向を反転し 0.2rad/sで左に移動し 0.1rad/sでピッチアップします アプリがDockKitと統合されたときに できることはこれだけではありません モーターを直接制御することに加えて 推論を制御することもできます Visionフレームワーク 独自のカスタムMLモデル アプリに必要な認識アルゴリズムを 使用できます カスタム推論出力から オブジェクトをトラッキングするために DockKit にフィードする測定値を構築します 測定値とは何でしょうか? 測定値はカメラフレーム内の 対象となる被写体を表す 長方形のバウンディングボックスです
つまりトラッキングしたいものです それは顔や動物かもしれないし 手かもしれません つまり時間の経過とともに観察できる オブジェクトや点です
バウンディングボックスは 左下の基点に基づいて 正規化された座標で定義されます 例えばこの検出された顔の測定値を 作成するには次のようにします 私はおよそ 0.25 ~ 0.5の バウンディングボックスを使用し 幅と高さが画像フレーム全体の 割合になるようにします
測定値を作成するには 正規化された座標でCGRectを構築し そこから測定値を組み立てます その際 観察タイプを 「humanFace」か「object」に 指定します 「humanFace」オプションを使用すると システムレベルの複数人トラッキングを 確実に行うことができます フレームの最適化は引き続き有効です
測定値が作成されると それらをトラッカーに送信できます まず 現在のカメラ情報を取得します この場合 座標が画面の左下隅を 基準にしていることを DockKitに知らせるため 方向が「修正」されることを 指定しています 変換は必要ありません そのあと観測配列とカメラ情報を Dockアクセサリに渡します 嬉しいことに観察や トラッキングしたい多くのものの バウンディングボックスを完全に手動で 計算する必要がないことです Visionフレームワークは 身体姿勢検出 動物の体の姿勢検出 さらにはバーコード認識など トラッキング可能な測定値に 簡単に変換できる バウンディングボックスを返す 多くの組込みリクエストが含まれているため カスタム推論に最適です またVisionの座標系は DockKitと同じであるため 変換せずに直接 渡すことができます DockKitにデバイスの向きを 知らせるだけです 次にカスタムマイズした観察を コードに実装する手順を見てみましょう
この場合デフォルトの顔と体のトラッキング を手のポーズ検出リクエストを使用した 手のトラッキングに置き換えたいと思います
まず Visionリクエストと リクエストハンドラを作成します VNDetectHumanHandPoseRequest をここでは使います 次にリクエストを実行します 認識された点に基づいて 測定値を構築できます わかりやすくするために 親指の先端に焦点を当てていますが 他の指の関節を使用することもできます または手全体を使って測定値を組み立てます 最後に観察結果をDockKitに渡して トラッキングします
では実際に動作を見てみましょう
カスタムカメラアプリを起動して トラッキングを開始します
手を左に動かすと スタンドが左に流し撮りして 追いかけることに注意してください そして手を右に動かすと スタンドは反対方向に進みます 手を上に振り上げるとスタンドが傾いて 手をフレーム内に保ち 手を振り下ろすと再び追いかけます 完璧です
DockKit APIを通じて モーターを直接制御できるため アニメーションを通じて デバイスに命を吹き込むことができます Dockの動きは 確認のためのアフォーダンスとして または感情を伝える方法として使用できます 直接モーター制御を通じて 独自のカスタムアニメーションを作成し 押したり引いたりするなどiPhoneとの 物理的な操作をエミュレートできます または組み込みアニメーションの1つを 利用することもできます
組み込みのアニメーションには 「Yes」「No」「Wakeup」「Kapow」 があります 「Wakeup」アニメーションは デバイス起動のたびに動作します 先ほどデモしたカスタムハンドトラッキング のアプリに戻りましょう 特定の手のジェスチャが発生するたびに 組み込みアニメーションをトリガーできます これを行うには最初にカスタムの 手動作分類モデルを訓練する必要があります これはCreate MLアプリを使用して 簡単に実行できます これらのモデルの作成に関する 詳細については 2021年の「Classify hand poses and actions」ビデオをご覧ください
カスタムモデルが手のジェスチャが 発生したと予測するたびに アニメーションをトリガーできます まずはシステムトラッキングを 無効にすることから始めます 次にアニメーションを開始します この場合はKapowです アニメーションはスタンドの 現在位置から開始され 非同期で実行されます アニメーションが実行されると システムトラッキングを 再度有効にする必要があります 次にデモに戻って実際の動作を確認します
私が少し後退しても アプリは私の手をトラッキングし続けます カメラを押すしぐさをしたら Kapow! カメラは振り子の動きで前後に揺れます とても楽しいのでもう一度やりましょう Kapow! このようなアニメーションを使用して 体験を終了したり 何かを表現したり さまざまなことができます これを試してみることをおすすめします カスタムモーター制御を使用して ぜひ独自のアニメーションの作成を 検討してください DockKitでは電動スタンドを使用して オブジェクトのトラッキング機能が導入され アプリに360度の視野が与えられます オブジェクトトラッキングはシステムレベル か カスタム推論使用のアプリで利用でき また感情や実用性を伝えるための アフォーダンスとして 物理的な動きをアプリで利用できます DockKitでのカスタムトラッキングの Visionフレームワークの使用方法について さらに詳しく知るには 動物のポーズの検出に関するセッションを ぜひご覧ください これらの素晴らしいアクセサリを みなさんが利用して どんな体験をアプリにもたらすのか 見れる日が待ち遠しいです
-
-
特定のトピックをお探しの場合は、上にトピックを入力すると、関連するトピックにすばやく移動できます。
クエリの送信中にエラーが発生しました。インターネット接続を確認して、もう一度お試しください。