Ejemplo n.º 1
0
    public static bool readTxtFile(string path, ref List <ModelCtrlData> target)
    {
        string line = "";

        try
        {
            using (StreamReader sr = new StreamReader(path))
            {
                line = sr.ReadLine();
                var temp = line.Split('\t');
                if (temp[0] != "MOVIE_DATA")
                {
                    return(false);
                }

                while ((line = sr.ReadLine()) != null)
                {
                    ModelCtrlData frame = new ModelCtrlData();
                    frame.readData(line);
                    target.Add(frame);
                }

                sr.Close();
                return(true);
            }
        }
        catch (Exception e)
        {
            Debug.Log("The file could not be read:");
            Debug.Log(e.Message);
            return(false);
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 接收两个轨迹数据,(用于轨迹分析),每一帧调用
    /// </summary>
    /// <param name="refData">参考数据,此数据作为参考对象</param>
    /// <param name="AppraiseData">分析数据,需要对此数据进行分析</param>
    public void RecvCompairTrailData(ModelCtrlData refData, ModelCtrlData AppraiseData)
    {
        TrailCurveDrawCtrl.Instance().studyMotion.getTraj(0).add(AppraiseData.toLeftTPose());
        TrailCurveDrawCtrl.Instance().studyMotion.getTraj(1).add(AppraiseData.toRightTPose());

        if (cur_frame < 5)
        {
            deta_left  += new Vec3(AppraiseData.bodyCtrlData.HandLeftPos - refData.bodyCtrlData.HandLeftPos);
            deta_right += new Vec3(AppraiseData.bodyCtrlData.HandRightPos - refData.bodyCtrlData.HandRightPos);

            if (cur_frame == 4)
            {
                deta_left  /= 5;
                deta_right /= 5;
            }
            left_color_list.Add(0.0f);
            right_color_list.Add(0.0f);
            if (cur_frame == 0)
            {
                TrailCurveDrawCtrl.Instance().startDraw(true);
            }
        }
        else
        {
            left_color_list.Add(Math.Abs((float)(new Vec3(AppraiseData.bodyCtrlData.HandLeftPos - refData.bodyCtrlData.HandLeftPos) - deta_left).norm()));
            right_color_list.Add(Math.Abs((float)(new Vec3(AppraiseData.bodyCtrlData.HandRightPos - refData.bodyCtrlData.HandRightPos) - deta_right).norm()));
        }
        cur_frame++;
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 接收用于绘制轨迹的参数,自行决定是否绘制轨迹每一帧调用
    /// </summary>
    /// <param name="modelCtrlData"></param>
    public void RecvTrailData(ModelCtrlData modelCtrlData)
    {
        curMotion.getTraj(0).push_back(modelCtrlData.toLeftTPose());
        curMotion.getTraj(1).push_back(modelCtrlData.toRightTPose());

        if (is_first)
        {
            startDraw(false);
            is_first = false;
        }
    }
Ejemplo n.º 4
0
    private void CutSlider_OnValueChange(float value, bool bIsLeft)
    {
        if (bIsLeft)
        {
            m_fLeftSliderValue = value;
        }
        else
        {
            m_fRightSliderValue = value;
        }
        int           tempTotalFrameCount = m_RecordManager.GetFrameCount();
        ModelCtrlData tempModelCtrlData   = m_RecordManager.GetModelCtrlDataByTime((int)(tempTotalFrameCount * value));

        m_RecordManager.GetRecordController().GetPlayController().Update(tempModelCtrlData);
    }
Ejemplo n.º 5
0
    private void Update()
    {
        if (bIsCalibrate)
        {
            m_RecordController.Update();
        }
        if (bIsStartRecord)
        {
            ModelCtrlData modelCtrlData = m_RecordController.GetCurrentData();
            m_FileWriter.CacheData(modelCtrlData);
            m_RecordModeChartController.UpdateLineChart(ChartType.CHART_SPEED, m_RecordRateController.nTotalFrameCount, TrailCurveDrawCtrl.Instance().lastSpeed(TrailType.EG_S1));
            m_RecordModeChartController.UpdateLineChart(ChartType.CHART_ACCELERATE, m_RecordRateController.nTotalFrameCount, TrailCurveDrawCtrl.Instance().lastAcceleration(TrailType.EG_S1));
            m_RecordModeChartController.UpdateLineChart(ChartType.CHART_CURVATURE, m_RecordRateController.nTotalFrameCount, TrailCurveDrawCtrl.Instance().lastCurvature(TrailType.EG_S1));
            m_RecordModeChartController.UpdateLineChart(ChartType.CHART_TORSION, m_RecordRateController.nTotalFrameCount, TrailCurveDrawCtrl.Instance().lastTorsion(TrailType.EG_S1));

            m_RecordRateController.nTotalFrameCount += 1;  //录制帧编号从0开始
        }
    }
Ejemplo n.º 6
0
 // Update is called once per frame
 public void Update()
 {
     CurrentFrameModelCtrlData = m_DeviceController.AcquireData();
     m_PlayController.Update(CurrentFrameModelCtrlData);
 }
Ejemplo n.º 7
0
 //接收外部数据,移动模型
 public void MoveModel(ModelCtrlData modelCtrlData)
 {
     m_BodyController.MoveBody(modelCtrlData.bodyCtrlData);
     m_HandController.MoveHand(modelCtrlData.handCtrlData);
 }
Ejemplo n.º 8
0
 public ModelCtrlData(ModelCtrlData obj)
 {
     handCtrlData  = new HandCtrlData(obj.handCtrlData);
     bodyCtrlData  = new BodyCtrlData(obj.bodyCtrlData);
     wristCtrlData = new WristCtrlData(obj.wristCtrlData);
 }
Ejemplo n.º 9
0
    //此接口用于缓存每一帧传来的数据,(设备传来的数据)
    public void CacheData(ModelCtrlData modelCtrlData)
    {
        ModelCtrlData temp = new ModelCtrlData(modelCtrlData);

        cacheDataList.Add(temp);
    }
Ejemplo n.º 10
0
 public void Update(ModelCtrlData modelCtrlData)
 {
     m_ModelController.MoveModel(modelCtrlData);
     m_TrailController.RecvTrailData(modelCtrlData);
 }