// Update is called once per frame
    private void Update()
    {
        Ray ray = new Ray(this.transform.position, FoveInterface.GetHMDRotation() * Vector3.forward * distance);

        //Rayを画面に表示
        Debug.DrawRay(ray.origin, ray.direction * distance, Color.green);

        /*
         * Debug.LogFormat("Rotation x : {0}, y: {1} z: {2} ",
         *          ray.direction.x, ray.direction.y, ray.direction.z);
         */

        Debug.LogFormat("{0}", Mathf.Round(FoveInterface.GetHMDPosition().z));
        // まばたきでボールを飛ばすように
        countTime += Time.deltaTime;

        if (FoveInterface.CheckEyesClosed() == EFVR_Eye.Both &&
            countTime > blinkThreshold)
        {
            GameObject tempBall = MakeBall();
            tempBall.GetComponent <BaketBall>().Shot(ray.direction * power);
            tempBall  = null;
            countTime = 0;
        }
    }
Beispiel #2
0
    // Update is called once per frame
    void Update()
    {
        //時間関連データの取得
        nt = DateTime.Now;     //ここに到達したときの時刻を取得する
        TimeSpan ts = nt - st; //実行からどれくらい経過しているのかを計算

        //fpsの計算
        ++frameCount;
        float time = Time.realtimeSinceStartup - prevTime;

        if (time >= 0.5f)
        {
            fpstime = frameCount / time;
            //Debug.LogFormat("{0}fps", fpstime);
            frameCount = 0;
            prevTime   = Time.realtimeSinceStartup;
        }

        //目のデータの取得
        FoveInterface.EyeRays eyes = FoveInterface.GetEyeRays();

        //HMD関連のデータの取得
        hmdpos = FoveInterface.GetHMDPosition(); //HMDの位置座標
        hmdrot = FoveInterface.GetHMDRotation(); //HMDの方向座標
        //Debug.Log(hmdpos.x + "," + hmdpos.y + "," + hmdpos.z + "," + hmdrot.x + "," + hmdrot.y + "," + hmdrot.z + "," + hmdrot.w);

        if (Input.GetKeyDown(KeyCode.Space))
        {
            tf = 1;
        }

        if (tf == 1)//csvへの書き込み
        {
            //CSVに記録する情報
            //現在時刻,現在時刻のミリ秒,経過時間,経過時間のミリ秒,fps,チェッカールームの回転速度,眼球の座標(左),眼球の座標(右),視線のベクトル(左),視線のベクトル(右),HMDの座標,HMDの向き
            streamWriter.Write(nt.ToString() + ',' + nt.Millisecond.ToString() + ',' + ts.ToString() + ',' + nt.Millisecond.ToString() + ','
                               + eyes.right.origin.x.ToString() + ',' + eyes.right.origin.y.ToString() + ',' + eyes.right.origin.z.ToString() + ','
                               + eyes.left.origin.x.ToString() + ',' + eyes.left.origin.y.ToString() + ',' + eyes.left.origin.z.ToString() + ','
                               + hmdpos.x.ToString() + ',' + hmdpos.y.ToString() + ',' + hmdpos.z.ToString() + ','
                               + hmdrot.x.ToString() + ',' + hmdrot.y.ToString() + ',' + hmdrot.z.ToString() + ',' + hmdrot.w.ToString()); //csvに書き込むデータのリスト
            streamWriter.WriteLine();                                                                                                      //データの取得
            Debug.Log("書き込み中");
        }

        if (Input.GetKeyDown(KeyCode.S))
        {
            streamWriter.Close();//csvに書き込む
            Debug.Log("書き込み終了");
        }
    }
