JK강재신 / Portfolio
← 프로젝트 목록

쓰리디아이 / 2015

낙하산 시뮬레이터

실지형·아바타·관제 화면의 좌표를 연결하다

GIS 좌표모션캡처WPF
낙하산 시뮬레이터 프로젝트 화면
프로젝트 연도 / 상태2015
개발팀 · 리소스 인력 제외2인 · 팀원
사용 기술Unity3D · WPF · VR · C#

OVERVIEW

프로젝트와 나의 역할

Oculus HMD, 모션캡처, Unity 3D 지형과 WPF 2D 상황도 사이의 데이터 연동을 담당했습니다.

  • Oculus Rift HMD Unity 통합
  • GIS 데이터를 활용한 3D 실지형 맵핑
  • 네트워크를 통한 외부 3D 관제 기능 구현
  • Mocap 센서 데이터를 통한 실시간 아바타 움직임 구현
  • GIS 데이터 맵을 이용한 2D 맵 전시 기능 구현
  • 실시간 Unity3D 내 3차원 좌표 데이터와 2D GIS 맵 데이터 동기화 기능 구현

CHALLENGE

해결해야 했던 문제

대규모 지형에서 원점과 멀어질수록 float 정밀도 저하

APPROACH

선택한 해결 방식

훈련 시작 지점을 원점으로 오프셋을 적용하고, 2D 지도 표시 시 같은 오프셋을 역으로 반영했습니다.

PROJECT MEDIA

실행 화면과 시연

기존 프로젝트 상세 설명 보기
낙하산 시뮬레이션 3D/VR 영상 개발 

공군 낙하산 훈련용 Unity3D·WPF 통제 SW와 낙하산 동역학·모션캡처 기반 3D/VR 콘텐츠를 개발하며, 조종사 비상탈출·특전교 낙하산 프로토타입과 훈련 설정·리플레이·평가 기능을 포함합니다.

프로젝트 설명을 위한 낙하산 시뮬레이터 영상 Youtube

### 01. 프로젝트 구성 (리소스 개발 인력 제외)

팀 구성 : 2인 (팀원으로 참여)

### 02. 프로젝트 내 본인 작업 내용

1. Unity 관련
   1. Oculus Rift HMD Unity 통합
   2. GIS 데이터를 활용한 3D 실지형 맵핑
   3. 네트워크를 통한 외부 3D 관제 기능 구현
   4. Mocap 센서 데이터를 통한 실시간 아바타 움직임 구현
2. WPF 관련
   1. GIS 데이터 맵을 이용한 2D 맵 전시 기능 구현
   2. 실시간 Unity3D 내 3차원 좌표 데이터와 2D GIS 맵 데이터 동기화 기능 구현

### 03. 담당 기능 개발

# Unity 관련

1. Oculus Rift HMD Unity 통합 관련 작업
   1. HMD 위치 데이터 동기화
      - 개발 방안 : HMD의 움직임을 실제 훈련자의 VR 콘텐츠 내 시점과 일지화
      - 이슈 및 문제점 : 실제 사람은 HW에 연결되어 움직이지 않음. 하지만 아바타는 낙하산 동역학에 의해 움직이고 있음. 따라서, 실제 훈련자가 HMD를 통해 보는 화면과 VR환경 내의 움직임과의 동기화 필요
      - 해결방안 : 초기 생성되는 아바타의 머리 방향을 초기 HMD 카메라의 방향과 동기화
      - 해결 가능 이유 : HMD의 데이터는 부모 객체의 Local 위치 및 회전 데이터로 회전함, 따라서 객체를 아바타의 자식 객체로 두고, 자동 Offset이 지정된 카메라의 월드 값을 재활용하여 아바타와 HMD 카메라간 회전 동기화 가능

2. GIS 데이터를 활용한 3D 실지형 맵핑

   GIS 3차원 지형 데이터와 Unity 좌표계 동기화

   - 개발 방안 : GIS 3차원 지형 맵 데이터를 Unity 환경에 맞춰 좌표계를 동기화
   - 이슈 및 문제점 : 항공 훈련의 특성상 넓은 지역의 훈련 범위를 커버 해야 하는데 Unity는 Float 연산의 특성으로 원점에서 멀어질수록 소수점 연산이 불안정해짐
   - 해결방안 : 초기 훈련 위치를 원점으로 지형의 좌표를 역으로 Offset, 지형 원점이 월드의 원점이 아닌 훈련 아바타의 원점이 월드의 원점이 되도록
   - 해결 가능 이유 : UTM변환 식으로 GIS 좌표 데이터를 변환 가능

3. 네트워크를 통한 외부 3D 관제 기능 구현

   실시간 데이터 통신을 통한 멀티 클라이언트 데이터 동기화

   - 개발 방안 : 실시간 데이터를 멀티 클라이언트에 연동하여 데이터 시계열 동기화
   - 이슈 및 문제점 : 메인 훈련자를 기준으로 각 훈련자의 실시간 데이터를 서로간에 싱크가 맞도록 구현해야 함
   - 해결방안 : 메인 훈련자를 기준으로 메인훈련자가 서버가 되어, 나머지 훈련자 데이터 처리후 시간 싱크에 맞춰 데이터 재 전송
   - 해결 가능 이유 : 메인 서버에서 데이터 가공 후 재전송으로 데이터가 한 곳에서 처리되어 싱크가 맞춰짐

4. Mocap 센서 데이터를 통한 실시간 아바타 움직임 구현

   Mocap 센서 데이터 동기화

   - 개발 방안 : Mocap 센서 데이터 아바타 움직임 동기화
   - 이슈 및 문제점 : 실제 훈련자가 탑승하는 장비의 모터 구동으로 인해 Mocap 센서의 자이로 센서가 문제가 발생
   - 해결방안 : 가장 문제가 심한 다리 부분은 제외하고, 팔 부분만 동기화 진행
   - 해결 가능 이유 : 다리 부분은 팔 부분의 움직임을 보고 자세를 판단하여 필요한 다리 자세를 구현 가능

# WPF 관련

1. GIS 데이터 맵을 이용한 2D 맵 전시 기능 구현
   1. GIS 데이터를 가지고 있는 TIFF 포맵 2D 위성 맵 전시 기능
      - 개발 방안 : MapWinGis 모듈을 이용한 2D 맵 전시
      - 이슈 및 문제점 : 대용량 위성 지도 이미지 업로드로 인한 프로그램 최적화 문제
      - 해결방안 : PROJ 라이브러리를 통한 TIFF 이미지 압축

1. 실시간 Unity3D 내 3차원 좌표 데이터와 2D GIS 맵 데이터 동기화 기능 구현
   1. 실시간 3차원 데이터 2D맵 전시 기능
      - 개발 방안 : Unity3D 실시간 좌표 데이터를 2D GIS 데이터에 실시간으로 맵핑
      - 이슈 및 문제점 : Offset 값이 적용된 Unity 좌표 데이터의 변환 문제 발생
      - 해결방안 : Offset 데이터를 역계산하여 좌표계 동기화
      - 해결 가능 이유 : Unity에서 계산된 Offset 데이터를 재사용가능
Notion 원본 보기 ↗
다른 프로젝트 살펴보기 ↗