本記事はアプリケーションの公開報告です。
もくじ
- なにをやったのか
- なぜやったのか
- どうやっているのか
- こんなことしてます
- まとめ
1. なにをやったのか
タイトル通り、Synchrogazer
というアプリケーションを公開しました。
このアプリケーションでは次のことが出来ます。
- 視線でマウスクリック操作が出来る
- 視線に合わせてデスクトップ上でキャラが同じ方向を見てくれる
具体的にはこんな感じ。
https://twitter.com/baku_dreameater/status/927171424279609345
ダウンロードや使い方の詳細はこちらのページからどうぞ。
2. なぜやったのか
視線によるマウスクリック操作で以下2種類のことをするのが狙いです。
- ウェブ漫画を読むときにラクをしたい
- 大まかなクリック操作を、キーボードに手を置いたままやりたい
ウェブ漫画のページめくりは結構ラフなクリックで出来るので、おおまかな視線ベースの入力でも用が足りるわけですね。
3. どうやっているのか
- 視線トラッキングデバイスのTobii Eye Tracker 4Cを用意
- マウス制御はWin32APIを頑張って叩く必要があるため
WPF
で.NET
向けのTobii APIを使って作成 - キャラ表示は
Unity
でやり、Unity
向けのTobii APIも併用 - 2と3のアプリケーションが共存するので
WPF
を親プロセスに位置付けていい感じにする
根本的なことは前記事のTobii Eye TrackerとUnityでランチャーソフト的なものを作ると変わりません。 キャラの切り替え対応とか設定管理とか、細かい事が増えた感じです。
4. こんなことしてます
WPF
のほうだけソースをGitHubに公開しています。
Unity
のほうは課金Assetとかあって面倒なので非公開です。
ソースに特段の工夫はないんですが、強いて挙げると下記くらいでしょうか。
- まばたき操作の状態遷移はステートマシンで書けるのでステートパターンで実装するとそこそこラクだった
- 「まばたきをしたい!」と思ってから実際にするまでには
0.3sec
くらいの遅れがあるのを考慮して、データにレイテンシをつける - 視線の位置は小刻みにぷるぷる動くので、テキトーに平滑化して読み取る
レイテンシや平滑化の式が設定から変えられたらもっと個人向けにカスタマイズできるかもしれませんね。
なお、ソースの分量が大したこと無かったため、全体としての設計パターンはあんまり徹底していません。
5. まとめ
本当はもっと作りこみたかったんですが時間なくて諦めた感じになっています。 気が向いたら更新するかもしれません。