この記事では、バーコードを使用して拡張現実のヒントを生成する技術的な詳細に焦点を当てます。
挑戦する
仮想の折り紙モデル、実際の紙、ウェブカメラがあるとします。 カメラから受け取ったシート画像上で、プログラムはモデルを折りたたむ現在のステップのヒント、たとえばシートのあるコーナーから別のコーナーへの矢印を作成する必要があります。
モデルを作成するには、最初にコンピューターを使用して折り紙を折り畳む人が必要です 。詳細は、 すべてのコンポーネントを参照してください 。
制限事項
問題は、オブジェクトがシート上のどこにあるかを正しく判断することです。 シートは、任意の方向に向けることができ、あるステップで任意の形状にすることができます。 従来のウェブカメラでは、折り畳まれた単色シートのすべての詳細を「作成」することは事実上不可能です。 カラープリンタを使用してシートの領域をマークすることは、誰もが利用できるわけではありません。
ソリューションの外観
バーコードはシートの特定のセクションに配置されます。 プログラムはそれらを見つけ、簡単に識別し、シートの方向とツールチップを構成するオブジェクトへの必要なオフセットを決定します。 シートにバーコードをどのように配置しますか? 次の要素を考慮する必要があります。
- 折れ線の上にバーコードを置かないでください。詰まって損傷する可能性があります。
- バーコードは、モデルを折りたたむすべてのステップで表示されている必要があり、その上でヒントを表示するために使用されます。
- バーコードは、ツールチップのオブジェクトから十分に離れた場所に配置する必要があります。これは、ユーザーが折り畳みを完了して閉じるために手でつかむ可能性が高いためです。
- 同時に、方向を決定する際のエラーがシフト後に得られたポイントに大きな影響を与えないように、バーコードは遠すぎてはいけません。
- バーコードは大きすぎても小さすぎてもいけません。
- それらが少なければ少ないほど、塗料はお金の価値があります。
最初の段落を完了するには、モデルから取得した有用な情報を領域の三角測量として使用するだけで十分です。 折り目は三角形の境界線に沿ってのみ通過できるため、バーコードを内部に格納するだけで十分であり、端からのくぼみがあれば望ましいです。 常に三角形に円を入力して、その中心と半径を簡単に見つけ、その中にバーコードを配置できます。
領域の分割に含まれる三角形の寸法は、バーコードの最大サイズに制限を課します。 もちろん、それは半分のシートを占めるべきではありませんが、同時にカメラに見えるはずです。 2番目の要件を満たすには、各ステップでの三角形の可視性に関する情報も必要です。 幸いなことに、モデルにも含まれています。
最後の段落では、可視領域にある三角形の出現頻度辞書も必要です。 最も一般的な三角形にバーコードを配置して再利用すると、その数は急激に減少します。
各ステップで、各三角形に要件を満たす推定値を与え、最適なものを選択します。 各基準には調整可能な影響度(重み)があり、システムを最適に構成できます。
シートの片面または両面に印刷を選択することもできます。これは、ツールチップがどちらかの側に表示されるか、特定の側にのみ表示されるかによって異なります。 バーコードでは、一意の識別子がエンコードされ、ツールチップに関する情報(アクションの種類、オブジェクトへのオフセットなど)を検索するためのキーとして使用されます。 すべての予防措置が講じられていますが、バーコードは多少破損している可能性があるため、Reed-Solomonコーディングが使用されます。これにより、部分的な損傷の場合に元のデータを復元できます。
ラベルと空間での向き(私たちの意見では、最も面白い詳細)については、次の記事で説明します。