ProcessMarkers() public method

Prepare the markerset for Joint localization, predicts the
public ProcessMarkers ( List labelMarkers, Vector3>.Dictionary &newMarkers, string prefix ) : void
labelMarkers List The list of labelmarkets
newMarkers Vector3>.Dictionary a reference to the dictionary to be
prefix string The possible prefix of all markers
return void
Esempio n. 1
0
        /// <summary>
        /// Build a skeleton according to the markers
        /// </summary>
        /// <param name="markerData">A list of markers </param>
        /// <returns>A complete skeleton</returns>
        public BipedSkeleton SolveSkeleton(List <Marker> markerData)
        {
            if (skeleton == null ||
                skeletonBuffer == null ||
                mp == null ||
                joints == null ||
                ikApplier == null)
            {
                skeleton       = new BipedSkeleton();
                skeletonBuffer = new BipedSkeleton();
                MarkersNames markersMap;
                mp        = new MarkersPreprocessor(markerData, out markersMap, bodyPrefix: MarkerPrefix);
                joints    = new JointLocalization(markersMap);
                ikApplier = new IKApplier(skeleton);

                // Set segment tracking markers for virtual marker construction
                st = new ŚegmentTracking(skeleton, markersMap, markerData);
            }

            var temp = skeleton;

            skeleton       = skeletonBuffer;
            skeletonBuffer = temp;

            Dictionary <string, OpenTK.Vector3> markers;

            mp.UpdateMarkerList(markerData, out markers);
            mp.ProcessMarkers(out markers);

            joints.BodyData.Height = bodyHeight;
            joints.BodyData.Mass   = bodyMass;
            joints.GetJointLocations(markers, ref skeleton);

            // Try to reconstruct virtual markers
            if (UseTrackingMarkers)
            {
                if (st.ProcessMarkers(skeleton, markerData, ref markers, MarkerPrefix))
                {
                    mp.ProcessMarkers(out markers);
                    joints.GetJointLocations(markers, ref skeleton);
                }
            }

            ikApplier.Interpolation = Interpolation;
            if (SolveWithIK)
            {
                ikApplier.ApplyIK(ref skeleton);
            }

            return(skeleton);
        }
        /// <summary>
        /// Build a skeleton according to the markers
        /// </summary>
        /// <param name="markerData">A list of markers </param>
        /// <returns>A complete skeleton</returns>
        public BipedSkeleton SolveSkeleton(List <LabeledMarker> markerData)
        {
            if (skeleton == null ||
                skeletonBuffer == null ||
                mp == null ||
                joints == null ||
                ikApplier == null)
            {
                skeleton       = new BipedSkeleton();
                skeletonBuffer = new BipedSkeleton();
                MarkersNames markersMap;
                mp        = new MarkersPreprocessor(markerData, out markersMap, bodyPrefix: MarkerPrefix);;
                joints    = new JointLocalization(markersMap);
                ikApplier = new IKApplier(skeleton);
            }
            Dictionary <string, OpenTK.Vector3> markers;

            mp.ProcessMarkers(markerData, out markers, MarkerPrefix);
            var temp = skeleton;

            skeleton       = skeletonBuffer;
            skeletonBuffer = temp;
            joints.GetJointLocation(markers, ref skeleton);
            ikApplier.Interpolation = Interpolation;
            if (SolveWithIK)
            {
                ikApplier.ApplyIK(ref skeleton);
            }
            return(skeleton);
        }