Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite FBX Importer to support Maya #39418

Closed

Conversation

RevoluPowered
Copy link
Contributor

@RevoluPowered RevoluPowered commented Jun 9, 2020

Adds the ability to load Autodesk FBX files, without requiring the SDK or thirdparty dependencies. We don't support 3DS max as of yet, due to a limitation of geometric transform. We will add support for this in the future, if required.

Previously due to FBX Pivot Transforms this was not possible, also inherit type (nodes which do not inherit parent scale, or do different multiplication orders) was previously complex to support and is required to support Maya fully.

We abstract most of Ref away and keep this simple for anyone who needs to make some edit to the importer. Pivot transform handles pivot's and also inherit type (scaling ignored, parent before scaling, etc)

Previously we had four layers, one for assimp one for godot, and one for the importer itself converting the data to godot, this removes assimp from the middle simplifiying the method to

FBX Document -> Godot Importer (this is a direct importer now, and should be much more efficient in some cases over the previous importer)

Another advantage is we also only have a single set of core math types between FBX and Godot (Vector3, Vector2 and Transform), less conversions, less can go wrong.

This can be extended with as many features as we want now and there is now room to grow it into all the specific tools for Maya etc, or even possibly 3ds max.

Why the decision to drop assimp?

  • We didn't drop it entirely, we only use the FBX portion of the document parser.
  • We moved all the internal assimp types like aiMatrix aiVector3D to Vector3D and Transform respectively.
  • Multiple conversion layers caused issues which are harder to track down with three formats to handle it was harder to add the more complex FBX elements.

FBX Importer with viable support for commercial FBX files

  • pivots (Pivot transforms fully supported, excluding 3DS Max as of now)
  • inherit types (Segment Scale Compensation works ON or OFF; unity doesn't have this supported 🍰 )
  • pre and post-rotation (orient bones and skeleton correctly same as original FBX / Modeller application)
  • pivoted animations (Pivot transforms fully supported, excluding 3DS Max as of now)
  • meshes
  • normals
  • vertex colors
  • vertex weights
  • node animations
  • node locator animations
  • bone animations
  • blend shapes (as other importers use Normalize we use normalized blend shapes)
  • file scaling

This work is sponsored by IMVU.

@RevoluPowered RevoluPowered requested a review from akien-mga as a code owner June 9, 2020 15:47
@RevoluPowered RevoluPowered marked this pull request as draft June 9, 2020 15:49
@RevoluPowered RevoluPowered marked this pull request as ready for review June 9, 2020 15:57
@RevoluPowered RevoluPowered force-pushed the feature/fbx_final_stage branch 7 times, most recently from f9e03af to f09949e Compare June 10, 2020 15:54
@aaronfranke aaronfranke added this to the 3.2 milestone Jun 10, 2020
@RevoluPowered RevoluPowered force-pushed the feature/fbx_final_stage branch 3 times, most recently from 8f32e91 to 7928bd9 Compare June 10, 2020 20:58
modules/fbx_importer/SCsub Outdated Show resolved Hide resolved
@RevoluPowered RevoluPowered force-pushed the feature/fbx_final_stage branch 2 times, most recently from 81e4d5c to 8e4a96d Compare June 11, 2020 15:16
@RevoluPowered
Copy link
Contributor Author

All cases found for the DOM have been initialized @fire let me know if you can see anymore.

I might actually split up the 'assimp' code into our single folder under modules since we are maintaining this ourselves in our codebase with our own types, so we don't have a third-party anymore

@RevoluPowered
Copy link
Contributor Author

More instances of uninitialized variables are in ASSIMP::FBX:: on DOM elements themselves. :D

Will fix this when I get some time after blend shapes.

@RevoluPowered
Copy link
Contributor Author

I have rewritten render code to make it more reliable as it's now abstract enough to hanlde lines, points, quads and triangles :)

@RevoluPowered
Copy link
Contributor Author

RevoluPowered commented Jun 18, 2020

In the process of rewriting the MeshGeometry:: to make it only read the data rather than also manipulate it.

This patch disables all mesh rendering as we are gonna rewrite the mesh_data cpp in godot to handle the FBX polygon type properly, so we can also directly use indices.

This will resolve other issues too and make it testable.

NormalsW is not handled at the moment but this opens the opportunity to support it. :)

