ついてつらつらとこの広告は、90日以上更新していないブログに表示しています。SCの開発動機などについて話しましたが、この記事は具体的な利用方法や表示されるデータの意味を解説します。基本操作BACKボタンでメインメニューを呼び出せます。メインメニューからは様々な情報表示に関する設定やベンチマークの起動などを行えます。詳細については後述します。ストローク描画に関する操作は以下の通りです。[ボリューム]筆圧範囲は起動後に検知した筆圧範囲で正規化されます。利用する筆圧範囲で最初に一度ペンを走らせ、慣らしてからご利用下さい。設定→⇨消しゴム→」でボリュームボタンに割り当てることもできます。SCのストローク描画は、あくまで遅延の少ない描き味の良いペンストローク描画の体験サンプルです。セーブ機能等はありません。遅延ガイド遅延ガイドはペン描画の遅延を、肉眼で確認するための機能です。遅延ガイドのボタンをONにすると、キャンバスに上から下へ一定速度で移動する、三本の緑の線が表示されます。この三本の線は1cm間隔になっていて、アニメーションの速度は毎秒10cmです。ペンを移動させると、ペン先の位置と表示されるストロークの先端がズレますが、遅延ガイドのアニメーション移動速度にあわせてペン先を移動させることで、どの程度遅延しているかがわかります。三本の線の間隔は1cmなので、その間隔と同じだけズレていれば1cmです。アニメーションは1秒に10cm移動しているので1秒*1cm/10cm=1000ms*1cm/10cm=100msで、遅延は100msということがわかります。アニメーションと同じ速度でペンを移動させたときのズレ1mmにつき、10msの遅延があると換算できるわけです。10.1で遅延ガイドに合わせてペンを移動させ、EX-ZR200で高速撮影したもののうちの一枚です。435となっています。92.9msこのようにして、比較的簡単に遅延を計測できるわけです。ホバーカーソルは端末に用意されたオプションによるシステム内部の表示処理なので、アプリではこれ以下の遅延にすることは不可能だと思われます。SCのアプリ起因の推測遅延発生量である10ms~18msよりも大きな値になっています。これはなぜかというと、実はアプリからイベントデータが来た瞬間に何も演算を行わず、単純に受け取ったペン先座標に点を打つだけのプログラムを書いても、ホバーカーソルよりも約1座標データ時間分(10数ms)の遅延が必ず発生することを確認しています。10.1ではこの部分にも何かアプリ開発者では手出し出来ない遅延の要因になる処理が入っているようです。実質的にアプリ起因の遅延量は24.1ms-10数msで、この場合、10数ms程度のようです。アプリでは1座標データ時間(10数ms)程度しか遅延していないのに、見た目は92.9msも遅延しているわけです。時間分解能これを選択すると、どの程度の頻度でスタイラスやタッチパネルから座標データが送られて来ているか、実測したデータを確認するウインドウを開きます。これを選択する前に、キャンバスにスタイラスなどで落書きをしていないと、サンプルとなるデータがないため何も表示できないので注意が必要です。データ数は少ないと正確な値にならないので、1000くらいはあった方が良いでしょう。総合スコアは分かりやすさのために単一の数値で時間分解能性能を表したものです。5))で算出しています。(sqrtは平方根)計算式は特に深い根拠があるわけではなく、感覚的にストロークの美しさとスコアが比例するような計算式を無理矢理でっちあげただけです。平均値はデータの送られてきた時間間隔(ms)の平均値です。pps表示は1秒間に何回データが送られてきたかという数値に換算(逆数化)しただけのものです。標準偏差は送られてきた座標データの時間間隔(ms)にどの程度のバラつきがみられるかを表します。すべて同じ間隔ならばこの値は0になります。一般的に、平均値と標準偏差は共に小さければ小さいほど、詳細な座標データが安定した間隔で送られて来ていることになるため、性能が良いということになります。総合スコアも両方が小さい時に高いスコアを示すようになっています。最小値は送られてきたデータの内、最も小さな時間間隔を示したものです。0msのデータは異常値として扱い、カウントしていません。最大値は送られたきたデータの内、最も大きな時間間隔を示したものです。300ms以上のデータは異常値として扱い、カウントしていません。下の方には(最小/最大5%カット)となっている表があります。これはデータ全体の内上下5%を異常値としてあらかじめ取り除いたうえで表にしています。こちらの方が感覚的な実態に近いかもしれません。表の上に「Guide[x]/Csr[x]/Dly[x]/Ers[o]/Inf[x]」という表示がありますが、これはデータのキャプチャ中にどのような表示物が同時にONになっていたかを表しています。xなら常に非表示、oなら常に表示、-ならば非表示と表示が混ざっていたということです。Guide=遅延ガイドCsr=通常カーソルDly=遅延カーソルEra=消しゴムカーソルInf=タッチ情報これらの表示物はタッチイベントと同じメインスレッド内で描画処理が行われています。そのため、メインスレッドが重い場合にどの程度タッチイベントに取りこぼしや不安定さが現れるのかを、これら表示物のあるなし両方の条件でデータを取ることで判定できます。手持ちの端末で試した結果を公開するときは、この情報も含めた画像やテキストで公開することを推奨します。総合スコアでは標準偏差をかなり重視していますが、標準偏差の大小で実際どんな変化があるのかピンと来る人は少ないと思います。Tabletでぐるぐるとペンストロークを円状に描いた時のスクリーンショットを紹介したツイートです。リアルタイムの情報表示を作ってみてわかったことをメモ。29TPTのストロークが、なんか△おむすび山みたいになってますが、別にこれは狙ったわけではなく、他の端末と同じように描いてるだけです。29尖っている部分は7ms間隔でイベントがきたところ、ぺたんこになってるのは80ms以上の間隔が空いてしまっています。29ツイートで言っているような、7ms間隔でイベントが来たり、そうかと思うと80ms以上の間隔が空いたりした場合、下のような気持ち悪いストロークになります。このとき標準偏差も大きくなるため、標準偏差が小さく保たれる端末が、いい端末だと判断できるわけです。実際にはメインスレッドでここまで重い処理を走らせることはないので、通常これほど極端な結果は出ないと思われますが。時間分解能(表示OFF)上記の時間分解能は普通にストローク描画している時にタッチイベントを常時監視し、そのデータを表示するものでしたが、これは一定時間ストローク描画すらも止めて、純粋にタッチイベントだけを取得した場合の時間分解能性能を取得するために利用します。表示結果に関しては通常の時間分解能と同じなので割愛します。スタイラス性能これまでタッチイベントとして受け取った情報から、スタイラスが対応している情報を分析してウインドウに表示します。タッチ中にスタイラスのボタン1やボタン2が押されたかどうかを表示します。実際には対応していても押したことがなければoにならないので注意してください。現状Wacomではボタンは1のみ対応、N-trigはボタン1/2両方使えるものが多くなっています。ホバー中にスタイラスのボタン1やボタン2が押されたかどうかを表示します。3.x以前、Androidがデジタイザに正式対応していなかった頃にボタン押下等の情報通知に使われていた領域です。1に変化したことがある部分のビットが立ちます。検出した筆圧の最小から最大までの範囲を表示します。通常は筆圧検知に対応したデジタイザが送ってくるデータですが、静電容量の方式のタッチパネルでも、指の触れている面積等から筆圧らしきものを生成して送ってくれる端末もあるようです。検出した筆圧の値が何種類あるかを表示します。様々な筆圧でストロークテストした後でここを見ることで、その端末の対応筆圧段階数を推測することができます。端末によっては、指などでタッチパネルに触れているサイズが入ってくることがあります。ペンの傾きの最小から最大までの範囲を表示します。OSとしては対応していますが、現状このデータを送ってくれる端末は存在しないようです。いちおう今後出てくるであろう新しいデジタイザ搭載端末に期待ということで、入れてあります。ペンの画面に垂直な軸まわりの方向の最小から最大までの範囲を表示します。OSとしては対応していますが、現状このデータを送ってくれる端末は存在しないようです。ホバリング時の画面からペン先までの距離の最小から最大までの範囲を表示します。OSとしては対応していますが、現状このデータを送ってくれる端末は存在しないようです。Paintのストローク演算を使ったベンチマークを走らせて、ペイントアプリのストローク処理に特化したCPU速度性能を割り出します。Paintで使った時の速度を表しているとは言えないことに注意してください。Paintでもその部分は同じ処理をしています。このベンチマークではストローク処理と描画処理以外は同時に走らないため、ほぼ2コア(2スレッド)しか使われません。そのため、4コアCPU搭載端末でもあまりスコアが上がらない傾向があります。Paintの実際の実行速度・使用感とベンチマーク結果のスコアが正しく比例関係になるとは限りませんのでご注意ください。タッチ情報タッチ情報をリアルタイムにオーバーレイ表示するウインドウを開きます。このウインドウを開いていると非常に処理が重くなり、タッチイベントの時間分解能や安定度に大きな悪影響が発生する端末が多いのでご注意ください。逆に重い場合にどの程度悪影響が発生するかを調べるのには役立つため、敢えてSurfeceViewを利用した別スレッドへの処理移動等の最適化をしていないとも言えます。筆圧・サイズ・メタBits・同時押し点数・傾き・方向・距離これらに関してはスタイラス性能で説明しているものと同じです。現在の状態がリアルタイムに表示されている点だけが異なります。その下の欄は、最新の10個のタッチイベント履歴リストが表示されます。各カラムの意味は以下のとおりです。時間イベント発生時間として送られてきた時間の下4桁です。ミリ秒単位になっています。ここで表示されている各イベントの時間の差を取って、時間分解能を算出しています。位置X,位置Yスタイラスのその時の座標です。筆圧スタイラスのその時の筆圧です。1/2スタイラスのどのボタンがその時押されていたかを表示します。動作イベントの発生原因です。ペン先表示ペン先の表示位置を設定します。スタイラスならばタッチ座標そのまま、指ならば右利き左利きを選べば、タッチ座標の斜め上にペン先が移動し、そこからペンストローク描画するようになります。消しゴムボタン消しゴムに利用するボタンを設定します。NoteシリーズではスタイラスのボタンにS-Penジェスチャーが設定されてしまっていて、押したまま画面に触れると変な機能が起動してウザいのでそれを回避するための措置です。特定アプリではジェスチャ禁止に出来るようにして欲しいものだと切実に思います。最近サムスンは自己主張が強すぎです。ペンカーソルペンカーソルのON/OFFを設定します。ペン遅延カーソル1データ分遅延したペンカーソルのON/OFFを設定します。消しゴムカーソル消しゴムを選択しているときの消しゴムカーソルのON/OFFを設定します。現在送られて来ている座標データから、これから移動するであろう座標位置を予測して、擬似的に遅延を少なくする機能の強度を設定します。遅延ガイドを利用して遅延を計測する際には当然ですが、予測なしにしておいてください。ヘルプキー操作や、このブログで説明したような内容を要約したテキストを表示します。Paint開発の経緯とEfTについて月別アーカイブはてなブログをはじめよう!CloverPaintさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。