using UnityEngine;
namespace UniVRM10
{
///
/// Represents the rotation at the initial pose (TPose)
///
public readonly struct BoneInitialRotation
{
public readonly Transform Transform;
public readonly Vector3 InitialLocalPosition;
public readonly Quaternion InitialLocalRotation;
public readonly Quaternion InitialGlobalRotation;
public BoneInitialRotation(Transform transform)
{
Transform = transform;
InitialLocalPosition = transform.localPosition;
InitialLocalRotation = transform.localRotation;
InitialGlobalRotation = transform.rotation;
}
///
/// Convert the local rotation, including the initial rotation, to a normalized local rotation
///
public Quaternion NormalizedLocalRotation
{
get
{
return InitialGlobalRotation * Quaternion.Inverse(InitialLocalRotation) * Transform.localRotation * Quaternion.Inverse(InitialGlobalRotation);
}
}
}
}