@RevoluPowered RevoluPowered force-pushed the feature/fbx_final_stage branch from c0a1fd4 to 1033ce4 Compare June 19, 2020 17:49
@qarmin
Copy link
Contributor

qarmin commented Aug 3, 2020

Importing empty fbx file exported from blender cause leak
Project(just open to import) - AAA.zip

Leak:

Direct leak of 3760 byte(s) in 94 object(s) allocated from:
    #0 0x7f0e27123f17 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.6+0xb1f17)
    #1 0x2504ef7 in ReadScope thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:364
    #2 0x2505585 in ReadScope thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:389
    #3 0x2505585 in ReadScope thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:389
    #4 0x25060c2 in Assimp::FBX::TokenizeBinary(std::vector<Assimp::FBX::Token const*, std::allocator<Assimp::FBX::Token const*> >&, char const*, unsigned long) thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:442
    #5 0x1e2563c in EditorSceneImporterFBX::import_scene(String const&, unsigned int, int, List<String, DefaultAllocator>*, Error*) modules/fbx/editor_scene_importer_fbx.cpp:133
    #6 0x3b5fb6e in ResourceImporterScene::import(String const&, String const&, Map<StringName, Variant, Comparator<StringName>, DefaultAllocator> const&, List<String, DefaultAllocator>*, List<String, DefaultAllocator>*, Variant*) editor/import/resource_importer_scene.cpp:1318
    #7 0x3255da4 in EditorFileSystem::_reimport_file(String const&) editor/editor_file_system.cpp:1798
    #8 0x325c780 in EditorFileSystem::reimport_files(Vector<String> const&) editor/editor_file_system.cpp:1996
    #9 0x3239d0e in EditorFileSystem::_update_scan_actions() editor/editor_file_system.cpp:589
    #10 0x3244efe in EditorFileSystem::_notification(int) editor/editor_file_system.cpp:1174
    #11 0x32635b7 in EditorFileSystem::_notificationv(int, bool) (/home/rafal/Pobrane/godot-feature-fbx_final_stage/bin/godot.x11.tools.64s+0x32635b7)
    #12 0x6d96f2f in Object::notification(int, bool) core/object.cpp:932
    #13 0x4a8cf86 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:985
    #14 0x4a87d92 in SceneTree::idle(float) scene/main/scene_tree.cpp:525
    #15 0x143af52 in Main::iteration() main/main.cpp:2107
    #16 0x13bd359 in OS_X11::run() platform/x11/os_x11.cpp:3233
    #17 0x138f8a5 in main platform/x11/godot_x11.cpp:56
    #18 0x7f0e265e30b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

@RevoluPowered
Copy link
Contributor Author

Importing empty fbx file exported from blender cause leak
Project(just open to import) - AAA.zip

Leak:

Direct leak of 3760 byte(s) in 94 object(s) allocated from:
    #0 0x7f0e27123f17 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.6+0xb1f17)
    #1 0x2504ef7 in ReadScope thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:364
    #2 0x2505585 in ReadScope thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:389
    #3 0x2505585 in ReadScope thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:389
    #4 0x25060c2 in Assimp::FBX::TokenizeBinary(std::vector<Assimp::FBX::Token const*, std::allocator<Assimp::FBX::Token const*> >&, char const*, unsigned long) thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:442
    #5 0x1e2563c in EditorSceneImporterFBX::import_scene(String const&, unsigned int, int, List<String, DefaultAllocator>*, Error*) modules/fbx/editor_scene_importer_fbx.cpp:133
    #6 0x3b5fb6e in ResourceImporterScene::import(String const&, String const&, Map<StringName, Variant, Comparator<StringName>, DefaultAllocator> const&, List<String, DefaultAllocator>*, List<String, DefaultAllocator>*, Variant*) editor/import/resource_importer_scene.cpp:1318
    #7 0x3255da4 in EditorFileSystem::_reimport_file(String const&) editor/editor_file_system.cpp:1798
    #8 0x325c780 in EditorFileSystem::reimport_files(Vector<String> const&) editor/editor_file_system.cpp:1996
    #9 0x3239d0e in EditorFileSystem::_update_scan_actions() editor/editor_file_system.cpp:589
    #10 0x3244efe in EditorFileSystem::_notification(int) editor/editor_file_system.cpp:1174
    #11 0x32635b7 in EditorFileSystem::_notificationv(int, bool) (/home/rafal/Pobrane/godot-feature-fbx_final_stage/bin/godot.x11.tools.64s+0x32635b7)
    #12 0x6d96f2f in Object::notification(int, bool) core/object.cpp:932
    #13 0x4a8cf86 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:985
    #14 0x4a87d92 in SceneTree::idle(float) scene/main/scene_tree.cpp:525
    #15 0x143af52 in Main::iteration() main/main.cpp:2107
    #16 0x13bd359 in OS_X11::run() platform/x11/os_x11.cpp:3233
    #17 0x138f8a5 in main platform/x11/godot_x11.cpp:56
    #18 0x7f0e265e30b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

