에다 정답 데이터 수집 리그 — 장비 세팅 가이드

SteamVR 라이트하우스(Base Station 2.0 + VIVE Tracker 3.0, 리허설 한정) · Femto Bolt 4대 · mocopi 2세트(QM-PR1 2대) · 3D아티스트 PC(RTX 5060 Ti) 오프라인 처리 — 2026-10-24 작성, 같은 날 라이트하우스 권장안 반영, 22:30 처리 PC를 DGX Spark에서 3D아티스트 PC로 변경 (근거: StreamRoger 저장소 docs, 협업 검토 보고서 §8, 모캡 장비 조사)

0. 목적과 원칙

현행 라이브 파이프라인(mocopi 6 IMU + Femto Bolt + MediaPipe)의 오차를 재기 위한 정답(ground truth) 데이터를 리허설 녹화 때 함께 수집하는 장비 구성과 순서. 정답 장비는 SteamVR 라이트하우스 트래커(리허설 세션에만 착용). 광학 모캡 대관·구매 없이 약 250만 원 이내로 정답 체계를 만드는 것이 목표임.

본공연 착용 제한(2026-10-24 확정). 본공연에서 배우가 착용하는 장비는 mocopi 센서 6개가 최대임. 트래커·비콘·마커는 리허설 정답 수집 세션에서만 착용하고, 본공연 추적은 mocopi + 카메라(Femto Bolt 4대) + 이 정답으로 학습한 마커리스 모델로만 수행함.
측정 항목정답 소스(리허설)피검(비교 대상)판정 기준(예산, 12월 확정)
① 머리 yaw(고양이 가면 방향)뒤통수 헤드밴드 VIVE Tracker 3.0mocopi 머리 관절, 비전 머리 추정정답 오차 ±1° 이내(광학 추적 기준)
② 골반 절대 위치(무대 XZ·높이)천골(허리 뒤) 벨트 VIVE Tracker 3.0mocopi 루트 + 정합기, ToF 힙 앵커정답 오차 ±1 cm 이내
③ 발 접지(높이·접지 시점)양 부츠 발등 VIVE Tracker 3.0(2단계 구매 후) + 바닥 기준점(높이 0)아바타 발 높이, EdaFootPlantCorrection정답 오차 ±1 cm·±1프레임
K4ABT·MediaPipe·mocopi는 정답이 아님. 모두 학습 모델 또는 IMU 추론이며 평가 대상 파이프라인의 일부임. 정답은 라이트하우스 광학 추적(적외선 스윕 기준, 누적 드리프트 없음)으로만 계산함. Femto Bolt 깊이(ToF)는 거리 검증·스케일 고정에만 보조로 사용.

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)4A 정면 / 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 µsSubordinate가 펄스 미인입이면 캡처 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·F423무대 좌표계 정의 — 라이트하우스 원점·+X 정렬, Femto 카메라 불변 확인(매 세션 재투영 대조)15 cm 인쇄 마커(ArUco 한 장) 또는 테이프 십자 표식, 테이프 고정. F42 = 원점, F40→F41 = +X세션 중 밀리지 않게 모서리 테이프. 중심 간 거리 줄자 실측(mm) 기록
ChArUco 캘리브레이션 보드(A1)1카메라 외부 파라미터(4대 상대 자세) 계산§5단단한 판에 부착, 휨 없음
Main PC (RTX 4070 Ti SUPER, H: 녹화 드라이브)1Unity 본편 + StageSessionRecorder(Ctrl+F2) + mocopi 앱192.168.1.100, H:\Recording\StageSessions녹화 1080p 기준 분당 12~17 GB. 시작 시 여유 45 GB 필요
Worker1 / Worker2 / Worker3 (HP OMEN 16)3B·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.mdStrata 로컬 LLM이 켜져 있으면 VRAM 충돌 → 실행 전 strata launch --status. DGX Spark(/home/voces/mocap-gt)는 같은 구성의 예비. WHAM은 mmpose 0.x 의존으로 미설치(README)
Razer Kiyo Pro3(선택) XR Maestro 쇼카메라. 정답 수집에는 미사용—Femto와 USB 컨트롤러 분리
동기 이벤트 소품: LED 플래시(또는 휴대폰 플래시) + 클래퍼/손뼉1소프트웨어 시각 정렬 기준(테이크 시작·끝)모든 카메라 시야에 보이는 위치하드웨어 동기가 돼도 mocopi 정렬용으로 항상 실행

