Unity 기반 생산 라인 Transform 기록·그래프 분석·JSON/CSV 저장 시스템
| 항목 | 내용 |
|---|---|
| 개발 형태 | 교육 과정 기반 개인 프로젝트 |
| 구현 범위 | 생산 라인 시뮬레이션, 16개 대상 Transform 기록, 그래프 분석, JSON·CSV 저장·조회, Windows 빌드 |
| 개발 환경 | Unity 6000.3.10f1, C# |
| 실행 환경 | Windows Intel 64-bit |
| 프로젝트 상태 | 주요 기능 구현 및 Windows 독립 실행형 빌드 검증 완료 |
생산 라인에서 이동하는 여러 오브젝트의 Position·Rotation·Scale 변화를 실시간으로 기록하고 비교하기 위해 제작한 Unity 기반 모니터링 시스템입니다. Box 16개를 Object Pool로 순환시키고, 대상별 최근 600프레임을 고정 크기 순환 버퍼로 유지합니다.
수집한 데이터는 Overview·Detail·Focus 그래프로 단계적으로 분석하고, 선택 대상을 추적하는 Live View와 규칙 기반 Meaning Analyzer를 함께 표시합니다. 현재 세션은 JSON·CSV로 저장하며 File Browser에서 파일 목록, 선택과 파싱 결과를 확인할 수 있습니다.
16개 대상의 Transform 기록과 Overview 그래프, 대상 선택 동작을 확인할 수 있습니다.
01-.-.-.-.-.mp4
선택 대상의 Detail·Focus 그래프와 Live View 추적 동작을 확인할 수 있습니다.
02-.-.-.-.-.-.mp4
기록 데이터의 JSON·CSV 저장과 파일 조회, Unity Profiler 측정 과정을 확인할 수 있습니다.
03-JSON-CSV-.-.-.-.mp4
Overview는 16개 대상을 카드형 미니 그래프로 비교합니다. 대상을 선택하면 Detail에서 X·Y·Z·All 시리즈를 4분면으로 확인하고, Focus에서 특정 축의 최근 변화를 확대합니다.
![]() |
![]() |
| Overview | Detail |
Focus
각 Box의 월드 Position, Euler Rotation과 Local Scale의 X·Y·Z를 프레임 단위로 기록합니다. 대상별 최대 600프레임을 유지하며 초과한 오래된 데이터는 제거합니다.
16 Objects × 600 Frames = 최대 9,600 Frames
9 Transform Values per Frame
선택한 Box를 카메라로 추적하고 현재 대상, Metric과 Recording 상태를 표시합니다. 최근 데이터 구간의 변화량과 범위를 기준으로 상태·의미·위험도·인사이트를 생성합니다.
Meaning Analyzer는 Position Z를 전방 이송축으로 가정한 규칙 기반 해석이며, 학습형 AI 예측 모델은 아닙니다.
현재 Recorder 데이터를 세션 단위 DTO로 집계해 JSON 또는 CSV 파일로 저장합니다. File Browser에서 확장자별 목록을 조회하고 선택한 파일의 파싱 성공 여부와 상태 메시지를 확인합니다.
Load Selected는 JSON 역직렬화 또는 CSV 파싱과 처리 상태 확인까지 수행하도록 구현했습니다.
flowchart LR
A[Box Transform] --> B[scr_TransformRecorder]
B --> C[scr_TransformRecorderManager]
C --> D[scr_TransformGraphDataProvider]
D --> E[scr_TransformGraphUIController]
E --> F[Overview]
E --> G[Detail]
E --> H[Focus]
E --> I[Live View / Meaning Analyzer]
C --> J[scr_TransformDataSaveLoadManager]
J --> K[JSON / CSV]
K --> L[scr_TransformFileBrowserUI]
- Recorder Layer: 각 대상의 Transform을 최근 600프레임으로 기록
- Manager Layer: 16개 Recorder 검색과 일괄 Start·Stop·Clear
- Graph Layer: Recorder 데이터를 시리즈로 변환하고 Overview·Detail·Focus에 표시
- Interpretation Layer: 최근 프레임의 변화량과 범위를 규칙으로 해석
- Save/File Layer: 세션 집계, JSON·CSV 저장, 파일 목록과 파싱 상태 표시
자세한 구성은 시스템 아키텍처에서 확인할 수 있습니다.
flowchart LR
A[Box 이동] --> B[Transform 기록]
B --> C[대상별 600프레임 고정 크기 순환 버퍼]
C --> D[GraphPoint 변환]
D --> E[Overview / Detail / Focus]
D --> F[Meaning Analyzer]
C --> G[세션 DTO 구성]
G --> H[transform_record.json]
G --> I[transform_record_날짜_시간.csv]
H --> J[File Browser]
I --> J
J --> K[JSON 역직렬화 / CSV 파싱]
런타임 파일은 Application.persistentDataPath/PLT_Monitor/TransformRecords 아래에 저장됩니다. 자세한 구조는 데이터 흐름에 정리했습니다.
| 구분 | 기술 |
|---|---|
| Engine | Unity 6000.3.10f1 |
| Language | C# |
| Rendering | Universal Render Pipeline 17.3.0 |
| UI | Unity uGUI 2.0.0 |
| Input | Input System 1.18.0 |
| Serialization | Newtonsoft Json 3.2.2 |
| 데이터·출력 | JSON·CSV 저장 / 실시간 그래프 시각화 |
| Target | Windows Intel 64-bit |
- Unity Editor:
6000.3.10f1 - Build Target: Windows Intel 64-bit
- Main Scene:
Assets/Scenes/PL_TransformMonitor.unity - Build Scene: 활성화 확인
- 저장 경로:
Application.persistentDataPath/PLT_Monitor/TransformRecords
- Unity Hub에서 저장소 폴더를 엽니다.
- Unity
6000.3.10f1로 프로젝트를 엽니다. Assets/Scenes/PL_TransformMonitor.unityScene을 엽니다.- Console Error가 없는지 확인한 뒤 Play Mode에서 기능을 확인합니다.
- Windows 실행 파일은
File > Build Profiles > Windows에서Intel 64-bit로 빌드합니다. - 생성된
PLT_Monitor.exe를 실행하고 그래프와 저장 동작을 확인합니다.
| 검증 항목 | 결과 | 확인 내용 |
|---|---|---|
| 생산 라인 순환 | PASS | Box 16개 Spawn·이동·재활용 |
| Transform 기록 | PASS | Position·Rotation·Scale의 X·Y·Z 기록 |
| 고정 크기 순환 버퍼 | PASS | 대상별 최근 600프레임 유지 |
| Overview | PASS | 16개 카드 그래프와 대상 선택 |
| Detail | PASS | 선택 대상의 X·Y·Z·All 4분면 표시 |
| Focus | PASS | 선택 축 확대와 Current·Min·Max 표시 |
| Live View | PASS | 선택 대상 추적과 현재 상태 표시 |
| Meaning Analyzer | PASS | 규칙 기반 상태·의미·위험도 표시 |
| JSON 저장·파싱 | PASS | 파일 생성, 역직렬화와 상태 메시지 |
| CSV 저장·파싱 | PASS | 파일 생성, 행 파싱과 상태 메시지 |
| 일반 실행 성능 | PASS | 요구 기준 60FPS 이상, 기존 QA 기록상 100FPS 이상 |
| Windows Build | PASS | Intel 64-bit Standalone 실행 확인 |
| 저장 순간 성능 측정 | 측정 완료 | CPU·GC Spike와 일시적 FPS 하락 확인 후 기존 수준으로 회복 |
![]() |
![]() |
| Windows 독립 실행형 빌드 실행 | JSON·CSV 파일 생성 |
Unity Profiler 측정 화면
세부 검증 항목과 근거는 검증 결과와 최종 기능 테스트 체크리스트에 정리했습니다.
Assets
├─ Art
├─ Docs
├─ Materials
├─ Models
├─ Prefabs
│ ├─ Basic
│ ├─ Control
│ ├─ Scne Conveyor
│ └─ UI
├─ Scenes
│ └─ PL_TransformMonitor.unity
├─ Scripts
│ ├─ Data
│ ├─ ProductionLine
│ ├─ SaveLoad
│ └─ UI
└─ Settings
주요 Prefab과 클래스 구성은 프로젝트 구조에서 확인할 수 있습니다.
PLT Monitor는 구현과 검증을 완료한 교육 평가 프로젝트입니다.
- 16개 오브젝트의 Transform을 실시간으로 기록했습니다.
- 기록 데이터는 최근 600프레임만 순환 보관하도록 구성했습니다.
- Overview·Detail·Focus 단계별 그래프를 구현했습니다.
- JSON 저장과 CSV 내보내기 기능을 구현했습니다.
- Unity Profiler로 저장 순간의 CPU·GC 사용량을 확인했습니다.
- 기록·관리·그래프 조회·파일 저장·저장 UI의 역할을 분리했습니다.
구현 과정에서 발생한 문제와 처리 결과는 문제 해결 및 최종 구현 범위에 정리했습니다.
| 문서 | 내용 |
|---|---|
| 문서 목록 | 상세 문서 전체 목차 |
| 01. 프로젝트 개요 | 개발 목적과 구현 범위 |
| 02. 시스템 아키텍처 | Recorder·그래프·저장 계층 |
| 03. 주요 기능 | 생산 라인과 그래프 기능 |
| 04. 데이터 흐름 | Transform 기록과 JSON·CSV 처리 |
| 05. 검증 결과 | 테스트 환경과 검증 결과 |
| 06. 프로젝트 범위 | 구현 과정의 주요 문제·원인·해결 방법과 최종 구현 범위 |
| 07. 프로젝트 구조 | 폴더·Prefab·스크립트 구성 |
| 최종 기능 테스트 체크리스트 | 세부 기능 테스트 항목 |
| 발표 자료 | 프로젝트 발표 자료 |
이 저장소는 포트폴리오 검토를 목적으로 공개합니다. Unity, Newtonsoft.Json, TextMesh Pro, 폰트와 외부 에셋의 권리는 각 제작자 및 배포처의 라이선스를 따릅니다. 사용 항목과 확인이 필요한 범위는 Third-Party Notices에 정리했습니다. 별도 라이선스가 명시되지 않은 프로젝트 코드와 문서는 무단 재배포를 허용하지 않습니다.







