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); } }
/// <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++; }
/// <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; } }
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); }
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开始 } }
// Update is called once per frame public void Update() { CurrentFrameModelCtrlData = m_DeviceController.AcquireData(); m_PlayController.Update(CurrentFrameModelCtrlData); }
//接收外部数据,移动模型 public void MoveModel(ModelCtrlData modelCtrlData) { m_BodyController.MoveBody(modelCtrlData.bodyCtrlData); m_HandController.MoveHand(modelCtrlData.handCtrlData); }
public ModelCtrlData(ModelCtrlData obj) { handCtrlData = new HandCtrlData(obj.handCtrlData); bodyCtrlData = new BodyCtrlData(obj.bodyCtrlData); wristCtrlData = new WristCtrlData(obj.wristCtrlData); }
//此接口用于缓存每一帧传来的数据,(设备传来的数据) public void CacheData(ModelCtrlData modelCtrlData) { ModelCtrlData temp = new ModelCtrlData(modelCtrlData); cacheDataList.Add(temp); }
public void Update(ModelCtrlData modelCtrlData) { m_ModelController.MoveModel(modelCtrlData); m_TrailController.RecvTrailData(modelCtrlData); }