Beispiel #3
0
    // Update is called once per frame
    void Update()
    {
        //fpsの計算
        ++frameCount;
        float time = Time.realtimeSinceStartup - prevTime;

        if (time >= 0.5f)
        {
            fpstime = frameCount / time;
            //Debug.LogFormat("{0}fps", fpstime);
            frameCount = 0;
            prevTime   = Time.realtimeSinceStartup;
        }

        //目のデータの取得
        FoveInterface.EyeRays eyes = FoveInterface.GetEyeRays();
        //視点の計算
        RaycastHit hitLeft, hitRight;

        Physics.Raycast(eyes.left, out hitLeft, Mathf.Infinity);
        Physics.Raycast(eyes.right, out hitRight, Mathf.Infinity);
        originhit = hitLeft.point + ((hitRight.point - hitLeft.point) / 2);//視点座標を代入

        //HMD関連のデータの取得
        hmdpos = FoveInterface.GetHMDPosition(); //HMDの位置座標
        hmdrot = FoveInterface.GetHMDRotation(); //HMDの方向座標
        //Debug.Log(hmdpos.x + "," + hmdpos.y + "," + hmdpos.z + "," + hmdrot.x + "," + hmdrot.y + "," + hmdrot.z + "," + hmdrot.w);


        if (Input.GetKeyDown(KeyCode.Space))
        {
            spintim   = 1;
            n         = 90.0f;
            spinstart = DateTime.Now;//実行を始めた時刻
        }

        if (Input.GetKeyDown(KeyCode.N))
        {
            vectionfeel = 1;
            //n = 90.0f;
        }

        if (spintim == 1)                 //checkerroomの回転、csvへの書き込み
        {
            nt = DateTime.Now;            //ここに到達したときの時刻を取得する
            TimeSpan ts = nt - spinstart; //実行からどれくらい経過しているのかを計算

            //経過時刻と角速度に合わせてチェッカールームを傾ける
            //フレーム当たりの角速度を
            spinangle  = ts.Milliseconds * n / 1000.0f;
            spinangle += ts.Seconds * n;
            spinangle += ts.Minutes * n;
            //spinangle += 0.9f;//Unityは60fpsというのを前提
            transform.localRotation = Quaternion.Euler(0.0f, spinangle, 0.0f);

            //CSVに記録する情報
            //現在時刻,現在時刻のミリ秒,経過時間,経過時間のミリ秒,fps,チェッカールームの回転速度,眼球の座標(左),眼球の座標(右),視線のベクトル(左),視線のベクトル(右),視点の座標,HMDの座標,HMDの向き,ベクション
            streamWriter.Write(nt.ToString() + ',' + nt.Millisecond.ToString() + ',' + ts.ToString() + ',' + nt.Millisecond.ToString() + ','
                               + fpstime.ToString() + ','                                                                                                                                           //fps
                               + n.ToString() + ','                                                                                                                                                 //チェッカールームの回転速度
                               + eyes.left.origin.x.ToString() + ',' + eyes.left.origin.y.ToString() + ',' + eyes.left.origin.z.ToString() + ','                                                    //左目の座標
                               + eyes.right.origin.x.ToString() + ',' + eyes.right.origin.y.ToString() + ',' + eyes.right.origin.z.ToString() + ','                                                 //右目の座標
                               + FoveInterface.GetLeftEyeVector().x.ToString() + ',' + FoveInterface.GetLeftEyeVector().y.ToString() + ',' + FoveInterface.GetLeftEyeVector().z.ToString() + ','    //左目ベクトル
                               + FoveInterface.GetRightEyeVector().x.ToString() + ',' + FoveInterface.GetRightEyeVector().y.ToString() + ',' + FoveInterface.GetRightEyeVector().z.ToString() + ',' //右目ベクトル
                               + originhit.x.ToString() + ',' + originhit.y.ToString() + ',' + originhit.z.ToString() + ','                                                                         //視点の座標
                               + hmdpos.x.ToString() + ',' + hmdpos.y.ToString() + ',' + hmdpos.z.ToString() + ','                                                                                  //HMDの座標
                               + hmdrot.x.ToString() + ',' + hmdrot.y.ToString() + ',' + hmdrot.z.ToString() + ',' + hmdrot.w.ToString() + ','                                                      //HMDの向き
                               + vectionfeel.ToString());                                                                                                                                           //ベクション
            //csvに書き込むデータのリスト
            streamWriter.WriteLine();                                                                                                                                                               //改行
            Debug.Log("書き込み中");

            //データ確認用
            //Debug.Log(spinstart);//回転開始時
            //Debug.Log(nt);//現在時刻
            //Debug.Log(ts);//経過時間
            //Debug.Log(ts.Milliseconds);//経過時間(ミリ秒)
            //Debug.Log(spinangle);//移動角
        }

        if (Input.GetKeyDown(KeyCode.S))
        {
            spintim = 0;
            streamWriter.Close();//csvに書き込む
            //Debug.Log("書き込み終了");
        }

        if (Input.GetKeyDown(KeyCode.Z))
        {
            n = 180.0f;
        }

        if (Input.GetKeyDown(KeyCode.X))
        {
            n = 60.0f;
        }

        if (Input.GetKeyDown(KeyCode.C))
        {
            n = 90.0f;
        }
    }