Skip to content

Update vendored Assimp to v6.0.4#785

Merged
adriengivry merged 7 commits intoOverload-Technologies:mainfrom
Gopmyc:783
May 1, 2026
Merged

Update vendored Assimp to v6.0.4#785
adriengivry merged 7 commits intoOverload-Technologies:mainfrom
Gopmyc:783

Conversation

@Gopmyc
Copy link
Copy Markdown
Contributor

@Gopmyc Gopmyc commented Apr 25, 2026

Description

This PR updates the vendored Assimp dependency to v6.0.4.

Changes included:

  • Sync Dependencies/assimp/code, Dependencies/assimp/contrib, Dependencies/assimp/include, and Dependencies/assimp/LICENSE with upstream v6.0.4.
  • Update Dependencies/assimp/include/assimp/revision.h version metadata to 6.0.4.

Related Issue(s)

Fixes #783
Fixes #784

Review Guidance

  • Verify the project builds successfully in Debug x64.
  • Verify OvEditor and OvGame still start correctly.
  • Re-test model import workflow for FBX/OBJ assets.

Screenshots/GIFs

N/A

AI Usage Disclosure

All

Checklist

  • My code follows the project's code style guidelines
  • When applicable, I have commented my code, particularly in hard-to-understand areas
  • When applicable, I have updated the documentation accordingly
  • My changes don't generate new warnings or errors
  • I have reviewed and take responsibility for all code in this PR (including any AI-assisted contributions)

Copy link
Copy Markdown
Member

@adriengivry adriengivry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please review carefully how our Assimp dependency is setup on main. We only include AssetLibs that we actually use (FBX/OBJ).
Dependencies under contrib/ are also curated to Overload needs.
You also included .in files, which shouldn't be done.

I understand using AI to help you in your work, but you need to review its work manually, and ensure that it's correct.

@Gopmyc
Copy link
Copy Markdown
Contributor Author

Gopmyc commented Apr 30, 2026

Please review carefully how our Assimp dependency is setup on main. We only include AssetLibs that we actually use (FBX/OBJ). Dependencies under contrib/ are also curated to Overload needs. You also included .in files, which shouldn't be done.

I understand using AI to help you in your work, but you need to review its work manually, and ensure that it's correct.

Thanks for the review !
I’ve aligned it with main: FBX/OBJ only, curated contrib, and removed .in files.

@Gopmyc Gopmyc requested a review from adriengivry April 30, 2026 19:18
Copy link
Copy Markdown
Member

@adriengivry adriengivry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems like this update introduce a bunch of compilation errors on Linux with clang 22.

For your testing, I'd suggest booting up a VM, or using WSL to make sure that this works on Linux as well.

gzlib.c
gzread.c
gzwrite.c
contrib/zlib/gzread.c:44:15: error: call to undeclared function 'read'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   44 |         ret = read(state->fd, buf + *have, get);
      |               ^
