Bakulog

獏の夢日記的な何か。

視線入力ソフト「Synchrogazer」を公開しました

本記事はアプリケーションの公開報告です。

もくじ

  1. なにをやったのか
  2. なぜやったのか
  3. どうやっているのか
  4. こんなことしてます
  5. まとめ

1. なにをやったのか

タイトル通り、Synchrogazerというアプリケーションを公開しました。 このアプリケーションでは次のことが出来ます。

  • 視線でマウスクリック操作が出来る
  • 視線に合わせてデスクトップ上でキャラが同じ方向を見てくれる

具体的にはこんな感じ。

https://twitter.com/baku_dreameater/status/927171424279609345

ダウンロードや使い方の詳細はこちらのページからどうぞ。

2. なぜやったのか

視線によるマウスクリック操作で以下2種類のことをするのが狙いです。

  • ウェブ漫画を読むときにラクをしたい
  • 大まかなクリック操作を、キーボードに手を置いたままやりたい

ウェブ漫画のページめくりは結構ラフなクリックで出来るので、おおまかな視線ベースの入力でも用が足りるわけですね。

3. どうやっているのか

  1. 視線トラッキングバイスTobii Eye Tracker 4Cを用意
  2. マウス制御はWin32APIを頑張って叩く必要があるためWPF.NET向けのTobii APIを使って作成
  3. キャラ表示はUnityでやり、Unity向けのTobii APIも併用
  4. 2と3のアプリケーションが共存するのでWPFを親プロセスに位置付けていい感じにする

根本的なことは前記事のTobii Eye TrackerとUnityでランチャーソフト的なものを作ると変わりません。 キャラの切り替え対応とか設定管理とか、細かい事が増えた感じです。

4. こんなことしてます

WPFのほうだけソースをGitHubに公開しています。 Unityのほうは課金Assetとかあって面倒なので非公開です。

ソースに特段の工夫はないんですが、強いて挙げると下記くらいでしょうか。

  • まばたき操作の状態遷移はステートマシンで書けるのでステートパターンで実装するとそこそこラクだった
  • 「まばたきをしたい!」と思ってから実際にするまでには0.3secくらいの遅れがあるのを考慮して、データにレイテンシをつける
  • 視線の位置は小刻みにぷるぷる動くので、テキトーに平滑化して読み取る

レイテンシや平滑化の式が設定から変えられたらもっと個人向けにカスタマイズできるかもしれませんね。

なお、ソースの分量が大したこと無かったため、全体としての設計パターンはあんまり徹底していません。

5. まとめ

本当はもっと作りこみたかったんですが時間なくて諦めた感じになっています。 気が向いたら更新するかもしれません。