Thanks, just to confirm what options do you use to detect the leak?

@qarmin
Copy link
Contributor

qarmin commented Aug 3, 2020

scons p=x11 -j6 use_lsan=yes should be enough on Linux but I'm using usually scons p=x11 -j6 use_asan=yes which also finds invalid memory usage(leak sanitizer is enabled by default on address sanitizer)
On macOS and windows probably needs to be enabled settings on Visual Studio or XCode

@RevoluPowered
Copy link
Contributor Author

scons p=x11 -j6 use_lsan=yes should be enough on Linux but I'm using usually scons p=x11 -j6 use_asan=yes which also finds invalid memory usage(leak sanitizer is enabled by default on address sanitizer)
On macOS and windows probably needs to be enabled settings on Visual Studio or XCode

Thanks! yeah just wanted to set up the same testing environment thank you so much for reporting this issue :)

@RevoluPowered
Copy link
Contributor Author

scons p=x11 -j6 use_lsan=yes should be enough on Linux but I'm using usually scons p=x11 -j6 use_asan=yes which also finds invalid memory usage(leak sanitizer is enabled by default on address sanitizer)
On macOS and windows probably needs to be enabled settings on Visual Studio or XCode

Thanks! yeah just wanted to set up the same testing environment thank you so much for reporting this issue :)

I believe the problem is the Assimp::FBX::Document is not deleted. I will make a patch now and see if this is resolved

@RevoluPowered
Copy link
Contributor Author

Importing empty fbx file exported from blender cause leak
Project(just open to import) - AAA.zip

Leak:

Direct leak of 3760 byte(s) in 94 object(s) allocated from:
    #0 0x7f0e27123f17 in operator new(unsigned long) (/lib/x86_64-linux-gnu/libasan.so.6+0xb1f17)
    #1 0x2504ef7 in ReadScope thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:364
    #2 0x2505585 in ReadScope thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:389
    #3 0x2505585 in ReadScope thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:389
    #4 0x25060c2 in Assimp::FBX::TokenizeBinary(std::vector<Assimp::FBX::Token const*, std::allocator<Assimp::FBX::Token const*> >&, char const*, unsigned long) thirdparty/assimp_fbx/FBXBinaryTokenizer.cpp:442
    #5 0x1e2563c in EditorSceneImporterFBX::import_scene(String const&, unsigned int, int, List<String, DefaultAllocator>*, Error*) modules/fbx/editor_scene_importer_fbx.cpp:133
    #6 0x3b5fb6e in ResourceImporterScene::import(String const&, String const&, Map<StringName, Variant, Comparator<StringName>, DefaultAllocator> const&, List<String, DefaultAllocator>*, List<String, DefaultAllocator>*, Variant*) editor/import/resource_importer_scene.cpp:1318
    #7 0x3255da4 in EditorFileSystem::_reimport_file(String const&) editor/editor_file_system.cpp:1798
    #8 0x325c780 in EditorFileSystem::reimport_files(Vector<String> const&) editor/editor_file_system.cpp:1996
    #9 0x3239d0e in EditorFileSystem::_update_scan_actions() editor/editor_file_system.cpp:589
    #10 0x3244efe in EditorFileSystem::_notification(int) editor/editor_file_system.cpp:1174
    #11 0x32635b7 in EditorFileSystem::_notificationv(int, bool) (/home/rafal/Pobrane/godot-feature-fbx_final_stage/bin/godot.x11.tools.64s+0x32635b7)
    #12 0x6d96f2f in Object::notification(int, bool) core/object.cpp:932
    #13 0x4a8cf86 in SceneTree::_notify_group_pause(StringName const&, int) scene/main/scene_tree.cpp:985
    #14 0x4a87d92 in SceneTree::idle(float) scene/main/scene_tree.cpp:525
    #15 0x143af52 in Main::iteration() main/main.cpp:2107
    #16 0x13bd359 in OS_X11::run() platform/x11/os_x11.cpp:3233
    #17 0x138f8a5 in main platform/x11/godot_x11.cpp:56
    #18 0x7f0e265e30b2 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x270b2)

