mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-09-13 06:20:01 -05:00
lookAt は root と同じ向きが初期姿勢
LookAtOriginTransform.rotation = instance.transform.rotation;
This commit is contained in:
@@ -56,7 +56,7 @@ namespace UniVRM10
|
||||
ControlRig = new Vrm10RuntimeControlRig(instance.Humanoid, m_instance.transform);
|
||||
}
|
||||
Constraints = instance.GetComponentsInChildren<IVrm10Constraint>();
|
||||
LookAt = new Vrm10RuntimeLookAt(instance.Vrm.LookAt, instance.Humanoid, ControlRig);
|
||||
LookAt = new Vrm10RuntimeLookAt(instance, instance.Humanoid, ControlRig);
|
||||
Expression = new Vrm10RuntimeExpression(instance, LookAt.EyeDirectionApplicable);
|
||||
SpringBone = springBoneRuntime;
|
||||
}
|
||||
|
||||
@@ -38,13 +38,25 @@ namespace UniVRM10
|
||||
/// </summary>
|
||||
public Transform LookAtOriginTransform { get; }
|
||||
|
||||
internal Vrm10RuntimeLookAt(VRM10ObjectLookAt lookAt, UniHumanoid.Humanoid humanoid, Vrm10RuntimeControlRig controlRig)
|
||||
internal Vrm10RuntimeLookAt(Vrm10Instance instance, UniHumanoid.Humanoid humanoid, Vrm10RuntimeControlRig controlRig)
|
||||
{
|
||||
_lookAt = lookAt;
|
||||
LookAtOriginTransform = InitializeLookAtOriginTransform(
|
||||
humanoid.Head,
|
||||
controlRig != null ? controlRig.GetBoneTransform(HumanBodyBones.Head) : humanoid.Head,
|
||||
_lookAt.OffsetFromHead);
|
||||
_lookAt = instance.Vrm.LookAt;
|
||||
|
||||
// 視点計算用の empty object
|
||||
LookAtOriginTransform = new GameObject("_look_at_origin_").transform;
|
||||
if (controlRig != null)
|
||||
{
|
||||
// controlRig に連結
|
||||
LookAtOriginTransform.SetParent(controlRig.GetBoneTransform(HumanBodyBones.Head));
|
||||
}
|
||||
else
|
||||
{
|
||||
// 直接連結
|
||||
LookAtOriginTransform.SetParent(humanoid.Head);
|
||||
}
|
||||
LookAtOriginTransform.position = humanoid.Head.TransformPoint(_lookAt.OffsetFromHead);
|
||||
LookAtOriginTransform.rotation = instance.transform.rotation;
|
||||
|
||||
_lookAtOriginTransformLocalPosition = LookAtOriginTransform.localPosition;
|
||||
_lookAtOriginTransformLocalRotation = LookAtOriginTransform.localRotation;
|
||||
|
||||
@@ -96,17 +108,6 @@ namespace UniVRM10
|
||||
return (yaw, pitch);
|
||||
}
|
||||
|
||||
private static Transform InitializeLookAtOriginTransform(Transform rawHead, Transform actualHead, Vector3 eyeOffsetValue)
|
||||
{
|
||||
// NOTE: このメソッドを実行するとき、モデル全体は初期姿勢(T-Pose)でなければならない。
|
||||
var lookAtOrigin = new GameObject("_look_at_origin_").transform;
|
||||
lookAtOrigin.SetParent(actualHead);
|
||||
lookAtOrigin.position = rawHead.TransformPoint(eyeOffsetValue);
|
||||
lookAtOrigin.rotation = Quaternion.identity;
|
||||
|
||||
return lookAtOrigin;
|
||||
}
|
||||
|
||||
#region Obsolete
|
||||
[Obsolete("Use " + nameof(LookAtOriginTransform))]
|
||||
public Transform GetLookAtOrigin(Transform head)
|
||||
|
||||
Reference in New Issue
Block a user