7.8 KiB (Stored with Git LFS)

원격 모션캡쳐 시스템 개발 로드맵

🎯 프로젝트 개요

목표: 모션캡쳐 스튜디오의 공간적 제약을 해결하는 원격 모션캡쳐 시스템 구축

핵심 아이디어:

  • 모션캡쳐 스튜디오 → Unity 서버 → 웹사이트 실시간 스트리밍
  • 웹에서 3D 아바타 관찰 및 모션 레코딩 제어
  • 1:1 시스템으로 단순하고 효율적인 구조

📋 개발 단계별 로드맵

Phase 1: Unity-Web 직접 연결 ⏱️ 예상 기간: 2-3주

목표

Unity에서 웹으로 실시간 모션 데이터 스트리밍 기반 구축

세부 작업

  1. Unity WebSocket 서버 구축

    • Unity에서 WebSocket 서버 구현 (C#)
    • 모션캡쳐 데이터 수집 및 전처리
    • Transform 데이터 JSON 직렬화
    • 실시간 데이터 브로드캐스트
  2. 웹 클라이언트 기본 연결

    • HTML/JavaScript WebSocket 클라이언트
    • Unity 서버 연결 및 데이터 수신
    • 기본 연결 상태 UI
    • 데이터 수신 로그 출력
  3. 데이터 프로토콜 설계

    {
      "type": "motion_data",
      "timestamp": 1234567890,
      "bones": [
        {
          "name": "Hips",
          "position": {"x": 0, "y": 1, "z": 0},
          "rotation": {"x": 0, "y": 0, "z": 0, "w": 1}
        }
      ]
    }
    
  4. 성능 최적화

    • 전송 주기 조절 (30-60fps)
    • 데이터 압축 및 최적화
    • 연결 안정성 보장

완료 기준

  • Unity에서 웹으로 실시간 아바타 데이터 전송
  • 웹에서 데이터 수신 및 로그 확인
  • 안정적인 연결 유지 (최소 30분)

Phase 2: 웹 3D 뷰어 + 레코딩 UI ⏱️ 예상 기간: 3-4주

목표

웹에서 실시간 3D 아바타 렌더링 및 레코딩 제어 인터페이스 구축

세부 작업

  1. Three.js 3D 렌더링 엔진

    • Three.js 기본 씬 설정
    • 3D 아바타 모델 로드 (FBX/GLTF)
    • 실시간 본 애니메이션 적용
    • 카메라 컨트롤 (회전, 줌, 팬)
  2. 레코딩 UI 컴포넌트

    <div id="recording-controls">
      <button id="record-btn">⏺️ 녹화 시작</button>
      <button id="stop-btn">⏹️ 정지</button>
      <span id="timer">00:00:00</span>
      <div id="status">대기 중...</div>
    </div>
    
  3. 모션 데이터 저장소

    • 클라이언트 사이드 모션 데이터 버퍼
    • IndexedDB 활용한 대용량 데이터 저장
    • 메모리 효율적인 데이터 구조
  4. 실시간 피드백

    • 녹화 상태 실시간 표시
    • 녹화 시간 타이머
    • 데이터 수신율 모니터링
    • 연결 상태 인디케이터

완료 기준

  • 웹에서 실시간 3D 아바타 렌더링
  • 녹화 시작/정지 기능 동작
  • 모션 데이터 클라이언트 저장
  • 직관적인 사용자 인터페이스

Phase 3: 웹에서 모션 파일 직접 출력 ⏱️ 예상 기간: 2-3주

목표

웹에서 수집한 모션 데이터를 표준 모션 파일 포맷으로 변환 및 다운로드

세부 작업

  1. 모션 파일 포맷 지원

    • BVH (Biovision Hierarchy) 파일 생성
    • FBX 파일 기본 지원 (Three.js FBXExporter)
    • JSON 포맷 모션 데이터 export
  2. JavaScript 기반 파일 생성기

    class MotionExporter {
      exportToBVH(motionData) { /* BVH 포맷 변환 */ }
      exportToFBX(motionData) { /* FBX 포맷 변환 */ }
      exportToJSON(motionData) { /* JSON 포맷 변환 */ }
    }
    
  3. 다운로드 시스템

    • Blob 기반 파일 생성
    • 브라우저 다운로드 트리거
    • 파일명 자동 생성 (날짜/시간 포함)
  4. 모션 미리보기

    • 녹화된 모션 재생 기능
    • 구간별 재생/정지
    • 프레임별 이동 슬라이더

완료 기준

  • BVH 파일 생성 및 다운로드
  • Unity 호환 가능한 파일 포맷
  • 모션 미리보기 재생 기능
  • 파일 품질 검증 완료

Phase 4: Unity 원격 제어 API ⏱️ 예상 기간: 2-3주

목표

EasyMotionRecorder와 웹 완전 연동으로 양방향 제어 시스템 구축

세부 작업

  1. Unity 원격 제어 API

    public class RemoteMotionAPI : MonoBehaviour
    {
        public void StartRecording(string filename);
        public void StopRecording();
        public RecordingStatus GetStatus();
        public void SetRecordingSettings(RecordingSettings settings);
    }
    
  2. EasyMotionRecorder 연동

    • 기존 EasyMotionRecorder 스크립트 래핑
    • 웹 명령을 Unity API 호출로 변환
    • 실시간 녹화 상태 동기화
    • 에러 처리 및 예외 상황 대응
  3. 양방향 통신 프로토콜

    // 웹 → Unity
    {
      "command": "start_recording",
      "parameters": {
        "filename": "motion_001",
        "format": "fbx",
        "framerate": 30
      }
    }
    
    // Unity → 웹
    {
      "status": "recording",
      "filename": "motion_001.fbx",
      "duration": 120.5,
      "frameCount": 3615
    }
    
  4. 파일 동기화

    • Unity 측 파일과 웹 측 파일 동시 생성
    • 백업 및 검증 시스템
    • 파일 무결성 체크

완료 기준

  • 웹에서 Unity 녹화 원격 제어
  • 실시간 상태 동기화
  • 양쪽 파일 생성 확인
  • 에러 처리 완료

🛠️ 기술 스택

Unity Side

  • 언어: C#
  • 네트워킹: WebSocketSharp 또는 Mirror Networking
  • 모션캡쳐: EasyMotionRecorder (기존 시스템)
  • 파일 출력: Unity Timeline, Animation Recorder

Web Side

  • 프론트엔드: HTML5, CSS3, JavaScript (ES6+)
  • 3D 렌더링: Three.js
  • 네트워킹: WebSocket API
  • 저장소: IndexedDB
  • 파일 처리: File API, Blob

개발 도구

  • 에디터: Unity 2022.3 LTS, VS Code
  • 버전 관리: Git
  • 테스팅: Unity Test Framework, Jest (웹)

📁 프로젝트 구조

RemoteMotionCapture/
├── Unity/                     # Unity 프로젝트
│   ├── Scripts/
│   │   ├── WebSocketServer.cs
│   │   ├── RemoteMotionAPI.cs
│   │   └── MotionDataStreamer.cs
│   └── Scenes/
│       └── MotionCaptureStudio.unity
│
├── WebClient/                  # 웹 클라이언트
│   ├── index.html
│   ├── css/
│   │   └── style.css
│   ├── js/
│   │   ├── main.js
│   │   ├── motionViewer.js
│   │   ├── motionExporter.js
│   │   └── websocketClient.js
│   └── assets/
│       └── models/
│
├── Documentation/              # 문서
│   ├── PROJECT_ROADMAP.md
│   ├── API_REFERENCE.md
│   └── SETUP_GUIDE.md
│
└── Assets/                     # 공용 리소스
    ├── Models/
    ├── Animations/
    └── TestData/

🎯 완료 후 기대 효과

  1. 접근성 향상: 물리적 스튜디오 방문 없이 모션캡쳐 가능
  2. 비용 절감: 스튜디오 임대료 및 이동비용 절약
  3. 효율성 증대: 실시간 피드백으로 재촬영 횟수 감소
  4. 협업 강화: 원격 디렉팅 및 실시간 의사소통 가능

⚠️ 주요 고려사항

  1. 네트워크 지연: 지연시간 최소화를 위한 최적화 필요
  2. 데이터 품질: 압축으로 인한 데이터 손실 최소화
  3. 보안: 모션 데이터 암호화 및 접근 제어
  4. 호환성: 다양한 모션캡쳐 시스템과의 호환성 확보

이 로드맵은 개발 진행에 따라 지속적으로 업데이트됩니다.