The official Open-Asset-Importer-Library Repository. Loads 40+ 3D-file-formats into one unified and clean data structure.

Overview

Open Asset Import Library (assimp)

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

Current project status

Financial Contributors on Open Collective C/C++ CI Coverity Scan Build Status Coverage Status Join the chat at https://gitter.im/assimp/assimp Average time to resolve an issue Codacy Badge Total alerts

APIs are provided for C and C++. There are various bindings to other languages (C#, Java, Python, Delphi, D). Assimp also runs on Android and iOS. Additionally, assimp features various mesh post processing tools: normals and tangent space generation, triangulation, vertex cache locality optimization, removal of degenerate primitives and duplicate vertices, sorting by primitive type, merging of redundant materials and many more.

Latest Doc's

Please check the latest documents at Asset-Importer-Lib-Doc.

Get involved

This is the development repo containing the latest features and bugfixes. For productive use though, we recommend one of the stable releases available from Github Assimp Releases.
You find a bug in the docs? Use Doc-Repo.
Please check our Wiki as well: https://github.com/assimp/assimp/wiki

If you want to check our Model-Database, use the following repo: https://github.com/assimp/assimp-mdb

Supported file formats

You can find the complete list of supported file-formats here

Building

Take a look into the https://github.com/assimp/assimp/blob/master/Build.md file. We are available in vcpkg, and our build system is CMake; if you used CMake before there is a good chance you know what to do.

Ports

Other tools

open3mod is a powerful 3D model viewer based on Assimp's import and export abilities.

Repository structure

Open Asset Import Library is implemented in C++. The directory structure looks like:

/code		Source code
/contrib	Third-party libraries
/doc		Documentation (doxysource and pre-compiled docs)
/include	Public header C and C++ header files
/scripts 	Scripts used to generate the loading code for some formats
/port		Ports to other languages and scripts to maintain those.
/test		Unit- and regression tests, test suite of models
/tools		Tools (old assimp viewer, command line `assimp`)
/samples	A small number of samples to illustrate possible
                    use cases for Assimp

The source code is organized in the following way:

code/Common		The base implementation for importers and the infrastructure
code/PostProcessing	The post-processing steps
code/<FormatName>	Implementation for import and export for the format

Where to get help

For more information, visit our website. Or check out the ./doc- folder, which contains the official documentation in HTML format. (CHMs for Windows are included in some release packages and should be located right here in the root folder).

If the docs don't solve your problem, ask on StackOverflow with the assimp-tag. If you think you found a bug, please open an issue on Github.

For development discussions, there is also a (very low-volume) mailing list, assimp-discussions (subscribe here)

Open Asset Import Library is a library to load various 3d file formats into a shared, in-memory format. It supports more than 40 file formats for import and a growing selection of file formats for export.

And we also have a Gitter-channel:Gitter Join the chat at https://gitter.im/assimp/assimp

Contributing

Contributions to assimp are highly appreciated. The easiest way to get involved is to submit a pull request with your changes against the main repository's master branch.

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Monthly donations via Patreon:
Patreon

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

License

Our license is based on the modified, 3-clause BSD-License.

An informal summary is: do whatever you want, but include Assimp's license text with your product - and don't sue us if our code doesn't work. Note that, unlike LGPLed code, you may link statically to Assimp. For the legal details, see the LICENSE file.

Why this name

Sorry, we're germans :-), no english native speakers ...

Issues
  • Huge set of warnings in M3D importer

    Huge set of warnings in M3D importer

    This new format is producing almost all the compiler warnings I now see. There are over a hundred new compiler warnings, primarily from m3d.h.

    The general code quality is rather low, with a lot of unnecessary 'optimisations' many of which are pessimisations on modern hardware/compilers.

    I am a little concerned about the memory allocation too - if anything throws other than the initial call into m3d.h then it will leak.

    Additionally, the M3DImporter and M3DExporter headers unnecessarily pollute the global namespace (and extend compilation time) with the entirety of the "m3d.h" header. This causes issues in projects that compile Assimp statically and is likely to cause future issues with other importers/exporters. As this one is trivial fix, I shall be attaching a pull request momentarily.

    Build Techdebt 
    opened by RichardTea 58
  • Support glTF 2.0 Specification

    Support glTF 2.0 Specification

    It'd be nice to support importing (and exporting) of glTF 2.0 files.

    Khronos just released the finalized glTF 2.0 Specification. For the most part, the syntax is changed so now properties are defined as arrays instead of objects/maps, with references defined as indexes instead of keys. The spec also defined PBR-based materials.

    Feature-Request 
    opened by dhritzkiv 39
  • Static build seems broken (also causes the iOS build to fail)

    Static build seems broken (also causes the iOS build to fail)

    The static build seems to be broken. I first noticed it when I tried the iOS build script and it failed because a dynamic library was being built instead of a static one:

    Linking CXX shared library ../lib/libassimp.dylib [100%] Built target assimp [!] Moving built library into: ./lib/iOS/armv7/ mv: rename ./lib/libassimp.a to ./lib/iOS/armv7/libassimp.a: No such file or directory

    I looked at the script and it calls cmake with -DASSIMP_BUILD_STATIC_LIB=ON, but it doesn't seem to have an effect. The same happens for non-iOS builds.

    opened by sth519 33
  • Make a new release

    Make a new release

    This project is becoming more and more important and interest is generally growing because it finally unfucks the whole 3D model situation a bit. As a result, I think releases should be made more often. The last release was over a year ago.

    Many fixes have gone into assimp since then. Don't you think it's about time to make a new release and after that maybe make one every 2 months?

    opened by svenstaro 33
  • Support for Open3DGC-compression in glTF importer/exporter.

    Support for Open3DGC-compression in glTF importer/exporter.

    Extension has some limitations due unfinished specification of glTF. Also if you plan to open models generated by COLLADA2GLTF then i have bad news for you. Proposed implementation use "buffer" against "bufferView" and do not use "floatAttributes" (as unneeded). And some information from source code:

    Limitations for meshes when using Open3DGC-compression. It's a current limitation of sp... Specification have not this part still - about mesh compression. Why only one primitive? Because glTF is very flexibly. But in fact it ugly flexible. Every primitive can has own set of accessors and accessors can point to a-a-a-a-any part of buffer (thru bufferview ofcourse) and even to another buffer. We know that "Open3DGC-compression" is applicable only to part of buffer. As we can't guaranty continuity of the data for decoder, we will limit quantity of primitives. Yes indices, coordinates etc. still can be stored in different buffers, but with current specification it's a exporter problem. Also primitive can has only one of "POSITION", "NORMAL" and less then "AI_MAX_NUMBER_OF_TEXTURECOORDS" of "TEXCOORD". All accessor of primitive must point to one continuous region of the buffer.

    opened by smalcom 32
  • Example how to create and export a scene

    Example how to create and export a scene

    I want to export a mesh I create myself using Assimp. However, I could not find an example on how to do that. I tried building the aiScene structs myself, using malloc and such, but that crashes Assimp, so I assume I need to initialise e.g. the private data somehow.

    So my question is: How do I create a scene manually and then export it to a file, all using the C API.

    opened by devurandom 31
  • Add support for PMD & PMX & VMD

    Add support for PMD & PMX & VMD

    .pmx amd .pmd are 3d model format, .vmd is skeletal animation format. These formats formats are used in MikuMikuDance and MikuMikuMoving, a software that popular in Vocaloid and Japanese anime fans.

    MikuMikuMoving: https://sites.google.com/site/mikumikumovingeng/

    PMX & PMD editor: http://vadim07.deviantart.com/art/PmxEditor-0222-English-520178628

    Feature-Request 
    opened by tuxzz 27
  • mOffsetMatrix is weird...

    mOffsetMatrix is weird...

    This is probably not a bug, probably user error, but I can't work out how mOffsetMatrix is produced. It doesn't seem to be what it says it is... I look at FBXConverter.cpp:1270, it calculates mOffsetMatrix there by, inverse(boneInBindPose) * nodeMatrix But if try and do the same thing in my own code, it produces different results.

    What I want is the animation in world space. I transform vertices by their node matrices into world space, and prefer to animate them there. I try and produce my own world-space animation matrices by animationMatrix * inverse(boneInBondPose), but the results are wrong.

    I've fiddled with this for days. It's never been a problem before when working with my own custom art package exporters. Something very subtle is different here, and I can't work out what it is...

    I'd appreciate any ideas, also perhaps a feature added to assimp to support fetching the animation in world space rather than node-local space via the mOffsetMatrix.

    opened by TurkeyMan 24
  • Compilation fails with MinGW-64 (gcc 4.8.1)

    Compilation fails with MinGW-64 (gcc 4.8.1)

    Firstly,

    If you use mingw-64 (gcc 4.8.1) from here:

    http://sourceforge.net/projects/mingwbuilds/
    

    assimp will not compile; it complains of missing ::strlen in include/assimp/types.h

    [  7%] Built target zlibstatic
    Scanning dependencies of target assimp
    [  7%] Building CXX object code/CMakeFiles/assimp.dir/Assimp.cpp.obj
    C:\Users\stephen\Desktop\assimp\code\Assimp.cpp:1:0: warning: -fPIC ignored for target (all code is position indepe
    ndent) [enabled by default]
     /*
     ^
    In file included from C:\Users\stephen\Desktop\assimp\code\../include/assimp/Logger.hpp:47:0,
                     from C:\Users\stephen\Desktop\assimp\code\../include/assimp/DefaultLogger.hpp:46,
                     from C:\Users\stephen\Desktop\assimp\code\AssimpPCH.h:135,
                     from C:\Users\stephen\Desktop\assimp\code\Assimp.cpp:45:
    C:\Users\stephen\Desktop\assimp\code\../include/assimp/types.h: In member function 'void aiString::Set(const char*)
    ':
    C:\Users\stephen\Desktop\assimp\code\../include/assimp/types.h:285:22: error: '::strlen' has not been declared
       const size_t len = ::strlen(sz);
                          ^
    C:\Users\stephen\Desktop\assimp\code\../include/assimp/types.h: In member function 'void aiString::Append(const cha
    r*)':
    C:\Users\stephen\Desktop\assimp\code\../include/assimp/types.h:318:22: error: '::strlen' has not been declared
       const size_t len = ::strlen(app);
    

    more errors follow. This can be fixed by adding an include statement for cstring around line 48 of types.h:

    // Some runtime headers
    #include <cstring>
    

    Then compilation is all good and dandy, until it tries to assemble IFCReaderGen.cpp

    [ 53%] Building CXX object code/CMakeFiles/assimp.dir/IFCReaderGen.cpp.obj
    C:\Users\stephen\Desktop\assimp\code\IFCReaderGen.cpp:1:0: warning: -fPIC ignored for target (all code is position
    independent) [enabled by default]
     /*
     ^
    c:/progra~1/mingw-~1/x64-48~1.1-p/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/bi
    n/as.exe: CMakeFiles\assimp.dir\IFCReaderGen.cpp.obj: too many sections (34698)
    C:\Users\stephen\AppData\Local\Temp\ccvLJeF3.s: Assembler messages:
    C:\Users\stephen\AppData\Local\Temp\ccvLJeF3.s: Fatal error: can't write CMakeFiles\assimp.dir\IFCReaderGen.cpp.obj
    : File too big
    c:/progra~1/mingw-~1/x64-48~1.1-p/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/bi
    n/as.exe: CMakeFiles\assimp.dir\IFCReaderGen.cpp.obj: too many sections (34698)
    C:\Users\stephen\AppData\Local\Temp\ccvLJeF3.s: Fatal error: can't close CMakeFiles\assimp.dir\IFCReaderGen.cpp.obj
    : File too big
    code\CMakeFiles\assimp.dir\build.make:2673: recipe for target 'code/CMakeFiles/assimp.dir/IFCReaderGen.cpp.obj' fai
    led
    mingw32-make[2]: *** [code/CMakeFiles/assimp.dir/IFCReaderGen.cpp.obj] Error 1
    CMakeFiles\Makefile2:158: recipe for target 'code/CMakeFiles/assimp.dir/all' failed
    mingw32-make[1]: *** [code/CMakeFiles/assimp.dir/all] Error 2
    Makefile:115: recipe for target 'all' failed
    mingw32-make: *** [all] Error 2
    

    which (I think) is because of the file being quite large (admittedly I don't know what the file is for, I'm no C++ expert. Looks auto-generated to me). I googled and came across this:

    http://mingw-users.1079350.n2.nabble.com/File-too-big-too-many-sections-td7579168.html
    

    I'd like to write Go bindings for assimp, which is why I am trying to build with mingw-64 (as it is not possible to use VS libraries with Go).

    I would appreciate your time on this issue. Stephen

    opened by slimsag 22
  • Bad Allocation on large .obj-files

    Bad Allocation on large .obj-files

    Hello,

    So I'm currently using assimp on a university project dealing with large models. I'm basically trying to render as large a model as I can get away with on assorted hardware, and so I'm currently trying out quite a few free assets from freebie websites. Sadly, after the files (currently mostly .obj or 3dsMax-exported .obj-files) exceed a certain size I always get a "bad allocation"-error during the readFile-call. I am particularly sad about being unable to use a 871mb-obj-file that is looking quite sweet in 3dsMax (around 4mil. vertices).

    I had a look at the source myself, but so far I see no obvious problems (The mesh-number, animation-number and so forth shouldn't overflow any integers AFAIK; My own allocation limits for RAM and VRAM/GDDR should also not be hit, and it's not hitting any 32-bit limits). Are there any hardcoded or logical limits on what assimp can handle? Or am I hitting a bug here?

    Thanks in advance, Fabian Korak

    opened by fkorak 21
  • Using an asynchronous IOHandler

    Using an asynchronous IOHandler

    Is there a way to handle an asynchronous IOHandler to pass to Assimp::Importer::SetIOHandler ? From what I see, the Open method must return the data right away, but I have to handle loading files asynchronously.

    Feature-Request 
    opened by SBRK 21
  • Draco compression on export

    Draco compression on export

    I'm interested in using Assimp in an asset pipeline to load .fbx files and writing them out to .glb format with draco compression applied. I'm currently using fbx2gltf for this purpose but it is no longer maintained, and there are a few issues with it that make it rather cumbersome.

    I've searched through the issues here and noticed there are a few relating to draco compression, and I've also had a quick glance at the code base (searching for "draco" as a keyword) and from what I can tell only importing of draco formats is supported. It would be great to have support for compressing upon export too! If this is already possible then I apologise for my ignorance and would love to be pointed in the right direction! Thanks!

    Feature-Request 
    opened by tommitytom 0
  • Fix nested animation name being lost in Collada

    Fix nested animation name being lost in Collada

    Hi!

    This PR fixes an issue with the name of the animation being empty when parsing nested collada animations. I also added a unit test that fails without the change and succeeds with. Specifically, the tested collada file has the following animation library:

       <library_animations>
        <animation id="action_container-Armature" name="Armature">
          <animation id="Armature_ArmatureAction_transform" name="Armature">
    [...]
    

    Without the change, the animation name is empty, with the change it it set to Armature.

    opened by luca-della-vedova 0
  • Letting go the deprecated functions related to Windows plaform

    Letting go the deprecated functions related to Windows plaform

    Dear Reader,

    First off, great thanks for creating and maintaining such a marvelous library. Great Fan! I am compiling the library using MSVC, SDK (10.0.22621.0) on Windows platform and it is spewing lot of C4996 warnings like so

    2>C:\Users\the_cowboy\Misc\KarmaEngine\Karma\vendor\assimp\code\Common\DefaultIOSystem.cpp(125,14): warning C4996: '_wfopen': This function or variable may be unsafe. Consider using _wfopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    2>C:\Users\the_cowboy\Misc\KarmaEngine\Karma\vendor\assimp\code\Common\DefaultLogger.cpp(402,11): warning C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    2>C:\Users\the_cowboy\Misc\KarmaEngine\Karma\vendor\assimp\code\Common\ImporterRegistry.cpp(217,31): warning C4996: 'getenv': This function or variable may be unsafe. Consider using _dupenv_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    2>C:\Users\the_cowboy\Misc\KarmaEngine\Karma\vendor\assimp\code\Common\ZipArchiveIOSystem.cpp(128,5): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    2>C:\Users\the_cowboy\Misc\KarmaEngine\Karma\vendor\assimp\code\PostProcessing\EmbedTexturesProcess.cpp(157,7): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
    ...
    

    Clearly compiler is considering them as warnings! GCC and Clang are quite satisfied though (given compiled on Linux or Mac).

    Solution, as evident, is equally back straining. Giving up the deprecated functions for Windows platform and adopting new ones seem more safe (at least from face value of what Microsoft is advertising).

    If I can get an estimate of the amount of work required, I may consider contributing myself (even if for Windows platform).

    Thanks a Lot!

    Feature-Request Techdebt 
    opened by ravimohan1991 1
  • linker error on macos

    linker error on macos

    So when I am compiling on VScode, I get the following errors:

    Steps to reproduce the behavior: Undefined symbols for architecture x86_64: "Assimp::Importer::ReadFile(char const*, unsigned int)", referenced from: Assimp::Importer::ReadFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int) in main-99c4ca.o "Assimp::Importer::Importer()", referenced from: Model::loadModel(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in main-99c4ca.o "Assimp::Importer::~Importer()", referenced from: Model::loadModel(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in main-99c4ca.o "Assimp::Importer::GetErrorString() const", referenced from: Model::loadModel(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) in main-99c4ca.o "_aiGetMaterialTexture", referenced from: aiMaterial::GetTexture(aiTextureType, unsigned int, aiString*, aiTextureMapping*, unsigned int*, float*, aiTextureOp*, aiTextureMapMode*) const in main-99c4ca.o "_aiGetMaterialTextureCount", referenced from: aiMaterial::GetTextureCount(aiTextureType) const in main-99c4ca.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

    I am using GLFW and Assimp to draw a 3d model to the screen but I am getting a linking error

    • OS: [e.g. iOS] My OS is macOS Mojave 10.14.6 and it is not M1 it is a silicon

    Here is my source code: Main.CPP: https://snipplr.com/view/345610/maincpp-for-github-error Model.h: https://snipplr.com/view/345611/modelh-for-github-error Mesh.h: https://snipplr.com/view/345612/meshh-for-github-error Shader.h: https://snipplr.com/view/345613/shaderh-github-error shader_m.h: https://snipplr.com/view/345614/shadermh-github-error filesystem.h: https://snipplr.com/view/345615/filesystemh-error-on-github camera.h: https://snipplr.com/view/345616/camerah-for-github-error (if you want any other source code just ask me and it's probably not in most of these files just adding them for accessibility.)

    Build Bug 
    opened by flowingss 3
  • Bug: glTF2 imports vertex weight of normalized unsigned byte and normalized unsigned short incorrectly

    Bug: glTF2 imports vertex weight of normalized unsigned byte and normalized unsigned short incorrectly

    Describe the bug According to glTF2.0 Specification, the weight accessor type could be float, or normalized unsigned byte, or normalized unsigned short. When vertex weight type in gltf is not float, the final weight value is incorrect and leading to corrupted animation.

    To Reproduce

    1. Using assimp to load gltf in the zip file below
    2. Notice that the vertex weight value is incorrect gltf_with_normalized_unsigned_byte_vertex_weight.zip

    Screenshots image

    Expected behavior glTF2 imports vertex weight correctly for normalized unsigned byte and normalized unsigned short.

    Additional context Patch of a local fix for this issue:

    diff --git a/code/AssetLib/glTF2/glTF2Importer.cpp b/code/AssetLib/glTF2/glTF2Importer.cpp
    index 293d3dea7..f3c00b235 100644
    --- a/code/AssetLib/glTF2/glTF2Importer.cpp
    +++ b/code/AssetLib/glTF2/glTF2Importer.cpp
    @@ -973,6 +973,25 @@ static void BuildVertexWeightMapping(Mesh::Primitive &primitive, std::vector<std
         Weights *weights = nullptr;
         attr.weight[0]->ExtractData(weights);
     
    +    if (attr.weight[0]->GetElementSize() == 4) {
    +        for (size_t i = 0; i < num_vertices; ++i) {
    +            const float f = weights[i].values[0];
    +            const unsigned char* uc = reinterpret_cast<const unsigned char*>(&f);
    +            for (int j = 0; j < 4; ++j) {
    +                weights[i].values[j] = uc[j] / 255.0f;
    +            }
    +        }
    +    }
    +    if (attr.weight[0]->GetElementSize() == 8) {
    +        for (size_t i = 0; i < num_vertices; ++i) {
    +            const float f[2] = { weights[i].values[0], weights[i].values[1] };
    +            const unsigned short* us = reinterpret_cast<const unsigned short*>(&f[0]);
    +            for (int j = 0; j < 4; ++j) {
    +                weights[i].values[j] = us[j] / 65535.0f;
    +            }
    +        }
    +    }
    +
         struct Indices8 {
             uint8_t values[4];
         };
    
    Bug 
    opened by fountainment 0
Releases(v5.2.4)
  • v5.2.4(May 14, 2022)

    What's Changed

    • Use static runtime only when the option is selected by @kimkulling in https://github.com/assimp/assimp/pull/4464
    • Fix compile error: When enabling macro ASSIMP_DOUBLE_PRECISION by @xiaohunqupo in https://github.com/assimp/assimp/pull/4473
    • Detect Roughness factor exported by Blender by @ifiddynine in https://github.com/assimp/assimp/pull/4466
    • Updated Android build script by @mpcarlos87 in https://github.com/assimp/assimp/pull/4454
    • Prevent nullptr access to normals-array in bitangent computation by @jakrams in https://github.com/assimp/assimp/pull/4463
    • Avoid setting PBR properties when they are not found on mtl file by @sacereda in https://github.com/assimp/assimp/pull/4440
    • Fix ogre xml serializer by @HadesD in https://github.com/assimp/assimp/pull/4488
    • Fix draco building error when import assimp with cmake add_subdirectory #3663 by @lgmcode in https://github.com/assimp/assimp/pull/4483
    • FbxConverter: update bone mOffsetMatrix by @Mykhailo418 in https://github.com/assimp/assimp/pull/4490
    • Some Windows/MSYS2-specific fixes by @hgdagon in https://github.com/assimp/assimp/pull/4481
    • Document fuzz folder by @kimkulling in https://github.com/assimp/assimp/pull/4501
    • Fix out-of-range access in ASE-Parser by @kimkulling in https://github.com/assimp/assimp/pull/4502
    • Disable assertion tests floating point against inf for Intel oneAPI by @kimkulling in https://github.com/assimp/assimp/pull/4507
    • Delete README by @kimkulling in https://github.com/assimp/assimp/pull/4506
    • Rename TextureTypeToString() to aiTextureTypeToString() by @umlaeute in https://github.com/assimp/assimp/pull/4512
    • Fixed library names for MinGW/MSYS2 by @hgdagon in https://github.com/assimp/assimp/pull/4508
    • Update pugixml dependency to v1.12.1 by @ALittleStardust in https://github.com/assimp/assimp/pull/4514
    • Add an option to treat warnings as errors by @hgdagon in https://github.com/assimp/assimp/pull/4509
    • Minor updates to ASSIMP Viewer by @hgdagon in https://github.com/assimp/assimp/pull/4511
    • Add badge to show open issue in percentage by @kimkulling in https://github.com/assimp/assimp/pull/4524
    • Clang-Tidy performance fixes (make values const-ref where needed). by @Skylion007 in https://github.com/assimp/assimp/pull/4525
    • MMD (pmx) fixes by @RedSkittleFox in https://github.com/assimp/assimp/pull/4484
    • Resource script updates by @hgdagon in https://github.com/assimp/assimp/pull/4510
    • Accelerate the Merge vertex post processing step by @motazmuhammad in https://github.com/assimp/assimp/pull/4527

    New Contributors

    • @mpcarlos87 made their first contribution in https://github.com/assimp/assimp/pull/4454
    • @HadesD made their first contribution in https://github.com/assimp/assimp/pull/4488
    • @hgdagon made their first contribution in https://github.com/assimp/assimp/pull/4481
    • @ALittleStardust made their first contribution in https://github.com/assimp/assimp/pull/4514
    • @RedSkittleFox made their first contribution in https://github.com/assimp/assimp/pull/4484
    • @motazmuhammad made their first contribution in https://github.com/assimp/assimp/pull/4527

    Full Changelog: https://github.com/assimp/assimp/compare/v5.2.3...v5.2.4

    Source code(tar.gz)
    Source code(zip)
  • v5.2.3(Mar 19, 2022)

    What's Changed

    • Show warning when assimp_viewer cannot be build on target platform by @kimkulling in https://github.com/assimp/assimp/pull/4402
    • Fix ordering of member initialization by @kimkulling in https://github.com/assimp/assimp/pull/4408
    • Fix possible negative array access by @kimkulling in https://github.com/assimp/assimp/pull/4415
    • Expose the original OBJ "illum" value by @TerenceRussell in https://github.com/assimp/assimp/pull/4409
    • Optimize the problem of excessive memory allocation in FBX import by @SolaToucher in https://github.com/assimp/assimp/pull/4416
    • Update version of Hunter to v0.24.0 that supports VS 2022 by @rbsheth in https://github.com/assimp/assimp/pull/4417
    • Smartday master by @kimkulling in https://github.com/assimp/assimp/pull/4427
    • update LWO importer(available lwo3) by @smartday in https://github.com/assimp/assimp/pull/4020
    • Reinstate a deprecated gltfpbr macro: AI_MATKEY_GLTF_PBRSPECULARGLOSSINESS by @RichardTea in https://github.com/assimp/assimp/pull/4203
    • Fix parsing OBJ with free-form curve/surface body statements by @JaroslavPribyl in https://github.com/assimp/assimp/pull/4403
    • Fix missing members and do some small refactorings. by @kimkulling in https://github.com/assimp/assimp/pull/4432
    • Fix 'i >= 0' always true bug by @karjonas in https://github.com/assimp/assimp/pull/4434
    • Update AI_TEXTURE_TYPE_MAX by @RichardTea in https://github.com/assimp/assimp/pull/4421
    • Fix getting anisotropy in obj by @youkeyao in https://github.com/assimp/assimp/pull/4423
    • glTF2: Metallic roughness split by @sacereda in https://github.com/assimp/assimp/pull/4425
    • Add properties information on assimp info command line by @sacereda in https://github.com/assimp/assimp/pull/4426
    • Added missing ObjMaterial.h to CMakeLists by @TerenceRussell in https://github.com/assimp/assimp/pull/4431
    • Update version in doxy-config by @kimkulling in https://github.com/assimp/assimp/pull/4441
    • add ifndef guard for resolve to fails to compile by @jaefunk in https://github.com/assimp/assimp/pull/4437
    • Add USE_STATIC_CRT option by @EYHN in https://github.com/assimp/assimp/pull/4444
    • Fix nullptr dereferencing by @kimkulling in https://github.com/assimp/assimp/pull/4446
    • Fix stack-overflow in MDLLoader by @kimkulling in https://github.com/assimp/assimp/pull/4448
    • GLTF2 attribute name/parse bug fix by @Promit in https://github.com/assimp/assimp/pull/4451

    New Contributors

    • @SolaToucher made their first contribution in https://github.com/assimp/assimp/pull/4416
    • @smartday made their first contribution in https://github.com/assimp/assimp/pull/4020
    • @JaroslavPribyl made their first contribution in https://github.com/assimp/assimp/pull/4403
    • @karjonas made their first contribution in https://github.com/assimp/assimp/pull/4434
    • @EYHN made their first contribution in https://github.com/assimp/assimp/pull/4444

    Full Changelog: https://github.com/assimp/assimp/compare/v5.2.2...v5.2.3

    Source code(tar.gz)
    Source code(zip)
  • v5.2.2(Feb 20, 2022)

    What's Changed

    • Fix missing include for size_t by @malytomas in https://github.com/assimp/assimp/pull/4380
    • Kimkulling/introduce compression by @kimkulling in https://github.com/assimp/assimp/pull/4381
    • Refactoring: add usage of ai_epsilon to FBX-Importer. by @kimkulling in https://github.com/assimp/assimp/pull/4387
    • CMake: Fix Assimp target install rule fully specifying component by @jcfr in https://github.com/assimp/assimp/pull/4391
    • Fix stat for 32-bit Linux by @kimkulling in https://github.com/assimp/assimp/pull/4398
    • Update build script to fit "Visual Studio 16 2019" Generator by @BA7LYA in https://github.com/assimp/assimp/pull/4394
    • Update the calculation and orthogonalization for bitangent by @youkeyao in https://github.com/assimp/assimp/pull/4397
    • Update CMakeLists.txt by @kimkulling in https://github.com/assimp/assimp/pull/4399
    • Added support for "map_Bump -bm" by @TerenceRussell in https://github.com/assimp/assimp/pull/4393

    New Contributors

    • @jcfr made their first contribution in https://github.com/assimp/assimp/pull/4391
    • @BA7LYA made their first contribution in https://github.com/assimp/assimp/pull/4394
    • @youkeyao made their first contribution in https://github.com/assimp/assimp/pull/4397
    • @TerenceRussell made their first contribution in https://github.com/assimp/assimp/pull/4393

    Full Changelog: https://github.com/assimp/assimp/compare/v5.2.0...v5.2.2

    Source code(tar.gz)
    Source code(zip)
  • v5.2.1(Feb 7, 2022)

    What's Changed

    • ASE: Fix warning unreachable code by @kimkulling in https://github.com/assimp/assimp/pull/4355
    • HMP: Fix override during copying position data by @kimkulling in https://github.com/assimp/assimp/pull/4359
    • use fully qualified namespace in byteswap macros by @umlaeute in https://github.com/assimp/assimp/pull/4367
    • fix compilation with clangcl on windows by @malytomas in https://github.com/assimp/assimp/pull/4366
    • Delete .travis.sh by @kimkulling in https://github.com/assimp/assimp/pull/4371
    • Update ccpp.yml by @kimkulling in https://github.com/assimp/assimp/pull/4378
    • LWO: validate enum value before parsing it by @kimkulling in https://github.com/assimp/assimp/pull/4376

    Full Changelog: https://github.com/assimp/assimp/compare/5.2.0...v5.2.1

    Source code(tar.gz)
    Source code(zip)
  • v5.2.0(Jan 23, 2022)

    What's Changed

    • Update copyrights by @kimkulling in https://github.com/assimp/assimp/pull/4335
    • Fix imported target include directory by @lopsided98 in https://github.com/assimp/assimp/pull/4337
    • Assimp Patch Android LTS NDK 23 Fix by @danoli3 in https://github.com/assimp/assimp/pull/4330
    • Allow dlclose of so library by avoiding unique symbols. by @TThulesen in https://github.com/assimp/assimp/pull/4204
    • Move Base64 encode/decode functionality to the common folder by @kovacsv in https://github.com/assimp/assimp/pull/4336
    • Locale independent meter scale by @tanolino in https://github.com/assimp/assimp/pull/4323
    • add Inter-Quake Model (IQM) Importer by @Garux in https://github.com/assimp/assimp/pull/4265
    • Collada: Read all instance_material child nodes by @jsigrist in https://github.com/assimp/assimp/pull/4339
    • Krishty new file detection by @kimkulling in https://github.com/assimp/assimp/pull/4342
    • ASE: Fix material parsing by @kimkulling in https://github.com/assimp/assimp/pull/4346
    • IFC Reading: Fix opening reading. by @bensewell in https://github.com/assimp/assimp/pull/4344
    • CMAKE: Respect top-level CMAKE_*_OUTPUT_DIRECTORY variables by @leonvictor in https://github.com/assimp/assimp/pull/4338
    • Udate version to 5.2.0 by @kimkulling in https://github.com/assimp/assimp/pull/4353

    New Contributors

    • @lopsided98 made their first contribution in https://github.com/assimp/assimp/pull/4337
    • @danoli3 made their first contribution in https://github.com/assimp/assimp/pull/4330
    • @TThulesen made their first contribution in https://github.com/assimp/assimp/pull/4204
    • @jsigrist made their first contribution in https://github.com/assimp/assimp/pull/4339
    • @bensewell made their first contribution in https://github.com/assimp/assimp/pull/4344
    • @leonvictor made their first contribution in https://github.com/assimp/assimp/pull/4338

    Full Changelog: https://github.com/assimp/assimp/compare/v5.1.6...5.2.0

    Source code(tar.gz)
    Source code(zip)
  • v5.1.6(Jan 9, 2022)

    What's Changed

    • Add link to used enum for a better understandability by @kimkulling in https://github.com/assimp/assimp/pull/4321
    • Fix fuzzer crashes by @alpire in https://github.com/assimp/assimp/pull/4324
    • Fix nullptr-dereferencing by @kimkulling in https://github.com/assimp/assimp/pull/4328
    • Fix bone fitted check in gltf2 exporter by @vpzomtrrfrt in https://github.com/assimp/assimp/pull/4318
    • Update to 5.1.6 by @kimkulling in https://github.com/assimp/assimp/pull/4333

    New Contributors

    • @vpzomtrrfrt made their first contribution in https://github.com/assimp/assimp/pull/4318

    Full Changelog: https://github.com/assimp/assimp/compare/v5.1.5...v5.1.6

    Source code(tar.gz)
    Source code(zip)
  • v5.1.5(Jan 1, 2022)

    What's Changed

    • Make sure no overflow can happen by @kimkulling in https://github.com/assimp/assimp/pull/4282
    • LWS-Import: Avoid access to empty string token by @kimkulling in https://github.com/assimp/assimp/pull/4283
    • MDL: Do not try to copy empty embedded texture by @kimkulling in https://github.com/assimp/assimp/pull/4284
    • Add console progresshandler by @kimkulling in https://github.com/assimp/assimp/pull/4293
    • CMake: Replace CMAKE_COMPILER_IS_MINGW by MINGW by @SirLynix in https://github.com/assimp/assimp/pull/4311
    • fix fbx import metalness by @VyacheslavVanin in https://github.com/assimp/assimp/pull/4259
    • RFC: BlenderScene: use explicit namespace instead of using namespace by @pseiderer in https://github.com/assimp/assimp/pull/4314
    • Support PBR properties/maps in Obj importer by @errissa in https://github.com/assimp/assimp/pull/4272

    New Contributors

    • @SirLynix made their first contribution in https://github.com/assimp/assimp/pull/4311
    • @VyacheslavVanin made their first contribution in https://github.com/assimp/assimp/pull/4259
    • @errissa made their first contribution in https://github.com/assimp/assimp/pull/4272

    Full Changelog: https://github.com/assimp/assimp/compare/v5.1.4...v5.1.5

    Source code(tar.gz)
    Source code(zip)
  • v5.1.4(Dec 18, 2021)

    What's Changed

    • Fix division by zero in PointInTriangle2D by @kimkulling in https://github.com/assimp/assimp/pull/4245
    • Fix nullptr dereferencing from std::shared_ptr by @kimkulling in https://github.com/assimp/assimp/pull/4249
    • Update HMPLoader.cpp by @kimkulling in https://github.com/assimp/assimp/pull/4250
    • Revert "FBXConverter : Fix timescales of FBX animations" by @inhosens in https://github.com/assimp/assimp/pull/4247
    • Use correct XmlParser-methods and add some missing casts by @kimkulling in https://github.com/assimp/assimp/pull/4253
    • Bug: Export crashes when any of the meshes contains texture coordinate names #4243 by @kovacsv in https://github.com/assimp/assimp/pull/4244
    • Bugfix/import crashes by @umlaeute in https://github.com/assimp/assimp/pull/4226
    • Fix a typo in the Visual-Studio Dll-Versions by @kimkulling in https://github.com/assimp/assimp/pull/4260
    • Enable C++11 and C99 by @kimkulling in https://github.com/assimp/assimp/pull/4261
    • Fixed cmake error: No known features for C compiler when using the assimp library from another project by @rumgot in https://github.com/assimp/assimp/pull/4256
    • fix test/models/3DS/IMAGE1.bmp: is jpg by @Garux in https://github.com/assimp/assimp/pull/4264
    • Fix compile error when ASSIMP_BUILD_NO_X3D_IMPORTER is define. by @RivIs-sssa01 in https://github.com/assimp/assimp/pull/4263
    • Update version to 5.1.4 by @kimkulling in https://github.com/assimp/assimp/pull/4266

    New Contributors

    • @rumgot made their first contribution in https://github.com/assimp/assimp/pull/4256
    • @RivIs-sssa01 made their first contribution in https://github.com/assimp/assimp/pull/4263

    Full Changelog: https://github.com/assimp/assimp/compare/v5.1.3...v5.1.4

    Source code(tar.gz)
    Source code(zip)
  • v5.1.3(Dec 4, 2021)

    What's Changed

    • Update blender importer to work with Blender 2.8+ files by @PencilAmazing in https://github.com/assimp/assimp/pull/4193
    • Added checks for out of bounds data access/writing by @ms-maxvollmer in https://github.com/assimp/assimp/pull/4211
    • Interpolate euler rotations for quaternion animations by @inhosens in https://github.com/assimp/assimp/pull/4216
    • Fix file-extension check for X3D-files by @umlaeute in https://github.com/assimp/assimp/pull/4217
    • Update CMakeLists.txt by @kimkulling in https://github.com/assimp/assimp/pull/4219

    New Contributors

    • @PencilAmazing made their first contribution in https://github.com/assimp/assimp/pull/4193

    Full Changelog: https://github.com/assimp/assimp/compare/v5.1.2...v5.1.3

    Source code(tar.gz)
    Source code(zip)
  • v5.1.2(Nov 27, 2021)

    What's Changed

    • Use adviced c++ flag to supress warning on mingw by @Rodousse in https://github.com/assimp/assimp/pull/4196
    • Fixed an incorrect indeiciesType in the glTF2 sparse accessor. by @ruyo in https://github.com/assimp/assimp/pull/4195
    • Prevent out-of-range memory writes by sparse accessors by @jakrams in https://github.com/assimp/assimp/pull/4207
    • Delete test/models/3DS/UVTransformTest directory by @kimkulling in https://github.com/assimp/assimp/pull/4212

    New Contributors

    • @Rodousse made their first contribution in https://github.com/assimp/assimp/pull/4196
    • @jakrams made their first contribution in https://github.com/assimp/assimp/pull/4207

    Full Changelog: https://github.com/assimp/assimp/compare/v5.1.1...v5.1.2

    Source code(tar.gz)
    Source code(zip)
  • v5.1.1(Nov 20, 2021)

    What's Changed

    • Delete irrXML_note.txt by @kimkulling in https://github.com/assimp/assimp/pull/4180
    • Update script_x64.iss by @kimkulling in https://github.com/assimp/assimp/pull/4181
    • Do not build ziplib when 3MF exporter is disabled. by @jdumas in https://github.com/assimp/assimp/pull/4173
    • Collada: Read value, not attribute by @RichardTea in https://github.com/assimp/assimp/pull/4187
    • Redefine deprecated glTF-specific PBR material macros by @RichardTea in https://github.com/assimp/assimp/pull/4184
    • On Windows/mingw in shared build mode append '-SOVERSION' to DLL base file name by @rhabacker in https://github.com/assimp/assimp/pull/4185

    New Contributors

    • @jdumas made their first contribution in https://github.com/assimp/assimp/pull/4173
    • @rhabacker made their first contribution in https://github.com/assimp/assimp/pull/4185

    Full Changelog: https://github.com/assimp/assimp/compare/v5.1.0...v5.1.1

    Source code(tar.gz)
    Source code(zip)
Owner
Open Asset Import Library
Open Asset Import Library
Horde3D is a small 3D rendering and animation engine. It is written in an effort to create an engine being as lightweight and conceptually clean as possible.

Horde3D Horde3D is a 3D rendering engine written in C++ with an effort being as lightweight and conceptually clean as possible. Horde3D requires a ful

Volker Vogelhuber 1.2k Jun 22, 2022
An implementation of OpenGL 3.x-ish in clean C

PortableGL "Because of the nature of Moore's law, anything that an extremely clever graphics programmer can do at one point can be replicated by a mer

Robert Winkler 479 Jun 16, 2022
C++ (with python bindings) library for easily reading/writing/manipulating common animation particle formats such as PDB, BGEO, PTC. See the discussion group @ http://groups.google.com/group/partio-discuss

Partio - A library for particle IO and manipulation This is the initial source code release of partio a tool we used for particle reading/writing. It

Walt Disney Animation Studios 401 Jun 22, 2022
Vizzu is a free, open-source Javascript/C++ library for animated data visualizations and data stories.

Vizzu is a free, open-source Javascript/C++ library utilizing a generic dataviz engine that generates many types of charts and seamlessly animates between them

Vizzu 1.5k Jun 24, 2022
Plugin implementing Kirchhoff rods to simulate any 1D flexible structure

BeamAdapter plugin This SOFA plugin implements a 1-dimensional Finite Element Method (FEM) in the context of coil embolization in neurology. The metho

SOFA Framework 6 Jan 30, 2022
HARFANG®3D is an all-in-one 3D visualization library usable in C++, Python, Lua and Go.

HARFANG® 3D engine HARFANG®3D is an all-in-one 3D visualization library usable in C++, Python, Lua and Go. Table of contents About Features Screenshot

HARFANG® 3D 133 Jun 30, 2022
Tesseract Open Source OCR Engine (main repository)

Tesseract OCR Table of Contents Tesseract OCR About Brief history Installing Tesseract Running Tesseract For developers Support License Dependencies L

null 45.7k Jun 28, 2022
Implementation of Peter Shirley's Ray Tracing In One Weekend book using Vulkan and NVIDIA's RTX extension.

Ray Tracing In Vulkan My implementation of Peter Shirley's Ray Tracing in One Weekend books using Vulkan and NVIDIA's RTX extension (formerly VK_NV_ra

Tanguy Fautre 764 Jun 25, 2022
Canny edge detection, one of the efficient edge detection algorithms is implemented on a Zedboard FPGA using verilog

In this project, Canny edge detection, one of the efficient edge detection algorithms is implemented on a Zedboard FPGA using verilog. The input image is stored on a PC and fed to the FPGA. The output processed image is displayed on a VGA monitor.

Jeffrey Samuel 2 May 9, 2022
My implementations of Ray Tracing in One Weekend written in many different languages.

Ray Tracing in Many Languages This repository contains my implementation of the Ray Tracing in One Weekend book written in several different programmi

Joshua Vega 1 Oct 19, 2021
2D lowpoly editor heavily based on this one

polyedit 2D lowpoly editor heavily based on this one Download Direct link Releases page Libraries This project uses: SFML Tiny File Dialogs jsoncpp im

null 19 Aug 7, 2021
Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform AAA Open 3D Engine

Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligations.

O3DE 4.9k Jun 29, 2022
The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) programs into DirectX Intermediate Language (DXIL) representation

DirectX Shader Compiler The DirectX Shader Compiler project includes a compiler and related tools used to compile High-Level Shader Language (HLSL) pr

Microsoft 2.2k Jun 27, 2022
Spatial extrapolation algorithm: calculate the data of other regions through the data of known regions.

Spatial interpolation Author : csl E-Mail : [email protected] OverView Spatial interpolation is often used to convert the measured data of discrete po

null 1 Oct 18, 2021
Flutter package that lets you simply animate a widget into a visible state.

Entry This Flutter package introduces a new widget : Entry. It lets you simply animate a widget into a visible state. Don't just display widgets : mak

Mickaël Hernandez 22 Apr 13, 2022
A simple program that converts images into normal maps

Advertisement If you are a Blender user, this addon I created might be interesting for you: NormalmapGenerator This is a program to generate normal-,

Simon Wendsche 336 Jun 25, 2022
This repository is used for storing sourcecode related to final project of Computer Graphics and Computer Vision

Computer Graphics and Computer Vision Description: This repository is used for storing sourcecode related to final project of Computer Graphics and Co

null 12 Jun 16, 2022
This repository accompanies Ray Tracing Gems II: Next Generation Rendering with DXR, Vulkan, and OptiX

Apress Source Code This repository accompanies Ray Tracing Gems II: Next Generation Rendering with DXR, Vulkan, and OptiX by Adam Marrs, Peter Shirley

Apress 635 Jun 21, 2022
StereoKit is an easy-to-use open source mixed reality library for building HoloLens and VR applications with C# and OpenXR!

StereoKit is an easy-to-use open source mixed reality library for building HoloLens and VR applications with C# and OpenXR! Inspired by libraries like XNA and Processing, StereoKit is meant to be fun to use and easy to develop with, yet still quite capable of creating professional and business ready software.

Nick Klingensmith 410 Jun 24, 2022