(57)【特許請求の範囲】
【請求項１】
システムであって、
１つ以上のコンピュータプロセッサと、
１つ以上のコンピュータメモリと、
前記１つ以上のコンピュータメモリに組み込まれた構図モジュールと、を備え、前記構図モジュールが、仮想カメラの方位を変更して、前記仮想カメラのスクリーン上の標的ゾーン内に対象の一部分を保持するための動作を実施するように構成されており、前記動作が、
ソフト境界を前記標的ゾーンに関連付けることであって、前記ソフト境界は、前記標的ゾーンを囲む前記スクリーン上の第１の境界線であり、前記ソフト境界は、前記仮想カメラの方位を変更するための第１の追跡時間に関連付けられている、前記ソフト境界を前記標的ゾーンに関連付けることと、
ハード境界を前記標的ゾーンに関連付けることであって、前記ハード境界は、前記標的ゾーンと前記ソフト境界の外側の領域を囲む前記スクリーン上の第２の境界線であり、前記ハード境界は、前記仮想カメラの再方位付けの変更のための第２の追跡時間に関連付けられている、前記ハード境界を前記標的ゾーンに関連付けることと、
前記対象の一部分が前記ソフト境界と前記ハード境界との間の場所まで移動したとの検出に基づいて、前記仮想カメラを再方位付けるための前記第１の追跡時間を判定することであって、前記第１の追跡時間の前記判定が、前記対象の前記標的ゾーンからの偏差の量に基づく、判定することと、前記仮想カメラの前記方位の前記変更を実施して、前記第１の追跡時間にわたって前記対象を前記標的ゾーンに連れ戻すことと、を含み、
前記システムは、前記仮想カメラに関連付けられた標的光線上で前記仮想カメラを前方に移動させて、前記標的光線を侵害している障害物を回避するように構成されたコライダモジュールをさらに備え、前記標的光線が、前記仮想カメラの原点から、前記仮想カメラのスクリーン上の前記標的ゾーンを通って、前記対象の一部分に関連付けられた３Ｄ座標まで延在しており、
前記コライダモジュールが、前記仮想カメラを、前記障害物が前記標的光線を侵害する前に、前記仮想カメラに関連付けられた元の高さまで、前記標的光線に関連付けられた後方ベクトル方向に移動させるようにさらに構成されており、前記移動が、一連のステップの反復を含み、前記一連のステップが、
陰の光線を、前記陰の光線が前記元の高さで定義された水平面と接するまで、前記対象の一部分から離れる方向にカメラ軸に沿って投射することと、
前記障害物または遭遇する第２の障害物に基づいて、前記陰の光線を、前記陰の光線が前記障害物または前記第２の障害物に命中する点で、障害物法線によって定義される平面に投影することと、
前記障害物または前記第２の障害物の前記障害物法線によって定義される前記平面への前記陰の光線の投影として、新しい光線方向を定義することと、
新しい光線を前記新しい光線方向に延在させ、前記水平面に到達するか、または第３の障害物に命中するか、または前記第３の障害物の境界ボックスの縁部に到達すると停止させることと、
前記第３の障害物に到達することに基づいて、前記仮想カメラの前記移動を反復することと、
前記境界ボックスの前記縁部に到達することに基づいて、前記カメラ軸を、前記対象の一部分から現在のカメラの場所への方向として再定義し、前記仮想カメラの前記移動を反復することと、を含む、システム。
【請求項２】
前記対象の一部分が前記ソフト境界と前記ハード境界との間の前記場所まで移動したとの前記検出が、前記仮想カメラに対する２Ｄ空間における四元数、単位長さベクトル、および単精度浮動小数点演算を使用して実施される、請求項１に記載のシステム。
【請求項３】
前記対象の一部分が、前記標的ゾーンに関連付けられた前記ハード境界を越えた場所まで移動したとの検出に基づいて、前記第２の追跡時間をゼロに設定することと、前記方位の前記変更を実施して、前記対象を前記ハード境界の縁部に瞬時に連れ戻すことと、をさらに含む、請求項１に記載のシステム。
【請求項４】
前記１つ以上のコンピュータメモリに組み込まれた追加の構図モジュールおよび追加のコライダモジュールをさらに備え、前記追加の構図モジュールおよび前記追加のコライダモジュールが、追加の仮想カメラの方位および位置を変更して、前記追加の仮想カメラに関連付けられた標的ゾーン内に前記対象の一部分を保持するための動作を実施するように構成されており、前記仮想カメラおよび前記追加の仮想カメラが、メタカメラを備え、前記メタカメラが、前記仮想カメラによって捕捉された前記対象の一部分のショットの品質、および前記追加の仮想カメラによって捕捉された前記対象の一部分のショットの品質に基づいて、前記仮想カメラまたは前記追加の仮想カメラのいずれかを選択するように構成されている、請求項１に記載のシステム。
【請求項５】
前記仮想カメラによって捕捉された前記ショットの前記品質、または前記追加の仮想カメラによって捕捉された前記ショットの前記品質が、少なくとも、前記コライダモジュール、前記追加のコライダモジュール、前記構図モジュール、または前記追加の構図モジュールの活動によって判定され、前記活動が、前記仮想カメラおよび前記追加の仮想カメラに与えられた変位の量、および前記仮想カメラおよび前記追加の仮想カメラに与えられた回転の量、を含む、請求項４に記載のシステム。
【請求項６】
方法であって、
仮想カメラの方位を変更して、前記仮想カメラのスクリーン上の標的ゾーン内に対象の一部分を保持するための動作を実施することを含み、前記動作が、
ソフト境界を前記標的ゾーンに関連付けることであって、前記ソフト境界は、前記標的ゾーンを囲む前記スクリーン上の第１の境界線であり、前記ソフト境界は、前記仮想カメラの方位を変更するための第１の追跡時間に関連付けられている、前記ソフト境界を前記標的ゾーンに関連付けることと、
ハード境界を前記標的ゾーンに関連付けることであって、前記ハード境界は、前記標的ゾーンと前記ソフト境界の外側の領域を囲む前記スクリーン上の第２の境界線であり、前記ハード境界は、前記仮想カメラの再方位付けの変更のための第２の追跡時間に関連付けられている、前記ハード境界を前記標的ゾーンに関連付けることと、
前記対象の一部分が前記ソフト境界と前記ハード境界との間の場所まで移動したとの検出に基づいて、前記仮想カメラを再方位付けるための前記第１の追跡時間を判定することであって、前記第１の追跡時間の前記判定が、前記対象の前記標的ゾーンからの偏差の量に基づく、判定することと、前記仮想カメラの前記方位の前記変更を実施して、前記第１の追跡時間にわたって前記対象を前記標的ゾーンに連れ戻すことと、を含み、
前記方法は、
前記仮想カメラに関連付けられた標的光線上で前記仮想カメラを前方に移動させて、前記標的光線を侵害している障害物を回避することであって、前記標的光線が、前記仮想カメラの原点から、前記仮想カメラのスクリーン上の前記標的ゾーンを通って、前記対象の一部分に関連付けられた３Ｄ座標まで延在している、前記障害物を回避すること、
前記仮想カメラを、前記障害物が前記標的光線を侵害する前に、前記仮想カメラに関連付けられた元の高さまで、前記標的光線に関連付けられた後方ベクトル方向に移動させること、をさらに含み、前記移動が、一連のステップの反復を含み、
前記一連のステップが、
陰の光線を、前記陰の光線が前記元の高さで定義された水平面と接するまで、前記対象の一部分から離れる方向にカメラ軸に沿って投射することと、
前記障害物または遭遇する第２の障害物に基づいて、前記陰の光線を、前記陰の光線が前記障害物または前記第２の障害物に命中する点で、障害物法線によって定義される平面に投影することと、
前記障害物または前記第２の障害物の前記障害物法線によって定義される前記平面への前記陰の光線の投影として、新しい光線方向を定義することと、
新しい光線を前記新しい光線方向に延在させ、前記水平面に到達するか、または第３の障害物に命中するか、または前記第３の障害物の境界ボックスの縁部に到達すると停止させることと、
前記第３の障害物に到達することに基づいて、前記仮想カメラの前記移動を反復することと、
前記境界ボックスの前記縁部に到達することに基づいて、前記カメラ軸を、前記対象の一部分から現在のカメラの場所への方向として再定義し、前記仮想カメラの前記移動を反復することと、を含む、方法。
【請求項７】
前記対象の一部分が前記ソフト境界と前記ハード境界との間の前記場所まで移動したとの前記検出が、前記仮想カメラに対する２Ｄ空間における四元数、単位長さベクトル、および単精度浮動小数点演算を使用して実施される、請求項６に記載の方法。
【請求項８】
前記対象の一部分が、前記標的ゾーンに関連付けられた前記ハード境界を越えた場所まで移動したとの検出に基づいて、前記第２の追跡時間をゼロに設定することと、前記方位の前記変更を実施して、前記対象を前記ハード境界の縁部に瞬時に連れ戻すことと、をさらに含む、請求項６に記載の方法。
【請求項９】
前記方法は、追加の仮想カメラの方位および位置を変更して、前記追加の仮想カメラに関連付けられた標的ゾーン内に前記対象の一部分を保持するための動作を実施すること、をさらに含み、前記仮想カメラおよび前記追加の仮想カメラが、メタカメラを備え、前記メタカメラが、前記仮想カメラによって捕捉された前記対象の一部分のショットの品質、および前記追加の仮想カメラによって捕捉された前記対象の一部分のショットの品質に基づいて、前記仮想カメラまたは前記追加の仮想カメラのいずれかを選択するように構成されている、請求項６に記載の方法。
【請求項１０】
前記仮想カメラによって捕捉された前記ショットの前記品質、または前記追加の仮想カメラによって捕捉された前記ショットの前記品質が、少なくとも、
前記仮想カメラおよび前記追加の仮想カメラに与えられた変位の量、および
前記仮想カメラおよび前記追加の仮想カメラに与えられた回転の量、によって判定される、請求項９に記載の方法。
【請求項１１】
命令のセットを記憶する非一時的機械可読媒体であって、前記命令が、１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
仮想カメラの方位を変更して、前記仮想カメラのスクリーン上の標的ゾーン内に対象の一部分を保持するための動作を実施させ、前記動作が、
ソフト境界を前記標的ゾーンに関連付けることであって、前記ソフト境界は、前記標的ゾーンを囲む前記スクリーン上の第１の境界線であり、前記ソフト境界は、前記仮想カメラの方位を変更するための第１の追跡時間に関連付けられている、前記ソフト境界を前記標的ゾーンに関連付けることと、
ハード境界を前記標的ゾーンに関連付けることであって、前記ハード境界は、前記標的ゾーンと前記ソフト境界の外側の領域を囲む前記スクリーン上の第２の境界線であり、前記ハード境界は、前記仮想カメラの再方位付けの変更のための第２の追跡時間に関連付けられている、前記ハード境界を前記標的ゾーンに関連付けることと、
前記対象の一部分が前記ソフト境界と前記ハード境界との間の場所まで移動したとの検出に基づいて、前記仮想カメラを再方位付けるための前記第１の追跡時間を判定することであって、前記第１の追跡時間の前記判定が、前記対象の前記標的ゾーンからの偏差の量に基づく、判定することと、前記仮想カメラの前記方位の前記変更を実施して、前記第１の追跡時間にわたって前記対象を前記標的ゾーンに連れ戻すことと、を含み、
前記命令が、前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
前記仮想カメラに関連付けられた標的光線上で前記仮想カメラを前方に移動させて、前記標的光線を侵害している障害物を回避することであって、前記標的光線が、前記仮想カメラの原点から、前記仮想カメラのスクリーン上の前記標的ゾーンを通って、前記対象の一部分に関連付けられた３Ｄ座標まで延在している、前記障害物を回避すること、
前記仮想カメラを、前記障害物が前記標的光線を侵害する前に、前記仮想カメラに関連付けられた元の高さまで、前記標的光線に関連付けられた後方ベクトル方向に移動させること、をさらに実施させ、前記移動が、一連のステップの反復を含み、
前記一連のステップが、
陰の光線を、前記陰の光線が前記元の高さで定義された水平面と接するまで、前記対象の一部分から離れる方向にカメラ軸に沿って投射することと、
前記障害物または遭遇する第２の障害物に基づいて、前記陰の光線を、前記陰の光線が前記障害物または前記第２の障害物に命中する点で、障害物法線によって定義される平面に投影することと、
前記障害物または前記第２の障害物の前記障害物法線によって定義される前記平面への前記陰の光線の投影として、新しい光線方向を定義することと、
新しい光線を前記新しい光線方向に延在させ、前記水平面に到達するか、または第３の障害物に命中するか、または前記第３の障害物の境界ボックスの縁部に到達すると停止させることと、
前記第３の障害物に到達することに基づいて、前記仮想カメラの前記移動を反復することと、
前記境界ボックスの前記縁部に到達することに基づいて、前記カメラ軸を、前記対象の一部分から現在のカメラの場所への方向として再定義し、前記仮想カメラの前記移動を反復することと、を含む、非一時的機械可読媒体。
【請求項１２】
前記対象の一部分が前記ソフト境界と前記ハード境界との間の前記場所まで移動したとの前記検出が、前記仮想カメラに対する２Ｄ空間における四元数、単位長さベクトル、および単精度浮動小数点演算を使用して実施される、請求項１１に記載の非一時的機械可読媒体。
【請求項１３】
前記対象の一部分が、前記標的ゾーンに関連付けられた前記ハード境界を越えた場所まで移動したとの検出に基づいて、前記第２の追跡時間をゼロに設定することと、前記方位の前記変更を実施して、前記対象を前記ハード境界の縁部に瞬時に連れ戻すことと、をさらに含む、請求項１１に記載の非一時的機械可読媒体。
【請求項１４】
前記命令が、前記１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、
追加の仮想カメラの方位および位置を変更して、前記追加の仮想カメラに関連付けられた標的ゾーン内に前記対象の一部分を保持するための動作を実施させ、
前記仮想カメラおよび前記追加の仮想カメラが、メタカメラを備え、前記メタカメラが、前記仮想カメラによって捕捉された前記対象の一部分のショットの品質、および前記追加の仮想カメラによって捕捉された前記対象の一部分のショットの品質に基づいて、前記仮想カメラまたは前記追加の仮想カメラのいずれかを選択するように構成されている、請求項１１に記載の非一時的機械可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、自動化されたシネマトグラフィのためのソフトウェアツールの分野に関する。
【背景技術】
【０００２】
３Ｄ仮想シネマトグラフィのワールドには、様々なシナリオでシーンを撮影するための手続き型カメラが存在する。手続き型カメラは、シーンとその中のオブジェクトに何らかの方法で適合するようにプログラムされる。例えば、シーンを撮影するために、手続き型カメラは、３Ｄ環境を通じて対象に追従しながら、その対象に対して距離および固定方位を維持することができる。しかしながら、様々なシナリオ（例えば、運動中の対象、運動中の他の３Ｄオブジェクトなど）を撮影する手続き型カメラでは、対象がいくつかの中間にあるオブジェクトによってカメラ視野から遮蔽されたり、所望のショット構図から外れたりする事例が多く存在する。場合によっては、対象に追従するカメラが、対象に追従しようとしているときにオブジェクトの後ろに引っかかることがあり、または対象に対してある特定のショットを維持するために対象内に入り込むことがある。
【０００３】
上記の問題が重要になり得る手続き型カメラの一例は、ビデオゲームの録画およびブロードキャストであり、非プレイ中のホストは、自身の、リアルタイムのオンラインマルチプレイヤビデオゲームの視野をコメントと共に観覧およびブロードキャストする。これらの非プレイ中のユーザは、「ホスト」と呼ばれ、彼らのブロードキャストはゲームのホスティングである。多くの第三者が、Ｔｗｉｔｃｈ（登録商標）およびＹｏｕＴｕｂｅ（登録商標）などのウェブサイトを介して、ホストされたゲームを選局し観覧することができる。ホストは、手続き型カメラを使用して、ビデオゲームを録画し、上に記載される手続き型カメラの難しさは、シネマトグラフィック（例えば、ショット構図、カメラカットなど）の品質の低下と、ビデオゲームの視聴者のユーザ体験の低下につながる。
【図面の簡単な説明】
【０００４】
本開示のさらなる特徴および利点は、添付の図面と組み合わせて、以下の詳細な説明から明らかになるであろう。
【図１】一実施形態による、コライダモジュールおよび構図モジュールを含む、ビデオゲームシネマトグラフィシステムを例示する概略図である。
【図２】一実施形態による、構図標的ゾーンおよびその周りの境界ゾーンを示すスクリーンショットを例示する概略図である。
【図３】一実施形態による、従属構図を示す概略図である。
【図４】一実施形態による、構図方法を示すフローチャートである。
【図５】一実施形態による、カメラのコライダスパイクを示す概略図である。
【図６Ａ】一実施形態による、コライダの方法を示すフローチャートである。
【図６Ｂ】一実施形態による、コライダの方法の開始を示すフローチャートである。
【図６Ｃ】一実施形態による、コライダの方法を示すフローチャートである。
【図６Ｄ−１】一実施形態による、コライダの方法を示すフローチャートである。
【図６Ｄ−２】一実施形態による、コライダの方法を示すフローチャートである。
【図６Ｅ】一実施形態による、コライダモジュールがカメラを移動させて、オブジェクトを回避する、仮想環境の概略ダイアグラムである。
【図６Ｆ−１】一実施形態による、コライダの方法を示すフローチャートである。
【図６Ｆ−２】一実施形態による、コライダの方法を示すフローチャートである。
【図６Ｇ】一実施形態による、コライダモジュールがカメラを移動させて、オブジェクトを回避する、仮想環境の概略ダイアグラムである。
【図７Ａ】遮蔽オブジェクトがスクリーンを横切って移動し、対象を被覆するカメラスクリーンの概略ダイアグラムである。
【図７Ｂ】遮蔽オブジェクトがスクリーンを横切って移動し、対象を被覆するカメラスクリーンの概略ダイアグラムである。
【図７Ｃ】遮蔽オブジェクトがスクリーンを横切って移動し、対象を被覆するカメラスクリーンの概略ダイアグラムである。
【図８Ａ】ステート駆動カメラのユーザインターフェースパネルを例示するスクリーンショットである。
【図８Ｂ】ゲーム中のステートの動的に入力されたドロップダウンリストを例示するスクリーンショットである。
【図８Ｃ】カメラボタンをクリックした結果を例示するスクリーンショットである。
【図８Ｄ】どのようにステート駆動カメラを一緒にブレンドすることができるかを例示するスクリーンショットである。
【図８Ｅ】優先度に関する制御を備えたステート駆動カメラに曝されるすべてのカメラのユーザ定義リストを例示するスクリーンショットである。
【図８Ｆ】単一のステート駆動カメラシステムの全体的な優先度に関する制御を例示するスクリーンショットである。
【図９】ユーザによって着用された例示的なヘッドマウントディスプレイ（ＨＭＤ）のダイアグラムである。
【図１０】本明細書に記載される様々なハードウェアアーキテクチャと併せて使用され得る例示的なソフトウェアアーキテクチャを例示するブロックダイアグラムである。
【図１１】機械可読媒体（例えば、機械可読記憶媒体）から命令を読み出し、本明細書で論じられる方法論のうちのいずれか１つ以上を実施するように構成されたいくつかの例示的な実施形態による、機械９００の構成要素を例示するブロックダイアグラムである。
【発明を実施するための形態】
【０００５】
添付の図面全体を通して、同様の特徴は同様の参照番号によって識別されることが留意されよう。
以下の説明および図面は、本開示を例示するものであり、本開示を限定するものと解釈されるべきではない。本開示の完全な理解を提供するために、多くの具体的な詳細を記載する。しかしながら、ある特定の例では、本開示の説明を不明瞭にすることを回避するために、当業者に周知の詳細については記載しない。
【０００６】
本明細書では、３Ｄ仮想環境内のカメラコライダ（camera colliders）およびショット構図保存のためのシステムおよび方法であって、対象をフィルム化するときに、仮想手続き型カメラがオブジェクトの後ろに引っかかったり、オブジェクト内に入り込むことを防止しつつ、同時にカメラショット内の対象のスクリーン構図も維持する、システムおよび方法が記載されている。
【０００７】
用語：本明細書の説明全体を通じて、「対象」という用語は、フィルム化の間に仮想カメラの所望される主な対象物（例えば、対象は多くの場合、カメラの焦点である）である、３Ｄ仮想環境内のオブジェクトを指す。
【０００８】
ここで図面に移ると、本開示の実施形態による、カメラコリジョンおよび構図保存のためのシステムおよび方法が例示されている。図１は、ゲームエンジンデバイスおよび関連する周辺装置を含むビデオゲームシネマトグラフィデバイス（video game cinematography device）の構成要素ダイアグラムである。例示的な実施形態では、ビデオゲームシネマトグラフィデバイスは、ユーザによって動作されるコンピューティングデバイスである。ユーザは、オンラインマルチプレイヤゲーム（例えば、ｅスポーツゲーム）のプレイヤであっても、ビデオゲームに関連付けられた様々なブロードキャスト機能を提供するブロードキャストホスト（または単に「ホスト」）であってもよい。ビデオゲームシネマトグラフィデバイスは、１つ以上のディスプレイデバイス（例えば、従来のコンピュータモニタ、ＶＲウェアラブルデバイスなど）と、１つ以上の入力デバイス（例えば、キーボード、マウス、ハンドヘルドポインティングデバイス、タッチスクリーンなど）とを含む。ビデオゲームシネマトグラフィデバイスはまた、メモリ、１つ以上の中央処理ユニット（ＣＰＵ）、１つ以上のグラフィック処理ユニット（ＧＰＵ）、および１つ以上のネットワークアダプタ（例えば、ビデオゲームのために使用されるネットワーク接続を提供する有線または無線ネットワークアダプタ）を含む。
【０００９】
例示的な実施形態では、ビデオゲームシネマトグラフィデバイスは、ビデオゲーム（またはシミュレーション）をユーザに提示する（例えば、ＣＰＵまたはＧＰＵによって実行される）ゲーム用エンジンを含む。ゲーム用エンジンは、コライダモジュールおよび構図モジュールを含み、これらは、本明細書に記載されるようなシネマトグラフィックな機能性を提供する。構図モジュールおよびコライダモジュール、ならびにゲーム用エンジンの各々は、動作中にＣＰＵまたはＧＰＵによって実行される、メモリ内に存在するコンピュータ実行可能命令を含む。ゲーム用エンジンは、ディスプレイデバイスと通信し、かつまた、入力デイバス（複数可）などの他のハードウェアと通信する。構図モジュールおよびコライダモジュールは、ゲーム用エンジン内に直接統合され得るか、または外部ソフトウェア（例えば、プラグインまたは他の独立したビデオ処理ソフトウェア）として実装され得る。
【００１０】
一実施形態によれば、構図モジュールは、仮想カメラの方位を変更して、（本明細書で標的ゾーンと称される）カメラスクリーン上の特定のエリア内の（本明細書で対象標的または単に標的と称される）対象の特定の部分を保持する。本明細書に記載される方法は、スクリーン空間内で標的の位置を維持するための非常に高性能で正確な方法である。構図モジュールは、標的を所望の標的ゾーン内に位置決めるように、いかに迅速にカメラを方位付けるかを定義するために、時間ベースの追跡速度と、カメラスクリーン内の境界ボックスとを含む。本明細書に記載される構図モジュールは、カメラの方位を制御するが、対象までのカメラの距離を制御する必要はなく、かつしたがって、カメラの位置を（絶対３Ｄ空間または対象に対する位置のいずれかで）制御する他のシステムと共に使用され得る。
【００１１】
多くの実施形態に従って、かつ図２Ａおよび図２Ｂに示されるものは、ショット構図モジュールの境界を含有するカメラスクリーンである。対象の構図は、カメラスクリーンの２次元空間の特定のエリア内に対象を設置することによって定義される。特定のエリアは、標的ゾーンと称される。ショットのフィルム化中に、構図モジュールは、カメラの方位を動的に変更して、標的を標的ゾーン内に保持する。図に見られるように、カメラスクリーン上の標的ゾーンは、いくつかの境界のセットによって定義される。視覚化されると、スクリーンの３つの領域、すべてのソフト境界内にある標的ゾーン、ソフト境界とハード境界との間の空間を占有するソフト境界ゾーン、およびハード境界ゾーンの外側の空間を占有するハード境界ゾーン、として現れる。境界（ひいては、標的ゾーン）は、ユーザによって定義されるか、またはシネマトグラフィの規則を使用する自動化された手順によって選ばれる場合もある。
【００１２】
いくつかの実施形態では、対象は、複数の標的を含む構図対象であり得、これらの各々は、独立して移動し得る。例えば、構図対象は、チームの２人以上のプレイヤ、またはプレイヤと固定された位置もしくは他の非プレイヤオブジェクトを含み得る。構図モジュールは、カメラを使用して、構図対象を追跡し、（例えば、質量中心タイプの演算として）構図対象またはその標的の場所および方位の側面に基づいて、カメラを位置決め、方位付ける。構図対象を論理グループとして使用することができ、かつ「ＬｏｏｋＡｔ」として使用することができ、他のユーザが視認する標的としての構図対象の使用を可能にする。いくつかの実施形態では、構図対象の位置は、構図対象の標的のすべてを含む境界ボックスの中心に設定され得る（例えば、構図対象の標的の位置および半径から計算される）。
【００１３】
いくつかの実施形態では、構図対象内の各標的には、構図対象に対するカメラの位置および方位に影響を与え得る相対的重み付けを与えることができる。例えば、先頭のチームメンバーを別のチームメンバーよりも高く重み付けすることによって、チームキャプテンまたはグループを率いるチームメンバーに向かってカメラを傾斜させることができ、例えば、カメラが焦点の中心をより高く重み付けされたチームメンバーにより向かってシフトすることを引き起こす。いくつかの実施形態では、構図対象の各標的の重み付けは、特定の標的によって取られたアクションに基づいて動的に変化し得る。例えば、１人のチームメンバーが敵を射撃しているときに、第２のチームメンバーが遊休状態で異なる方向を見ている場合、活動中のチームメンバーをより高く重み付けすることができる。いくつかの実施形態では、平均方位は、標的の方位を表す四元数の正規化された加重和である。そのため、かつ例えば、標的の同時に起きるアクションは、カメラが焦点の中心を活動中のチームメンバーにより向かってシフトし、カメラの方位を活動中のチームメンバーの方位に向かって（例えば、活動中のプレイヤの発射方向により向かって）シフトすることを引き起こす場合がある。
【００１４】
いくつかの実施形態では、構図モジュールは、構図対象を、それらの位置に基づいて、動的に自動フレーム調整し得る。例えば、オブジェクトが離れて移動する場合、構図モジュールは、構図対象内の標的のすべてを含むように、視野またはカメラの位置を調節することができる。いくつかの実施形態では、構図モジュールは、初期のカメラの位置に基づいて、構図対象の境界ボックスを作成し、占有するスクリーン空間を評価し得る。いくつかの実施形態では、スクリーン空間の寸法は、構図対象を視認するユーザによって指定され得る（例えば、水平および垂直両方のカメラ寸法）。カメラは、その視野を調節して、個々の標的が移動するときに構図対象を再フレーム調整することができる。いくつかの実施形態では、再フレーム調整は、カメラを（例えば、カメラの標的の中心軸に沿って）構図対象に向かって、またはそれから離れる方向に移動させることによって達成され得る。いくつかの実施形態では、カメラの再位置決めをある期間にわたって行い、それによって、むらのある遷移を回避するように、再フレーム調整アクションにダンピングを適用することができる。
【００１５】
図３は、対象が象であり、対象標的が象の右眼である、標的ゾーン境界を有する対象構図の一例を示している。本例の標的ゾーンは、カメラスクリーンの右上部分のエリアである。
【００１６】
一実施形態に従って、標的がこれらの３つのゾーンの各々にある場合の構図モジュールの挙動は、以下のように特徴付けられる。
標的ゾーン−標的が標的ゾーン内にある場合、カメラの方位付けは行われず、構図モジュールは、カメラスクリーンの標的の位置を監視し続ける。
【００１７】
ソフト境界ゾーン−標的がソフト境界とハード境界との間であると判定される場合、構図モジュールは、カメラを所望の水平および垂直追跡速度で方位付けて、カメラを標的ゾーンに移動させる。追跡速度は、スクリーン空間内で定義される。
【００１８】
ハード境界ゾーン−標的は、いずれのハード境界線も越えることはできない。ハード境界線のうちの１つを越えた標的は、構図モジュールが、標的に最も近いハード境界の縁部にカメラを瞬時に方位付けることを引き起こす。このアクションには時間遅延はなく（例えば、時定数はゼロである）、カメラは、その位置が境界を越えた検出されると、瞬時に移動する。
【００１９】
図２および図３は、水平境界および垂直境界の対称的な位置決めのように見えるものを示しているが、これらの境界を、ゾーンのサイズが左／右および上／下の両方で非対称になり得るように、対称に位置決めする必要はない。さらに、図２および図３は、矩形の標的ゾーン、矩形のソフト境界ゾーン、および矩形のハード境界を作成する、互いに直角で線形の境界のように見えるものを示しており、図２Ｂに示されるように、境界は非線形であり得、ゾーンの形状は任意の形状を有し得る。
【００２０】
本明細書に記載される追跡方法は、スクリーン空間の垂直軸および水平軸の両方に沿った分離追跡を可能にする。加えて、追跡方法は、各境界に対して時定数を使用して、標的が標的ゾーン内に移動するように、構図モジュールがカメラを再方位付けるために使用し得る時間の量を判定する。３つの記載されるゾーンでは、構図モジュールは、所望の構図からの偏差を検出した場合（すなわち、標的が標的ゾーンの外側にある場合）にのみカメラを調節する。さらに、ソフト境界ゾーン内のカメラの再方位付けは、境界からの偏差の量に基づいた段階的な応答である。再方位付けの速度は、標的ゾーンの境界からの距離に関する。この手法は、標的が標的ゾーンに近づけば近づくほど、カメラの反応が緩徐になる（逆もまた同様）ため、カメラの動きに対する人間のリアルな感覚を可能にする。これは、人間によって制御されるカメラの動きと同様である。
【００２１】
一実施形態では、本方法は、単精度浮動小数点演算を使用し、高品質の結果を生み出す。単精度浮動小数点演算を使用するため、倍精度浮動小数点演算を用いた演算と比較して、計算の負担が低減される。これは、ショット構図を複数のカメラで同時に行わなければならない状況では非常に有用である。例えば、シーン内に複数のカメラがある場合、高性能コンピュータを使用することなく、この方法を使用して、各カメラの特定の構図を同時に維持することができる。同じ理由で、本明細書に記載される構図方法は、計算能力がデスクトップ／ラップトップコンピュータよりも低いことがあるモバイルデバイスでも非常に実用的である。単精度のみを使用して浮動小数点の正確さを保つために、すべての計算はカメラ座標空間（例えば、カメラに対するローカル座標）内で実施される。また、スクリーン上の対象の位置およびカメラの方位を判定するためにオイラー角と三角法とを使用する代わりに、すべての方位および回転の値は、四元数と単位長さベクトルとを使用して計算される。
【００２２】
一実施形態に従って、かつ図４に示されるものは、構図方法であり、各カメラの、標的を標的ゾーン内に保持するための構図モジュールの動作順序は、以下のとおりである。
最初に、構図モジュールは、標的の位置を３Ｄワールド座標から３Ｄカメラ空間座標に変換する。次いで、構図モジュールは、標的の３Ｄカメラ座標を２Ｄカメラビューポート空間の位置（例えば、カメラスクリーンの位置）に変換する。次いで、構図モジュールは、スクリーン空間内の標的の位置を選択された標的ゾーンと比較する。ビューポート空間内の選択された標的ゾーン（例えば、中央境界領域）が標的を含有しない場合、構図モジュールは、カメラ方位を再調節しなければならない。しかしながら、ビューポート空間が標的を含有している場合、カメラ方位を調節する必要はなく、構図モジュールは、ステップ１に戻って、標的の位置を監視することができる。カメラ方位を再調節するために、構図モジュールは、カメラが、標的を所望の構図標的ゾーン内に入れる最も短い経路上で回転するように、標的から最も近い供給された境界の縁部上の点を見つける。次いで、構図モジュールは、２つのベクトル、１つ目は、カメラ原点から標的までのベクトル、２つ目は、カメラ原点から前のステップで計算された境界上の点までのベクトル、を演算する。両方のベクトルは、カメラ座標で計算される。次いで、構図モジュールは、水平追跡の基準として使用するために２つのベクトルを右軸に投影し、垂直追跡の基準として使用するために２つのベクトルを上軸に投影する。次いで、構図モジュールは、四元数を使用した平滑な運動のために、２つのベクトル間の角度を判定し、その値を使用して、時定数追跡値をスケーリングする。
【００２３】
次いで、構図モジュールは、演算された角度から右軸および上軸を中心として四元数回転を作成する。次いで、構図モジュールは、結果として生じる四元数を使用して、要求された量だけカメラを回転させる。
【００２４】
構図モジュールは、この追跡処理を２回、１回はハード追跡境界に、もう１回は更新ごとにソフト追跡境界に適用する（ハード境界の追跡時間は、即時を意味するゼロである）。
【００２５】
また、コンポーザモジュールは、静止したカメラおよび移動する対象を有するシステム、移動するカメラおよび静止した対象を有するシステム、またはカメラおよび対象の両方が運動中であるシステムに適用され得ることに留意されたい。
【００２６】
一実施形態に従って、かつ本明細書に記載されるものは、（一部がコライダモジュール内に埋め込まれた）コライダシステムであり、それによって、コライダモジュールがカメラを移動させて（例えば、位置を変更して）、オブジェクトが標的をカメラの標的ゾーンから遮蔽している３Ｄ環境内でオブジェクトを回避するコライダシステムは、構図モジュールシステムを使用して、（カメラの方位を変更することによって）ショットの構図を維持しながら、カメラの位置を移動させて、遮蔽オブジェクトを回避する。
【００２７】
一実施形態に従って、かつ図５に示されるように、コライダモジュールは、カメラのコライダスパイクを作成する。コライダスパイクは、カメラから延在し、ある距離にわたって外方に到達するロッドである。カメラは、複数の角度で延在する複数のコライダスパイクを有し得る。コライダスパイクの長さおよびカメラから延在する方向は、ユーザによって定義され得、コライダスパイクごとに異なり得る。各コライダスパイクはまた、調節可能なダンピングを有し得る。ダンピングは、コライダスパイクが侵害されたとき（すなわち、３Ｄ環境内でオブジェクトに接触したとき）に有効になり、コライダスパイクがもはや侵害されていない（すなわち、もはや３Ｄ環境内でオブジェクトと接触しない）位置にコライダモジュールがカメラを戻す速度を参照する。ハードダンピングは、侵害された位置から侵害されていない位置までカメラを迅速に移動させる一方、ソフトダンピングは、侵害された位置から侵害されていない位置まで戻ってカメラを緩徐に移動させる。コライダダンピングは、カメラとオブジェクトとの間の衝突から何らかの不快な突然さを取り除く。コライダスパイクを、ダンピングを用いて必要以上に長くすることができ、視認者が気付かないであろうほど平滑に衝突を回避することができる。ダンピングなしでは、カメラは非常に不安定に作用する場合があり、すぐに停止／開始するなどの可能性がある。
【００２８】
コライダモジュールシステムの挙動は、カメラと、遮蔽オブジェクトと、ショットの対象との間で発生する遮蔽のタイプに依存する。一実施形態に従って、かつ図６Ａ〜図６Ｇに示されるように、本明細書に記載されるコライダシステムは、少なくとも２つの異なるタイプの遮蔽に応答する。第１のタイプの遮蔽は、遮蔽オブジェクトに対するカメラ本体の位置に関係し、かつより具体的には、オブジェクトがカメラ本体に十分に近く、１つ以上のコライダスパイクを侵害する（すなわち、オブジェクトがコライダスパイクの長さ以内に来る）場合に発生する。１つ以上のコライダスパイクが侵害されると、コライダモジュールは、コライダスパイクを侵害されていない状況に戻すために、カメラの位置を変更する。これを行うために、コライダモジュールは、侵害されたコライダスパイクの方向に沿って、カメラを遮蔽オブジェクトから離れる方向に移動させる。侵害されたコライダスパイクは、３Ｄ仮想空間内のベクトル方向と考慮され得る。例えば、カメラがその左側に侵害されたスパイクを有する場合、コライダモジュールは、コライダスパイクがオブジェクトによってもはや侵害されなくなるまで、カメラを（例えば、コライダスパイクのベクトル方向に沿って）右に移動させる。いくつかの実施形態では、コライダスパイクは、カメラと標的との間に自動的に含まれ、カメラから標的までの距離の一部またはすべてに延在し、それによって、介在するオブジェクトに基づいて、遮蔽をトリガする。複数のコライダスパイクが侵害された場合、コライダモジュールは、すべての侵害されたスパイクを排除するために、カメラを移動させる。換言すれば、コライダモジュールは、複数のコライダスパイク方向のベクトル和の方向に沿ってカメラを移動させる。一実施形態に従って、コライダモジュールは、構図モジュールを使用して、カメラが運動している間（例えば、侵害されたスパイクを修正している間）に、対象の構図視野が保たれることを保証する。コライダモジュールがカメラ本体の位置を調節する一方、構図モジュールは同時にカメラ方位を調節して、構図標的を標的ゾーン内に保持する。
【００２９】
一実施形態によれば、構図の保存を伴う第２のタイプの遮蔽があり、標的ゾーン内からの対象の視認は、カメラと対象との間に位置決めされたオブジェクトによって遮蔽される。この第２の状況では、コライダモジュールは、カメラ原点から対象標的（例えば、対象上の点）まで延在する線（「標的光線」と称される）を３Ｄ環境内に投影する。この標的光線は通常、（例えば、ユーザがスクリーンの縁部の標的ゾーンでショットを構図すると決定した場合）対象標的と標的ゾーンを介してカメラ構図モジュールで調節可能であるため、スクリーンの中心を通過しない。標的光線は、３Ｄ環境内のベクトルであると考えられ得る。
【００３０】
一実施形態に従って、標的光線が侵害されると（例えば、オブジェクトが標的光線と交差すると）、コライダモジュールは、カメラがもはやオブジェクトによって遮蔽されなくなり、標的光線がもはや侵害されていない位置にカメラが位置するまで、標的光線に沿って（例えば、標的光線ベクトル方向に沿って）カメラを対象に向かって移動させる。いくつかの実施形態では、この動きは、単一のフレーム内で起こる（例えば、カメラが新しい位置にジャンプする）。換言すると、カメラは、適切な構図で対象のクリアなショットが得られるまで、コライダモジュールによって前方に移動する（例えば、構図モジュールを使用して、カメラが位置を移動させるときに標的を標的ゾーン内に維持する）。一実施形態によれば、標的光線の長さは、対象標的に到達する前で終端するように、カメラから対象までの距離よりも短くてもよい。対象標的に到達する前で終端する標的光線は、対象に非常に近いオブジェクトと交差する可能性を排除するため、良好なショットを維持しながら迂回させることはできない。短い標的光線もまた、コライダモジュールがカメラを対象の非常に近くまでズームさせる可能性を排除するため、（例えば、極端なクローズアップを回避するために）意味のある構図が不可能になる。標的光線の長さを、対象標的を越えて突出し、反対側に現れるように定義することもでき、標的光線と対象の背後のオブジェクトとの交差が可能になる。
【００３１】
一実施形態に従って、かつ図６Ｄのフローチャートに示されるように、コライダモジュールは、標的光線が侵害される前にカメラを元の位置に向かって押し戻すことによって、元のカメラの高さを保つよう試みる。いくつかの実施形態では、この動きは、単一のフレーム内で起こる（例えば、カメラが、以下の方法によって判定される新しい位置にジャンプする）。他の実施形態では、カメラを押し戻すための以下の方法は、あまり頻繁に行われず、これは、計算の負荷を下げるのに役立つ場合がある。これを行うために、コライダモジュールは、光線（本明細書では陰の光線（negative ray）と称する）を、陰の光線が元のカメラの高さで定義された水平面と接するまで、陰の方向（例えば、標的から離れる方向）にカメラ軸に沿って投射し返す。障害物を介在させずに元のカメラの高さの平面に到達することができる場合は、陰の光線が元のカメラの高さの平面と交差する点にカメラを置き、終了する（例えば、図６Ａの点「Ａ」に行く）。障害物に遭遇した場合、コライダモジュールは、以下のステップを行う。ステップ１、陰の光線が障害物に命中する点で障害物法線によって定義される平面に陰の光線を投影する。ステップ２、障害物法線によって定義された平面への陰の光線の投影として、新しい光線方向を定義する。（例えば、２つの障害物が接する線に沿った点で陰の光線が障害物に命中した場合）内側角部について特殊なケースを開始し、新しい光線方向として、その交差線に陰の光線の投影を行う。新しい光線方向が元のカメラの高さの平面のほうに向かっていない場合、ただそこでカメラをそのままにして、カメラの高さを保つようにするモードを終了する。ステップ４、コライダモジュールは、光線を新しい光線方向に延在させて、元のカメラの高さの平面に到達するか、別の障害物に命中するか、または現在の障害物の境界ボックスの縁部に到達したときに停止する。元のカメラの高さの平面に到達した場合、この点でカメラをそのままにして終了する（例えば、図６Ａの点「Ａ」に行く）。反復の最大回数に到達した場合、この点でカメラをそのままにして終了する（例えば、図６Ａの点「Ａ」に行く）。別の障害物に到達した場合、ステップ１に戻って新しい反復を始める（例えば、図６Ｄの点「Ｃ」に行く）。現在の障害物の境界ボックスの縁部に到達した場合、カメラ軸を標的からここまでの方向として再定義し、元のカメラの高さを保つようにする新しい反復を始める（例えば、図６Ｄの点「Ｄ」に行く）。
【００３２】
一実施形態に従って、かつ図６Ｅに示されるものは、図６Ｄに記載される方法を使用したカメラの動きを示す仮想環境の概略ダイアグラムである。この例では、第１のフレームにおいて、障害物が標的光線を不明瞭にする場合、カメラは位置０（位置０）にある。第２のフレームをシミュレートして描画する前に、コライダモジュールは、カメラを位置１（位置１）に移動させて、障害物を回避する。しかしながら、位置１は、標的に非常に近く、依然として障害物を回避しながらも、元のカメラの高さは維持しない。したがって、コライダモジュールは、カメラをカメラの元の位置に戻そうと試みるが、その位置はオブジェクトによってブロックされる。次いで、コライダモジュールは、位置２（位置２）でオブジェクトの頂部に到達するまで、カメラをオブジェクトの壁に押し上げる。次いで、コライダモジュールは、カメラ軸が再び標的に向くようにカメラを回転させ、次いで、元のカメラの高さの平面で位置３（位置３）になるまで、カメラを押し戻す。位置１〜位置３までのこの動きは、単一の標準ビデオフレーム内で実施され得る。
【００３３】
一実施形態に従って、かつ図６Ｆのフローチャートに示されるように、コライダモジュールは、標的光線が侵害される前にカメラを元の位置に向かって押し戻すことによって、元のカメラの距離を保つよう試みる。いくつかの実施形態では、この動きは、単一のフレーム内で起こる（例えば、カメラが、以下の方法によって判定される新しい位置にジャンプする）。他の実施形態では、カメラを押し戻すための以下の方法は、あまり頻繁に行われず、これは、計算の負荷を下げるのに役立つ場合がある。これを行うために、コライダモジュールは、光線（本明細書では陰の光線と称する）を、陰の光線が標的からの元のカメラの距離で定義された垂直面と接するまで、陰の方向（例えば、標的から離れる方向）にカメラ軸に沿って投射し返す。障害物を介在させずに元のカメラの距離の平面に到達することができる場合は、陰の光線が元のカメラの距離の平面と交差する点にカメラを置き、終了する（例えば、図６Ａの点「Ａ」に行く）。障害物に遭遇した場合、コライダモジュールは、以下のステップを行う。ステップ１、陰の光線が障害物に命中する点で障害物法線によって定義される平面に陰の光線を投影する。ステップ２、障害物法線によって定義された平面への陰の光線の投影として、新しい光線方向を定義する。（例えば、２つの障害物が接する線に沿った点で陰の光線が障害物に命中した場合）内側角部について特殊なケースを開始し、新しい光線方向として、その交差線に陰の光線の投影を行う。新しい光線方向が元のカメラの距離の平面のほうに向かっていない場合、ただそこでカメラをそのままにして、カメラの距離を保つようにするモードを終了する。ステップ４、コライダモジュールは、光線を新しい光線方向に延在させて、元のカメラの距離の平面に到達するか、別の障害物に命中するか、または現在の障害物の境界ボックスの縁部に到達したときに停止する。元のカメラの距離の平面に到達した場合、この点でカメラをそのままにして終了する（例えば、図６Ａの点「Ａ」に行く）。反復の最大回数に到達した場合、この点でカメラをそのままにして終了する（例えば、図６Ａの点「Ａ」に行く）。別の障害物に到達した場合、ステップ１に戻って新しい反復を始める（例えば、図６Ｆの点「Ｆ」に行く）。現在の障害物の境界ボックスの縁部に到達した場合、カメラ軸を標的からここまでの方向として再定義し、元のカメラの高さを保つようにする新しい反復を始める（例えば、図６Ｆの点「Ｇ」に行く）。
【００３４】
一実施形態に従って、かつ図６Ｇに示されるものは、図６Ｆに記載される方法を使用したカメラの動きを示す仮想環境の概略ダイアグラムである。この例では、第１のフレームにおいて、障害物が標的光線を不明瞭にする場合、カメラは位置０（位置０）にある。第２のフレームをシミュレートして描画する前に、コライダモジュールは、カメラを位置１（位置１）に移動させて、障害物を回避する。しかしながら、位置１は、標的に非常に近く、依然として障害物を回避しながらも、標的に対して元のカメラの距離は維持しない。したがって、コライダモジュールは、カメラをカメラの元の位置に戻そうと試みるが、オブジェクトによってブロックされる。本方法によれば、コライダモジュールは、位置２（位置２）でオブジェクトの頂部に到達するまで、カメラをオブジェクトの壁に押し上げる。次いで、コライダモジュールは、カメラ軸が再び標的に向くようにカメラを回転させ、次いで、元のカメラの距離の平面で位置３（位置３）になるまで、カメラを押し戻す。位置１〜位置３までのこの動きは、単一の標準ビデオフレーム内で起こり得る。
【００３５】
オブジェクトの遮蔽に対するコライダモジュールの反応の一例として、図７Ａ、図７Ｂ、および図７Ｃは、遮蔽オブジェクトがカメラスクリーンを横切って左から右に移動する３つの遮蔽シナリオを示している。図７Ａでは、遮蔽オブジェクトは、スクリーンの左側のみを被覆し、象のどの部分も遮蔽しない。その場合、コライダモジュールは、カメラを移動させないことになる。図７Ｂでは、遮蔽オブジェクトは、スクリーンの左側のスクリーンエリアのほとんどを被覆し、象の大部分を遮蔽するが、対象標的は遮蔽しない。この場合もまた、これによりコライダモジュールがカメラを移動させることはない。しかしながら、図７Ｃでは、遮蔽オブジェクトは、スクリーンのほとんどを被覆し、最終的にカメラスクリーンの右上の対象標的を被覆する。遮蔽オブジェクトは、対象標的を被覆するため、標的光線と交差し、コライダモジュールが、遮蔽オブジェクトを越えるように、カメラを対象に向かって移動させることになる。
【００３６】
いくつかの実施形態では、コライダモジュールは、遮蔽された視線に基づいて反応するかどうか、およびいつ反応するかを判定する場合、最小障害物距離を利用し得る。障害物とカメラとの間の距離に基づいて、いくつかの遮蔽オブジェクトが無視されることがある（例えば、カメラ位置の変更なし）。例えば、近くのオブジェクトは、カメラからの最小障害物距離よりも短い場合、それらが前景を迅速に通過する可能性が高いため、無視されることがある。いくつかの実施形態では、遮蔽された視線に基づいて反応するかどうかを判定する際に、オブジェクトのサイズ、カメラもしくは標的の現在の軌道および速度、または遮蔽オブジェクトおよびカメラの現在の軌道および速度に基づく計算された遮蔽時間などの追加の要因を使用することができる。
【００３７】
一実施形態によれば、コライダモジュールおよび本明細書でメタカメラと称される特別なカメラを使用したカメラショット評価のための方法が提供される。メタカメラは、各々がサブショットを生み出す複数のサブカメラを含有する高レベルカメラである。サブカメラの各々は、コライダモジュールを含み得るか、またはそれを使用し得る。メタカメラは、各サブカメラが任意のタイプのサブショットを有するように設定することができる（例えば、メタカメラは、任意のタイプの映画のテーマに追従する必要はない）。例えば、サブカメラは、「顔から５メートル下がり、１メートル下に」対象から手続きとしてオフセットされ得るか、ワールド内の固定されたカメラであり得るか、サブカメラと対象との間の位置および角度の任意の数の制約／関係を有するフリールックカメラであり得る。
【００３８】
メタカメラは、任意のタイプのサブカメラ構成に対して完全にオープンであるが、サブカメラがテーマ内に設定されており、そのため、それらのすべてが何らかの概念的な類似性を有する場合、より効率的な場合がある。一実施形態によれば、メタカメラは、すべてのサブカメラが単一の概念的なタイプのカメラショット（例えば、ヘッドショット、ワイドショット、ロングショットなど）のバリエーションであるサブショットを有するように設定され得る。例えば、メタカメラは、サブショットの各々が対象のヘッドショットのバリエーションであったように、「ヘッドショット」メタカメラとして設定され得る。ヘッドショットサブカメラの各々は、ヘッドショットの異なるバリエーションを作成するための異なるパラメータ（例えば、異なる角度、距離、対象からの視野）を有することになる。
【００３９】
一実施形態によれば、メタカメラは、（例えば、コンピュータプログラムで）実装されると、含有するすべてのサブカメラのショット品質を評価し、それらをランク付けし、最も高い品質のランク付けを有する単一のサブショットを提供する。より具体的には、メタカメラは、トリガされると、サブカメラのすべてを起動させ、それらの各々で分析を迅速に実施して、「ショット品質」を判定し、次いで、最も高い品質のサブカメラのみを運転する。これは、最大で１フレームの遅延を伴って非常に迅速に起こる。
【００４０】
一実施形態では、ショット品質を以下のように判定することができる。各サブカメラには最初、パーフェクトスコアが与えられている。サブカメラの初期化（例えば、サブカメラのコライダモジュールが起動された）後、サブカメラのコライダモジュールのアクションに基づいて、サブカメラのスコアが調節される。コライダモジュールがサブカメラを移動させなければならない場合（例えば、サブカメラが対象を見ることをブロックされているか、またはサブショットの途中に何かがあるため）、スコアは下方に調節される。スコア調節量は、コライダモジュールによってカメラがどれだけ移動されたかに依存する。サブカメラがコライダモジュールから動いた後でも対象のショットを得ることができない場合、ショットは失敗と判定される（例えば、スコアはゼロに調節され得る）。高いスコア（例えば、パーフェクトスコアに近い）を有するサブカメラは、より低いスコアを有するサブカメラよりも移動が少ない。コライダモジュールによって移動されていないサブカメラ（例えば、パーフェクトショットを有する）は、最高位にランク付けされ、パーフェクトスコアを保有する。
【００４１】
いくつかの実施形態では、ショット品質を判定する際に、いくつかの基準を考慮に入れる。これらの基準には、例えば、（もしあれば）遮蔽の持続期間中に（例えば、持続期間が長ければ長いほど、ショット品質が低下する）、（例えば、コライダモジュールがカメラを移動させなければならなかった場合）標的がカメラの視点から遮蔽されているかどうか、（例えば、コライダモジュールからの衝突解消により）カメラがその理想的な位置、カメラから標的までの距離（例えば、以下に記載される）、ショット構図（例えば、ショットが境界内にあるかどうか）、ゲームコンテキストにおける標的の重要度（例えば、特定のゲームプレイヤなどの標的は、ゲームロジックによって、もしくは直接ゲームのプレイヤによって重要度でランク付けされ得る）からずれているかどうか、または特定のショットを選ぶことによって映画の規則が守られているかどうか（例えば、映画の規則は複数のショットにわたって適用することができ、かつそのため、これは、新しいショットが映画の規則に違反しているかどうかなど、１つ以上の以前のショットに依存する）、が含まれる。
【００４２】
いくつかの実施形態では、コライダモジュールは、特定のサブカメラの視界を選択する際の要因として、ショット優先度およびショット品質の両方を利用し得る。例えば、ショット優先度には、どのチームメンバーもしくはエリアが（例えば、最も効果的なプレイヤ、もしくはゲームの中心にある特定の場所に焦点を合わせている）サブカメラの視野内に存在するか、または（例えば、プレイヤ間の戦いに焦点を合わせているか、もしくはプレイヤがゲームで目的とされるオブジェクトを手に入れるときに）プレイヤもしくはゲームによって行われている現在のアクションの性質などの要因が含まれ得る。そのため、特定のサブカメラの視界を選択するために、ショット優先度をショット品質と共に重み付けすることができる。いくつかの実施形態では、ショット品質またはショット優先度に基づいて、ランダム化を適用することができる。例えば、複数のサブカメラが同様のスコアのショット品質またはショット優先度を有する場合、コライダモジュールは、選択するサブカメラ視認をランダム化し、それによって、ショット品質またはショット優先度を必ずしも犠牲にすることなく、様々なカメラの視界を提供することができる。
【００４３】
いくつかの実施形態では、コライダモジュールは、標的距離を識別し、その標的距離に基づいて、様々なサブカメラのショット品質を評価する。例えば、ユーザは、アクションの２０ヤードの視界を好む場合がある。そのため、コライダモジュールは、標的距離に基づいてサブカメラを選択し、より遠く離れたまたはより近くのものを越えて約２０ヤードのサブカメラの視界を重み付けする。いくつかの実施形態では、コライダモジュールは、標的距離をショット品質の要因として評価する際に（例えば、標的距離の何らかの所定の倍数まで）線形減衰を利用し得る。
【００４４】
いくつかの実施形態では、オービタルトランスポーザが標的上の追従カメラで利用される。構図モジュールは、位置デルタ、ベクトル、またはワールドヘディング（world heading）、複数のブレンドモード、および軸ごとのダンピング制御に基づいて、ヘディングバイアスに対する追加の制御を追加することができる。構成可能なガウシアンフィルタを使用して、速度判定を平滑化することができる。ある特定の即時の動き（例えば、車が停止するときの小さな急な動きもしくはひきつき）を鈍化させるか、または平滑化し、標的のより重要な動きにカメラの視界の焦点を合わせることが有利な場合がある。ローパスガウシアンフィルタを利用して、かかる小さな動きを平滑化することができる。
【００４５】
いくつかの実施形態では、構図モジュールは、対象距離に基づいてカメラの視野を自動的に調節して、オブジェクトをスクリーン上で同じサイズに保持することができる。例えば、構図モジュールは、（例えば、追従カメラの）視野を調節して、標的のヘッドのサイズをある特定のサイズのものに維持することができる。そのため、距離が変化したり、キャラクタが動き回ったりする場合であっても、カット間のオブジェクトサイズを制御することができる。いくつかの実施形態では、標的距離と共に、フレームカバレッジのワールドサイズを構成することができる。構図モジュールは、視野を動的に調節して、サイズを標的距離に維持することができる。ダンピング設定により、一時的な変化のきつさを制御が可能になる場合がある。
【００４６】
いくつかの実施形態では、構図モジュールは、ステート駆動カメラ視認を利用して、カメラおよびアニメーションステートのコードなしのリンクを提供することができる。開発者は、様々なアニメーションに対して異なるカメラ挙動をトリガすることができる。例えば、キャラクタが全力疾走するときに「ハンドヘルドカメラ」をトリガすることができる。アニメーション標的が設定されると（例えば、アニメーションシーケンスが開発者によって標的として設定されると）、構図モジュールは、そのアニメーション標的に関連付けられたアニメーションステートマシンをスキャンして、階層ステートを検索し、（例えば、すべての階層レベルの）すべてのステートを有するテーブルを作成する。次いで、構図モジュールは、特定の仮想カメラを各ステートに関連付ける。関連付けは、各ステートを特定の仮想カメラに接続することを可能にするユーザインターフェースを介して行われ得るか、または関連付けを、ある特定のタイプのすべてのステートが特定の仮想カメラに接続されるように、規則に基づけることができる。ゲーム中に、ステートが活動中になると、次いで、関連付けられた仮想カメラが構図モジュールによって起動される。特定のステートに関連付けられた仮想カメラがない場合、そのステート遷移は無視され、現在活動中のカメラが残る。いくつかの実施形態では、仮想カメラの遷移のために、カスタムブレンドされた規則を提供することができる。
【００４７】
何が起きても常に対象を良好な角度にカットすることができるシステムを作成するために、メタカメラと、コライダモジュールと、ショット評価との間のこの機能性により、各々が複数のサブカメラを含有する複数のメタカメラを作成することが可能である。
【００４８】
図８Ａは、ステート駆動カメラのユーザインターフェースパネルを例示するスクリーンショットである。このパネルにより、ユーザがアニメーションステートと仮想カメラとの間のリンク、ならびにショット間のブレンドを制御することを可能になる。
【００４９】
図８Ｂは、（例えば、ユーザがステートボタンをクリックしたときの）ゲーム中のステートの動的に入力されたドロップダウンリストを例示するスクリーンショットである。ユーザは、リスト内で利用可能な任意のステートを選ぶことができる。
【００５０】
図８Ｃは、カメラボタンをクリックした結果を例示するスクリーンショットである。カメラをクリックすると、シーン内のすべてのカメラが表示され、ユーザが任意のカメラを選んで、それを任意の選ばれたステートにリンクさせることが可能になる。これにより、（例えば、ユーザがコード化することなく）任意の特定のステートと任意の特定のカメラとのリンクが可能になる。
【００５１】
図８Ｄは、（例えば、カメラ１のショットからカメラ２のショットへ）どのようにステート駆動カメラを一緒にブレンドすることができるかを例示するスクリーンショットである。ブレンドは、図の中でカスタムブレンドと称される構成要素を使用して、このユーザインターフェースでユーザによって定義され得る。
【００５２】
図８Ｅは、優先度に関する制御を備えたステート駆動カメラに曝されるすべてのカメラの（例えば、どのカメラがステート駆動カメラによって見られるかを定義する）ユーザ定義リストを例示するスクリーンショットである。これは、図の中で子仮想カメラと称される。これは、ユーザが各カメラの優先度を制御し、よりよい明瞭さを提供することを可能にする。
【００５３】
図８Ｆは、単一のステート駆動カメラシステムの全体的な優先度に関する制御を例示するスクリーンショットである。いくつかの実施形態では、同じゲームで作動している多くのステートカメラ駆動システムが存在し得、各々は他のシステムに対して優先度を有し、それらの子カメラは各ステート駆動カメラシステムの下で独自の優先度を有する。
【００５４】
図９は、ユーザ（または「着用者」）１２００によって着用された例示的なヘッドマウントディスプレイ（ＨＭＤ）１２０２のダイアグラムである。例示的な実施形態では、ユーザ１２００（例えば、ゲーム開発者またはゲームプレイヤ）は、ＨＭＤ１２０２を着用しながら、ＶＲ環境または拡張現実（ＡＲ）コンテンツ（例えば、複合現実環境）を体験する。例示的な実施形態では、ＨＭＤデバイス１２０２は、着用者１２００の現実世界の視認を不明瞭にし得、かつ完全な仮想環境を着用者１２００に表示し得る不透明なバイザ１２０８を含み得る。他の実施形態では、ＨＭＤデバイス１２０２は、透明または半透明のバイザ（または「レンズ」（複数可）１０８を含み、それを介して、着用者１２００は、自身の周り（本明細書では「現実世界」とも称される）を視認する。バイザ１２０８は、例示の目的で透明として図９に例示されているが、上に記載されるように、いくつかの実施形態では、バイザ１２０８は、不透明であってもよいことを理解されたい。
【００５５】
例示的な実施形態では、ＨＭＤ１２０２はまた、バイザ１２０８上にグラフィックス（例えば、仮想オブジェクト）をレンダリングするディスプレイデバイス１２１８を含む。そのため、バイザ１２０８は、「スクリーン」または表面として作用し、その上にディスプレイデバイス１２１８の出力が現れ、それを介して着用者１２００は仮想コンテンツを体験する。いくつかの実施形態では、ＨＭＤ１２０２は、バイザを介して２つの異なる投影（例えば、各眼に１つ）を提示することができる。ディスプレイデバイス１２１８は、１つ以上のＧＰＵ１２０６またはホログラフィック投影ユニット（ＨＰＵ）によって駆動または制御される。ＧＰＵ１２０６は、ディスプレイデバイス１２１８を介した出力のレンダリングの高速化に役立つグラフィカル出力の態様を処理する。
【００５６】
例示的な実施形態では、ＨＭＤデバイス１２０２はまた、本明細書に記載される動作および方法のうちのいくつかを実行し得る１つ以上の中央処理ユニット（ＣＰＵ）１２０５を含む。ＨＭＤデバイス１２０２はまた、（例えば、ユーザ１２００の耳１２１６を介して）着用者１２００にオーディオ出力を提示するように構成されたオーディオデバイス１２１２（例えば、別個に示されていないスピーカ）を含む。別個に示されていないが、ＨＭＤデバイス１２０２はまた、本明細書に記載されるＨＭＤと他のコンピューティングデバイスとの間の通信を容易にする有線または無線ネットワークアダプタ（例えば、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ、セルラ）を含む。
【００５７】
いくつかの実施形態では、ＨＭＤデバイス１２０２は、デジタルカメラデバイス１２１０を含む。デジタルカメラデバイス（または単に「カメラ」）１２１０は、着用者１２００の視野（ＦＯＶ）の少なくとも一部を捕捉するように方位付けられた前向きビデオ入力デバイスである。換言すれば、カメラ１２１０は、ＨＭＤデバイス１２０２の方位に基づいて、現実世界の視野角（例えば、着用者１２００が、バイザ１２０８を通して見るときに着用者１２００のＦＯＶ内に見るものと同様のもの）を捕捉または「見る」。カメラデバイス１２１０は、ユーザ１２００の周りの現実世界のデジタルビデオ（例えば、着用者１２００の周りの視野、周辺視認、または３６０度の視認）を捕捉するように構成され得る。カメラデバイス１２１０を使用して、ユーザ１２００の周りの現実世界環境のデジタルビデオを捕捉することができる。いくつかの実施形態では、デジタルカメラデバイス１２１０からの出力は、（例えば、不透明なバイザの実施形態では）バイザ１２０８上に投影され得、（例えば、カメラ出力に追加される）追加の仮想コンテンツを含むこともできる。いくつかの実施形態では、カメラ１２１０は、深度カメラであり得るか、またはＨＭＤデバイス１２０２は、ユーザ１２００のＦＯＶ内のオブジェクトの深度情報を捕捉する深度センサを別様に含み得る。
【００５８】
いくつかの実施形態では、ＨＭＤデバイス１２０２は、１つ以上のセンサ（別個に図示せず）を含み得るか、またはセンサと（例えば、同様に着用者１２００が着用するリスト型ウェアラブルデバイスとの近距離無線通信（ＮＦＣ）を介して）有線もしくは無線通信で連結され得る。例えば、ＨＭＤ１２０２は、ＨＭＤ１２０２の位置もしくは方位、または近くの現実世界のオブジェクトの位置を判定するように構成された運動または位置センサを含み得る。いくつかの実施形態では、ＨＭＤデバイス１２０２は、音声入力（例えば、ユーザ１２００の発話音声）を捕捉するためのマイクを含み得る。
【００５９】
いくつかの実施形態では、ＨＭＤ１２０２は、Ｏｃｕｌｕｓ  Ｒｉｆｔ（商標）、Ｔｈｅ  ＨＴＣ  Ｖｉｖｅ（商標）、Ｔｈｅ  Ｐｌａｙｓｔａｔｉｏｎ  ＶＲ（商標）などのような仮想現実ＨＭＤと同様のものであり得る。いくつかの実施形態では、ＨＭＤ１０２は、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  ＨｏｌｏＬｅｎｓ（登録商標）、Ｍａｇｉｃ  Ｌｅａｐ（商標）ＨＭＤ、Ｍｅｔａ（商標）ＨＭＤなどのような拡張現実ＨＭＤと同様のものであり得る。いくつかの実施形態では、ＨＭＤ１２０２はまた、全地球測位システム（ＧＰＳ）受信機（例えば、ユーザデバイス１２０２のＧＰＳの場所を判定するため）、生体認証センサ（例えば、ユーザ１２００の生体認証データの捕捉するため）、運動もしくは位置センサ（例えば、ユーザ１２００もしくは他のオブジェクトの位置データを捕捉するため）、深度カメラ（例えば、ＬＩＤＡＲを使用）、または音声マイク（例えば、音声データを捕捉するため）など、１つ以上のセンサ（図示せず）を含み得る。いくつかのセンサは、ＨＭＤ１２０２の外部にある場合があり、ＨＭＤ１２０２と無線通信するように構成され得る（例えば、Ｍｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）、Ｖｉｖｅ  Ｔｒａｃｋｅｒ（商標）、ＭＩＴのＬｉｄａｒセンサ、またはＭＩＴの無線感情検出器で使用されるものなど）。
【００６０】
いくつかの実施形態では、ユーザ１２００は、１つ以上の手追跡デバイス（「ハンドヘルド」）（図９には別個に示されていない）（例えば、各手に１つ）を保持することができる。ハンドヘルドは、ユーザの手の絶対的または相対的な位置および方位に関する情報を提供し、かつ手のジェスチャ情報を捕捉することなどができる。ハンドヘルドは、ＨＭＤ１２０２と（例えば、有線または無線通信を介して）直接動作するように構成され得る。いくつかの実施形態では、ハンドヘルドは、Ｏｃｕｌｕｓ  Ｔｏｕｃｈ（商標）ハンドコントローラ、ＨＴＣ  Ｖｉｖｅ（商標）ハンドトラッカ、またはＰｌａｙｓｔａｔｉｏｎ  ＶＲ（商標）ハンドコントローラであり得る。ハンドヘルドはまた、ハンドヘルドに組み込まれた１つ以上のボタンまたはジョイスティックを含み得る。他の実施形態では、ユーザ１２００は、Ｍａｎｕｓ  ＶＲ（オランダ）により市販されているものなど、１つ以上のウェアラブル型手追跡デバイス（例えば、運動追跡手袋、図示せず）を着用することができる。さらに他の実施形態では、例えば、Ｌｅａｐ  Ｍｏｔｉｏｎ，Ｉｎｃ．カリフォルニア州の法人）によって市販されているものなどの、手位置センサ（図示せず、例えば、光学的方法を使用して、ユーザの手の位置および方位を追跡する）を介したハンドヘルドまたはウェアラブル型手追跡デバイスなしで、またはそれに加えて、ユーザ１２００の手の運動を追跡することができる。かかる手追跡デバイス（例えば、ハンドヘルド）は、動作中にユーザの手のうちの１つ以上の位置を追跡する。
【００６１】
図９に示されるように、動作中、例示的な実施形態では、ＨＭＤ１２０２は、着用者の頭部１２０４の上、および着用者１２００の両眼１２１４の上に装着される。着用者１２００には、本明細書に記載されるＨＭＤ１２０２およびハンドヘルドを介して体験され得る仮想環境または複合現実環境が提示され得る。さらに、本明細書に記載されるように、本明細書に記載されるシステム（図９に別個に示されない）をＨＭＤ１２０２と併せて使用することができる。例えば、構図ジュールおよびコライダモジュールを使用して、第２の仮想環境内で１つ以上の仮想カメラを制御することができ、１つ以上の仮想カメラの出力は、ＨＭＤ１２０２を介して体験される仮想環境または複合現実環境内の仮想スクリーンを介して着用者１２００に表示される。仮想スクリーンは、環境内に浮動している（例えば、着用者１２００の運動に対して固定されている）か、仮想環境または複合現実環境内のオブジェクトにピン留めされていてもよい。例えば、複合現実環境では、仮想スクリーンは、現実世界の壁への拡張現実仮想投影であり得る。仮想現実環境では、仮想スクリーンは、仮想の壁への仮想投影であり得る。第２の仮想環境は、ビデオゲーム環境（ライブまたは録画）、３Ｄシミュレーション環境、および３Ｄ映画環境を含む、仮想カメラが動作し得る（例えば、コライダモジュールおよび構図モジュールによって制御される）任意の３Ｄ仮想環境を含み得る。そのため、着用者１２００は、部屋のソファに座りながら、ソファの近くの壁に投影された仮想スクリーンを観覧する複合現実環境を体験することができ、仮想スクリーンは、（例えば、ライブオンラインのマルチプレイヤビデオゲームの）ライブビデオゲーム環境を表示し、それによって、ライブビデオゲーム環境の視界が、コライダモジュールおよび構図モジュールによって制御されるビデオゲーム環境内の１つ以上の仮想カメラを通して見られる。
【００６２】
本明細書では、ある特定の実施形態が、論理またはいくつかの構成要素、モジュール、または機構を含むものとして記載されている。モジュールは、ソフトウェアモジュール（例えば、機械可読記憶媒体もしくは伝送信号で具体化されるコード）またはハードウェアモジュールのいずれかを構築し得る。「ハードウェアモジュール」は、ある特定の動作を実施することができる有形のユニットであり、ある特定の物理的な方法で構成または配置され得る。様々な例示的な実施形態では、１つ以上のコンピュータシステム（例えば、スタンドアロンコンピュータシステム、クライアントコンピュータシステム、もしくはサーバコンピュータシステム）またはコンピュータシステムの１つ以上のハードウェアモジュール（例えば、プロセッサもしくは一群のプロセッサ）は、本明細書に記載される、ある特定の動作を実施するように動作するハードウェアモジュールとして、ソフトウェア（例えば、アプリケーションまたはアプリケーション部分）によって構成され得る。
【００６３】
いくつかの実施形態では、ハードウェアモジュールは、機械的に、電子的に、またはこれらの任意の好適な組み合わせで実装され得る。例えば、ハードウェアモジュールは、ある特定の動作を実施するように永続的に構成された専用の回路または論理を含み得る。例えば、ハードウェアモジュールは、フィールドプログラム可能なゲートアレイ（ＦＰＧＡ）または特定用途向け集積回路（ＡＳＩＣ）などの専用プロセッサであり得る。ハードウェアモジュールはまた、ある特定の動作を実施するために、ソフトウェアによって一時的に構成されたプログラム可能な論理または回路を含み得る。例えば、ハードウェアモジュールは、汎用プロセッサまたは他のプログラム可能なプロセッサ内に包含されたソフトウェアを含み得る。ハードウェアモジュールを、専用および永続的に構成された回路、または一時的に構成された（例えば、ソフトウェアによって構成された）回路に機械的に実装する決定は、コストおよび時間の考慮によって進められ得ることが理解されよう。
【００６４】
したがって、「ハードウェアモジュール」という表現は、ある特定の方法で動作するか、または本明細書に記載されるある特定の動作を実施するように、物理的に構築されるか、永続的に構成される（例えば、配線で接続される）か、または一時的に構成される（例えば、プログラムされる）実体である有形の実体を包含するように理解されるべきである。本明細書で使用される場合、「ハードウェア実装モジュール」とは、ハードウェアモジュールを指す。ハードウェアモジュールが一時的に構成される（例えば、プログラムされる）実施形態を考慮すると、ハードウェアモジュールの各々は、時間内の任意の１つのインスタンスにおいて構成またはインスタンス化される必要はない。例えば、ハードウェアモジュールが、特定用途向けプロセッサになるように、ソフトウェアによって構成された汎用プロセッサを含む場合、汎用プロセッサは、異なる時間にそれぞれ異なる特定用途向けプロセッサ（例えば、異なるハードウェアモジュールを含む）として構成され得る。したがって、ソフトウェアは、例えば、時間の１つのインスタンスにおいて特定のハードウェアモジュールを構築し、時間の異なるインスタンスにおいて異なるハードウェアモジュールを構築するように、特定のプロセッサ（複数可）を構成し得る。
【００６５】
ハードウェアモジュールは、他のハードウェアモジュールに情報を提供し、他のハードウェアモジュールから情報を受信することができる。したがって、記載されるハードウェアモジュールは、通信可能に連結されていると見なされ得る。複数のハードウェアモジュールが同時に存在する場合、通信は、ハードウェアモジュールのうちの２つ以上の間で、またはそれらの中で信号伝送を介して（例えば、適切な回路およびバスを介して）達成され得る。複数のハードウェアモジュールが異なる時間において構成またはインスタンス化される実施形態では、かかるハードウェアモジュール間の通信は、例えば、複数のハードウェアモジュールがアクセス権を有するメモリ構造内の情報の記憶および検索を通じて達成され得る。例えば、１つのハードウェアモジュールは、動作を実施し、その動作の出力を通信可能に連結されたメモリデバイスに記憶することができる。次いで、さらなるハードウェアモジュールが、その後になって、メモリデバイスにアクセスして、記憶された出力を検索および処理することができる。ハードウェアモジュールはまた、入力デバイスまたは出力デバイスとの通信を開始することができ、リソースに対して動作（例えば、情報の収集）することができる。
【００６６】
本明細書に記載される例示的な方法の様々な動作は、少なくとも部分的に、関連する動作を実施するように（例えば、ソフトウェアによって）一時的に構成されるか、または永続的に構成される１つ以上のプロセッサによって実施され得る。一時的または永続的に構成されるかどうかにかかわらず、かかるプロセッサは、本明細書に記載される１つ以上の動作または機能を実施するように動作するプロセッサ実装モジュールを構築し得る。本明細書で使用される場合、「プロセッサ実装モジュール」とは、１つ以上のプロセッサを使用して実装されるハードウェアモジュールを指す。
【００６７】
同様に、本明細書に記載される方法は、少なくとも部分的にプロセッサ実装型であり得、特定のプロセッサ（複数可）は、ハードウェアの一例である。例えば、ある方法の動作のうちの少なくともいくつかを、１つ以上のプロセッサまたはプロセッサ実装モジュールによって実施することができる。さらに、１つ以上のプロセッサはまた、「クラウドコンピューティング」環境で、または「サービスとしてのソフトウェア」（ＳａａＳ）として関連する動作の性能をサポートするように動作し得る。例えば、動作のうちの少なくともいくつかを、（プロセッサを含む機械の例として）一群のコンピュータによって実施することができ、これらの動作は、ネットワーク（例えば、インターネット）、および１つ以上の適切なインターフェース（例えば、アプリケーションプログラムインターフェース（ＡＰＩ））を介してアクセス可能である。
【００６８】
ある特定の動作の性能を、単一の機械内にあるだけでなく、いくつかの機械にわたって展開されるプロセッサ間で分散させることができる。いくつかの例示的な実施形態では、プロセッサまたはプロセッサ実装モジュールは、単一の地理的な場所（例えば、家庭環境、オフィス環境、またはサーバファーム内）に位置し得る。他の例示的な実施形態では、プロセッサまたはプロセッサ実装モジュールを、いくつかの地理的な場所にわたって分散させることができる。
【００６９】
図１０は、本明細書に記載される様々なハードウェアアーキテクチャと併せて使用され得る例示的なソフトウェアアーキテクチャ８０２を例示するブロックダイアグラム８００である。図８は、ソフトウェアアーキテクチャの非限定的な例であり、本明細書に記載される機能性を容易にするために、多くの他のアーキテクチャを実装することができることが理解されよう。ソフトウェアアーキテクチャ８０２は、とりわけ、プロセッサ９１０、メモリ９３０、および入出力（Ｉ／Ｏ）構成要素９５０を含む、図１１の機械９００などのハードウェアで実行することができる。代表的なハードウェア層８０４が例示されており、これは、例えば、図１１の機械９００を表し得る。代表的なハードウェア層８０４は、関連付けられた実行可能命令８０８を有する処理ユニット８０６を含む。実行可能命令８０８は、本明細書に記載される方法、モジュールなどの実装を含む、ソフトウェアアーキテクチャ８０２の実行可能命令を表す。ハードウェア層８０４はまた、メモリ／記憶装置８１０を含み、これはまた、実行可能命令８０８を含む。ハードウェア層８０４はまた、他のハードウェア８１２を備え得る。
【００７０】
図８の例示的なアーキテクチャでは、ソフトウェアアーキテクチャ８０２は、各層が特定の機能性を提供する層のスタックとして概念化され得る。例えば、ソフトウェアアーキテクチャ８０２は、オペレーティングシステム８１４、ライブラリ８１６、フレームワークまたはミドルウェア８１８、アプリケーション８２０、およびプレゼンテーション層８４４などの層を含むことができる。動作上では、アプリケーション８２０および／または層内の他の構成要素は、ソフトウェアスタックを通じてアプリケーションプログラミングインターフェース（ＡＰＩ）呼８２４を呼び出し、応答をメッセージ８２６として受信することができる。例示されている層は本質的に代表的なものであり、すべてのソフトウェアアーキテクチャがすべての層を有するわけではない。例えば、一部のモバイルまたは専用オペレーティングシステムは、フレームワーク／ミドルウェア８１８を提供しない場合があるが、その他はそのような層を提供する場合がある。他のソフトウェアアーキテクチャには、追加または異なる層を含む場合がある。
【００７１】
オペレーティングシステム８１４は、ハードウェアリソースを管理し、かつ共通サービスを提供することができる。オペレーティングシステム８１４は、例えば、カーネル８２８、サービス８３０、およびドライバ８３２を含むことができる。カーネル８２８は、ハードウェア層と他のソフトウェア層との間の抽象化層として機能することができる。例えば、カーネル８２８は、メモリ管理、プロセッサ管理（例えば、スケジューリング）、構成要素管理、ネットワーキング、セキュリティ設定などを担当してもよい。サービス８３０は、他のソフトウェア層に他の共通サービスを提供してもよい。ドライバ８３２は、基礎となるハードウェアを制御またはそれとインターフェース接続する役割を果たしてもよい。例えば、ドライバ８３２は、ディスプレイドライバ、カメラドライバ、Ｂｌｕｅｔｏｏｔｈ（登録商標）ドライバ、フラッシュメモリドライバ、シリアル通信ドライバ（例えば、ユニバーサルシリアルバス（ＵＳＢ）ドライバ）、Ｗｉ−Ｆｉ（商標登録）ドライバ、音声ドライバ、電源管理ドライバなどを含むことができ、ハードウェア構成によって異なる。
【００７２】
ライブラリ８１６は、アプリケーション８２０および／または他の構成要素および／または層によって使用され得る共通のインフラストラクチャを提供することができる。ライブラリ８１６は、典型的には、他のソフトウェアモジュールが、基礎となるオペレーティングシステム８１４の機能性（例えば、カーネル８２８、サービス８３０、および／またはドライバ８３２）と直接インターフェース接続するよりも容易な様式でタスクを実施することを可能にする機能性を提供する。ライブラリ８１６は、メモリ割り当て機能、ストリング操作機能、数学的機能などの機能を提供することができるシステムライブラリ８３４（例えば、標準Ｃライブラリ）を含むことができる。加えて、ライブラリ８１６は、メディアライブラリ（例えば、ＭＰＥＧ４、Ｈ．２６４、ＭＰ３、ＡＡＣ、ＡＭＲ、ＪＰＧ、ＰＮＧなどの様々なメディアフォーマットの提示および操作をサポートするライブラリ）、グラフィックスライブラリ（例えば、２Ｄおよび３Ｄグラフィックコンテンツをレンダリングするために使用され得るＯｐｅｎＧＬフレームワーク）、データベースライブラリ（例えば、様々なリレーショナルデータベース機能を提供し得るＳＱＬｉｔｅ）、ウェブライブラリ（例えば、ウェブブラウジング性能を提供し得るＷｅｂｋｉｔ）などのＡＰＩライブラリ８３６を含むことができる。ライブラリ８１６はまた、多くの他のＡＰＩをアプリケーション８２０および他のソフトウェア構成要素／モジュールに提供するために、多種多様な他のライブラリ８３８を含むことができる。
【００７３】
フレームワーク８１８（ミドルウェアとも呼ばれることもある）は、アプリケーション８２０および／または他のソフトウェア構成要素／モジュールによって使用され得る高レベルの共通のインフラストラクチャを提供する。例えば、フレームワーク／ミドルウェア８１８は、様々なグラフィックユーザインターフェース（ＧＵＩ）機能、高レベルのリソース管理、高レベルの位置特定サービスなどを提供することができる。フレームワーク／ミドルウェア８１８は、アプリケーション８２０および／または他のソフトウェア構成要素／モジュールによって利用され得る広範囲の他のＡＰＩを提供することができ、そのうちのいくつかは、特定のオペレーティングシステムまたはプラットフォームに特有のものであり得る。
【００７４】
アプリケーション８２０は、組み込みアプリケーション８４０および／またはサードパーティアプリケーション８４２を含む。代表的な組み込みアプリケーション８４０の例は、コンタクトアプリケーション、ブラウザアプリケーション、ブックリーダアプリケーション、場所のアプリケーション、メディアアプリケーション、メッセージングアプリケーション、および／またはゲームアプリケーションを含むことができるが、これらに限定されない。サードパーティアプリケーション８４２は、特定のプラットフォームのベンダ以外のエンティティによってＡｎｄｒｏｉｄ（商標）またはＩＯＳ（商標）のソフトウェア開発キット（ＳＤＫ）を使用して開発された任意のアプリケーションを含むことができ、ＩＯＳ（商標）、Ａｎｄｒｏｉｄ（商標）、Ｗｉｎｄｏｗｓ（登録商標）Ｐｈｏｎｅ、または他のモバイルオペレーティングシステムなどのモバイルオペレーティングシステム上で実行しているモバイルソフトウェアであり得る。サードパーティアプリケーション８４２は、本明細書で説明する機能性を容易にするために、オペレーティングシステム８１４のようなモバイルオペレーティングシステムによって提供されるＡＰＩ呼８２４を呼び出すことができる。
【００７５】
アプリケーション８２０は、システムのユーザと対話するためのユーザインターフェースを作成するために、組み込みオペレーティングシステム機能（例えば、カーネル８２８、サービス８３０、および／またはドライバ８３２）、ライブラリ８１６、またはフレームワーク／ミドルウェア８１８を使用することができる。代替的に、または追加的に、いくつかのシステムでは、ユーザとの相互作用はプレゼンテーション層８４４などのプレゼンテーション層を通じて行われてもよい。これらのシステムでは、アプリケーション／モジュールの「ロジック」は、ユーザと対話するアプリケーション／モジュールの態様から分離され得る。
【００７６】
いくつかのソフトウェアアーキテクチャは、仮想機械を使用する。図８の例では、これは仮想機械８４８によって例示されている。仮想機械８４８は、アプリケーション／モジュールが、ハードウェア機械（例えば、図１１の機械９００など）上で実行しているかのように実行することができるソフトウェア環境を作成する。仮想機械８４８は、ホストオペレーティングシステム（例えば、オペレーティングシステム８１４）によってホストされ、典型的には、必ずしもそうではないが、仮想機械モニタ８４６を有し、これは仮想機械８４８の動作、ならびにホストオペレーティングシステム（すなわち、オペレーティングシステム８１４）とのインターフェース接続を管理する。ソフトウェアアーキテクチャは、オペレーティングシステム（ＯＳ）８５０、ライブラリ８５２、フレームワーク８５４、アプリケーション８５６、および／またはプレゼンテーション層８５８などの仮想機械８４８内で実行する。仮想機械８４８内で実行するソフトウェアアーキテクチャのこれらの層は、先に説明した対応する層と同じであってもよいし、異なっていてもよい。
【００７７】
図１１は、機械可読媒体（例えば、機械可読記憶媒体）から命令を読み出し、本明細書で論じられる方法論のうちのいずれか１つ以上を実施するように構成されたいくつかの例示的な実施形態による、機械９００の構成要素を例示するブロックダイアグラムである。いくつかの実施形態では、機械１１０はＨＭＤ１０２に類似している。具体的には、図１１は、コンピュータシステムの例示的な形態における機械９００の図表示を示しており、その中で、機械９００に本明細書で論じられる方法論のうちのいずれか１つ以上を実施するための命令９１６（例えば、ソフトウェア、プログラム、アプリケーション、アプレット、アプリ、または他の実行可能なコード）が実行されてもよい。このように、命令９１６は、本明細書で説明するモジュールまたは構成要素を実装するために使用することができる。命令は、一般的なプログラムされていない機械を、説明および例示された機能を説明された方式で遂行するようにプログラムされた特定の機械に変換する。代替の実施形態では、機械９００は、スタンドアロンデバイスとして動作するか、または他の機械に結合（例えば、ネットワーク接続）されてもよい。ネットワーク化された展開では、機械９００は、サーバクライアントネットワーク環境におけるサーバ機械またはクライアント機械の容量で、またはピアツーピア（または分散）ネットワーク環境におけるピア機械として動作することができる。マシン９００は、サーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ（ＰＣ）、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、エンターテインメントメディアシステム、携帯電話、スマートフォン、モバイルデバイス、ウェアラブルデバイス（例えば、スマートウォッチ）、スマートホームデバイス（例えば、スマート家電）、他のスマートデバイス、Ｗｅｂアプライアンス、ネットワークルータ、ネットワークスイッチ、ネットワークブリッジ、または機械９００によって行われるアクションを順次または他の方法で指定する命令９１６を実行することができる任意の機械を含むことができるが、これらに限定されるものではない。さらに、単一の機械９００のみが例示されているが、「機械」という用語は、本明細書で論じられる方法論のうちのいずれか１つ以上を実施するために命令９１６を個別にまたは共同で実行する機械の集合も含むものとする。
【００７８】
機械９００は、バス９０２を介してなど互いに通信するように構成され得るプロセッサ９１０、メモリ９３０、および入力／出力（Ｉ／Ｏ）構成要素９５０を含むことができる。例示的な一実施形態では、プロセッサ９１０（例えば、中央処理装置（ＣＰＵ）、縮小命令セット計算（ＲＩＳＣ）プロセッサ、複合命令セット計算（ＣＩＳＣ）プロセッサ、グラフィックス処理装置（ＧＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、無線周波数集積回路（ＲＦＩＣ）、別のプロセッサ、またはそれらの任意の適切な組み合わせ）は、例えば、命令９１６を実行することができるプロセッサ９１２およびプロセッサ９１４を含むことができる。「プロセッサ」という用語は、命令を同時に実行することができる２つ以上の独立したプロセッサ（「コア」と呼ばれることもある）を含むことができるマルチコアプロセッサを含むことを意図している。図１１は、複数のプロセッサを示しているが、機械９００は、単一のコアを有する単一のプロセッサ、複数のコアを有する単一のプロセッサ（例えば、マルチコアプロセッサ）、単一のコアを有する複数のプロセッサ、複数のコアを有する複数のプロセッサ、またはそれらの任意の組み合わせを含むことができる。
【００７９】
メモリ／記憶媒体９３０は、メインメモリ９３２、スタティックメモリ９３４、または他のメモリなどのメモリ、およびバス９０２などを介して両方ともプロセッサ９１０にアクセス可能な記憶装置９３６を含むことができる。記憶装置９３６およびメモリ９３２、９３４は、本明細書で説明する方法論または機能のうちのいずれか１つ以上を具現化する命令９１６を記憶する。命令９１６は、機械９００による実行中に、メモリ９３２、９３４内、記憶装置９３６内、プロセッサ９１０のうちの少なくとも１つ内（例えば、プロセッサのキャッシュメモリ内）、またはそれらの任意の適切な組み合わせ内に、完全にまたは部分的に存在することもできる。したがって、メモリ９３２、９３４、記憶装置９３６、およびプロセッサ９１０のメモリは、機械可読媒体９３８の実施例である。
【００８０】
本明細書で使用されているように、「機械可読記憶媒体」は、命令およびデータを一時的に、または永続的に記憶することができるデバイスを意味し、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、バッファメモリ、フラッシュメモリ、光媒体、磁気媒体、キャッシュメモリ、他のタイプの記憶装置（例えば、消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ）および／またはこれらの任意の適切な組み合わせを含むことができるが、これらに限定されるものではない。「機械可読記憶媒体」という用語は、命令９１６を記憶することができる単一の媒体または複数の媒体（例えば、集中型または分散型データベース、または関連するキャッシュおよびサーバ）を含むと解釈されるべきである。「機械可読記憶媒体」という用語はまた、機械（例えば、機械９００）による実行のための命令（例えば、命令９１６）を記憶することができる任意の媒体または複数の媒体の組み合わせを含むものとし、その結果、命令は、機械９００の１つ以上のプロセッサ（例えば、プロセッサ９１０）によって実行されたときに、機械９００に本明細書で説明される方法論のうちのいずれか１つ以上を実施させる。したがって、「機械可読記憶媒体」は、単一の記憶機器またはデバイス、ならびに複数の記憶機器またはデバイスを含む「クラウドベースの」記憶システムまたは記憶ネットワークを指す。「機械可読媒体」という用語は、機械可読媒体および送信媒体、例えば、信号を含む。
【００８１】
入力／出力（Ｉ／Ｏ）構成要素９５０は、入力を受け取り、出力を提供し、出力を生成し、情報を送信し、情報を交換し、測定値をキャプチャするなどの多種多様な構成要素を含むことができる。特定の機械に含まれている特定の入力／出力（Ｉ／Ｏ）構成要素９５０は、機械のタイプに依存する。例えば、携帯電話などのポータブル機にはタッチ入力デバイスまたはその他のそのような入力メカニズムを含む可能性があるが、ヘッドレスサーバ機械にはそのようなタッチ入力デバイスを含まない可能性がある。入力／出力（Ｉ／Ｏ）構成要素９５０は、図１１に示していない他の多くの構成要素を含み得ることが理解されるであろう。入力／出力（Ｉ／Ｏ）構成要素９５０は、以下の議論を単純化するためだけの機能性に従ってグループ化され、グループ化は決して限定的ではない。様々な例示的な実施形態では、入力／出力（Ｉ／Ｏ）構成要素９５０は、出力構成要素９５２および入力構成要素９５４を含むことができる。出力構成要素９５２は、視覚構成要素（例えば、プラズマディスプレイパネル（ＰＤＰ）、発光ダイオード（ＬＥＤ）ディスプレイ、液晶ディスプレイ（ＬＣＤ）、プロジェクタ、またはブラウン管（ＣＲＴ）などのディスプレイ、音響構成要素（例えば、スピーカ）、触覚構成要素（例えば、振動モータ、抵抗機構）、その他の信号発生器などを含むことができる。入力構成要素９５４は、英数字入力構成要素（例えば、キーボード、英数字入力を受信するように構成されたタッチスクリーン、光キーボード、または他の英数字入力構成要素）、ポイントベースの入力構成要素（例えば、マウス、タッチパッド、トラックボール、ジョイスティック、モーションセンサ、または別のポインティング機器）、触知入力構成要素（例えば、物理ボタン、タッチまたはタッチジェスチャの位置および／または力を提供するタッチスクリーン、またはその他の触知入力構成要素）、音声入力構成要素（例えば、マイク）などを含むことができる。
【００８２】
さらなる例示的な実施形態では、入力／出力（Ｉ／Ｏ）構成要素９５０は、幅広い他の構成要素の中でも、生体認証構成要素９５６、運動構成要素９５８、環境構成要素９６０、または位置構成要素９６２を含むことができる。例えば、生体認証構成要素９５６は、表情（例えば、手の表情、顔の表情、声の表情、身体のジェスチャ、または視線追跡）を検出し、生体信号（例えば、血圧、心拍数、体温、汗、または脳波）を測定し、人（例えば、音声識別、網膜識別、顔識別、指紋識別、または脳波に基づく識別）を識別するなどのための構成要素を含むことができる。運動構成要素９５８は、加速度センサ構成要素（例えば、加速度計）、重力センサ構成要素、回転センサ構成要素（例えば、ジャイロスコープ）などを含むことができる。環境構成要素９６０は、例えば、照度センサ構成要素（例えば、光度計）、温度センサ構成要素（例えば、周囲温度を検出する１つ以上の温度計）、湿度センサ構成要素、圧力センサ構成要素（例えば、気圧計）、音響センサ構成要素（例えば、バックグラウンドノイズを検出する１つ以上のマイク）、近接センサ構成要素（例えば、近くの物体を検出する赤外線センサ）、ガスセンサ（例えば、安全のために、または大気中の汚染物質を測定するために、有害ガスの濃度を検出するガス検出センサ）、または周囲の物理的環境に対応する表示、測定、または信号を提供することができる他の構成要素を含むことができる。位置構成要素９６２は、場所センサ構成要素（例えば、全地球測位システム（ＧＰＳ）受信機構成要素）、高度センサ構成要素（例えば、高度が導出され得る気圧を検出する高度計または気圧計）、方位センサ構成要素（例えば、磁力計）などを含むことができる。
【００８３】
通信は、多種多様な技術を使用して実装され得る。入力／出力（Ｉ／Ｏ）構成要素９５０は、カップリング９８２およびカップリング９７２を介して機械９００をネットワーク９８０またはデバイス９７０に結合するように動作可能な通信構成要素９６４を含むことができる。例えば、通信構成要素９６４は、ネットワーク９８０とインターフェース接続するためのネットワークインターフェース構成要素または他の適切なデバイスを含み得る。さらなる例では、通信構成要素９６４は、有線通信構成要素、無線通信構成要素、セルラ通信構成要素、近距離無線通信（ＮＦＣ）構成要素、Ｂｌｕｅｔｏｏｔｈ（登録商標）構成要素（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）Ｌｏｗ  Ｅｎｅｒｇｙ）、Ｗｉ−Ｆｉ（登録商標）構成要素、および他のモダリティを介した通信を提供する他の通信構成要素を含むことができる。デバイス９７０は、別の機械または多種多様な周辺デバイス（例えば、ユニバーサルシリアルバス（ＵＳＢ）を介して結合された周辺デバイス）のいずれかであり得る。
【００８４】
さらに、通信構成要素９６４は、識別子を検出するか、または識別子を検出するように動作可能な構成要素を含むことができる。例えば、通信構成要素９６４は、無線周波数識別（ＲＦＩＤ）タグリーダ構成要素、ＮＦＣスマートタグ検出構成要素、光学リーダ構成要素（例えば、統一商品コード（ＵＰＣ）バーコードなどの１次元バーコード、クイックレスポンス（ＱＲ）コード、アズテックコード、ＤＡＴＡ  Ｍａｔｒｉｘ、Ｄａｔａｇｌｙｐｈ、ＭａｘｉＣｏｄｅ、ＰＤＦ４１７、Ｕｌｔｒａ  Ｃｏｄｅ、ＵＣＣ  ＲＳＳ−２Ｄバーコードなどの多次元バーコード、およびその他の光学コード）、または音響検出構成要素（例えば、タグ付き音声信号を識別するためのマイク）を含むことができる。加えて、インターネットプロトコル（ＩＰ）地理的場所を介する場所、Ｗｉ−Ｆｉ（登録商標）信号三角測量を介する場所、特定の場所を表示することができるＮＦＣビーコン信号の検出を介する場所など、通信構成要素９６２を介して様々な情報を導き出すことができる。
【００８５】
この明細書全体を通して、複数のインスタンスは、単一のインスタンスとして記述された構成要素、動作、または構造を実装することができる。１つ以上の方法の個々の動作は別個の動作として図示および説明されているが、個々の動作の１つ以上を同時に実施することができ、図示の順序で動作を実施する必要はない。例示的な構成で個別の構成要素として提示される構造および機能性は、組み合わせた構造または構成要素として実装され得る。同様に、単一の構成要素として提示されている構造および機能性は、個別の構成要素として実装され得る。これらおよび他の変形、修正、追加および改良は、本明細書中の主題の範囲内に入る。
【００８６】
本明細書に例示される実施形態は、当業者が開示された教示を実施することを可能にするのに十分な詳細に記載される。他の実施形態を用いて、本開示の範囲から逸脱することなく構造的および論理的な置換および変更を行うことができるように、その他の実施形態を使用してもよい。したがって、詳細な説明は限定的な意味で解釈されるべきではなく、様々な実施形態の範囲は、添付の特許請求の範囲、およびそのような特許請求の範囲が権利を有する均等物によってのみ定義される。
【００８７】
本明細書で使用される「または」という用語は、包括的または排他的な意味で解釈され得る。さらに、本明細書で単一のインスタンスとして説明されるリソース、動作、または構造に対して複数のインスタンスが提供されてもよい。追加的には、様々なリソース、動作、モジュール、エンジン、およびデータストア間の境界は、いくらか任意的であり、特定の動作は、特定の例示的な構成のコンテキストで示されている。機能性の他の割り当てが想定されており、本開示の様々な実施形態の範囲内に含まれ得る。一般に、例示的な構成で個別のリソースとして提示されている構造および機能性は、組み合わせた構造またはリソースとして実装され得る。同様に、単一のリソースとして提示されている構造および機能性は、個別のリソースとして実装され得る。これらおよび他の変形、修正、追加、および改良は、添付の特許請求の範囲によって表される本開示の実施形態の範囲内に入る。したがって、明細書および図面は、制限的な意味ではなく、例示的な意味で見なされるべきである。
以下に、上記各実施形態から把握できる技術思想を記載する。
（付記１）
システムであって、
１つ以上のコンピュータプロセッサと、
１つ以上のコンピュータメモリと、
前記１つ以上のコンピュータメモリに組み込まれた構図モジュールと、を備え、前記構図モジュールが、仮想カメラの方位を変更して、前記仮想カメラのスクリーン上の標的ゾーン内に対象の一部分を保持するための動作を実施するように構成されており、前記動作が、
ソフト境界を前記標的ゾーンに関連付けることと、
ハード境界を前記標的ゾーンに関連付けることと、
前記対象の前記部分が前記ソフト境界と前記ハード境界との間の場所まで移動したとの検出に基づいて、前記カメラを再方位付けるための追跡時間を判定することであって、前記追跡時間の前記判定が、前記対象の前記標的ゾーンからの偏差の量に基づく、判定することと、前記カメラの前記方位の前記変更を実施して、前記追跡時間にわたって前記対象を前記標的ゾーンに連れ戻すことと、を含む、システム。
（付記２）
前記対象の前記部分が前記ソフト境界と前記ハード境界との間の前記場所まで移動したとの前記検出が、前記仮想カメラに対する２Ｄ空間における四元数、単位長さベクトル、および単精度浮動小数点演算を使用して実施される、付記１に記載のシステム。
（付記３）
前記対象の前記部分が、前記標的ゾーンに関連付けられた前記ハード境界を越えた場所まで移動したとの検出に基づいて、追跡速度をゼロに設定することと、前記方位の前記変更を実施して、前記対象を前記ハード境界の縁部に瞬時に連れ戻すことと、をさらに含む、付記１または２に記載のシステム。
（付記４）
前記仮想カメラに関連付けられた標的光線上で前記仮想カメラを前方に移動させて、前記標的光線を侵害している障害物を回避するように構成されたコライダモジュールをさらに備え、前記標的光線が、３Ｄカメラ原点から、前記カメラスクリーン上の前記標的ゾーンを通って、前記対象の前記部分に関連付けられた３Ｄ座標まで延在する、付記１〜３のいずれか一項に記載のシステム。
（付記５）
前記コライダモジュールが、前記仮想カメラを、前記障害物が前記標的光線を侵害する前に、前記仮想カメラに関連付けられた元の高さまで、前記標的光線に関連付けられた後方ベクトル方向に移動させるようにさらに構成されており、前記移動が、一連のステップの反復を含み、前記一連のステップが、
陰の光線を、前記陰の光線が前記元の高さで定義された水平面と接するまで、前記標的から離れる方向にカメラ軸に沿って投射することと、
前記障害物または遭遇する第２の障害物に基づいて、前記陰の光線を、前記陰の光線が前記障害物または前記第２の障害物に命中する点で、障害物法線によって定義される平面に投影することと、
前記障害物または前記第２の障害物の前記障害物法線によって定義される前記平面への前記陰の光線の投影として、新しい光線方向を定義することと、
新しい光線を前記新しい光線方向に延在させ、前記水平面に到達するか、または第３の障害物に命中するか、または前記第３の障害物の境界ボックスの縁部に到達すると停止させることと、
前記第３の障害物に到達することに基づいて、前記仮想カメラの前記移動を反復することと、
前記境界ボックスの前記縁部に到達することに基づいて、前記カメラ軸を、前記標的から現在のカメラの場所への方向として再定義し、前記仮想カメラの前記移動を反復することと、を含む、付記４に記載のシステム。
（付記６）
前記１つ以上のコンピュータメモリに組み込まれた追加の構図モジュールおよび追加のコライダモジュールをさらに備え、前記追加の構図モジュールおよび前記追加のコライダモジュールが、追加の仮想カメラの方位および位置を変更して、前記追加の仮想カメラに関連付けられた標的ゾーン内に前記対象の前記部分を保持するための動作を実施するように構成されており、前記仮想カメラおよび前記追加の仮想カメラが、メタカメラを備え、前記メタカメラが、前記仮想カメラによって捕捉された前記対象の前記部分のショットのスコア、および前記追加の仮想カメラによって捕捉された前記対象の前記部分のショットのスコアに基づいて、前記仮想カメラまたは前記追加の仮想カメラのいずれかを選択するように構成されている、付記４または５に記載のシステム。
（付記７）
前記仮想カメラによって捕捉された前記ショットの前記スコア、または前記追加の仮想カメラによって捕捉された前記ショットの前記スコアが、少なくとも、前記コライダモジュール、前記追加のコライダモジュール、前記構図モジュール、または前記追加の構図モジュールの活動によって判定され、前記活動が、前記仮想カメラおよび前記追加の仮想カメラに与えられた変位の量、および前記仮想カメラおよび前記追加の仮想カメラに与えられた回転の量、を含む、付記６に記載のシステム。
【図１】
0006967603.tif 000002
【図２】
0006967603.tif 000003
【図３】
0006967603.tif 000004
【図４】
0006967603.tif 000005
【図５】
0006967603.tif 000006
【図６Ａ】
0006967603.tif 000007
【図６Ｂ】
0006967603.tif 000008
【図６Ｃ】
0006967603.tif 000009
【図６Ｄ−１】
0006967603.tif 000010
【図６Ｄ−２】
0006967603.tif 000011
【図６Ｅ】
0006967603.tif 000012
【図６Ｆ−１】
0006967603.tif 000013
【図６Ｆ−２】
0006967603.tif 000014
【図６Ｇ】
0006967603.tif 000015
【図７Ａ】
0006967603.tif 000016
【図７Ｂ】
0006967603.tif 000017
【図７Ｃ】
0006967603.tif 000018
【図８Ａ】
0006967603.tif 000019
【図８Ｂ】
0006967603.tif 000020
【図８Ｃ】
0006967603.tif 000021
【図８Ｄ】
0006967603.tif 000022
【図８Ｅ】
0006967603.tif 000023
【図８Ｆ】
0006967603.tif 000024
【図９】
0006967603.tif 000025
【図１０】
0006967603.tif 000026
【図１１】
0006967603.tif 000027