원격 모션캡쳐 시스템 (Remote Motion Capture System)
모션캡쳐 스튜디오의 공간적 제약을 해결하는 혁신적인 원격 모션캡쳐 솔루션
🎯 프로젝트 개요
이 프로젝트는 물리적 모션캡쳐 스튜디오에 직접 방문하지 않고도 실시간으로 모션캡쳐 데이터를 관찰하고 녹화할 수 있는 웹 기반 시스템입니다.
핵심 아이디어
- 스튜디오: 모션캡쳐 장비 + Unity 서버
- 웹사이트: 실시간 3D 아바타 뷰어 + 녹화 제어
- 결과물: 웹에서 직접 모션 파일 다운로드 (BVH, FBX, JSON)
✨ 주요 기능
- 🎭 실시간 3D 아바타 스트리밍: Unity에서 웹으로 실시간 모션 데이터 전송
- ⏺️ 원격 녹화 제어: 웹에서 모션캡쳐 녹화 시작/정지
- 📁 즉시 파일 출력: 녹화 완료 후 즉시 모션 파일 다운로드
- 🎬 모션 미리보기: 녹화된 모션을 웹에서 바로 재생
- 🌐 크로스 플랫폼: 웹 브라우저만 있으면 어디서든 접근 가능
🏗️ 시스템 구조
[모션캡쳐 스튜디오] → [Unity 서버] → [WebSocket] → [웹 클라이언트]
↓ ↓ ↓
실제 모션 수집 실시간 스트리밍 3D 뷰어 + 제어 UI
↓ ↓
EasyMotionRecorder 모션 파일 생성
📋 개발 로드맵
| Phase | 기능 | 기간 | 상태 |
|---|---|---|---|
| Phase 1 | Unity-Web 연결 | 2-3주 | 📋 계획 중 |
| Phase 2 | 3D 뷰어 + UI | 3-4주 | 📋 계획 중 |
| Phase 3 | 파일 출력 시스템 | 2-3주 | 📋 계획 중 |
| Phase 4 | Unity 원격 제어 | 2-3주 | 📋 계획 중 |
자세한 로드맵은 Documentation/PROJECT_ROADMAP.md를 참조하세요.
🛠️ 기술 스택
Unity (서버)
- 언어: C#
- 네트워킹: WebSocketSharp
- 모션캡쳐: EasyMotionRecorder
- 버전: Unity 2022.3 LTS
Web (클라이언트)
- 프론트엔드: HTML5, CSS3, JavaScript (ES6+)
- 3D 렌더링: Three.js
- 네트워킹: WebSocket API
- 저장소: IndexedDB
📁 프로젝트 구조
RemoteMotionCapture/
├── Unity/ # Unity 프로젝트
│ ├── Scripts/ # Unity C# 스크립트
│ │ ├── WebSocketServer.cs
│ │ ├── RemoteMotionAPI.cs
│ │ └── MotionDataStreamer.cs
│ └── Scenes/
│ └── MotionCaptureStudio.unity
│
├── WebClient/ # 웹 클라이언트
│ ├── index.html # 메인 웹페이지
│ ├── css/
│ │ └── style.css # 스타일시트
│ ├── js/ # JavaScript 모듈
│ │ ├── main.js # 메인 앱 로직
│ │ ├── motionViewer.js # 3D 렌더링
│ │ ├── motionExporter.js # 파일 출력
│ │ └── websocketClient.js # 통신 관리
│ └── assets/
│ └── models/ # 3D 모델 파일
│
├── Documentation/ # 프로젝트 문서
│ ├── PROJECT_ROADMAP.md # 개발 로드맵
│ ├── TECHNICAL_SPECIFICATIONS.md # 기술 사양서
│ └── SETUP_GUIDE.md # 설치 가이드 (예정)
│
└── Assets/ # 공용 리소스
├── Models/ # 아바타 모델
├── Animations/ # 테스트 애니메이션
└── TestData/ # 테스트 데이터
🚀 빠른 시작
필요 조건
- Unity 2022.3 LTS 이상
- 모던 웹 브라우저 (Chrome, Firefox, Safari, Edge)
- 모션캡쳐 장비 (Kinect, OptiTrack 등)
설치 및 실행
-
저장소 클론
git clone https://github.com/yourrepo/RemoteMotionCapture.git cd RemoteMotionCapture -
Unity 프로젝트 열기
- Unity Hub에서
Unity/폴더 열기 MotionCaptureStudio.unity씬 로드
- Unity Hub에서
-
웹 클라이언트 실행
WebClient/index.html파일을 브라우저에서 열기- 또는 로컬 서버 실행:
cd WebClient python -m http.server 8000 # Python 3 # 브라우저에서 http://localhost:8000 접속 -
연결 확인
- Unity에서 Play 버튼 클릭
- 웹 페이지에서 연결 상태 확인
- 실시간 아바타 움직임 확인
📖 사용법
기본 워크플로우
- 연결: 웹 브라우저에서 Unity 서버에 접속
- 관찰: 실시간 3D 아바타로 모션 확인
- 녹화: 웹에서 녹화 시작/정지 버튼 클릭
- 다운로드: 녹화 완료 후 원하는 포맷으로 파일 다운로드
지원 파일 포맷
- BVH: 범용 모션캡쳐 포맷
- FBX: Unity, Maya, Blender 등에서 사용
- JSON: 커스텀 데이터 분석용
🔧 개발 가이드
Unity 개발
Scripts/폴더의 스크립트 수정- EasyMotionRecorder와의 연동 확인
- WebSocket 통신 테스트
웹 클라이언트 개발
js/폴더의 모듈별 개발- Three.js 3D 렌더링 최적화
- 파일 출력 형식 추가
자세한 개발 가이드는 Documentation/TECHNICAL_SPECIFICATIONS.md를 참조하세요.
🤝 기여하기
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📄 라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.
📞 연락처
프로젝트 관련 문의: [이메일 주소]
프로젝트 링크: https://github.com/yourrepo/RemoteMotionCapture
🙏 감사의 말
- EasyMotionRecorder 개발팀
- Three.js 커뮤니티
- Unity Technologies
원격 모션캡쳐의 새로운 가능성을 함께 열어가요! 🚀