private void UpdateSkeletonProfile(Astra.BodyStream bodyStream) { if (ToggleProfileFull != null && ToggleProfileUpperBody != null && ToggleProfileBasic != null) { Astra.SkeletonProfile targetSkeletonProfile = Astra.SkeletonProfile.Full; if (ToggleProfileFull.isOn) { targetSkeletonProfile = Astra.SkeletonProfile.Full; } else if (ToggleProfileUpperBody.isOn) { targetSkeletonProfile = Astra.SkeletonProfile.UpperBody; } else if (ToggleProfileBasic.isOn) { targetSkeletonProfile = Astra.SkeletonProfile.Basic; } if (targetSkeletonProfile != _previousSkeletonProfile) { _previousSkeletonProfile = targetSkeletonProfile; bodyStream.SetSkeletonProfile(targetSkeletonProfile); } } }
private void UpdateBodyFeatures(Astra.BodyStream bodyStream, Astra.Body[] bodies) { if (ToggleSeg != null && ToggleSegBody != null && ToggleSegBodyHand != null) { Astra.BodyTrackingFeatures targetFeatures = Astra.BodyTrackingFeatures.Segmentation; if (ToggleSegBodyHand.isOn) { targetFeatures = Astra.BodyTrackingFeatures.HandPose; } else if (ToggleSegBody.isOn) { targetFeatures = Astra.BodyTrackingFeatures.Skeleton; } if (targetFeatures != _previousTargetFeatures) { _previousTargetFeatures = targetFeatures; foreach (var body in bodies) { if (body.Status != Astra.BodyStatus.NotTracking) { bodyStream.SetBodyFeatures(body.Id, targetFeatures); } } bodyStream.SetDefaultBodyFeatures(targetFeatures); } } }
public void OnNewFrame(Astra.BodyStream bodyStream, Astra.BodyFrame frame) { if (frame.Width == 0 || frame.Height == 0) { return; } if (_lastFrameIndex == frame.FrameIndex) { return; } _lastFrameIndex = frame.FrameIndex; frame.CopyBodyData(ref _bodies); UpdateSkeletonsFromBodies(_bodies); DestroyAbsentBodies(); /* * UpdateBodyFeatures(bodyStream, _bodies); * UpdateSkeletonProfile(bodyStream); * UpdateSkeletonOptimization(bodyStream); */ }
public void OnNewFrame(Astra.BodyStream bodyStream, Astra.BodyFrame frame) { if (frame.Width == 0 || frame.Height == 0) { return; } // Measure time since last body update float time = Time.realtimeSinceStartup; float delta = time - lastBodyUpdateTime; lastBodyUpdateTime = time; bodyUpdateDeltaTime = (0.1f * delta + 0.9f * bodyUpdateDeltaTime); _bodyUpdateFps = (int)(1.0f / bodyUpdateDeltaTime); }
public void OnNewFrame(Astra.BodyStream bodyStream, Astra.BodyFrame frame) { if (frame.Width == 0 || frame.Height == 0) { return; } if (_lastFrameIndex == frame.FrameIndex) { return; } _lastFrameIndex = frame.FrameIndex; frame.CopyBodyData(ref _bodies); UpdateSkeletonsFromBodies(_bodies); }
//TODO: Handle bodymask here aswell to increase performance? public void OnNewFrame(Astra.BodyStream bodyStream, Astra.BodyFrame frame) { if (frame.Width == 0 || frame.Height == 0) { return; } //should already be checked in function that calls this //if (_lastFrameIndex == frame.FrameIndex) //{ // return; //} _lastFrameIndex = frame.FrameIndex; //bodyStream. frame.CopyBodyData(ref _bodies); UpdateSkeletonsFromBodies(_bodies); UpdateBodyFeatures(bodyStream, _bodies); //needed? UpdateSkeletonProfile(bodyStream); //needed? }
private void UpdateSkeletonOptimization(Astra.BodyStream bodyStream) { if (ToggleOptimizationAccuracy != null && ToggleOptimizationBalanced != null && ToggleOptimizationMemory != null && SliderOptimization != null) { int targetOptimizationValue = (int)_previousSkeletonOptimization; if (ToggleOptimizationAccuracy.isOn) { targetOptimizationValue = (int)Astra.SkeletonOptimization.BestAccuracy; } else if (ToggleOptimizationBalanced.isOn) { targetOptimizationValue = (int)Astra.SkeletonOptimization.Balanced; } else if (ToggleOptimizationMemory.isOn) { targetOptimizationValue = (int)Astra.SkeletonOptimization.MinimizeMemory; } if (targetOptimizationValue != (int)_previousSkeletonOptimization) { Debug.Log("Set optimization slider: " + targetOptimizationValue); SliderOptimization.value = targetOptimizationValue; } Astra.SkeletonOptimization targetSkeletonOptimization = Astra.SkeletonOptimization.Balanced; int sliderValue = (int)SliderOptimization.value; switch (sliderValue) { case 1: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization1; break; case 2: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization2; break; case 3: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization3; break; case 4: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization4; break; case 5: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization5; break; case 6: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization6; break; case 7: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization7; break; case 8: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization8; break; case 9: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization9; break; default: targetSkeletonOptimization = Astra.SkeletonOptimization.Optimization9; SliderOptimization.value = 9; break; } if (targetSkeletonOptimization != _previousSkeletonOptimization) { UpdateOptimizationToggles(targetSkeletonOptimization); Debug.Log("SetSkeletonOptimization: " + targetSkeletonOptimization); _previousSkeletonOptimization = targetSkeletonOptimization; bodyStream.SetSkeletonOptimization(targetSkeletonOptimization); } } }