using System;
using UnityEngine.Serialization;
namespace UnityEngine.Perception.GroundTruth
{
///
/// A definition of a keypoint (joint).
///
[Serializable]
public class KeypointDefinition
{
internal const float defaultSelfOcclusionDistance = 0.15f;
///
/// The name of the keypoint
///
public string label;
///
/// Does this keypoint map directly to a
///
public bool associateToRig = true;
///
/// The associated of the rig
///
public HumanBodyBones rigLabel = HumanBodyBones.Head;
///
/// The color of the keypoint in the visualization
///
public Color color = Color.blue;
///
/// The max distance the keypoint can be behind an object before it is considered occluded. Distance is computed
/// in the local space of the joint, so object scale is computed
///
public float selfOcclusionDistance = defaultSelfOcclusionDistance;
}
///
/// A skeletal connection between two joints.
///
[Serializable]
public class SkeletonDefinition
{
///
/// The first joint
///
public int joint1;
///
/// The second joint
///
public int joint2;
///
/// The color of the skeleton in the visualization
///
public Color color = Color.blue;
}
///
/// Template used to define the keypoints of a humanoid asset.
///
[CreateAssetMenu(fileName = "KeypointTemplate", menuName = "Perception/Keypoint Template", order = 2)]
public class KeypointTemplate : ScriptableObject
{
///
/// The of the template
///
public string templateID = Guid.NewGuid().ToString();
///
/// The name of the template
///
public string templateName;
///
/// Texture to use for the visualization of the joint.
///
public Texture2D jointTexture;
///
/// Texture to use for the visualization of the skeletal connection.
///
public Texture2D skeletonTexture;
///
/// Array of for the template.
///
[FormerlySerializedAs("keyPoints")]
public KeypointDefinition[] keypoints;
///
/// Array of the for the template.
///
public SkeletonDefinition[] skeleton;
}
}