2. 전체 구성도

무대 / 리허설실 에다 배우 (mocopi 세트1 + 트래커) 요한 (mocopi 세트2) A정면 · Main B좌전방 · W1 D우전방 · W3 C후방 천장 2.28 m · W2 F40 F41 F42 Main PCUnity 녹화 + mocopi 앱 Worker1 PCB 녹화 (+mocopi 세트2) Worker2 PCC 녹화 Worker3 PCD 녹화 GbE 스위치ipTIME H8008S2192.168.1.0/24 Sync Hub ProMaster A → B·C·D QM-PR1 ×2mocopi 수신기(USB 직결) 3D아티스트 PC (오프라인)세션 복사 → 트래커 정답 정렬 · GVHMR · 지표 산출 실선 = USB 3.0(카메라→PC) / LAN(PC→스위치). Sync Hub는 카메라 Sync 포트끼리 별도 RJ45 결선(§4). 처리는 세션 종료 후 3D아티스트 PC로 복사해 수행
그림 1. 전체 구성 — 카메라 4대는 각 PC에 1대씩 직결, Sync Hub Pro는 선택 사양, 피검 mocopi 2세트는 QM-PR1 2대로 수신. 정답용 라이트하우스(Base Station 2~4대 + 트래커, Main PC SteamVR 수신)는 그림 3-2(§4-2) 참조

3. 카메라 배치 (평면·높이)

리허설실 8 × 6 m (가정 — 스튜디오 피네 실측 후 수정) · 상단 = 무대 뒤(업스테이지) 1칸 = 1 m 연기 구역 4 × 2.2 m A B D C A 정면 중앙 · 높이 1.2~1.5 m · 연기 구역 앞선까지 ≥ 2.6 m B 좌전방 45° · 높이 1.5 m D 우전방 45° · 높이 1.5 m C 후방 천장 높이 2.28 m · 하향 25° · 상하 반전(현행 고정) F40 F41 F42 (원점) 동기 이벤트 지점(LED·클래퍼, 4대 모두 시야) ChArUco 보드 이동 경로(§5) B·D를 좌·우 전방 45°에 두어 배우 머리·골반이 어느 방향을 보든 2대 이상에 잡히게 함(라이브 배치 B 우전방·D 우후방과 다름 — 정답 수집 전용 배치)
그림 2. 카메라 배치 평면도 — 파란 부채꼴은 컬러 수평 FOV 80°, 노란 영역은 연기 구역, 검은 사각형은 바닥 기준점(무대 좌표계 정의)

거리·높이 규칙

규칙값근거
전신(발 포함)이 화면에 들어오는 최소 거리카메라 높이 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) 배선과 폴백

Sync Hub ProIN 1 · OUT ×3 · USB 전원 A MainMaster · 0 µs B Worker1Sub · +160 µs C Worker2Sub · +320 µs D Worker3Sub · +480 µs Sync OUT → Hub IN Hub OUT → Sync IN 카메라 쪽은 Sync Adaptor(8-pin→RJ45) 사용 · 펌웨어 deviceSyncMode: Master=1, Sub=2 · subDeviceDelayUsec 160/320/480 시간차 캡처로 4대 IR 펄스 충돌 회피 — 깊이 노이즈 패치가 보이면 동기 불량
그림 3. (선택) 하드웨어 동기 배선 — 체크리스트 §4·roles.toml 복구 오프셋 기준(4대째 Worker3 +480 µs). 1차 세션에서는 결선하지 않음

기본: 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 복귀.
1차 세션은 Sync Hub 없이 진행. 하드웨어 동기 여부는 1차 데이터의 정렬 잔차로 판단함(그림 3은 선택 사양 결선 참고용).

4-2. 라이트하우스 트래커 설치·운용 (리허설 정답 수집 전용)

SteamVR 라이트하우스는 Base Station이 적외선 레이저를 수평·수직으로 쓸고, 트래커 표면의 센서가 그 시각차로 자기 위치·자세를 계산하는 방식임(헤드셋 불필요). 배우가 착용하는 것은 리허설 세션에서만이며, 본공연에는 올라가지 않음.

