【Vive Pro Eye】視線追跡をUnityで行うためのプログラム例【開発チュートリアル】
ご無沙汰しました
あけましておめでとうございます<(_ _)>
今年もViveProEye関係の話をしていこうと思います。
自分が使い始めたときもそうでしたが…
あまりにも使い方に関する情報がない!
なんとなく見てたViveProEye使った論文でもコレ言われてて笑えるんですよ…( ˘•ω•˘ )
過去の記事にも、主に使い始めの研究者の方たちから質問をいただきました。
このViveProEyeの開発者の初期の手の付けにくさの現状…
これから買おうと思っている方が、不安にならないように
そして、買ったけど使い方が…という人の手助けになればと考え、
今回はViveProEyeの非公式チュートリアルみたいなものとして使ってねという記事です。
今見返したら、「過去の記事は結局どうプログラムに入れればいいか?」とか考慮されてない、ただ関数群とその詳細の羅列でしたね…(´・ω・)
このチュートリアルで目指すのは
・視線の方向ベクトルを得る
・どのオブジェクトを見ているか判定する(オブジェクトの名前とか)
・オブジェクトのどこを見ているか座標情報を得る
チュートリアル開始
ViveProEyeのセットアップやらSDKやらロボットの頭はインストール済の段階でお願いします。ここら辺の過去記事参考に。
ということで、いつも通りの3DでUnityの新規プロジェクト作ります。
次にAssets>Import Package>Costom PackageでSR_anipalのSDKを入れます。
そして、画面左のHierarchyのLightの下で右クリックしてCreate Emptyでテキトーな名前でオブジェクト作ります。
そこにImportしたSRanipalのフォルダからSRanipal_eye_framework.csをドラッグ
とりあえずこれで準備ok
VR初期設定恒例
Edit>Project Setting>PlayerからXRsettingも忘れずチェックします('ω')
今後の開発でコントローラとか使う人は(お好みで)SteamVRも入れておきましょう。
この記事では使いません(使おうと思って入れたけど忘れてた)
テキトーにオブジェクトいくつか配置します。
自分は分かりやすく3種類で色も塗ってみました(意味なし
位置や大きさは…どこでもいいんですが参考までに
左からz座標が-10,0,10で、y座標は全部1、x座標は-3,0,3です。
大きさは全部2
さっき作ってFrameworkスクリプトくっつけたオブジェクトに、新しくスクリプト書きます。名前は何でもいいです。
過去記事同様に、namespaceで囲っておきます。
そして出来上がったものがこちらになります(唐突)
過去記事で紹介した、GetGazeRayを使用する例になります。
Raycastで、その求まった方向ベクトルを使ってCamera座標からRayを出し、
その先でのオブジェクトとの衝突があるかを検知しています。
視線の先にあるオブジェクト名と、更にその視線がオブジェクトのどこにあるか座標を細かくLogしてくれます。
これでテニスゲーム作ったら、テニスボールと相手選手をどんな割合で見ているかとかが分かりますね(。-`ω-)
流れをまとめると
GetGazeRayに両目統合した後の視線頂戴とお願い
⇒起点と方向ベクトルをもらう
⇒カメラを始点に変換
⇒カメラから視線出てるとしてRayを飛ばす。
⇒ぶつかった物体のデータをログ
という雑なチュートリアルでした。
過去記事も含め、質問等ありましたら、コメントの方でお願いします<(_ _)>
研究で使っている方が大半みたいだし、心理系でよく使う瞳孔径とかの方が良かったかな。。。