Forge는 Unity Perception 기반의 합성 데이터 생성 엔진입니다. 로봇 공학 및 컴퓨터 비전 모델 학습을 위한 고품질의 라벨링된 데이터셋(SOLO, COCO 등)을 자동으로 생성합니다.
Phase 1 진행 중
- Core Engine: Unity Perception 기반 시나리오/랜덤라이저 구성
- Authoring:
SceneEditorWindow에서 카메라 생성·Config export - Web Dashboard: Node.js 정적 페이지 + Unity
/api/status폴링 - SimulationServer:
/session/init,/session/start,/session/stop,/status최소 API 제공
- Unity 2022.3 LTS 이상
- Node.js 16+ (웹 대시보드용)
- Unity Hub에서
Forge/UnityProject폴더를 엽니다. - 프로젝트가 열리면 자동으로 필요한 패키지(
com.unity.perception등)를 로드합니다. Assets/Samples폴더에 테스트용 에셋(SynthDet)이 포함되어 있습니다.
터미널에서 서버 디렉토리로 이동하여 의존성을 설치하고 실행합니다.
cd Forge.Server
npm install
node server.js서버가 실행되면 브라우저에서 http://localhost:3000/dashboard로 접속합니다.
- Unity 상단 메뉴에서 Forge > Scene Editor를 클릭합니다.
- Session ID를 입력합니다 (예:
test_session_01). - 씬 뷰(Scene View)에서 원하는 구도를 잡고 Add Camera at View를 클릭합니다.
- 자동으로
PerceptionCamera와RandomizerTag가 부착된 카메라가 생성됩니다.
- 자동으로
Assets/Samples의 프리팹을 씬에 배치하여 환경을 꾸밉니다.
- Unity Hierarchy 창에서 우클릭 → Create Empty를 선택합니다.
- 생성된 GameObject의 이름을
ForgeEngine으로 변경합니다. ForgeEngine을 선택한 상태에서 Inspector 창 하단의 Add Component 버튼을 클릭합니다.- 다음 컴포넌트들을 순서대로 추가합니다:
SessionManager(검색창에 "SessionManager" 입력)ForgeScenario(검색창에 "ForgeScenario" 입력)SimulationServer(검색창에 "SimulationServer" 입력)
- Inspector 창에서
ForgeScenario컴포넌트를 찾습니다. - Constants 섹션을 펼칩니다.
- Iteration Count 필드에 생성할 프레임 수를 입력합니다 (예:
100). - (선택사항) Random Seed 값을 설정하여 재현 가능한 시뮬레이션을 만들 수 있습니다.
- Inspector 창에서
SimulationServer컴포넌트를 찾습니다. - Port 필드가
8080으로 설정되어 있는지 확인합니다 (기본값).
- Unity 에디터 상단의 Play 버튼 (
▶️ )을 클릭합니다. - Console 창을 열어 다음 로그를 확인합니다:
[SimulationServer] Listening on port 8080 [ForgeScenario] Configured: Iterations=100, Seed=... - 시뮬레이션이 진행되면서 프레임이 생성됩니다.
- 웹 대시보드에서 실시간 진행률을 확인할 수 있습니다.
- 시뮬레이션이 실행되는 동안 웹 대시보드(
http://localhost:3000/dashboard)를 확인합니다. - 실시간 FPS, 진행률(Progress), 현재 프레임 정보를 볼 수 있습니다.
시뮬레이션이 종료되면 프로젝트 폴더 내(또는 설정된 경로)에 데이터셋이 생성됩니다.
- 경로 예시:
Library/Perception/...또는User/Data/... - 파일:
captures_000.json,metrics_000.json(SOLO 포맷)
Forge/
├── UnityProject/ # Unity 엔진 프로젝트
│ ├── Assets/
│ │ ├── Scripts/Core/ # 핵심 로직 (Session, Scenario)
│ │ ├── Scripts/Editor/# 에디터 툴 (SceneEditorWindow)
│ │ └── Samples/ # 테스트용 에셋 (SynthDet)
│ └── Packages/ # Unity Perception 패키지
├── Forge.Server/ # 웹 대시보드 백엔드 (Node.js)
└── docs/ # 설계 및 가이드 문서
