Skip to content

Preprocessing

Jan Vogelsang edited this page May 4, 2022 · 4 revisions

Loading data into the Unreal Engine is a three-step process.
Workflow After an FDS simulation has been computed, the output must first be converted into a format that can be easily read and processed in the Unreal Engine. For this purpose, YAML - a simplified markup language for data serialization - is used to provide meta-information about the data (e.g. size and position of a slice) and a simple binary data format is used to store the calculated data only.
The conversion of the simulation data to the new format is done using Python. The publicly available Python module fdsreader is used to read in the FDS output data. After reading in, the data can be preprocessed as desired, but normally the data is simply output unchanged into the new format.
Once the data is in the intermediate format, it can be read in the Unreal Engine using C++ and mapped to data structures that are beneficial for subsequent visualization of the data. Specifically, slices are stored as a temporal sequence of individual textures, as is the boundary data of the obstructions, for which each side of the obstruction is considered individually. In addition, smoke volume data is also transmitted, which in turn is stored as a temporal sequence of volume textures. A volume texture consists of a sequence of textures that form a volume when viewed as a whole.

Automatic (at runtime)

The user, however, is spared the intermediate steps of data conversion completely, he only has to specify a path to an already calculated simulation in the Unreal Engine and behind the scenes the conversion of the data into the intermediate format by means of Python, as well as the reading of the data into the engine, takes place fully automatically.

Manually (before runtime)

In some cases, the user might decide to preprocess the data on another system than the one responsible for visualization. To do so, the user can use the export_all function in the export package of the fdsreader. An example on how to use the function can be found in the project's source code.

Clone this wiki locally