178 lines
6.3 KiB (Stored with Git LFS)
Markdown

# 원격 모션캡쳐 시스템 (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`](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 등)
### 설치 및 실행
1. **저장소 클론**
```bash
git clone https://github.com/yourrepo/RemoteMotionCapture.git
cd RemoteMotionCapture
```
2. **Unity 프로젝트 열기**
- Unity Hub에서 `Unity/` 폴더 열기
- `MotionCaptureStudio.unity` 씬 로드
3. **웹 클라이언트 실행**
- `WebClient/index.html` 파일을 브라우저에서 열기
- 또는 로컬 서버 실행:
```bash
cd WebClient
python -m http.server 8000 # Python 3
# 브라우저에서 http://localhost:8000 접속
```
4. **연결 확인**
- Unity에서 Play 버튼 클릭
- 웹 페이지에서 연결 상태 확인
- 실시간 아바타 움직임 확인
## 📖 사용법
### 기본 워크플로우
1. **연결**: 웹 브라우저에서 Unity 서버에 접속
2. **관찰**: 실시간 3D 아바타로 모션 확인
3. **녹화**: 웹에서 녹화 시작/정지 버튼 클릭
4. **다운로드**: 녹화 완료 후 원하는 포맷으로 파일 다운로드
### 지원 파일 포맷
- **BVH**: 범용 모션캡쳐 포맷
- **FBX**: Unity, Maya, Blender 등에서 사용
- **JSON**: 커스텀 데이터 분석용
## 🔧 개발 가이드
### Unity 개발
- `Scripts/` 폴더의 스크립트 수정
- EasyMotionRecorder와의 연동 확인
- WebSocket 통신 테스트
### 웹 클라이언트 개발
- `js/` 폴더의 모듈별 개발
- Three.js 3D 렌더링 최적화
- 파일 출력 형식 추가
자세한 개발 가이드는 [`Documentation/TECHNICAL_SPECIFICATIONS.md`](Documentation/TECHNICAL_SPECIFICATIONS.md)를 참조하세요.
## 🤝 기여하기
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## 📄 라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 `LICENSE` 파일을 참조하세요.
## 📞 연락처
프로젝트 관련 문의: [이메일 주소]
프로젝트 링크: [https://github.com/yourrepo/RemoteMotionCapture](https://github.com/yourrepo/RemoteMotionCapture)
## 🙏 감사의 말
- EasyMotionRecorder 개발팀
- Three.js 커뮤니티
- Unity Technologies
---
*원격 모션캡쳐의 새로운 가능성을 함께 열어가요! 🚀*