3D Model Formats

Using Assimp, Apertus is able to import various 3D model formats.

Assimp is a library to import and export various 3d-model-formats including scene-post-processing to generate missing render data.

Importers:

Exporters:

We prefer glTF format: https://github.com/KhronosGroup/glTF/blob/master/README.md https://raw.githubusercontent.com/KhronosGroup/glTF/master/specification/2.0/figures/gltfOverview-2.0.0a.png

The advantages and properties are the followings:

  • A glTF can store all (other) entities (models) in a 3D scene.

  • It's also a 3D file format for individual entities: converting 3DS files to glTF is supported by several 3D renderers, CAD software. Sites like Sketchfab also provide plenty of PBR-ready assets for downloading, and plugins that export scenes to this format.

  • glTF is a JSON based format. It's very easy to parse and the data already comes typed. This significantly reduces the need to rely on complex third party libraries to read it. Many languages (e.g., Javascript, Python) even support this format natively.

  • glTF allows specifying an external file for the big data, in binary format. It even supports many common GPU data types, so in practice this file can be moved in chunks directly to the GPU memory. Yes, glTF is the first of these formats that can even be used efficiently as in-engine data.

  • Even if engines would prefer to import to their own format, like Godot does, glTF is extremely fast to export and import. This makes it ideal for making changes to a complex file in the 3D software and updating them to the 3D engine almost instantly.

  • glTF 2.0 fully supports skeletons and morph targets, which can be parsed easily and unambiguously. It also supports PBR based materials using the Disney/Unreal format, which is what most engines and 3D modelling applications use nowadays, with albedo, metallic, roughness, normal, emission and ambient occlusion. It also handles two-sidedness and transparent materials, including alpha to coverage. Extensions for handling shader material graphs are in the work.

  • Animation support is also well done. glTF 2.0 supports multiple animations per file, which is ideal for exporting character actions. It also supports many key interpolation types, such as Catmull Rom and Cubic Spline. Animations are also can be stored in the binary file, so they can be loaded quickly.

  • glTF is developed by individuals from many companies, such as Microsoft, Unity, Google, Adobe, NVidia, Oculus, etc. in collaboration with Khronos.

  • glTF is an open standard and the development process is also transparent.

Tools for glTF: https://github.com/KhronosGroup/glTF/#gltf-tools