Add Custom Tracker documentation
This commit is contained in:
parent
5138587eef
commit
cfde4632cd
@ -6,8 +6,84 @@ namespace Passer.Humanoid {
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// A tracker wich can be used for custom tracking solutions
|
/// A tracker wich can be used for custom tracking solutions
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// THis tracking option supports custom trackers and sensors for a humanoid.
|
/// This tracking option supports custom trackers and sensors for a humanoid.
|
||||||
[System.Serializable]
|
/// We support two types of tracking
|
||||||
|
/// - using a BodySkeleton
|
||||||
|
/// - using SensorComponent
|
||||||
|
///
|
||||||
|
/// BodySkeleton
|
||||||
|
/// ------------
|
||||||
|
/// This option is most suited for full body tracking hardware.
|
||||||
|
/// An example implementation is the PerceptionNeuron extension found in the Humanoid Control Pro edition.
|
||||||
|
/// For this, you need to implement a class derived from the BodySkeleton class.
|
||||||
|
/// For the Perception Neuron extension, this new class is Passer::Tracking::PerceptionNeuron.
|
||||||
|
/// This class should be used for the to the CustomTracker::bodySkeleton parameter.
|
||||||
|
/// In the new class, you should override the BodySkeleton::start and BodySkeleton::update functions
|
||||||
|
/// and implement the functionality to correctly start the tracking and retrieving the new body pose.
|
||||||
|
/// This will ensure that the tracking is started and updated at the right moment.
|
||||||
|
/// In the update function, you can asssign the tracking result to the correct tracking bones
|
||||||
|
/// of Humanoid Control.
|
||||||
|
/// You can retrieve the Humanoid Control TrackedBone using the BodySkeleton::GetBone function.
|
||||||
|
/// Then you can update the position and/or the rotation of the bone.
|
||||||
|
/// *Important*: a confidence value between 0 and 1 should also be set for the bone's position and/or rotation.
|
||||||
|
/// The default confidence is 0 and in that case, the tracking information will not be used.
|
||||||
|
/// Example of updating one bone:
|
||||||
|
/// \code
|
||||||
|
/// protected void UpdateBone(Bone boneId) {
|
||||||
|
/// TrackedBone bone = GetBone(boneId);
|
||||||
|
/// if (bone == null)
|
||||||
|
/// return;
|
||||||
|
///
|
||||||
|
/// // Get Perception Neuron tracking information
|
||||||
|
/// SensorBone neuronBone = device.GetBone(0, boneId);
|
||||||
|
///
|
||||||
|
/// // Assign the tracking position
|
||||||
|
/// bone.transform.position = neuronBone.position;
|
||||||
|
/// // Set the position Confidence
|
||||||
|
/// bone.positionConfidence = neuronBone.positionConfidence;
|
||||||
|
///
|
||||||
|
/// // Assign the tracking rotation
|
||||||
|
/// bone.transform.rotation = neuronBone.rotation;;
|
||||||
|
/// // Set the rotation Confidence
|
||||||
|
/// bone.rotationConfidence = neuronBone.rotationConfidence;
|
||||||
|
/// }
|
||||||
|
/// \endcode
|
||||||
|
///
|
||||||
|
/// SensorComponents
|
||||||
|
/// ================
|
||||||
|
/// This option is most suited for tracking devices which can be mounted on the body.
|
||||||
|
/// An example implementation is the ViveTracker imnplementation found in the Humanoid Control Pro edition.
|
||||||
|
/// For this, you need to implement a class derived from the SensorComponent class.
|
||||||
|
/// For the ViveTracker, this is the Passer::Tracking::ViveTrackerComponent.
|
||||||
|
/// This class should be used on the Head, Hand, Hips and/or Foot Targets in the CustomSensor::SensorComponent
|
||||||
|
/// parameter. By selecting the bone in the dropdown, you can set to which bone the device is attached.
|
||||||
|
/// In the new class, you should override the SensorComponent::StartComponent and SensorComponent::UpdateComponent functions
|
||||||
|
/// and implement the functionality to correctly start the tracking and retrieve the actual pose of the device.
|
||||||
|
/// This will ensure that the tracking is started and updated at the right moment.
|
||||||
|
///
|
||||||
|
/// In the overridden SensorUpdate function, you should update the Transform of the SensorComponent.
|
||||||
|
/// *Important*: a confidence value between 0 and 1 should also be set for the device.
|
||||||
|
/// The default confidence is 0 and in that case, the tracking information will not be used.
|
||||||
|
/// Next to that, the status should reflect the current tracking status of the device.
|
||||||
|
/// Example of updating the device rotation and position:
|
||||||
|
/// \code
|
||||||
|
/// public override void UpdateComponent() {
|
||||||
|
/// if (actionPose.poseIsValid) {
|
||||||
|
/// transform.localPosition = actionPose.localPosition;
|
||||||
|
/// transform.localRotation = actionPose.localRotation;
|
||||||
|
///
|
||||||
|
/// status = Tracker.Status.Tracking;
|
||||||
|
/// positionConfidence = 0.99F;
|
||||||
|
/// rotationConfidence = 0.99F;
|
||||||
|
/// }
|
||||||
|
/// else {
|
||||||
|
/// status = Tracker.Status.Present;
|
||||||
|
/// positionConfidence = 0F;
|
||||||
|
/// rotationConfidence = 0F;
|
||||||
|
/// }
|
||||||
|
/// }
|
||||||
|
/// \endcode
|
||||||
|
[System.Serializable]
|
||||||
public class CustomTracker : HumanoidTracker {
|
public class CustomTracker : HumanoidTracker {
|
||||||
|
|
||||||
/// \copydoc HumanoidTracker::name
|
/// \copydoc HumanoidTracker::name
|
||||||
|
Loading…
x
Reference in New Issue
Block a user