UniVRM/Assets/VRM10/Runtime/ControlRig/BoneInitialRotation.cs
ousttrue 6dd2bb38cc IControlRigGetter と IControlRigSetter を追加
add ControlRigRetarget
impl InitialRotationRigGetter.cs
impl NormalizedRotationRigGetter.cs
mv Assets/Vrm10/Runtime/ControlRig/Vrm10ControlBone.cs => Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs
mv Assets/VRM10/Runtime/ControlRig/InitialRotations/ControlRigGenerationOption.cs => Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs
rename Vrm10BoneInitialRotation => BoneInitialRotation
remove Vrm0XCompatibleRig.cs
2023-02-20 15:49:50 +09:00

38 lines
1.1 KiB
C#

using UnityEngine;
namespace UniVRM10
{
/// <summary>
/// Represents the rotation at the initial pose (TPose)
/// </summary>
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;
}
/// <summary>
/// Convert the local rotation, including the initial rotation, to a normalized local rotation
/// </summary>
public Quaternion NormalizedLocalRotation
{
get
{
return InitialGlobalRotation * Quaternion.Inverse(InitialLocalRotation) * Transform.localRotation * Quaternion.Inverse(InitialGlobalRotation);
}
}
}
}