리허설실 8 × 6 m — Base Station 배치(1단계 2대 ●, 2단계 추가 2대 ○) · 높이 2.5 m 이상 · 하향 30~45° 연기 구역 4 × 2.2 m 1 2 3 4 BS1 채널 1 · 대각선 방향 BS2 채널 2 · BS1과 대각 BS3 채널 3 (2단계) BS4 채널 4 (2단계) T1 머리(뒤통수)T2 골반(천골)T3·T4 양발(2단계) F42 = 무대 원점(트래커를 올려 정렬) 대각 2대로 연기 구역 전역에서 트래커가 최소 1대를 보게 함. 금속 트러스·거울·광택 바닥은 스윕 반사 → 매트 천으로 가림. 극장(10×10 m)은 4대 모서리
그림 3-2. Base Station 배치 — 대각선 2대(1단계), 모서리 4대(2단계). 청록 부채꼴은 하향 각도에 따른 대략적 커버

A. Base Station 2.0 설치

  1. 삼각대(2.5 m 이상) 또는 벽·트러스 클램프에 1/4" 마운트로 고정. 서로 대각 방향, 연기 구역을 향해 30~45° 아래로 기울임.
  2. 전원 연결 → 전면 LED 녹색. 깜빡임·적색이면 전원 어댑터·채널 확인.
  3. 채널: 각 기기가 서로 다른 채널이어야 함. SteamVR → 장치 → Base Station 설정에서 지정(또는 뒷면 버튼). 1·2단계 합쳐 1~4번 고정.
  4. 반사 제거: 시야 안 거울·유리·광택 금속·광택 바닥 부분은 매트 천으로 가림. 햇빛 직사 금지.
  5. 흔들림 금지: 삼각대 모래주머니. 세션 중 건드리면 룸셋업 재실행.

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. 트래커 1개를 바닥 기준점 F42 위에 평평히 놓고 LED가 F41 방향(+X)을 보게 둠 → 3초 기록.
  2. 그 자세를 "무대 원점·+X"로 저장 → 이후 모든 트래커 자세를 무대 좌표계로 변환(Femto 카메라 좌표계와 같은 기준).
  3. 검증: F40·F41 위에 차례로 놓아 실측 거리(줄자)와 비교, 오차 ≤ 5 mm.

E. 기록

  • Main에서 OpenVR 로거(vive_logger.py, 작성 예정 — pyopenvr)로 90 Hz 이상 자세(위치·쿼터니언·시리얼·시각·추적 상태)를 vive_poses.csv에 기록. 시각은 세션 녹화와 같은 Main 시계.
  • 테이크 시작·끝의 동기 이벤트 때 트래커를 든 손을 LED와 함께 흔들어 카메라·트래커 시각 정렬 근거 확보.
  • 추적 상태가 Running_OK가 아닌 프레임은 정답에서 제외(결측 표시).

F. 1단계 필수 시험 — Femto ToF와의 적외선 간섭

순서내용합격
1Base Station OFF 상태에서 Femto 4대 깊이 1분 녹화(바닥·배경판 기준 깊이 잡음 측정)기준값 기록
2Base Station ON(2대) 같은 조건 1분깊이 잡음 증가 ≤ 2배, 노이즈 패치 없음
3Base Station이 Femto 시야 안에 직접 들어오는 배치와 밖 배치 비교시야 밖 배치에서 합격이면 그 배치로 고정
4불합격 시: 정답 세션은 ToF 깊이 끄고 RGB만 녹화(정답은 트래커라 무관). 본공연 투입 여부와는 무관(본공연엔 Base Station 없음)—

G. 정확도 검증(1회)

부착·설치 모습 참고 이미지 (생성 이미지 — 실제 설치 후 교체)

