コメント修正。InitializeLookAtOriginTransform

This commit is contained in:
ousttrue 2024-09-25 15:32:11 +09:00
parent 952730c446
commit 4f8e98e065

View File

@ -42,20 +42,11 @@ namespace UniVRM10
{
_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;
LookAtOriginTransform = InitializeLookAtOriginTransform(
humanoid,
controlRig,
_lookAt.OffsetFromHead,
instance.transform.rotation);
_lookAtOriginTransformLocalPosition = LookAtOriginTransform.localPosition;
_lookAtOriginTransformLocalRotation = LookAtOriginTransform.localRotation;
@ -108,6 +99,39 @@ namespace UniVRM10
return (yaw, pitch);
}
/// <summary>
/// Generate empty object for gaze calculation.
/// NOTE: このメソッドを実行するとき、モデル全体は初期姿勢T-Poseでなければならない。
/// NOTE: Vrm10Instance.Runtime 呼び出しによりトリガーされる。
/// From v0.127.0: VRM Root Vrm10Instance が Add されているGameObject は初期姿勢でなくてもよい #2445
/// </summary>
/// <param name="humanoid"></param>
/// <param name="controlRig">if provided parent is controlrig head else humanoid head</param>
/// <param name="eyeOffsetValue">A humanoid head local offset</param>
/// <param name="rootRotation">world rotation of vrm model</param>
/// <returns></returns>
private static Transform InitializeLookAtOriginTransform(UniHumanoid.Humanoid humanoid, Vrm10RuntimeControlRig controlRig,
Vector3 eyeOffsetValue, Quaternion rootRotation)
{
var lookAtOrigin = new GameObject("_look_at_origin_").transform;
if (controlRig != null)
{
// controlRig のHeadに連結
lookAtOrigin.SetParent(controlRig.GetBoneTransform(HumanBodyBones.Head));
}
else
{
// humanoid のHeadに連結
lookAtOrigin.SetParent(humanoid.Head);
}
lookAtOrigin.position = humanoid.Head.TransformPoint(eyeOffsetValue);
// v0.127.0
lookAtOrigin.rotation = rootRotation;
return lookAtOrigin;
}
#region Obsolete
[Obsolete("Use " + nameof(LookAtOriginTransform))]
public Transform GetLookAtOrigin(Transform head)