scons p=x11 -j6 use_lsan=yes should be enough on Linux but I'm using usually scons p=x11 -j6 use_asan=yes which also finds invalid memory usage(leak sanitizer is enabled by default on address sanitizer)
On macOS and windows probably needs to be enabled settings on Visual Studio or XCode

I have resolved the leak on my side, could you please confirm it's gone?

@qarmin
Copy link
Contributor

qarmin commented Aug 3, 2020

I'm still having leak
You need each time remove .import folder to check leak, because it happens only when importing model.

@RevoluPowered
Copy link
Contributor Author

RevoluPowered commented Aug 3, 2020

I'm still having leak
You need each time remove .import folder to check leak, because it happens only when importing model.

I can't reproduce any-more on my end, I tried removing import and also removing the import file and reimporting, tried several times, did you pull?

image

@qarmin
Copy link
Contributor

qarmin commented Aug 3, 2020

Sorry, indeed in latest commit there isn't any leak.
I'm not sure how I get this leak, but now everything works fine.

You can add DRI_PRIME=0 before command to prevent showing false leaks, like I see in your screenshot like:
DRI_PRIME=0 godot.x11.tools.64s -e

@RevoluPowered
Copy link
Contributor Author

Sorry, indeed in latest commit there isn't any leak.
I'm not sure how I get this leak, but now everything works fine.

You can add DRI_PRIME=0 before command to prevent showing false leaks, like I see in your screenshot like:
DRI_PRIME=0 godot.x11.tools.64s -e

No need to apologize it happens and I have done this before myself too, I am just happy it's fixed, I didn't know that I needed DRI_PRIME what is that?

@qarmin
Copy link
Contributor

qarmin commented Aug 3, 2020

This command switches management on/off(in case =0 - off) of hybrid GPU - https://wiki.archlinux.org/index.php/PRIME
Here is a Godot bug report with leaking memory with PRIME detection - #29844

@fire
Copy link
Member

fire commented Aug 13, 2020

@RevoluPowered Here's the html log.
2020-08-13-godot-fbx.zip

pvs-studio-analyzer credentials [email protected] key
git clone https://github.com/RevoluPowered/godot.git -b feature/fbx_final_stage
cd godot
pvs-studio-analyzer analyze -o godot-static-check.log -j6
plog-converter -t fullhtml -o 2020-08-13-godot-fbx godot-static-check.log
# Zip and send

@RevoluPowered RevoluPowered force-pushed the feature/fbx_final_stage branch 2 times, most recently from cb808ab to a6ff4bf Compare August 19, 2020 22:36
@Xrayez
Copy link
Contributor

Xrayez commented Aug 20, 2020

There are link errors if you try to compile with scons module_fbx_enabled=no, see #39196 (I'm currently compiling with module_assimp_enabled=no in 3.2).

