Fix : 캐릭터 root localScale 자동 정규화
- Initialize 시 transform.localScale을 Vector3.one으로 강제 - 비-1 scale prefab의 경우 LogWarning 출력 - avatarScale=1이 모든 캐릭터에서 일관되게 시각적 1배를 의미 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
b9361a9d17
commit
4f2ee68cb1
@ -210,6 +210,9 @@ namespace KindRetargeting
|
|||||||
|
|
||||||
InitializeIKJoints();
|
InitializeIKJoints();
|
||||||
|
|
||||||
|
// root localScale을 1로 정규화 (avatarScale=1이 시각적으로 1배가 되도록)
|
||||||
|
NormalizeRootScale();
|
||||||
|
|
||||||
// 크기 조정 대상 오브젝트 캐싱
|
// 크기 조정 대상 오브젝트 캐싱
|
||||||
CacheScalableObjects();
|
CacheScalableObjects();
|
||||||
|
|
||||||
@ -1429,6 +1432,24 @@ namespace KindRetargeting
|
|||||||
Debug.Log("포즈와 회전 오프셋이 재설정되었습니다.");
|
Debug.Log("포즈와 회전 오프셋이 재설정되었습니다.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 캐릭터 root의 localScale을 Vector3.one으로 정규화합니다.
|
||||||
|
/// 이를 통해 avatarScale=1.0이 시각적으로 정확히 1배가 되도록 보장합니다.
|
||||||
|
/// 비-1 localScale의 캐릭터 크기 의도는 avatarScale 자체로 표현해야 합니다.
|
||||||
|
/// </summary>
|
||||||
|
private void NormalizeRootScale()
|
||||||
|
{
|
||||||
|
Vector3 currentScale = transform.localScale;
|
||||||
|
if (currentScale == Vector3.one) return;
|
||||||
|
|
||||||
|
Debug.LogWarning(
|
||||||
|
$"[CustomRetargetingScript] '{gameObject.name}'의 root localScale이 {currentScale}입니다. " +
|
||||||
|
"avatarScale=1이 시각적으로 1배가 되도록 자동으로 (1,1,1)로 정규화합니다. " +
|
||||||
|
"원래 크기 의도가 있다면 prefab 자식 메시에 적용하거나 avatarScale 슬라이더로 조정하세요.");
|
||||||
|
|
||||||
|
transform.localScale = Vector3.one;
|
||||||
|
}
|
||||||
|
|
||||||
// 크기 조정 대상 오브젝트 캐싱 메서드
|
// 크기 조정 대상 오브젝트 캐싱 메서드
|
||||||
private void CacheScalableObjects()
|
private void CacheScalableObjects()
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user