ストロークの照合方法
描画ボタンを離すと、Input.Observer は 2 つの段階で何を実行するかを決めます。
- どの形状を描いたか。 ストロークは対象となるジェスチャに対して採点され、最高の得点が一致のしきい値に達していれば、それが選ばれます。このページではこの段階を説明します。
- ここでその形状を使うアクションはどれか。 アプリ グループのその形状に対するトリガーについて、修飾キー、描画ボタン、領域、プロファイルが確認されます。スコープとフォールバックのルールを参照してください。
リアルタイムのヒントは、ここまで描いたストロークに対してまったく同じ 2 つの段階を使うため、ヒントには常に、その時点でボタンを離したら実行されるものが表示されます。
ストロークの採点方法
比較ごとに、0~100 の得点が付きます。
- 手の震えを取り除くため、ストロークがわずかに滑らかにされます。
- ストロークの長さに沿って等間隔に並ぶ、決まった数の点 (既定では 36 個) にリサンプリングされます。
- 2 つの点の間の短い各区間の方向が、保存済みのサンプルの同じ区間の方向と比較されます。
- 平均の差が得点になります。すべての区間が同じ方向を向いていれば 100、すべての区間が逆方向を向いていれば 0 です。
描くときにこれが意味すること:
| 変わるもの | 得点への影響 |
|---|---|
| 大きさ、または画面上で描く位置 | なし |
| 描く速さ | なし |
| 方向: 左から右ではなく右から左 | 逆方向は 0 に近い得点になります |
| 回転: 傾けて描いた形状 | 低くなり、傾きが大きいほど低くなります |
| 始点: 上または下から始めた円、時計回りまたは反時計回り | それぞれ別の形状です |
| 比率: 足が長い L と短い L | 低くなります。各部分がストロークに占める割合が異なるためです |
複数のサンプルを持つジェスチャは、それぞれのサンプルに対して採点されます。サンプルのスコアリング で、それらの得点の組み合わせ方を決めます。最も一致するサンプル (既定) は最高の得点を、全サンプルの平均 はそれらの平均を取ります。後者では、1 つのサンプルには近いがほかのサンプルからは遠いストロークの得点は低くなります。
競合する形状
ストロークはライブラリ全体とは比較されず、ボタンを押した場所のウィンドウにとって対象となる形状とだけ比較されます。
- ウィンドウを所有するアプリ グループのジェスチャ トリガーが使うすべての形状。
- そのグループがグローバルにフォールバックできる場合は、グローバル グループのジェスチャ トリガーが使うすべての形状 (スコープとフォールバックのルールを参照)。
形状は、それらのグループのいずれかのトリガーが使っていれば、そのトリガーが今は実行できない場合でも対象になります。たとえば、アクションがオフになっている、別のプロファイルに限定されている、押していない修飾キーが必要、別の描画ボタンや領域が必要、といった場合です。そのような形状でもストロークを勝ち取ることがあり、その場合は何も実行されません。対象のどのトリガーも使っていない形状は競合しないため、そこで勝つことはありません。
勝者
- 最高の得点が一致のしきい値以上であれば、それが勝ちます。 しきい値以上のものがなければ、何も一致しません。
- 得点がまったく同じ場合: 先に見つかった形状が勝ちます。アプリ グループ自身の形状がグローバルの形状より先で、グループのアクション一覧の順序です。
- 次点はありません。 形状が勝つと、その形状のアクションだけが探されます。まずアプリ グループで、グループがフォールバックする場合は次にグローバルで探します。どれも合わない場合 (たとえば Shift が必要なのに押していなかった場合)、得点の低い形状に合うアクションがあったとしても、何も実行されません。
対象の中で最も近い形状が勝つ
競合するのは対象の形状だけなので、明らかに別の形状であるストロークでも、対象の中で最も近い形状がしきい値に達していれば、それに一致します。
例: グローバル グループが「下へスワイプ」「左へスワイプ」「チェック マーク」の 3 つの形状を使っています。どのアプリ グループも所有していないウィンドウの上で、「上へスワイプ」を描きます。「上へスワイプ」はライブラリにありますが、対象のどのトリガーも使っていないため競合しません。ストロークは対象の 3 つの形状に対して採点され、「チェック マーク」が最高の得点でしきい値に達すれば、「チェック マーク」のアクションが実行されます。
これを防ぐ方法は 2 つあります。
- 対象の形状を、何もしないアクションに割り当てる。 するとその形状が競合し、自分のストロークに対して最高の得点になり、何も実行しません。アプリ グループ ページがそのようなケースを見つけると「ここでのストロークが別のアクションを実行する可能性があります」というバナーを表示し、その 何もしないアクションを追加 ボタンでそのアクションを追加できます。アプリ グループを参照してください。
- 一致のしきい値を上げる。 形状として認められるには、ストロークがより近い必要があるようになります。
ジェスチャ ページのそのジェスチャの 他のアクションを実行 カードには、同じケースが形状の側から一覧表示されます。
何も一致しないとき
どのスコープでもアクションに一致しないストロークは、次のようになります。
- 何も実行しません。
- クリックを返し ません。ポインターの下のウィンドウは何も受け取りません。
- 設定していれば、一致なし グローバル イベントを実行します (たとえばサウンドを鳴らすなど)。グローバル イベントを参照してください。
ここまでのストロークが何にも一致しない間はヒントが消えるため、ヒントがないことで事前にわかります。
設定
照合の設定は、ジェスチャ ページの 設定 タブにある ジェスチャの照合 カードにあります。
一致のしきい値
一致のしきい値 ① は、一致と見なされる最低の得点です。既定値は 75 で、50 (寛容) から 100 (厳格) までです。
- 間違ったアクションが実行される場合や、ジェスチャのつもりでなかったストロークで何かが実行される場合は、上げます。雑なストロークは何にも一致しないことが多くなります。
- ジェスチャのつもりで描いたストロークが何にも一致しないことが多い場合は、下げます。どの形状にも似ていないストロークが、対象の中で最も近い形状に取られることが多くなります。
ジェスチャ ページの 描いてテスト カードには、このしきい値に対するストロークの得点が表示されます。ジェスチャ ライブラリを参照してください。
ストロークのスムージング品質
ストロークのスムージング品質 ② は、照合の速さと正確さを引き換えにします。それぞれの選択肢で、リサンプリングする点の数と サンプルのスコアリング がまとめて設定されます。
| 選択肢 | 点の数 | サンプルのスコアリング |
|---|---|---|
| 高速 | 24 | 最も一致するサンプル |
| バランス (既定) | 36 | 最も一致するサンプル |
| 高精度 | 64 | 全サンプルの平均 |
点が多いほど、形状の細かい部分に気付きます。詳細モードで設定したそれ以外の組み合わせは、カスタム と表示されます。
詳細モード。 カードに 3 つの行が追加されます。
- リサンプリングの精度: ストロークをリサンプリングする点の数で、8~128 (既定値 36) です。
- サンプルのスコアリング: 最も一致するサンプル または 全サンプルの平均。
- トレーニングの提案しきい値: 0~100 (既定値 80) の得点で、これ以上の場合、トレーニング ウィンドウはストロークを新しいジェスチャとしてではなく、最も近いジェスチャの別のサンプルとして保存することを提案します。照合には影響しません。