[ 98%] Linking Program        ==> bin\godot.windows.tools.64.exe
[ 98%]    Creating library bin\godot.windows.tools.64.lib and object bin\godot.windows.tools.64.exp
tests.windows.tools.64.lib(test_fbx.windows.tools.64.obj) : error LNK2019: unresolved external symbol "public: static struct Vector3 __cdecl ImportUtils::deg2rad(struct Vector3 const &)" (?deg2rad@ImportUtils@@SA?AUVector3@@AEBU2@@Z) referenced in function "bool __cdecl TestFBX::test_rotation(struct Vector3,enum Assimp::FBX::Model::RotOrder)" (?test_rotation@TestFBX@@YA_NUVector3@@W4RotOrder@Model@FBX@Assimp@@@Z)
tests.windows.tools.64.lib(test_fbx.windows.tools.64.obj) : error LNK2019: unresolved external symbol "public: static struct Vector3 __cdecl ImportUtils::rad2deg(struct Vector3 const &)" (?rad2deg@ImportUtils@@SA?AUVector3@@AEBU2@@Z) referenced in function "bool __cdecl TestFBX::test_rotation(struct Vector3,enum Assimp::FBX::Model::RotOrder)" (?test_rotation@TestFBX@@YA_NUVector3@@W4RotOrder@Model@FBX@Assimp@@@Z)
tests.windows.tools.64.lib(test_fbx.windows.tools.64.obj) : error LNK2019: unresolved external symbol "public: static class Basis __cdecl ImportUtils::EulerToBasis(enum Assimp::FBX::Model::RotOrder,struct Vector3 const &)" (?EulerToBasis@ImportUtils@@SA?AVBasis@@W4RotOrder@Model@FBX@Assimp@@AEBUVector3@@@Z) referenced in function "bool __cdecl TestFBX::test_rotation(struct Vector3,enum Assimp::FBX::Model::RotOrder)" (?test_rotation@TestFBX@@YA_NUVector3@@W4RotOrder@Model@FBX@Assimp@@@Z)
tests.windows.tools.64.lib(test_fbx.windows.tools.64.obj) : error LNK2019: unresolved external symbol "public: static struct Vector3 __cdecl ImportUtils::BasisToEuler(enum Assimp::FBX::Model::RotOrder,class Basis const &)" (?BasisToEuler@ImportUtils@@SA?AUVector3@@W4RotOrder@Model@FBX@Assimp@@AEBVBasis@@@Z) referenced in function "bool __cdecl TestFBX::test_rotation(struct Vector3,enum Assimp::FBX::Model::RotOrder)" (?test_rotation@TestFBX@@YA_NUVector3@@W4RotOrder@Model@FBX@Assimp@@@Z)
bin\godot.windows.tools.64.exe : fatal error LNK1120: 4 unresolved externals
scons: *** [bin\godot.windows.tools.64.exe] Error 1120
scons: building terminated because of errors.

You'll need to conditionally compile tests by defining FBX_ENABLED in SCons I think, see #35963 where module defines are implemented in master. Or just remove the tests...

Co-authored-by: Gordon MacPherson <[email protected]>
Co-authored-by: Andrea Catania <[email protected]>
Co-authored-by: K. S. Ernest (iFire) Lee <[email protected]>

This is a complete rewrite of the importer. It will give more deterministic behaviour and has been sponsored by IMVU inc, over 1 year has gone into the development of this importer to remove the burden of the FBX SDK.

This was my project for 1 entire year and I really enjoyed the opportunity to add to Godot.

Along the road of implementing fixes we implemented fbx pivots, animations and inheritance type handling, which in most cases works properly.

We have implemented animation and mesh skinning too this should work out of the box, if there are issues let us know.

It's designed so that you can expand this with ease, and fix bugs easily too.

It can import from Autodesk Maya and import into Godot, with pivots.

There are bits we could polish but for now this is good enough.

This was sponsored by IMVU, and a special thanks to everyone who supported this project.

Signed-off-by: Gordon MacPherson <[email protected]>

Additional fixes made before upstreaming:
- fixed memory leak
- ensure consistent ordering on mac linux and windows for fbx tree. (very important for material import to be deterministic)
- disabled incorrect warnings for fbx_material
- added compatibility code for /RootNode/ so compat is not broken
- Optimise FBX - directly import triangles
- remove debug messages
- add messages for mesh id, mesh re-import is sometimes slow and we need to know what mesh is being worked on
- correct culling settings on materials
@RevoluPowered RevoluPowered force-pushed the feature/fbx_final_stage branch from a6ff4bf to 9947061 Compare August 20, 2020 17:08
@RevoluPowered
Copy link
Contributor Author

