Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
135 stars 2 forks source link

Trying to import some IFC 3d model files results in crashes or exceptions #1219

Open Nytra opened 8 months ago

Nytra commented 8 months ago

Describe the bug?

I have tried to import a number of different IFC 3d model files which are typically used for storing models of buildings and can be opened in BIM (building information modelling) software like Autodesk Revit or in Blender via a plugin.

Some of these files import correctly, some cause import exceptions, and some will just crash Resonite (Unity crash).

I think that Resonite is meant to support these files via Assimp (judging from IFC being in the supported 3d model formats list in the log file) so they should ideally be able to be opened without exceptions or crashes.

To Reproduce

Try to import some of the linked files.

air-terminal-element.ifc (causes Unity crash)

air-terminal-library-object.ifc (causes import exception without crashing)

TallBuilding.ifc (seems to import correctly)

Expected behavior

Resonite does not crash when trying to import these. I think if there is a problem during the import it should just display the error without crashing.

Screenshots

2024-01-22 08 00 47

Screenshot 2024-01-22 080200

Resonite Version Number

2024.1.19.687

What Platforms does this occur on?

Windows

What headset if any do you use?

Quest 2, Desktop

Log Files

DESKTOP-H976HO2 - 2024.1.19.687 - 2024-01-22 07_34_16.log

Additional Context

There are a bunch of different versions of IFC files like IFC 2x3, IFC 4.0, IFC 4.3 so it may be that some of these versions are not supported.

You can get around this problem by first opening the file in another program and converting it to a different format like FBX.

Reporters

Nytra (discord: nytra)

Frooxius commented 8 months ago

This is very likely an issue with the Assimp library, since we don't really do any of our own custom parsing of processing for these models.

It would help us if you'd be able to reproduce and report it directly to them here (https://github.com/assimp/assimp), otherwise we'll have to handle that on our end, which will take longer before we get to it.

Nytra commented 8 months ago

The thing is I think Resonite is using an older version of Assimp (AssimpNet 5.0.0-beta1) whereas latest from official Assimp repo is 5.3.1. It might be fixed on latest Assimp but I'm not sure.

Frooxius commented 8 months ago

Assimp and AssimpNet are different libraries, so you can't compare their versions like that. AsismpNet is a wrapper, which has its own versioning scheme, separate from the main library.

Version of Assimp we're using is currently 5.3.0, which isn't that far behind: https://github.com/Yellow-Dog-Man/assimp

I don't see much that would relate to IFC. In either case, it'd be useful to see if this replicates with the latest one from main and report it directly to them.

epicEaston197 commented 8 months ago

In the case of unity crashes I think it would be beneficial to also upload the player.log if you still have it and if you don't replicate the behavior and then upload the player dot log afterwards that might have some additional information that might help the issue be solved

Nytra commented 8 months ago

unity_crash_files.zip

Unity crash files attached. Error seems to come from Assimp so I will try to figure out how to report it to them.

Nytra commented 8 months ago

I created the issue in Assimp repository https://github.com/assimp/assimp/issues/5433

Nytra commented 3 months ago

Assimp recently added better IFC schema validation to their master branch to address this. Apparently IFC schema 4 is not meant to be supported. So once Resonite's Assimp is updated next this can probably be closed.

https://github.com/assimp/assimp/issues/5433#issuecomment-2176014666

https://github.com/assimp/assimp/commit/5c2a33f23019260000d3bbfb2a0db0e606a11770

shiftyscales commented 3 months ago

@ProbablePrime @Frooxius - I imagine we'd likely want to wait until the next release pushed by assimp before we upgrade, but for now, removing the third party label as now that the third party aspect of it is resolved- it'll just be a matter of us updating the library / integration on our end to use the patch provided when we have the time for it.