Assimp is a portable and extensible library designed for reading various well-known 3D file formats. It provides APIs for C and C++ and several wrappers for other languages. It reads more than 20 different 3D file formats (including Collada, 3DS, OBJ, LWO, and X) into a straightforward, hierarchical in-memory data structure that can easily be read and processed by applications. Several post processing steps can be applied, such as normal and tangent computations, index buffer, and vertex cache optimization. The library supports complex multi-layer materials and skinned meshes with multiple animations. A Windows-based viewer utility is provided as an implementation reference.