블렌더 모션 상태 검사은(는) 무엇을 하나요?
사용 시기
- 블렌더 캐릭터가 애니메이션에서 뒤틀리거나, 거울처럼 반전되거나, 평평하게 보이거나, 오프셋이 있거나, 발이 미끄러지는 경우
- 사용자가 가져온 아바타, 아마추어 또는 리타겟팅된 모션이 예상 포즈와 일치하는지 묻는 경우
- 렌더링된 증거를 뼈대, 경계 상자, 접촉점, 방향 벡터와 같은 구조적 사실과 비교해야 하는 경우
- 워크플로우가 모델이 캐릭터, 소품, 프록시 메시, 제어 리그 또는 잘못 가져온 것인지 결정하는 데 의존하는 경우
핵심 원칙
스크린샷만으로 애니메이션 3D 에셋을 판단하지 마십시오. 스크린샷은 검토 증거일 뿐, 축 규칙, 뼈대 이름, 오브젝트 스케일, 로컬 변환, 부모 관계 메시, 재질 슬롯, 프레임별 접촉 상태를 숨깁니다.
먼저 블렌더 상태를 구조적으로 추출한 다음, 뷰포트 스크린샷이나 렌더링을 사용하여 사실이 암시하는 바를 확인하십시오.
작동 방식
- 모션을 판단하기 전에 깨끗한 장면과 에셋 기준선을 설정합니다.
- 블렌더 내부 인터프리터에서 실행되는 블렌더 Python 또는 익스포터를 사용하여 블렌더에서 구조적 사실을 추출합니다.
- 접촉, 방향, 스케일 및 리타겟팅 오류를 가장 잘 드러낼 가능성이 있는 프레임을 샘플링합니다.
- 측정된 사실을 사용자의 예상 포즈, 방향, 지면 및 렌더링 목표와 비교합니다.
- 확인된 사실, 가능한 원인 및 필요한 수정 사항을 구분하는 간결한 보고서를 반환합니다.
검사 워크플로우
-
장면 인벤토리를 작성합니다.
- 메쉬, 아마추어, 빈 오브젝트, 카메라, 조명, 모디파이어, 부모 관계 및 숨겨진 오브젝트를 나열합니다.
- 아바타를 판단하기 전에 캐릭터 메쉬를 헬퍼/프록시 지오메트리와 분리합니다.
- 오브젝트 공간 및 월드 공간 경계 상자를 기록합니다.
-
뼈대를 식별합니다.
- 아마추어 이름, 포즈 본, 본 머리/꼬리, 롤, 부모 체인, 제약 조건 및 rest-pose 축을 캡처합니다.
- 엉덩이, 척추, 목, 머리, 어깨, 팔꿈치, 손, 허벅지, 무릎, 발목, 발과 같은 의미 있는 뼈대를 매핑합니다.
- 누락된 왼쪽/오른쪽 쌍과 비정상적인 명명 규칙을 표시합니다.
-
전방, 상방 및 측면 축을 결정합니다.
- 골반, 척추, 어깨, 엉덩이, 머리 및 발을 함께 사용합니다. 단일 메시 법선에 의존하지 마십시오.
- 로컬 아마추어 축을 월드 축 및 glTF Y-up 대 Blender Z-up과 같은 가져온 파일 규칙과 비교합니다.
- 얼굴/머리/발 방향이 루트 모션과 충돌할 때 거울처럼 반전되거나 역방향으로 가져왔을 가능성을 표시합니다.
-
애니메이션 프레임을 샘플링합니다.
- 첫 번째, 중간, 접촉, 공중 및 극단 프레임을 검사합니다.
- 루트 위치, 루트 방향, 골반 높이, 상체 기울기, 팔다리 방향, 발 간격 및 메시 범위를 기록합니다.
- 길거나 빠른 모션의 경우 뒤집기, 착지, 회전, 충돌 및 바닥 접촉 주변을 더 조밀하게 샘플링합니다.
-
리타겟팅 문제를 탓하기 전에 모델 무결성을 확인합니다.
- 애니메이션을 적용하기 전에 깨끗한 기준선 형태를 확인합니다.
- 사용자가 명시적으로 수리를 요청하지 않는 한 원본 메시, 재질, 아마추어 및 스키닝을 유지합니다.
- 설명할 수 없는 구형 덩어리, 거대한 프록시 메시 또는 으스러진 몸체는 반대의 증거가 있을 때까지 가져오기/선택 문제로 처리합니다.
-
접촉 및 모션 문제를 진단합니다.
- 지면 관통: 프레임별 바닥 높이와 가장 낮은 발 또는 신발 꼭지점을 비교합니다.
- 발 미끄러짐: 고정된 프레임에서 발의 월드 위치를 비교합니다.
- 다리 교차: 왼쪽/오른쪽 허벅지, 무릎, 발목 및 발의 순서를 비교합니다.
- 비틀림 손상: 뼈대의 스윙 방향과 팔다리 축 주변의 롤/비틀림을 별도로 비교합니다.
- 스케일 드리프트: 애니메이션된 메시 범위를 깨끗한 기준선 범위와 비교합니다.
-
의견보다 사실을 먼저 보고합니다.
- 프레임 번호, 오브젝트 이름, 뼈대 이름, 월드 좌표 및 임계값을 포함합니다.
- 확인된 오류와 시각적 의심을 분리합니다.
- 구조적 상태가 무엇을 찾아야 하는지 설명한 후에만 스크린샷을 첨부합니다.
권장 보고서 형식
## 블렌더 모션 검사
### 장면 인벤토리
- 캐릭터 후보:
- 아마추어:
- 헬퍼/프록시 오브젝트:
- 카메라/조명:
### 방향
- 월드 상방:
- 캐릭터 전방:
- 루트 방향:
- 거울/역방향 위험:
### 기준선 무결성
- 깨끗한 메시 범위:
- 애니메이션된 메시 범위:
- 재질/스킨 보존:
- 의심스러운 비캐릭터 메쉬:
### 프레임 결과
| 프레임 | 결과 | 증거 |
| --- | --- | --- |
| 1 | 깨끗한 기준선 포즈 | 엉덩이/척추/발 정렬됨 |
| 96 | 발이 바닥을 관통함 | left_foot min_z = -0.04 |
### 판결
- 성공/실패:
- 필요한 수정:
- 렌더링 준비 상태:
예제
발 미끄러짐이 있는 걷기 사이클
시나리오: 리타겟팅된 캐릭터가 걷기 사이클 동안 미끄러지는 것처럼 보이지만, 전면 카메라 각도로는 발 접촉을 판단하기 어렵습니다.
워크플로우를 적용합니다:
- 장면 인벤토리: 캐릭터 메쉬
HeroBody, 아마추어HeroRig, 지면Floor, 숨겨진 프록시 메쉬 없음. - 뼈대 식별: 의미 있는 발은
foot.L및foot.R; 엉덩이는pelvis; 루트 뼈대는root. - 애니메이션 프레임 샘플링: 발이 고정된 순간 주변의 프레임 1, 18, 24, 30, 42 및 48을 검사합니다.
- 접촉 및 모션 문제 진단: 고정된 프레임 동안 발의 월드 공간 위치를 비교합니다.
추출된 사실:
| 프레임 | 사실 | 증거 |
|---|---|---|
| 18 | 왼발이 고정됨 | foot.L min_z = 0.004, 발가락과 뒤꿈치 모두 바닥 근처 |
| 24 | 왼발이 고정된 상태에서 미끄러짐 | 6프레임 동안 foot.L x = 0.21 -> 0.28 |
| 30 | 골반이 계속 앞으로 이동 | pelvis y = 1.14 -> 1.31 |
판결: 렌더링 준비 실패. 모션에 발 고정 정리 또는 리타겟팅 제약 조건 검토가 필요합니다. 바디 메쉬의 비율 변경은 필요하지 않습니다.
역방향으로 가져온 캐릭터
시나리오: 캐릭터가 정지 프레임에서는 올바르게 보이지만 애니메이션은 예상 이동 방향과 반대로 움직입니다.
워크플로우를 적용합니다:
- 전방, 상방 및 측면 축 결정: 머리, 가슴, 발 및 루트 모션을 비교합니다.
- 애니메이션 프레임 샘플링: 프레임 1과 이동 경로의 중간 지점을 검사합니다.
- 의견보다 사실을 먼저 보고: 루트 방향과 모델이 바라보는 방향을 별도로 포함합니다.
추출된 사실:
| 프레임 | 사실 | 증거 |
|---|---|---|
| 1 | 캐릭터 얼굴이 월드 -Y 방향을 가리킴 | neck에서 head로의 머리/가슴 벡터가 -Y로 확인됨 |
| 72 | 루트 모션이 월드 +Y 방향으로 이동 | root y = 0.0 -> 2.8 |
| 72 | 발은 시각적으로 이동 방향과 반대 방향을 향함 | 발가락 뼈대가 -Y를 가리키는 동안 변위는 +Y |
판결: 역방향 가져오기 또는 리타겟팅 전방 축 불일치 가능성이 높습니다. 애니메이션 커브를 편집하기 전에 가져오기/리타겟 축 매핑을 수정하십시오.
실용적인 임계값
- 장면 단위 스케일이 달리 명시하지 않는 한 Blender의 기본 미터 스케일 단위를 가정합니다.
- 바닥이 부드럽거나 의도적으로 양식화되지 않은 경우 1-2cm 이상의 지면 관통을 눈에 보이는 것으로 처리합니다.
- 5% 이상의 갑작스러운 스케일 변경은 리그, 제약 조건 또는 변환 상속 문제일 가능성이 높은 것으로 처리합니다.
- 공중 반전 모션 중 왼쪽/오른쪽 발목 측면 순서 뒤집기는 나중에 회복되더라도 다리 교차 위험으로 처리합니다.
- 소스 모션에 스냅 턴이 포함되지 않은 경우 프레임당 30도 이상의 루트 방향 점프를 의심스러운 것으로 처리합니다.
안티 패턴
- 작업이 명시적으로 메쉬 수리가 아닌 한 포즈 일치를 위해 신체 비율을 수정하지 마십시오.
- 깨끗한 기준선을 기록하기 전에 베이크하여 제거하지 마십시오.
- 하나의 렌더링된 카메라 각도를 포즈가 올바르다는 증거로 사용하지 마십시오.
- 헬퍼 오브젝트가 캐릭터의 일부가 아닌 이유를 기록하기 전에는 삭제하지 마십시오.
- 머리, 발, 몸통 및 루트 모션을 함께 확인하지 않고 아바타가 +Y, -Y, +X 또는 -X 방향을 향한다고 가정하지 마십시오.
도구 참고 사항
블렌더 상태 익스포터를 사용할 수 있는 경우 메쉬, 아마추어, 포즈 본, 재질, 접촉, 경계 상자 및 샘플링된 애니메이션 프레임을 포함하는 JSON을 선호합니다. 익스포터가 없으면 블렌더 자체를 통해 작은 블렌더 Python 스크립트를 실행합니다. 예를 들어 blender --background scene.blend --python collect_motion_state.py와 같이 실행합니다. bpy는 일반 시스템 Python 인터프리터에서 사용할 수 없기 때문입니다.