OpenNIUserTracker.UpdateSkeleton C# (CSharp) Method

UpdateSkeleton() public method

public UpdateSkeleton ( int userId, OpenNISkeleton, skeleton ) : void
userId int
skeleton OpenNISkeleton,
return void
    public void UpdateSkeleton(int userId, OpenNISkeleton skeleton)
    {
        // make sure we have skeleton data for this user
        if (!skeletonCapbility.IsTracking(userId))
        {
            return;
        }

        // Use torso as root
        SkeletonJointTransformation skelTrans = new SkeletonJointTransformation();
        skelTrans = skeletonCapbility.GetSkeletonJoint(userId, SkeletonJoint.Torso);
        if (skeleton.absolute)
        {
            Point3D pos = skelTrans.Position.Position;
            skeleton.UpdateRoot(new Vector3(pos.X,pos.Y,pos.Z));
        }
        else
        {
            Point3D pos = skelTrans.Position.Position;
            Vector3 v3dpos = new Vector3(pos.X, pos.Y, -pos.Z);
            Vector3 calPos = userCalibrationPosition[userId];
            skeleton.UpdateRoot(calPos - v3dpos);
        }

        // update each joint with data from OpenNI
        foreach (SkeletonJoint joint in Enum.GetValues(typeof(SkeletonJoint)))
        {
            if (skeletonCapbility.IsJointAvailable(joint))
            {
                skelTrans = skeletonCapbility.GetSkeletonJoint(userId, joint);
                skeleton.UpdateJoint(joint, skelTrans);
            }
        }
    }

Usage Example

    int UpdateUser(int userId, OpenNISkeleton skeleton)
    {
        // valid users?
        if (0 != userId)
        {
            // is the user still valid?
            if (!UserTracker.CalibratedUsers.Contains(userId))
            {
                userId = 0;
                Skeleton1.RotateToCalibrationPose();
            }
        }

        // look for a new userId if we dont have one
        if (0 == userId)
        {
            foreach (int uId in UserTracker.CalibratedUsers)
            {
                if (!UserIdTaken(uId))
                {
                    userId = uId;
                    break;
                }
            }
        }

        // update our skeleton based on active user id
        if (0 != userId)
        {
            UserTracker.UpdateSkeleton(userId, skeleton);
        }

        return(userId);
    }
All Usage Examples Of OpenNIUserTracker::UpdateSkeleton