contrib/zlib/gzread.c:44:15: note: did you mean 'fread'?
/usr/include/stdio.h:732:15: note: 'fread' declared here
  732 | extern size_t fread (void *__restrict __ptr, size_t __size,
      |               ^
contrib/zlib/gzlib.c:263:9: error: call to undeclared function 'lseek'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  263 |         LSEEK(state->fd, 0, SEEK_END);  /* so gzoffset() is correct */
      |         ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
contrib/zlib/gzlib.c:263:9: note: did you mean 'fseek'?
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
/usr/include/stdio.h:773:12: note: 'fseek' declared here
  773 | extern int fseek (FILE *__stream, long int __off, int __whence)
      |            ^
contrib/zlib/gzlib.c:269:24: error: call to undeclared function 'lseek'; ISO C99 and later do not support contrib/zlib/gzwrite.cimplicit: 88function: 20declarations:  [-Wimplicit-function-declaration]
error: call to undeclared function 'write'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   88 |             writ = write(state->fd, st  r269m | - > n e x t _ i ns,t aptuet-)>;st
a      r| t                    ^=
 LSEEK(stcontrib/zlib/gzwrite.ca:t88e:-20>:f d, note: 0did ,you  SmeanE E'fwrite'?K_
CUR);
      |                        ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
/usr/include/stdio.h:739:15: note: 'fwrite' declared here
  739 | extern size_t fwrite (const void *__restrict __ptr, size_t __size,
      |               ^
contrib/zlib/gzwrite.c:118:24: error: call to undeclared function 'write'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  118 |                 writ = write(state->fd, state->x.next, put);
      |                        ^
contrib/zlib/gzlib.c:370:9: error: call to undeclared function 'lseek'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  370 |     if (LSEEK(state->fd, state->start, SEEK_SET) == -1)
      |         ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
contrib/zlib/gzlib.c:411:15: error: call to undeclared function 'lseek'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  411 |         ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
      |               ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
contrib/zlib/gzread.c:656:11: error: call to undeclared function 'close'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
contrib/zlib/gzlib.c:507:14: error: call   to656  | undeclared   function   'lseek';r eISOt  C99=  andc llatero sdoe (nots tsupporta timplicite -function> fdeclarationsd )[-Wimplicit-function-declaration];

      |           ^
  507 |     offset = LSEEK(state->fd, 0, SEEK_CUR);
      |              ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
contrib/zlib/gzwrite.c:672:9: error: call to undeclared function 'close'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  672 |     if (close(state->fd) == -1)
      |         ^
5 errors generated.
2 errors generated.
3 errors generated.
make[1]: *** [Makefile:647: ../../Bin-Int/Debug/assimp/gzlib.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [Makefile:650: ../../Bin-Int/Debug/assimp/gzread.o] Error 1
make[1]: *** [Makefile:653: ../../Bin-Int/Debug/assimp/gzwrite.o] Error 1
make: *** [Makefile:143: assimp] Error 2

[Process exited 2]

@Gopmyc
Copy link
Copy Markdown
Contributor Author

Gopmyc commented May 1, 2026

It seems like this update introduce a bunch of compilation errors on Linux with clang 22.

For your testing, I'd suggest booting up a VM, or using WSL to make sure that this works on Linux as well.

gzlib.c
gzread.c
gzwrite.c
contrib/zlib/gzread.c:44:15: error: call to undeclared function 'read'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   44 |         ret = read(state->fd, buf + *have, get);
      |               ^
contrib/zlib/gzread.c:44:15: note: did you mean 'fread'?
/usr/include/stdio.h:732:15: note: 'fread' declared here
  732 | extern size_t fread (void *__restrict __ptr, size_t __size,
      |               ^
contrib/zlib/gzlib.c:263:9: error: call to undeclared function 'lseek'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  263 |         LSEEK(state->fd, 0, SEEK_END);  /* so gzoffset() is correct */
      |         ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
contrib/zlib/gzlib.c:263:9: note: did you mean 'fseek'?
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
/usr/include/stdio.h:773:12: note: 'fseek' declared here
  773 | extern int fseek (FILE *__stream, long int __off, int __whence)
      |            ^
contrib/zlib/gzlib.c:269:24: error: call to undeclared function 'lseek'; ISO C99 and later do not support contrib/zlib/gzwrite.cimplicit: 88function: 20declarations:  [-Wimplicit-function-declaration]
error: call to undeclared function 'write'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
   88 |             writ = write(state->fd, st  r269m | - > n e x t _ i ns,t aptuet-)>;st
a      r| t                    ^=
 LSEEK(stcontrib/zlib/gzwrite.ca:t88e:-20>:f d, note: 0did ,you  SmeanE E'fwrite'?K_
CUR);
      |                        ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
/usr/include/stdio.h:739:15: note: 'fwrite' declared here
  739 | extern size_t fwrite (const void *__restrict __ptr, size_t __size,
      |               ^
contrib/zlib/gzwrite.c:118:24: error: call to undeclared function 'write'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  118 |                 writ = write(state->fd, state->x.next, put);
      |                        ^
contrib/zlib/gzlib.c:370:9: error: call to undeclared function 'lseek'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  370 |     if (LSEEK(state->fd, state->start, SEEK_SET) == -1)
      |         ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
contrib/zlib/gzlib.c:411:15: error: call to undeclared function 'lseek'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  411 |         ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
      |               ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
contrib/zlib/gzread.c:656:11: error: call to undeclared function 'close'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
contrib/zlib/gzlib.c:507:14: error: call   to656  | undeclared   function   'lseek';r eISOt  C99=  andc llatero sdoe (nots tsupporta timplicite -function> fdeclarationsd )[-Wimplicit-function-declaration];

      |           ^
  507 |     offset = LSEEK(state->fd, 0, SEEK_CUR);
      |              ^
contrib/zlib/gzlib.c:23:17: note: expanded from macro 'LSEEK'
   23 | #  define LSEEK lseek
      |                 ^
contrib/zlib/gzwrite.c:672:9: error: call to undeclared function 'close'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  672 |     if (close(state->fd) == -1)
      |         ^
5 errors generated.
2 errors generated.
3 errors generated.
make[1]: *** [Makefile:647: ../../Bin-Int/Debug/assimp/gzlib.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [Makefile:650: ../../Bin-Int/Debug/assimp/gzread.o] Error 1
make[1]: *** [Makefile:653: ../../Bin-Int/Debug/assimp/gzwrite.o] Error 1
make: *** [Makefile:143: assimp] Error 2

[Process exited 2]

That should normally be fixed
I haven't compiled it yet, but I'm counting on the compilation tests

@Gopmyc Gopmyc requested a review from adriengivry May 1, 2026 14:46
Copy link
Copy Markdown
Member

@adriengivry adriengivry left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like showrooms 9_Animation didn't like this update.
Can you investigate?

Image

@Gopmyc
Copy link
Copy Markdown
Contributor Author

Gopmyc commented May 1, 2026

Seems like showrooms 9_Animation didn't like this update. Can you investigate?

Image

Thanks for flagging this, I investigated the 9_Animation showroom issue.

The regression was coming from how bones/nodes were resolved after the Assimp v6 update on some FBX assets. I pushed a fix that:

  • resolves bones using aiBone::mNode when available (instead of relying on name only),
  • enables aiProcess_PopulateArmatureData for more reliable bone-node mapping,
  • normalizes bone offsets against the mesh node transform so skinning stays in the correct space,
  • and resolves animation channels after bone mapping, preferring nodes actually used by skinning.

@Gopmyc Gopmyc requested a review from adriengivry May 1, 2026 17:32
@adriengivry adriengivry merged commit bb608c2 into Overload-Technologies:main May 1, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Missing triangles on some imported models Update Assimp to latest stable version

2 participants