FOVE SUPPORT CENTER

unityでの両目視線情報

Comments

8 comments

  • Avatar
    Sanuga

    返信が遅くなってしまい申し訳ありません。

    以下の回答は開発チームのエンジニアによるものですが、彼は視線追跡チームではありません。
    回答者の希望もあり視線追跡チームの査読を待っていたのですが、これ以上お待たせするわけにもいきませんのでお答えします。

    左右の視線のずれはアイトラッキング精度の制限によるものです。
    これはうまくすれば改善していきますが、完全には回避できないと思います。
    このため、コンテンツはある程度の誤差を許容して設計する必要があります。

    GetGazeConvergence は視線の一つに加え、収束までの距離も返します。
    これはどちらの目の視線が正しいか判断するのに役立つかもしれません。
    例えば、左目の視線が20M離れた物体に当たり、右目の視線が5M離れた物体に当たり、報告された収束が7Mの場合は、おそらく右目の視線の方がより正確です。

    よろしくおねがいします。

  • Avatar
    char creon

    こんにちは。

    回答ありがとうございます。

    視点を表示しようとしているのですが、

    var rays = foveInterface.GetGazeRays();
    Physics.Raycast(rays.left, out hit, Mathf.Infinity);
    から
    transform.position = hit.point;
    とか
    transform.position = rays.left.GetPoint(3f);
    でUnityのsampleは、こんな感じで左目視線を表示させてますが、

    これを注視点で
    var gaze = FoveInterface.GetGazeConvergence();
    Physics.Raycast(gaze.ray, out hit, Mathf.Infinity);
    から
    transform.position = hit.point;
    とか
    transform.position = gaze.ray.GetPoint(3f);
    これだと、全然違うところに表示されてしまい非常に困っています。
    そもそも、こういう使い方はできないのでしょうか?


    > 例えば、左目の視線が20M離れた物体に当たり、右目の視線が5M離れた物体に当たり、報告された収束が7Mの場合は、おそらく右目の視線の方がより正確です。
    上のコードで、rays.leftのhitとrays.rightがhitしている場合,gaze.rayもhitするのでしょうか?

    視線情報の使い方の説明が見つからないので、手探り状態です。

    よろしくおねがいします。

  • Avatar
    Sanuga

    こちらでも実験しました。
    FOVE3DCursorLeft を変えずに、FOVE3DCursorRight だけを変えて確認しています。
    確認は
    - FOVE Software v0.12.0
    - Unity 5.6.1f1 (64-bit)
    - UNITY EXAMPLE は Updated : 2017-03-07, using Unity plugin v.1.1.1
    にて行いました。

    FOVE3DCursorRight が参照する視線を rays.right から rays.left へ変更
    → 紫ボール(右目)が常に緑ボール(左目)と一致するため、紫ボールが見えなくなる

    FOVE3DCursorRight が参照する視線を rays.right から gaze.ray へ変更
    → 紫ボール(右目)がかなりの割合で見えなくなる(おそらく緑ボール(左目)と重なっている)が、ときどき一瞬だけ紫ボールが緑ボールと離れたところに表示され、また消える。

    char creon 様の環境の状況も同じと考えてよろしいでしょうか?

    よろしくお願いします。

  • Avatar
    char creon

    そんな感じですね
    こちらでは、FOVE3DCursorBothというのを追加(コピペ)して、materialの色を変えて、右目、左目、注視の3つを表示させています。
    また、横を向くと左目、右目のボールは付いてくるのですが、注視が付いてきません(gazeが正面固定?)
    例えば、左90度向くと、注視点が右にあるような感じです。

  • Avatar
    Sanuga

    追加情報ありがとうございます。

    お教えいただいた情報とこちらの再現状況を合わせてソフトウェアチームのエンジニアに伝えました。
    彼によると、unity plug-inに気になる点を発見したので、他エンジニアに相談するとのことです。

    ご不便をおかけしてすみません。

  • Avatar
    char creon

    ありがとうございます!

  • Avatar
    Remco

    英語使ってますはごめんなさい

    In your scene, add an object that handles the gaze collision code. In my case, I created a plain 3D object sphere (make sure to disable collisions on this object).

    To this object, add the script for determining the gaze convergence, with the following (or similar) code:

    public FoveInterface foveObject;

    void Update() {
      var gaze = foveObject.GetWorldGazeConvergence();

      RaycastHit hit;
      Physics.Raycast(gaze.ray, out hit, Mathf.Infinity);
      if (hit.point != Vector3.zero) {
        transform.position = hit.point;
      }
    }

    It is important that you add the public FoveInterface foveObject code, as it allows you to call non-static functions.

    The final step to make all of this work is dragging the Fove Interface object (that is in the Scene Hierarchy shown in the above picture) onto the foveObject variable in the Inspector view.

  • Avatar
    Sanuga

    英語だと厳しかったらお知らせください。
    頑張って訳します。 (^^;

    Remco に聞いた話では、 static function を呼ぶのではなくて、objectを作って non-static function を呼ぶ必要がある、とのことです。

Please sign in to leave a comment.