【ViveProEye】Unity用SDKで眼球運動の情報を数値で取りだす方法【C#】
はい、前回の記事の続きです。
ViveのYouTube Liveがありまして、SDKの情報もあるということで、
こちらを拝見させていただきました。
そして前回のgaze_direction_normalizedのベクトルの件を、質問で拾っていただけましたので、回答を待ちたいと思います(。-`ω-)
さて、前回の残りは4つ
・目の開き具合 済
・視線の方向ベクトル 済
・視線の起点座標
・瞳孔径
・瞳孔の位置座標
・輻輳距離
…ということで視線の起点の座標データからいきましょう(*'ω'*)
視線の起点の座標、gaze_origin_mm
これは開発者フォーラムを見ても、はっきりとした回答が分からないので、自分の予想込みの情報になります。
Cornea(角膜)が瞳孔を覆っているのが分かりますね。
この盛り上がっている部分の中心を、視線の起点の座標としている…らしい(フォーラム眺めた感じ)
Gaze Origin(Center of Cornea Sphere)って書いてあるし…( ˘•ω•˘ )
【使い方】
Vector3 ume = eyeData.verbose_data.left.gaze_origin_mm;
これもなぜかSystemOriginが原点座標になってる…ぽい?※フォーラムの画像参照
公式のドキュメントに【単位はメートルマイル】
絶対ミリメートルだと思うんですけどHTCさん…( ˘•ω•˘ )?
【2019/09/03追記】
公式曰く、誤表記で、ミリメートルということです。
あと、これも右手座標系なので気を付けてください。
瞳孔径を計測、pupil_diameter_mm
瞳孔径を取ってグラフ化・ビジュアル化してるこの個人開発者さんの動画がすごいので、見てみることをお勧めします。
ちゃんと明るいときと、暗いときで大きさが変わってるんですね(*'ω'*)
【使い方】
float ume = eyeData.verbose_data.left.pupil_diameter_mm;
直径で出力されます
公式は、これも単位がメートルマイルって書いてますけど…ミリメートルよね?
瞳孔の位置座標、pupil_position_in_sensor_area
視線の起点とは違い、こちらは2次元の座標です。
使い道が思い浮かびませんが…うーん('ω')
Vtuberさんの眼の動きとか、もしかしてこっちの変数なのかしら?
【使い方】
Vector2 ume = eyedata.verbose_data.left.pupil_position_in_sensor_area;
x,yがそれぞれ正規化されて、0~1の値で出力されます。
輻輳距離(未実装?)、convergence_distance_mm
簡単に言えば見ている物体までの距離を測れる・・・はずなのですが
他の開発者さんが疑問に思っている通り、まだ中身は未実装らしいです。
一応、箱だけあるので置いておきますね。
【使い方】
float ume = eyeData.verbose_data.combined.convergence_distance_mm;
未実装
これが、左目・右目・両目に適用した結果のまとめです。参考までに。
両目で瞳孔の位置などは、形としては取れるけど数値は0みたいな箇所もあったり。
追記2020/04/03
ソースコードをアップロードしました。
開発仲間0人状態ですので何卒Twitterもよろしくお願いします( ;∀;)
どうぞ良しなに