There are link errors if you try to compile with scons module_fbx_enabled=no, see #39196 (I'm currently compiling with module_assimp_enabled=no in 3.2).

[ 98%] Linking Program        ==> bin\godot.windows.tools.64.exe
[ 98%]    Creating library bin\godot.windows.tools.64.lib and object bin\godot.windows.tools.64.exp
tests.windows.tools.64.lib(test_fbx.windows.tools.64.obj) : error LNK2019: unresolved external symbol "public: static struct Vector3 __cdecl ImportUtils::deg2rad(struct Vector3 const &)" (?deg2rad@ImportUtils@@SA?AUVector3@@AEBU2@@Z) referenced in function "bool __cdecl TestFBX::test_rotation(struct Vector3,enum Assimp::FBX::Model::RotOrder)" (?test_rotation@TestFBX@@YA_NUVector3@@W4RotOrder@Model@FBX@Assimp@@@Z)
tests.windows.tools.64.lib(test_fbx.windows.tools.64.obj) : error LNK2019: unresolved external symbol "public: static struct Vector3 __cdecl ImportUtils::rad2deg(struct Vector3 const &)" (?rad2deg@ImportUtils@@SA?AUVector3@@AEBU2@@Z) referenced in function "bool __cdecl TestFBX::test_rotation(struct Vector3,enum Assimp::FBX::Model::RotOrder)" (?test_rotation@TestFBX@@YA_NUVector3@@W4RotOrder@Model@FBX@Assimp@@@Z)
tests.windows.tools.64.lib(test_fbx.windows.tools.64.obj) : error LNK2019: unresolved external symbol "public: static class Basis __cdecl ImportUtils::EulerToBasis(enum Assimp::FBX::Model::RotOrder,struct Vector3 const &)" (?EulerToBasis@ImportUtils@@SA?AVBasis@@W4RotOrder@Model@FBX@Assimp@@AEBUVector3@@@Z) referenced in function "bool __cdecl TestFBX::test_rotation(struct Vector3,enum Assimp::FBX::Model::RotOrder)" (?test_rotation@TestFBX@@YA_NUVector3@@W4RotOrder@Model@FBX@Assimp@@@Z)
tests.windows.tools.64.lib(test_fbx.windows.tools.64.obj) : error LNK2019: unresolved external symbol "public: static struct Vector3 __cdecl ImportUtils::BasisToEuler(enum Assimp::FBX::Model::RotOrder,class Basis const &)" (?BasisToEuler@ImportUtils@@SA?AUVector3@@W4RotOrder@Model@FBX@Assimp@@AEBVBasis@@@Z) referenced in function "bool __cdecl TestFBX::test_rotation(struct Vector3,enum Assimp::FBX::Model::RotOrder)" (?test_rotation@TestFBX@@YA_NUVector3@@W4RotOrder@Model@FBX@Assimp@@@Z)
bin\godot.windows.tools.64.exe : fatal error LNK1120: 4 unresolved externals
scons: *** [bin\godot.windows.tools.64.exe] Error 1120
scons: building terminated because of errors.

You'll need to conditionally compile tests by defining FBX_ENABLED in SCons I think, see #35963 where module defines are implemented in master. Or just remove the tests...

Fixed :) We removed the old tests for now, no point in modifying them right now, more info is here:

They're backed up and saved to be ported into 4.0 rather than added to 3.2 since doctest is not backported.

- Document no longer uses unordered maps
- Removed some usages of &GetRequiredToken replaced with safe *GetRequiredToken() function
- Added parser debugging
- Added ERR_FAIL_CONDS for unsupported mesh formats (we can add these later super easy to do now)
- Add memory debugging for the Tokens and the TokenParser to make it safe
- Add memory initialisation to mesh.cpp surface_tool.h and mesh.h
- Initialize boolean flags properly
- Refactored to correct naming for the fbx_mesh_data.h so you know what data you are working on
- Disabled corruption caused by the FIXME:
- Fixed document reading indexes and index_to_direct vs indexes mode
@akien-mga
Copy link
Member

Superseded by #41979.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants