A DIY Flight Simulator Tutorial(1)

A DIY(Do It Yourself) Flight Simultor Tutorial

Featured image

ReadMe

아래 내용은 Epic Games 에서 제공하는 앙투아네트 프로젝트: 차세대 비행 시뮬레이터 제작 툴 포스트 내용을 주로 다루고 있습니다.

A DIY Flight Simulator Tutorial

최신의 비행역학(Flight Dynamics)과 광범위한 데이터셋이 적용된 비행 시뮬레이터를 만드는 방법을 Epic Simulation Team이 제공합니다.

Introduction

앙투아네트 프로젝트(Antoinette Project) 에서 적힌 내용에 이어서 어떻게 간단하면서 빠르게 비행 시뮬레이터의 구조물들을 제작할 수 있는지 얘기하고자 합니다.

Unreal Marketplace에 있는 여러 자산들에 종속되어 있다는 이유로 앙투아네트 프로젝트를 소스와 함께 제공하기 힘들지만 이 튜토리얼을 통해 구현하는 것이 문제되지 않을 것으로 보입니다.

그럼에도 불구하고 이 포스팅은 단계별로 밟아가는 튜토리얼이 아니기에 초보자 분들께는 추천하지 않습니다. 그래도 워크플로우에 대해서 꽤 쓸만하며 확실히 구현하고자 하거나 컨셉을 잡으려는 분들께 여러 외부 참고자료보다 낫습니다.

이 포스팅에서의 설명을 통해 당신만의 비행 시뮬레이터를 만들 수 있습니다. 또한 JSBSim에 있는 언리얼엔진 참고 어플리케이션도 시작할 수 있습니다.

Environmental Content Creation

Terrain

지리적 제약조건


코드적 검토사항으로는 넓은 환경에서 생기는 정밀 좌표에 대한 내용입니다. 지구의 반지름은 6 378 137m 입니다. 단정밀도인 float 자료형의 경우는 50cm 단위로 나눌 수 있습니다. 정확한 좌표를 구하기 어려워질 수도 있고 좌표들간의 보간작업에 용이하지 않을 수 있습니다. 다른 기술로서 이를 해결할 수 있는데, 하나는 중심좌표로 부터의 재지정을 하는 것입니다. 다만, 성능적으로 문제가 될 수 있기에 시뮬레이션으로는 추천되지 않습니다. 다른 하나는 double 자료형을 사용하는 것입니다. 솔라 시스템 스케일에서는 높은 정확도를 가질 수 있으며 언리얼엔진에서 Enable Large Worlds 를 활성화 시킴으로서 간단하게 처리할 수 있습니다.

Georeferencing and coordinates system 둥근 행성 환경에서는 전통적인 Z-up과 함께 데카르트 좌표 시스템은 적용할 수 없습니다. 그래서 첫 번째로 지구 중심적 참조 시스템(earth-centered reference system: ECEF)가 행성 중심에서 언리얼 엔진 중심으로 존재합니다. 개별적인 지역에서 다른 하나는 탄젠트 참조 시스템을 활용하는 것도 있습니다. 한번 고정하면 이 참조는 시뮬레이션 실행동안 계속 적용됩니다.

이 참조들의 상단에는 지구의 지역적 표현에 자주 사용되는 위도(Latitude), 경도(Longitude), 고도(Altitude)가 있습니다. 이는 극좌표 시스템이면서 데카르트 좌표계로 변환시 필요합니다.

좀 더 편한 좌표 계싼을 위해서 Epic games의 개발진들은 Georeferencing 이라는 플러그인을 지원하고 있습니다. 평평한 환경에서와 지구처럼 둥근환경(타원) 간의 좌표변환을 지원해줍니다.

지구의 경우에만 해당되는 것은 아니기에 ECEF 좌표 시스템 기반의 시뮬레이션 JSBSim 역학에서도 쓰입니다. 이 앙투아네트 프로젝트의 핵심이라 보는 JSBSim 을 얘기하기 전에 가장 기본적인 설정을 얘기하겠습니다.