0. 목적과 원칙
현행 라이브 파이프라인(mocopi 6 IMU + Femto Bolt + MediaPipe)의 오차를 재기 위한 정답(ground truth) 데이터를 리허설 녹화 때 함께 수집하는 장비 구성과 순서. 정답 장비는 SteamVR 라이트하우스 트래커(리허설 세션에만 착용). 광학 모캡 대관·구매 없이 약 250만 원 이내로 정답 체계를 만드는 것이 목표임.
| 측정 항목 | 정답 소스(리허설) | 피검(비교 대상) | 판정 기준(예산, 12월 확정) |
|---|---|---|---|
| ① 머리 yaw(고양이 가면 방향) | 뒤통수 헤드밴드 VIVE Tracker 3.0 | mocopi 머리 관절, 비전 머리 추정 | 정답 오차 ±1° 이내(광학 추적 기준) |
| ② 골반 절대 위치(무대 XZ·높이) | 천골(허리 뒤) 벨트 VIVE Tracker 3.0 | mocopi 루트 + 정합기, ToF 힙 앵커 | 정답 오차 ±1 cm 이내 |
| ③ 발 접지(높이·접지 시점) | 양 부츠 발등 VIVE Tracker 3.0(2단계 구매 후) + 바닥 기준점(높이 0) | 아바타 발 높이, EdaFootPlantCorrection | 정답 오차 ±1 cm·±1프레임 |
1. 장비 목록과 역할 (보유 재고 + 라이트하우스 구매 1·2단계)
| 장비 | 수량 | 역할 | 연결·설정 | 주의 |
|---|---|---|---|---|
| SteamVR Base Station 2.0 (구매 1단계 2대 → 2단계 4대) | 2→4 | 라이트하우스 적외선 스윕 송출. 2대 약 5×5 m(리허설실), 4대 최대 10×10 m(무대 테크 리허설) | 높이 2.5 m 이상 모서리, 하향 30~45°, 서로 다른 채널(1~16), 전원 어댑터. 1/4" 삼각대·클램프 마운트 | 미국 공식가 $229/대. 거울·광택 바닥·유리에 반사되면 추적 튐 → 가리기. Femto ToF와 IR 간섭 시험 필수(§4-2) |
| VIVE Tracker 3.0 (1단계 2개: 머리·골반 → 2단계 4개: +양발) | 2→4(+2 요한) | 리허설 정답 6자유도(mm급·드리프트 없음), 90 Hz 이상 | 트래커마다 전용 동글 1개(Main PC USB, 연장 케이블로 서로 45 cm 이상·USB 3.0 포트에서 떨어뜨림). 1/4-20 나사 마운트 | $149/대, 75 g, 배터리 약 7.5 h. 리허설 세션 전용 — 본공연 착용 금지 |
| 트래커 마운트(헤드밴드·벨트·부츠 스트랩) | 세트 | 머리(뒤통수 번 아래), 천골(허리 뒤), 부츠 발등 | 1/4" 나사 + 벨크로. 자체 제작 또는 시판 트래커 스트랩 | 흔들리면 정답이 아님 — 꽉 조이고 사진 기록 |
| Orbbec Femto Bolt (RGB-D) | 4 | A 정면 / B 좌전방 / D 우전방 / C 후방 천장 — 다시점 1080p RGB + ToF 깊이 — 피검 영상·마커리스 모델 학습 입력 | Main·Worker1·Worker3·Worker2에 USB 3.0 직결. 컬러 1920×1080@30(녹화), 컬러 FOV 80°×51.3°, 깊이 NFOV | 신품은 OrbbecViewer.exe 1회 실행 후 .normalized 확인(타임스탬프 stale 방지). 부팅 직후 RGB 1fps 불량 오픈 → 재오픈 |
| Orbbec Sync Hub Pro + Sync Adaptor(8-pin→RJ45) | 1 + 4 | 선택. 1차 세션은 결선하지 않음(§4). 정렬 잔차 초과 시에만 하드웨어 동기 도입 | (도입 시) Main OUT → Hub IN, Hub OUT → B·C·D IN. 오프셋 0/160/320/480 µs | Subordinate가 펄스 미인입이면 캡처 0 → 10분 내 포기 |
| Sony mocopi (센서 6개/세트) | 2세트 | 피검 센서. 에다 + 요한(또는 대역) 동시 착용 | QM-PR1 수신기 2대(USB 2.0, 메인보드 직결·허브 금지). 세트1 UDP 12351(Main), 세트2는 다른 PC 또는 포트 12352 | 배우별 T포즈 캘리브레이션. 수신기 2대는 1 m 이상 이격(2.4 GHz) |
| 바닥 기준점 표식 F40·F41·F42 | 3 | 무대 좌표계 정의 — 라이트하우스 원점·+X 정렬, Femto 카메라 불변 확인(매 세션 재투영 대조) | 15 cm 인쇄 마커(ArUco 한 장) 또는 테이프 십자 표식, 테이프 고정. F42 = 원점, F40→F41 = +X | 세션 중 밀리지 않게 모서리 테이프. 중심 간 거리 줄자 실측(mm) 기록 |
| ChArUco 캘리브레이션 보드(A1) | 1 | 카메라 외부 파라미터(4대 상대 자세) 계산 | §5 | 단단한 판에 부착, 휨 없음 |
| Main PC (RTX 4070 Ti SUPER, H: 녹화 드라이브) | 1 | Unity 본편 + StageSessionRecorder(Ctrl+F2) + mocopi 앱 | 192.168.1.100, H:\Recording\StageSessions | 녹화 1080p 기준 분당 12~17 GB. 시작 시 여유 45 GB 필요 |
| Worker1 / Worker2 / Worker3 (HP OMEN 16) | 3 | B·C·D 카메라 녹화 노드(k4arecorder) | 192.168.1.11 / .12 / .13, 폐쇄망 GbE(ipTIME H8008S2) | 워커 Unity 지양 원칙 — 녹화는 Python/CLI |
| 3D아티스트 PC (DESKTOP-HO2RGES, RTX 5060 Ti 16GB) | 1 | 오프라인 처리: 트래커 정답 정렬, GVHMR 의사 정답, 지표 산출 | 192.168.1.20 / C:\mocap-gt (모델 8종·SMPL/SMPL-X, GVHMR 환경 구축·예제 검증 2026-10-24). 사용법 C:\mocap-gt\README.md | Strata 로컬 LLM이 켜져 있으면 VRAM 충돌 → 실행 전 strata launch --status. DGX Spark(/home/voces/mocap-gt)는 같은 구성의 예비. WHAM은 mmpose 0.x 의존으로 미설치(README) |
| Razer Kiyo Pro | 3 | (선택) XR Maestro 쇼카메라. 정답 수집에는 미사용 | — | Femto와 USB 컨트롤러 분리 |
| 동기 이벤트 소품: LED 플래시(또는 휴대폰 플래시) + 클래퍼/손뼉 | 1 | 소프트웨어 시각 정렬 기준(테이크 시작·끝) | 모든 카메라 시야에 보이는 위치 | 하드웨어 동기가 돼도 mocopi 정렬용으로 항상 실행 |
2. 전체 구성도
3. 카메라 배치 (평면·높이)
거리·높이 규칙
| 규칙 | 값 | 근거 |
|---|---|---|
| 전신(발 포함)이 화면에 들어오는 최소 거리 | 카메라 높이 1.2 m → z ≥ 2.55 m, 1.5 m → z ≥ 3.1 m | 수직 FOV 51.3°: 화면 하단 경계 y = −0.479·z (StreamRoger 메모리 2026-08-01) |
| ToF 최대 거리 | 5.46 m(현 설정 maxDistance) | 운영 체크리스트 §3 |
| 고정 | 삼각대 + 모래주머니 + 케이블 스트레인 릴리프 | 캘리브레이션 후 카메라가 움직이면 외부 파라미터 무효 → 바닥 기준점 재투영으로 매 세션 검증 |
| 조명 | 공연 조명 조건 재현. 직사광·IR 포함 조명 1분 관찰 | ToF IR 간섭(체크리스트 §2) |
4. 동기(Sync) 배선과 폴백
기본: STANDALONE + 소프트웨어 정렬 (Sync Hub 결선 불필요)
- 정답은 라이트하우스 트래커가 카메라와 무관하게 계산하므로 카메라 간 동기는 정답의 전제가 아님. 동기는 4대 영상(피검·학습 데이터)을 하나의 시간축에 합칠 때만 필요.
- 각 테이크 시작·끝에 동기 이벤트: LED 플래시 2회(0.5 s 간격) + 클래퍼. 플래시 프레임으로 ±1프레임(33 ms) 1차 정렬 → 오프라인에서 4대의 배우 2D 관절 궤적과 트래커 궤적을 교차상관해 5 ms 이내로 미세 정렬(검증 막대 흔들기 테이크로 확인).
- 잔여 오차: 1 m/s 이동·90°/s 회전 구간에서 5 ms 어긋남은 위치 0.5 cm·yaw 0.5° — 예산(±2 cm·±1.5°) 안. 정지·저속 구간은 영향 없음.
- ToF 상호간섭: 4대 깊이에 노이즈 패치가 생기지만 정답은 트래커라 무관. 현재 라이브도 2026-06-23부터 STANDALONE이라 피검 조건과 동일.
- mocopi는 어느 경우든 Main 도착 시각(frames.csv)으로 정렬하므로 동기 이벤트는 항상 수행.
선택: Sync Hub Pro 하드웨어 동기
- 필요해지는 경우 두 가지뿐: ① 검증 막대 흔들기 테이크에서 교차상관 정렬 뒤에도 카메라 간 위치 불일치가 1 cm를 넘을 때 ② 깊이(ToF) 품질을 학습 입력 기준으로 끌어올릴 때.
- 켤 때 순서: Hub 전원 LED → Subordinate 3대 먼저 스트림 시작 → Master(A) 마지막 시작. Subordinate 캡처 0이면 10분 안에 포기하고 STANDALONE으로 녹화. 세션 뒤
deviceSyncMode=0복귀.
4-2. 라이트하우스 트래커 설치·운용 (리허설 정답 수집 전용)
SteamVR 라이트하우스는 Base Station이 적외선 레이저를 수평·수직으로 쓸고, 트래커 표면의 센서가 그 시각차로 자기 위치·자세를 계산하는 방식임(헤드셋 불필요). 배우가 착용하는 것은 리허설 세션에서만이며, 본공연에는 올라가지 않음.
A. Base Station 2.0 설치
- 삼각대(2.5 m 이상) 또는 벽·트러스 클램프에 1/4" 마운트로 고정. 서로 대각 방향, 연기 구역을 향해 30~45° 아래로 기울임.
- 전원 연결 → 전면 LED 녹색. 깜빡임·적색이면 전원 어댑터·채널 확인.
- 채널: 각 기기가 서로 다른 채널이어야 함. SteamVR → 장치 → Base Station 설정에서 지정(또는 뒷면 버튼). 1·2단계 합쳐 1~4번 고정.
- 반사 제거: 시야 안 거울·유리·광택 금속·광택 바닥 부분은 매트 천으로 가림. 햇빛 직사 금지.
- 흔들림 금지: 삼각대 모래주머니. 세션 중 건드리면 룸셋업 재실행.
B. 트래커 3.0 착용 (리허설 전용)
| 위치 | 마운트 | 요령 |
|---|---|---|
| T1 머리 | 탄성 헤드밴드 + 1/4" 나사 플레이트, 뒤통수 번 바로 아래 | 가면 외형 무관. 밴드가 돌지 않게 턱끈 없이도 꽉 조임. 센서 면이 위·뒤를 향하도록(머리카락이 덮지 않게) |
| T2 골반 | 벨트 뒤 중앙(천골) 플레이트 | 재킷 안쪽. 벨트가 골반에 밀착돼야 함(바지 벨트 위). mocopi 허리 센서와 5 cm 이상 이격 |
| T3·T4 발 | 부츠 발등 벨크로 스트랩(2단계) | 발목 굴곡과 무관한 발등 중앙. 끈 위가 아니라 가죽 면에 |
트래커마다 동글 1개를 Main PC에 연결. 동글끼리 45 cm 이상, USB 3.0 포트·QM-PR1 수신기와 떨어뜨림(2.4 GHz 간섭). 배터리 7.5 h — 세션 전 완충, 예비 USB-C 전원.
C. SteamVR 설정 (헤드셋 없이 트래커만)
1) Steam → SteamVR 설치 (Main PC)
2) Steam\config\steamvr.vrsettings 에 추가
"steamvr": {
"requireHmd": false,
"forcedDriver": "null",
"activateMultipleDrivers": true
}
3) Steam\steamapps\common\SteamVR\drivers\null\
resources\settings\default.vrsettings → "enable": true
4) SteamVR 실행 → 장치 → 컨트롤러 페어링 →
"다른 종류의 컨트롤러" → VIVE Tracker → 트래커 버튼 길게
5) 트래커 관리 → 역할: 모두 "사용 안 함"(컨트롤러 에뮬레이션 끔)
기록은 시리얼 번호로 구분(T1~T4 ↔ 시리얼 표 작성)
6) 룸셋업: "스탠딩 전용" → 바닥 높이 보정
D. 무대 좌표계 정렬(세션마다 2분)
- 트래커 1개를 바닥 기준점 F42 위에 평평히 놓고 LED가 F41 방향(+X)을 보게 둠 → 3초 기록.
- 그 자세를 "무대 원점·+X"로 저장 → 이후 모든 트래커 자세를 무대 좌표계로 변환(Femto 카메라 좌표계와 같은 기준).
- 검증: F40·F41 위에 차례로 놓아 실측 거리(줄자)와 비교, 오차 ≤ 5 mm.
E. 기록
- Main에서 OpenVR 로거(
vive_logger.py, 작성 예정 — pyopenvr)로 90 Hz 이상 자세(위치·쿼터니언·시리얼·시각·추적 상태)를vive_poses.csv에 기록. 시각은 세션 녹화와 같은 Main 시계. - 테이크 시작·끝의 동기 이벤트 때 트래커를 든 손을 LED와 함께 흔들어 카메라·트래커 시각 정렬 근거 확보.
- 추적 상태가
Running_OK가 아닌 프레임은 정답에서 제외(결측 표시).
F. 1단계 필수 시험 — Femto ToF와의 적외선 간섭
| 순서 | 내용 | 합격 |
|---|---|---|
| 1 | Base Station OFF 상태에서 Femto 4대 깊이 1분 녹화(바닥·배경판 기준 깊이 잡음 측정) | 기준값 기록 |
| 2 | Base Station ON(2대) 같은 조건 1분 | 깊이 잡음 증가 ≤ 2배, 노이즈 패치 없음 |
| 3 | Base Station이 Femto 시야 안에 직접 들어오는 배치와 밖 배치 비교 | 시야 밖 배치에서 합격이면 그 배치로 고정 |
| 4 | 불합격 시: 정답 세션은 ToF 깊이 끄고 RGB만 녹화(정답은 트래커라 무관). 본공연 투입 여부와는 무관(본공연엔 Base Station 없음) | — |
G. 정확도 검증(1회)
- 트래커를 검증 막대(알루미늄 각재 60 cm) 중앙에 고정해 분도판 위에서 30° 간격 회전 → yaw 오차 ≤ 0.5°.
- 막대를 바닥 기준점 F40→F41 직선 위로 이동 → 위치 오차 ≤ 5 mm, 궤적 직선성.
- 배우 착용 후 F42에 정면으로 3초 정지 → 머리·골반 트래커와 mocopi·비전 추정값의 초기 오프셋 기록.
부착·설치 모습 참고 이미지 (생성 이미지 — 실제 설치 후 교체)





