낙하산 시뮬레이션 3D/VR 영상 개발
공군 낙하산 훈련용 Unity3D·WPF 통제 SW와 낙하산 동역학·모션캡처 기반 3D/VR 콘텐츠를 개발하며, 조종사 비상탈출·특전교 낙하산 프로토타입과 훈련 설정·리플레이·평가 기능을 포함합니다.
프로젝트 설명을 위한 낙하산 시뮬레이터 영상 Youtube
https://youtu.be/YqSBL0E7qFQ?si=LKPtJN3kd1KkGdqw
01. 프로젝트 구성 (리소스 개발 인력 제외)
팀 구성 : 2인 (팀원으로 참여)
02. 프로젝트 내 본인 작업 내용
- Unity 관련
- Oculus Rift HMD Unity 통합
- GIS 데이터를 활용한 3D 실지형 맵핑
- 네트워크를 통한 외부 3D 관제 기능 구현
- Mocap 센서 데이터를 통한 실시간 아바타 움직임 구현
- WPF 관련
- GIS 데이터 맵을 이용한 2D 맵 전시 기능 구현
- 실시간 Unity3D 내 3차원 좌표 데이터와 2D GIS 맵 데이터 동기화 기능 구현
03. 담당 기능 개발
Unity 관련
-
Oculus Rift HMD Unity 통합 관련 작업
- HMD 위치 데이터 동기화
- 개발 방안 : HMD의 움직임을 실제 훈련자의 VR 콘텐츠 내 시점과 일지화
- 이슈 및 문제점 : 실제 사람은 HW에 연결되어 움직이지 않음. 하지만 아바타는 낙하산 동역학에 의해 움직이고 있음. 따라서, 실제 훈련자가 HMD를 통해 보는 화면과 VR환경 내의 움직임과의 동기화 필요
- 해결방안 : 초기 생성되는 아바타의 머리 방향을 초기 HMD 카메라의 방향과 동기화
- 해결 가능 이유 : HMD의 데이터는 부모 객체의 Local 위치 및 회전 데이터로 회전함, 따라서 객체를 아바타의 자식 객체로 두고, 자동 Offset이 지정된 카메라의 월드 값을 재활용하여 아바타와 HMD 카메라간 회전 동기화 가능
-
GIS 데이터를 활용한 3D 실지형 맵핑
- GIS 3차원 지형 데이터와 Unity 좌표계 동기화
- 개발 방안 : GIS 3차원 지형 맵 데이터를 Unity 환경에 맞춰 좌표계를 동기화
- 이슈 및 문제점 : 항공 훈련의 특성상 넓은 지역의 훈련 범위를 커버 해야 하는데 Unity는 Float 연산의 특성으로 원점에서 멀어질수록 소수점 연산이 불안정해짐
- 해결방안 : 초기 훈련 위치를 원점으로 지형의 좌표를 역으로 Offset, 지형 원점이 월드의 원점이 아닌 훈련 아바타의 원점이 월드의 원점이 되도록
- 해결 가능 이유 : UTM변환 식으로 GIS 좌표 데이터를 변환 가능
-
네트워크를 통한 외부 3D 관제 기능 구현
- 실시간 데이터 통신을 통한 멀티 클라이언트 데이터 동기화
- 개발 방안 : 실시간 데이터를 멀티 클라이언트에 연동하여 데이터 시계열 동기화
- 이슈 및 문제점 : 메인 훈련자를 기준으로 각 훈련자의 실시간 데이터를 서로간에 싱크가 맞도록 구현해야 함
- 해결방안 : 메인 훈련자를 기준으로 메인훈련자가 서버가 되어, 나머지 훈련자 데이터 처리후 시간 싱크에 맞춰 데이터 재 전송
- 해결 가능 이유 : 메인 서버에서 데이터 가공 후 재전송으로 데이터가 한 곳에서 처리되어 싱크가 맞춰짐