Unity 모션 매치
기존 uGUI에 대한 참조 모션(이동, 균일 스케일, 불투명도)을 고정 카메라로 대체하는 데 사용합니다. 격리된 프로젝트 복사본에서 작업합니다. 기본 auto 경로는 하나의 공통 Editor 브리지와 생성된 바인딩 데이터를 사용하며, 게임별 C# 어댑터나 비공개 게임 메서드를 사용하지 않습니다.
발견 및 준비
선택, 출력 및 제한 사항은 자동 바인딩을, 테스트된 동작과 남은 시각적 맞춤 오류는 검증 범위를 참조하세요. 합성 모델, 원본 논문 및 재현 가능한 모션 벤치마크는 방법 및 증거를 참조하세요. 소스는 선택한 Unity Editor로 컴파일되어야 하며 uGUI를 포함해야 합니다. Python에는 numpy, scipy, opencv-python 및 Pillow가 필요합니다. ffmpeg는 비디오 입력에만 필요합니다.
python scripts/unity.py prepare --source C:/project --workspace C:/motion-work --editor "C:/Program Files/Unity/Hub/Editor/6000.3.21f1/Editor/Unity.exe"
이 명령은 Library 없이 Assets/Packages/ProjectSettings를 복사하고, 씬 Canvas/RectTransform/레이아웃/컴포넌트 구조를 인벤토리하며, 시작 씬을 선택하고, 일반 Play Mode로 진입하여 결과 UI를 발견하고, 독립적인 보이는 그룹을 선택한 다음 배경/기본/RGBA 템플릿을 추출합니다. 반복 실행은 안정적인 임포트 후 기준선을 확립합니다. 씬이 저장되거나 소스가 편집되지 않습니다.
selection.html, auto-report.json, auto-bindings.json 및 추출된 rest.png 이미지를 검사하세요. 자동 선택은 구조적 제안일 뿐, 사용자가 애니메이션하려는 UI에 대한 지식이 아닙니다. 작업이 화면/그룹을 지정하는 경우 --scene, --canvas, 또는 반복되는 --target 데이터 선택기를 사용하세요. 이들은 어댑터 코드가 필요 없습니다. 중복된 이름은 인벤토리 바인딩 ID 또는 고유 경로가 필요합니다.
인벤토리만 필요한 경우 동일한 소스/작업 공간 인수로 scan을 사용하세요. 게임 시작 없이 직렬화된 씬 미리보기를 위해 명시적으로 --execution edit을 선택하고, 이를 미리보기(런타임 검증이 아님)로 표시하세요. Play Mode 초기화가 실패할 때 편집 미리보기를 자동으로 대체하지 마십시오.
네이티브 Unity는 라이선싱을 위해 호스트의 승인된 실행 경로가 필요할 수 있습니다. 격리된 복사본에 대해 기존 인증을 사용하세요. 실행 실패 시 로그를 검사하고, 무관한 게임 코드를 자동으로 반복 수정하지 마십시오. 준비된 작업 공간은 스냅샷입니다: 소스 UI를 변경한 후 새 작업 공간을 만드십시오.
매칭 및 캡처
기록을 REFERENCE_ROOT/CASE-REVISION/ 아래에 배치하고, 예를 들어 c_abcd1234-r1/reference.mp4와 같이 workspace.json의 케이스 ID를 사용하세요. 캡처는 초당 30프레임의 2초 클립을 사용하며, 원래의 휴식 포즈에서 끝납니다.
python scripts/unity.py match --workspace C:/motion-work --reference C:/references --revision r1
이 명령은 픽셀에서 모션을 추정하고, solutions/REVISION을 작성하며, 바인딩된 기존 객체에 네이티브 AnimationClip을 샘플링하고, Unity 출력을 캡처한 다음 보존 상태를 확인합니다. 새 기록은 항상 재추출이 필요합니다. 동일한 기록에 대해 scripts/motion.py revise가 속도, 축별 거리 또는 지연을 조정합니다. 타이밍을 편집할 때 2초 지점에 휴식 포즈 키를 유지하고, 편집 후 unity.py capture --workspace ... --revision ...을 다시 실행하세요.
픽셀 피터는 전체 해상도 필터링 신호를 사용하고 참조의 최종 휴식 프레임에서 작은 템플릿/래스터 차이를 보정합니다. *.fit.json에서 referenceRestCalibration을 검사하세요. 불투명 픽셀이 있는 단색 그래픽의 경우 flatPaintOpacity는 그룹 불투명도를 측정하기에 충분한 별도의 보이는 패치가 있었던 프레임 수를 기록합니다. 의도적으로 다른 포즈/불투명도로 끝나는 기록은 이 워크플로우에 유효한 입력이 아닙니다.
동일한 이름의 형제가 있을 때 모호한 Unity 애니메이션 경로를 피하기 위해 각 대상에 대해 별도의 루트 상대 .anim을 자동 내보냅니다. 바인딩은 실제 씬/계층 구조 객체를 식별합니다. 래퍼 객체, 부모 재지정, 이름 변경된 컨트롤 또는 콜백 재연결이 도입되지 않습니다.
모션을 매칭이라고 부르기 전에 참조와 출력을 검사하세요. 레이아웃/바인딩 검사 통과는 시각적 유사성의 증거가 아닙니다. 희미한 픽셀, 클리핑, 유사한 UI 및 겹치는 불투명도는 여전히 수정이 필요할 수 있습니다.
MP4의 경우 피터는 디코딩으로 인한 차이점에 대해 고정 배경을 확인합니다. 적격한 단색 그래픽의 경우 많은 스트로크가 공유하는 밝기로부터 불투명도를 추정합니다. *.fit.json에서 videoOpacity.measuredFrames는 restStartsAt 이전에 사용 가능한 비디오 증거가 있는 프레임 수를 셉니다. 다른 프레임은 이전 추정치를 유지합니다. 재생에서 겹침과 급격한 전환을 검사하세요. 수치적 최악 프레임 경계는 알려진 참조 불투명도 값이 필요합니다.
검사가 확립하는 것
자동 검사는 앵커/피벗/크기/레이아웃 구성, 직렬화된 객체 참조 및 지속적인 이벤트 바인딩, 최종 포즈, 가능한 경우 버튼 레이캐스트 대상, 두 개의 뷰포트 크기에서의 복원을 비교합니다. 구매, 인증, 탐색 또는 기타 게임별 결과가 올바른지 알 수 없는 버튼을 호출하거나 추론하지 않습니다. gameSpecificSemanticsVerified는 false로 유지됩니다.
에셋/구성 기준선을 위해 unity.py audit --workspace ...를 실행하세요. 발견, 준비 및 대체 비용을 분리하여 유지하세요. 이전 수동 프로필 벤치마크는 자동 발견의 성능을 확립하지 않습니다.
선택적 --profile trash-dash 및 --profile survivors-kit는 이전에 알려진 게임 상호 작용 테스트를 유지합니다. 이러한 의미론적 테스트가 유용한 경우에만 레거시 프로필을 읽으세요. 다른 uGUI 프로젝트에는 필요하지 않습니다.