이미지는 Codex 내장 이미지 도구로 생성한 참고용(의상 시트 「EDA / MAESTRO」 기준). 기기 외형·착용 위치만 참고. 실제 설치 사진으로 교체 예정.
5. 캘리브레이션
6-1. 내부 파라미터(카메라별)
- 1차: Femto Bolt SDK가 주는 컬러 내재 파라미터(초점거리·주점·왜곡) 사용. StreamRoger가 이미 읽는 값(1920×1080 기준 수직 FOV 51.32° 실측 일치).
- 검증: ChArUco 보드 20프레임으로 재투영 오차 ≤ 0.5 px이면 SDK 값 채택, 넘으면 OpenCV
calibrateCamera로 재추정.
6-2. 외부 파라미터(4대 상대 자세 + 무대 좌표계)
- 바닥 기준점 F40·F41·F42를 연기 구역에 고정하고 줄자로 세 중심 간 거리를 실측(mm).
- A·B·D가 모두 보는 위치에서 ChArUco 보드를 그림 2의 경로로 천천히 이동(60~90초), C는 바닥 기준점으로 연결.
- 3D아티스트 PC에서
calib_rig.py(작성 예정): 보드 코너 다시점 대응 → 카메라 간 상대 자세, F42 원점·F40→F41 +X로 무대 좌표계 고정. - 합격: ChArUco 재투영 ≤ 0.5 px, 바닥 기준점 재투영 ≤ 1 px, 기준점 간 실측 거리와 삼각측량 거리 오차 ≤ 1 cm.
6-3. 매 세션 재검증(5분)
- 바닥 기준점 3개가 전 카메라에서 이전 세션과 같은 픽셀 위치(±2 px)면 카메라 불변 → 외부 파라미터 재사용.
- 하나라도 벗어나면 그 카메라만 보드 재촬영(10분).
6-4. mocopi 캘리브레이션(배우별)
- 센서 6개 장착 위치: 머리 밴드(가면 안쪽 고정 위치를 사진으로 기록), 양 손목, 허리 뒤 중앙, 양 발목.
- T포즈 → 앱 캘리브레이션 → 한 걸음 전진. 세트1(에다)·세트2(요한) 순서대로, 수신기 2대 1 m 이격.
- 캘리브레이션 직후 배우가 F42 원점에 서서 정면(+Z)을 보는 3초를 녹화 → mocopi·트래커·무대 좌표계의 초기 오프셋 기록.
6. 세팅 순서 (리허설 세션 당일, T−90분 → T−0)
- T−90 · 10분전원·연결 점검Main·Worker1~3 부팅, Femto 4대 USB 3.0 직결 LED, Sync Hub Pro 전원 LED, QM-PR1 2대 메인보드 포트 직결. Main에서
pc_sync\scripts\PreFlight-Check.ps1. 신품 카메라는OrbbecViewer.exe1회 실행 후.normalized확인. 합격: 4대 모두 30 fps 프리뷰, 1 fps 불량 오픈이면 재오픈. - T−80 · 15분카메라 배치·고정그림 2 위치에 삼각대 설치(A 1.2~1.5 m, B·D 1.5 m 45°, C 천장 2.28 m·25° 현행 고정). 연기 구역 앞선까지 A 거리 ≥ 2.6 m를 줄자로 확인. 모래주머니·케이블 릴리프. 합격: 각 카메라 프리뷰에 연기 구역 전체 + 바닥 기준점 3개 중 2개 이상.
- T−65 · 5분바닥 기준점·동기 이벤트 지점F40·F41·F42 테이프 고정, 중심 간 거리 실측 기록. 동기 이벤트 지점(4대 시야 공통) 표시.
- T−60 · 10분Base Station 설치·SteamVR 기동대각 모서리 2대(2단계 4대) 높이 2.5 m·하향 30~45°, 채널 1~4, 녹색 LED. Main에서 SteamVR(헤드셋 없음 설정) 실행 → Base Station 2대 인식. 반사면 가림. 합격: SteamVR 장치 목록에 Base Station 전부 녹색.
- T−60 · 10분조명·IR 간섭 확인공연 조명 조건으로 켜고 Femto IR 뷰에서 1분 관찰. 깊이에 빠른 노이즈 패치가 보이면 해당 조명 각도 조정 또는 기록만 하고 진행(정답은 트래커라 영향 없음).
- T−50 · 5분동기 설정 확인(STANDALONE 유지)4대 모두
deviceSyncMode=0확인, Sync Hub 결선 없음. 동기 이벤트 소품(LED·클래퍼) 동작 확인. 합격: 4대 깊이·컬러 30 fps 수신. (Sync Hub는 1차 데이터 정렬 잔차가 기준 초과일 때만 다음 세션에 도입 — §4) - T−40 · 10분캘리브레이션 캡처ChArUco 보드 60~90초 이동(그림 2 경로) + 트래커 고정 검증 막대 5지점·분도판 회전. 동기 녹화 60초 1테이크(§7 절차와 동일). 합격 판정은 오프라인 처리 후이나, 현장에서는 보드가 A·B·D에 동시에 20프레임 이상 보였는지만 확인.
- T−30 · 10분mocopi 2세트 준비세트1 → Main 앱(UDP 12351), 세트2 → Worker1 앱(UDP 12352, Main으로 전달) — 앱 다중 인스턴스 가능 여부는 1회차에서 확인. 센서 배터리 ≥ 80 %, 수신기 1 m 이격. 배우 착용 전 센서 ID 배정표 사진.
- T−25 · 5분트래커 페어링·원점 정렬트래커 T1·T2(2단계 T3·T4) 전원 → 동글 페어링 확인(SteamVR 녹색) → 트래커 1개를 F42 위에 +X 방향으로 놓고 3초 기록(무대 좌표계 정렬) → F40·F41 실측 대조 ≤ 5 mm. 시리얼↔위치 표 기록.
- T−20 · 10분배우 착용·마커 확인트래커 헤드밴드(뒤통수)·천골 벨트(·부츠) 고정 + 의상·센서 위치 사진 기록. 흔들림 없음 확인. 배우별 mocopi T포즈 캘리브레이션 → F42 원점 정면 3초(트래커·mocopi 동시 기록).
- T−10 · 5분시험 녹화 10초동기 이벤트(LED 2회 + 클래퍼, 트래커 든 손 흔들기) → 배우 제자리 → 이벤트. Main
Ctrl+F2+ 워커 3대 k4arecorder +vive_logger.py.inspect_session.py latest로 컬러 fps·공백·mocopi 주기,vive_poses.csv추적 상태 OK 비율 확인. 합격: 4대 모두 30 fps, 공백 100 ms 이상 0회, mocopi 50 Hz, 트래커 OK ≥ 98 %. - T−0장면별 본 녹화§7 절차. 테이크당 ≤ 180초, 각 테이크 시작·끝 동기 이벤트, 장면·테이크 번호를 세션 메모에 기록.
- 종료 · 15분정리·이관워커 mkv를 Main 세션 폴더로 복사, 용량 확인, 3D아티스트 PC 이관(§8). 카메라 위치 사진 4장(다음 세션 재배치용). 검증 막대 흔들기 테이크의 정렬 잔차를 3D아티스트 PC에서 산출해 Sync Hub 도입 여부 판단.
7. 녹화 절차와 파일 구조
Main (Unity 본편 Play 중)
Ctrl+F2녹화 시작/정지 — Main Femto 컬러 1080p BGRA32 + 깊이 NFOV + IR 30 fps(femto.mkv), mocopi 수신 원시(mocopi.bin), 프레임 도착·장치 시각(frames.csv), 요약(session.json).- 최대 180초 자동 정지, 시작 시 여유 45 GB 필요. 분당 12~17 GB.
- 정지 시 편집기 10~30초 멈춤(저장) — 테이크 사이 여유 둘 것.
- 원격 명령:
D:\StreamRoger\FoundationPoseValidation\session.command에record/stop.
Worker1~3 (k4arecorder, 구현 예정 항목)
k4arecorder.exe -c 1080p -d NFOV_UNBINNED -r 30 -l 185 ^ --external-sync sub --sync-delay 160 ^ D:\StageSessions\<세션ID>\femto_B.mkv
- Main의
record명령과 같은 시각에 워커 3대를 시작하는 래퍼(pc_sync스크립트)로 통일 — 11월 「녹화 포맷 확장」 작업. - 동기 모드가 아니면
--external-sync standalone.
세션 폴더(확장안)
H:\Recording\StageSessions\20261115_193012_123_ab12cd\ ├─ femto.mkv Main A (컬러·깊이·IR) ├─ femto_B.mkv Worker1 (복사) ├─ femto_C.mkv Worker2 (복사) ├─ femto_D.mkv Worker3 (복사) ├─ mocopi.bin 세트1 (에다) ├─ mocopi_2.bin 세트2 (요한) ← 추가 ├─ vive_poses.csv 트래커 자세(시각·시리얼·위치·쿼터니언·상태) ← 추가, 정답 ├─ frames.csv Main 프레임 도착·장치 시각 ├─ session.json 길이·프레임 수·정지 사유 └─ take.json 장면·테이크·배우·동기 이벤트 시각 ← 추가
테이크 규칙
- 장면 단위로 짧게(60~120초). 같은 장면을 2~3회 반복해 세션 간 분산 확보.
- 테이크 시작 3초·끝 3초는 정지 자세 + 동기 이벤트.
- 연출 변경이 있으면
take.json에 메모(프라이어 학습 데이터 무효화 판단용). - 한글·공백 폴더명은 재생 시 하드링크 우회가 필요하므로 세션 ID는 영문·숫자만.
8. 3D아티스트 PC 이관과 처리
| 단계 | 명령·도구 | 산출물 | 상태 |
|---|---|---|---|
| 이관 | Main → 3D아티스트 PC: femto.mkv 컬러 트랙을 mp4로 추출 후 \192.168.1.20\C$\mocap-gt\sessions\<ID>\로 복사(폐쇄망 GbE, 분당 약 6 GB). Main→아티스트 단방향만, 결과는 Main에서 읽기만 | C:\mocap-gt\sessions\<ID>\ | 경로 준비됨 |
| ① 정답 정렬 | vive_align.py(F42 원점 자세로 무대 좌표 변환, 동기 이벤트로 시각 정렬, 추적 상태 필터) + calib_rig.py(Femto 4대 외부 파라미터·무대 좌표 정합 — 학습 입력용) | gt_rigid.csv(시각·부위·XYZ·yaw·pitch·roll·상태) | 작성 예정(11월) |
| ② 의사 정답 | GVHMR C:\mocap-gt\gvhmr
un_gvhmr.cmd femto_A.mp4(컬러 추출 후, 고정 카메라 -s), ViTPose+ WholeBody(발). WHAM은 미설치(mmpose 0.x·mmcv 1.3.9가 torch 2.8과 양립 불가 — 검출기 교체 어댑터 필요) | outputs\demo\<영상>\hmr4d_results.pt(smpl_params_global·incam, K_fullimg) + 렌더 mp4 | 구축·검증 완료(2026-10-24, torch 2.8.0+cu128·pytorch3d 0.7.9 휠. 예제 312프레임: 전처리 약 48초·추론 1초·렌더 약 20초) |
| ③ 피검 재생 | Main Unity 재생(Ctrl+F3, 장치 시각 일치 판정) 또는 3D아티스트 PC에서 mocopi.bin 직접 해석(export_mocap.py 계열) | 프레임별 mocopi 머리 yaw·루트·발 높이 | 기존 도구 |
| ④ 지표 | eval_metrics.py: 머리 yaw 오차(평균·p95), 골반 위치 오차, 가림 구간 루트 점프 횟수·크기, 발 접지 시점 차이, 발 미끄러짐 거리 | 세션별 표 + 12월 오차 예산 판정 | 작성 예정 |
9. 문제 해결 (기록된 실사고 기준)
| 증상 | 원인 | 조치 |
|---|---|---|
| Femto RGB 1 fps·어두운 화면(부팅 직후) | UVC 불량 오픈 | 스트림 재오픈. 사이드카는 자가복구(fps<5 15초) 내장 |
| Subordinate 카메라 캡처 0프레임 | Sync 펄스 미인입(케이블·Hub·시작 순서) | Sub 먼저 시작 → Master 마지막. 10분 내 해결 안 되면 STANDALONE 폴백 |
| 깊이 프레임이 10초 뒤 멈춤 | Femto IMU(HID) 스트림을 깊이와 장시간 동시 사용 → 장치 deactivated | 녹화 중 IMU 스트림 끔(--no-imu) |
K4A 재생 실패 K4A_RESULT_FAILED | 한글·공백 경로(네이티브가 CP949로 읽음) | 세션 폴더명 영문·숫자만. 재생기는 하드링크 우회 내장 |
| mocopi 수신 끊김·패킷 손실 | QM-PR1이 USB 허브 경유, 2.4 GHz 수신기 밀집 | 메인보드 직결, 무선 키보드·마우스 수신기와 분리, 수신기 2대 1 m 이격 |
| 배우 머리 높이가 10 cm 낮게 읽힘(후방 카메라) | 검은 머리카락 ToF 결측 | 정답은 트래커라 영향 없음. 높이 기반 판정만 보정 |
| 깊이에 짧고 빈번한 노이즈 패치 | IR 상호간섭(동기 불량) 또는 조명 IR | 동기 확인 → 조명 각도. 트래커 정답에는 영향 없음 |
| Main 녹화 정지 후 편집기 30초 멈춤 | 4K 녹화 저장 | 녹화는 1080p 고정(recordColorMode), 4K는 20초 이하 |
| MediaPipe가 앞뒤로 겹친 두 사람을 한 명으로 합침 | 모델 특성 | 피검 결과 해석 시 2인 겹침 구간 표시. 정답(트래커)은 배우별이라 분리됨 |
| 트래커 LED 적색 점멸·SteamVR 회색 표시 | Base Station 1대도 못 봄(가림·각도) 또는 동글 거리 | Base Station 대각 배치·하향 각도 재조정, 동글 연장선으로 배우와 가까이. 2단계 4대 구성이면 사라짐 |
| 트래커 위치가 순간 튐(수 cm) | 거울·유리·광택 바닥 반사 스윕 | 반사면 매트 천으로 가림, Base Station 각도 변경. 튄 프레임은 상태 필터로 제외 |
| Base Station 전부 인식되는데 트래커가 페어링 안 됨 | 동글 미연결·채널 충돌·펌웨어 | 동글 USB 재연결(USB 2.0 포트), SteamVR 펌웨어 업데이트, 채널 중복 확인 |
| Base Station 켜면 Femto 깊이 잡음 증가 | 라이트하우스 적외선 스윕과 ToF 간섭(보고 사례 있음, 공식 확인 없음) | §4-2 F 시험 절차. 시야 분리 배치 → 불가하면 정답 세션은 RGB만 녹화 |
10. 참조 문서
| 문서 | 위치 | 이 가이드에서 가져온 내용 |
|---|---|---|
| 공연 세션 녹화·재생 | F:\DepthOcclusionAR\docs\Stage_Session_Recording.md | 파일 구조, Ctrl+F2/F3, 용량·속도 실측, 한글 경로, 모션캡처 내보내기 |
| 본공연 Depth Occlusion 운영 체크리스트 | F:\DepthOcclusionAR\공연현장_뎁스오클루전_운영_체크리스트.md | IR 간섭, Sync Hub 결선·펌웨어, 카메라 고정, Pre-flight |
| 후방 천장 Femto 배우 세션 런북 | docs\RearTop_Actor_Session_Runbook.md | 세션 순서표 형식, 표식 정지 검사, 합격 기준 |
| 4 PC 역할·동기 SSOT | pc_sync\config\roles.toml | STANDALONE 결정(2026-06-23), 복구 오프셋 160/320/480 µs |
| StreamRoger 운용 매뉴얼 | docs\StreamRoger_운용매뉴얼_재부팅후시작.md | 재부팅 후 시작 순서, 단축키 |
| 협업 검토 보고서(2026-10-24) | ARKO창작산실\06_참고_리서치\기술조사\에다_라이브AI합성_DGX제안_협업검토보고서_20261024.md | 측정 항목 3종, 단계 0~5 일정, 오차 예산 개념 |
| 광학 모캡 장비 추천 조사(2026-10-24) | 같은 폴더 에다_정답데이터용_광학모캡장비_추천조사_20261024.md | 구매 보류 판단, SteamVR 트래커 조건부 대안 |
| 처리 PC 모델·환경 | 3D아티스트 PC C:\mocap-gt\README.md · 예비 dgx-spark:/home/voces/mocap-gt/MODELS.md | GVHMR·WHAM·ViTPose+·SAM2·YOLO11·DA3(SHA256 대조 완료), SMPL/SMPL-X |
| HTC VIVE 제품 페이지(미국 공식몰) | SteamVR Base Station 2.0 ($229) · VIVE Tracker 3.0 ($149) | 가격·구성품·마운트 규격. 국내 유통가는 별도 확인 |
미확정 값: 리허설실 치수(8×6 m 가정), 라이트하우스·Femto ToF 간섭 정도(1단계 시험), 트래커 국내 구매가, mocopi PC 앱 다중 인스턴스 가능 여부, 워커 k4arecorder 동기 시작 래퍼·vive_logger.py. 확정 시 이 페이지를 갱신함(git 작업본 D:\Repos\eda-gt-rig-guide).