assimp
The official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clean data structure.
A C++ library that loads 3D model files in 40+ formats and converts them into one consistent in-memory format, so you don't need to write a custom importer for every file type your app might encounter.
Open Asset Import Library, usually called assimp, is a C++ library that loads 3D model files and converts them into a single, consistent in-memory format. Instead of writing custom import code for every file type your application might encounter, you add assimp and it handles the conversion for you. It supports more than 40 different 3D file formats for import, including common ones used in games and 3D tools, and can also export to a growing number of formats.
Beyond just loading files, assimp includes a set of mesh post-processing options that can automatically clean up and optimize the loaded geometry. These include generating surface normals, triangulating faces, optimizing vertex order for the graphics card, removing duplicate vertices, and merging redundant materials, among others. You can choose which steps to apply when loading a file.
The library's primary interface is written in C++, with a C API also included for broader compatibility. There are official and community-maintained bindings that let you use assimp from other languages: C#, Java, Python, Pascal, Delphi, D, JavaScript (including a Node.js interface), Rust, and more. The library also runs on Android and iOS.
Building the library requires CMake, a common build configuration tool. Pre-built binaries are available for download if you prefer not to compile from source. There are also plugins and integrations for Unity and Unreal Engine listed in the README.
The project is open source under a modified 3-clause BSD license, which allows static linking and commercial use as long as the license text is included with the product. Community support is available via GitHub discussions, Discord, Reddit, and Stack Overflow.
Where it fits
- Load FBX, OBJ, GLTF, or any of 40+ 3D file formats into your game engine or 3D app without writing custom parsers.
- Automatically clean up and optimize imported 3D geometry with post-processing steps like triangulation and normal generation.
- Use assimp from Python, JavaScript, Rust, or Java via language bindings to load 3D assets in your preferred language.