private void LoadBVHFile(FileInfo file) { BVHMotionData bvhMotionData; BVHNode bvhRoot = BVHNode.ReadBVH(file, out bvhMotionData); MotionData motionData = new MotionData(); motionData.FPS = 1.0 / bvhMotionData.FrameTime; Bone rootBone = BVHNode.ToBones(bvhRoot, null, bvhMotionData, motionData); Kinematic = new KinematicVM(new KinematicStructure(rootBone)); Animator = new KinematicAnimatorVM(Kinematic, motionData); }
public KinematicAnimatorVM(KinematicVM kinematic, MotionData motionData) { this.Kinematic = kinematic; this.MotionData = motionData; PlayCommand = new RelayCommand(Play, CanPlay); PauseCommand = new RelayCommand(Pause, CanPause); ClearCommand = new RelayCommand(ClearData, CanClear); timer = new DispatcherTimer(DispatcherPriority.Normal); TimeSpan interval = TimeSpan.FromSeconds(1.0 / motionData.FPS); timer.Interval = interval; timer.Tick += OnTimerTick; }
public AppVM() { // setup kinematic chain Kinematic = new KinematicVM(new KinematicStructure()); // setup animator Animator = new KinematicAnimatorVM(Kinematic, new MotionData()); LoadBVHFileCommand = new RelayCommand <FileInfo>(LoadBVHFile); refreshTimer = new DispatcherTimer(DispatcherPriority.Background); refreshTimer.Interval = TimeSpan.FromMilliseconds(30); refreshTimer.Start(); refreshTimer.Tick += OnRefreshTick; }