2 min to read
A DIY Flight Simulator Tutorial(1)
A DIY(Do It Yourself) Flight Simultor Tutorial

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
을 얘기하기 전에 가장 기본적인 설정을 얘기하겠습니다.
Comments