이미지는 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대 상대 자세 + 무대 좌표계)

  1. 바닥 기준점 F40·F41·F42를 연기 구역에 고정하고 줄자로 세 중심 간 거리를 실측(mm).
  2. A·B·D가 모두 보는 위치에서 ChArUco 보드를 그림 2의 경로로 천천히 이동(60~90초), C는 바닥 기준점으로 연결.
  3. 3D아티스트 PC에서 calib_rig.py(작성 예정): 보드 코너 다시점 대응 → 카메라 간 상대 자세, F42 원점·F40→F41 +X로 무대 좌표계 고정.
  4. 합격: 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)

  1. 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.exe 1회 실행 후 .normalized 확인. 합격: 4대 모두 30 fps 프리뷰, 1 fps 불량 오픈이면 재오픈.
  2. 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개 이상.
  3. T−65 · 5분바닥 기준점·동기 이벤트 지점F40·F41·F42 테이프 고정, 중심 간 거리 실측 기록. 동기 이벤트 지점(4대 시야 공통) 표시.
  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 전부 녹색.
  5. T−60 · 10분조명·IR 간섭 확인공연 조명 조건으로 켜고 Femto IR 뷰에서 1분 관찰. 깊이에 빠른 노이즈 패치가 보이면 해당 조명 각도 조정 또는 기록만 하고 진행(정답은 트래커라 영향 없음).
  6. T−50 · 5분동기 설정 확인(STANDALONE 유지)4대 모두 deviceSyncMode=0 확인, Sync Hub 결선 없음. 동기 이벤트 소품(LED·클래퍼) 동작 확인. 합격: 4대 깊이·컬러 30 fps 수신. (Sync Hub는 1차 데이터 정렬 잔차가 기준 초과일 때만 다음 세션에 도입 — §4)
  7. T−40 · 10분캘리브레이션 캡처ChArUco 보드 60~90초 이동(그림 2 경로) + 트래커 고정 검증 막대 5지점·분도판 회전. 동기 녹화 60초 1테이크(§7 절차와 동일). 합격 판정은 오프라인 처리 후이나, 현장에서는 보드가 A·B·D에 동시에 20프레임 이상 보였는지만 확인.
  8. T−30 · 10분mocopi 2세트 준비세트1 → Main 앱(UDP 12351), 세트2 → Worker1 앱(UDP 12352, Main으로 전달) — 앱 다중 인스턴스 가능 여부는 1회차에서 확인. 센서 배터리 ≥ 80 %, 수신기 1 m 이격. 배우 착용 전 센서 ID 배정표 사진.
  9. T−25 · 5분트래커 페어링·원점 정렬트래커 T1·T2(2단계 T3·T4) 전원 → 동글 페어링 확인(SteamVR 녹색) → 트래커 1개를 F42 위에 +X 방향으로 놓고 3초 기록(무대 좌표계 정렬) → F40·F41 실측 대조 ≤ 5 mm. 시리얼↔위치 표 기록.
  10. T−20 · 10분배우 착용·마커 확인트래커 헤드밴드(뒤통수)·천골 벨트(·부츠) 고정 + 의상·센서 위치 사진 기록. 흔들림 없음 확인. 배우별 mocopi T포즈 캘리브레이션 → F42 원점 정면 3초(트래커·mocopi 동시 기록).
  11. 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 %.
  12. T−0장면별 본 녹화§7 절차. 테이크당 ≤ 180초, 각 테이크 시작·끝 동기 이벤트, 장면·테이크 번호를 세션 메모에 기록.
  13. 종료 · 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는 영문·숫자만.
4대 동시 1080p 녹화 용량: 약 50~70 GB/분. 테이크 사이에 워커 → Main 복사가 아니라 세션 종료 후 일괄 복사. Main H: 여유 ≥ 300 GB, 워커 SSD 여유 ≥ 150 GB 확보.

8. 3D아티스트 PC 이관과 처리

세션 폴더femto ×4 · mocopi ×2frames.csv · take.json ① 정답 정렬vive_poses → 무대 좌표→ gt_rigid.csv ② 의사 정답GVHMR --static_camWHAM · ViTPose+ 발 ③ 피검 재생mocopi.bin · 정합기K4ABT·MP 출력 ④ 지표yaw 오차 · 루트 오차접지 시점 · p99 ①은 정답, ②는 참고값(관절 전체), ③은 비교 대상. 모든 스트림을 take.json의 동기 이벤트 시각으로 정렬한 뒤 비교 경로 C:\mocap-gt\sessions\<세션ID>\ (3D아티스트 PC) — Strata 로컬 LLM 실행 중이면 VRAM 충돌, 처리 전 정지
그림 4. 오프라인 처리 흐름
단계명령·도구산출물상태
이관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\공연현장_뎁스오클루전_운영_체크리스트.mdIR 간섭, Sync Hub 결선·펌웨어, 카메라 고정, Pre-flight
후방 천장 Femto 배우 세션 런북docs\RearTop_Actor_Session_Runbook.md세션 순서표 형식, 표식 정지 검사, 합격 기준
4 PC 역할·동기 SSOTpc_sync\config\roles.tomlSTANDALONE 결정(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.mdGVHMR·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).