explaingit

assimp/assimp

12,935C++Audience · developerComplexity · 3/5LicenseSetup · moderate

TLDR

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.

Mindmap

mindmap
  root((assimp))
    What it does
      Load 3D models
      40 plus formats
      Geometry cleanup
    Supported Formats
      FBX OBJ GLTF
      Collada STL
    Language Bindings
      Python JavaScript
      Rust Java C
    Audience
      Game developers
      3D app builders
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Load FBX, OBJ, GLTF, or any of 40+ 3D file formats into your game engine or 3D app without writing custom parsers.

USE CASE 2

Automatically clean up and optimize imported 3D geometry with post-processing steps like triangulation and normal generation.

USE CASE 3

Use assimp from Python, JavaScript, Rust, or Java via language bindings to load 3D assets in your preferred language.

Tech stack

C++CCMakePythonJavaScriptRustJava

Getting it running

Difficulty · moderate Time to first run · 30min

Requires CMake to build from source, pre-built binaries are available for download if you prefer.

Free to use commercially including in closed-source products, include the BSD license text with your product. Static linking is explicitly permitted.

In plain English

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.

Copy-paste prompts

Prompt 1
Using assimp in C++, write code to load an FBX file, apply triangulation and normal generation post-processing, and print the number of meshes and total vertex count.
Prompt 2
I'm building a Three.js web app and want to load 3D models using assimp's JavaScript bindings in Node.js. Show me how to install and use them.
Prompt 3
Using assimp's Python bindings, write a script that loads all OBJ files in a folder and exports each one as a GLTF file.
Prompt 4
I'm adding assimp to a Unity project. Walk me through using the Unity plugin to import an FBX model and access its mesh data at runtime.
Open on GitHub → Explain another repo

← assimp on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.