コード例 #1
0
ファイル: HeadTrackerImp.cs プロジェクト: NWORKZ/YT_PROJECTS
    // Start is called before the first frame update
    void Start()
    {
        initStatus = HeadTrackerPlugin.Initialize(ref width, ref height, filename);
        HeadTrackerPlugin.SetScale(scale);

        Debug.Log("Initialize Status: " + initStatus);
        frameCenter = new Vector2((width / scale) / 2, (height / scale) / 2);
        Debug.Log("Center of Frame: " + frameCenter);

        lastFace   = new FaceRect();
        face       = new FaceRect();
        lastZtrans = 0;
    }
コード例 #2
0
ファイル: HeadTrackerImp.cs プロジェクト: NWORKZ/YT_PROJECTS
    // Update is called once per frame
    void Update()
    {
        if (initStatus == 0)
        {
            HeadTrackerPlugin.DetectFace(ref face);
            Vector2 faceCenter     = new Vector2(face.X + (face.W / 2), face.Y + (face.H / 2));
            Vector2 lastFaceCenter = new Vector2(lastFace.X + (lastFace.W / 2), lastFace.Y + (lastFace.H / 2));

            //always look at center
            //this.transform.LookAt(Vector3.zero);
            if (face.X == 0 && face.Y == 0)
            {
                //this.transform.rotation = Quaternion.Euler(0, 0, 0);
                this.transform.position = Vector3.zero;
            }
            else
            {
                if (Mathf.Abs(lastFaceCenter.x - faceCenter.y) >= xyUpdateMinGap || Mathf.Abs(lastFaceCenter.y - faceCenter.y) >= xyUpdateMinGap)
                {
                    float xtrans = remap(frameCenter.x - faceCenter.x, -frameCenter.x, frameCenter.x, -2.0f, 2.0f);
                    float ytrans = remap(frameCenter.y - faceCenter.y, -frameCenter.y, frameCenter.y, -2.0f, 2.0f);
                    float ztrans = lastZtrans;

                    //Debug.Log("last face: " + (lastFace.W * lastFace.H) + " face size: "+ (face.W * face.H) + "frame: " + frameCenter.x * frameCenter.y);

                    if (Mathf.Abs((face.W * face.H) - (lastFace.W * lastFace.H)) >= zUpdateMinGap)
                    {
                        Debug.Log("Gap: " + Mathf.Abs((lastFace.W * lastFace.H) - (face.W * face.H)));
                        ztrans = remap(face.W * face.H, 0, frameCenter.x * frameCenter.y, -1.0f, 1.0f);
                    }

                    this.transform.position = new Vector3(xtrans, ytrans, ztrans);
                    this.transform.LookAt(Vector3.forward * lookDistance);
                    lastZtrans = ztrans;
                }
            }

            lastFace = face;

            //Debug.Log(face.X + " : " + face.Y + " : " + face.W + " : " + face.H);
            //Debug.Log("Face position relative to Frame center: X ::" + (faceCenter.x - frameCenter.x)  + " Y ::" + (faceCenter.x - frameCenter.x));
        }
    }
コード例 #3
0
ファイル: HeadTrackerImp.cs プロジェクト: NWORKZ/YT_PROJECTS
 private void OnDisable()
 {
     HeadTrackerPlugin.Close();
 }