Please see the attached video for a detailed description. The issue is that assets which reference a mesh created by USD import are modified when that USD static mesh is reimported (legacy + interchange importers). In the case of blueprints and levelsequence references, these are changed to point to a Transient copy of the original static mesh (legacy importer only).
Add the static mesh as a spawnable binding in a level sequence
Save All the assets
Make an obvious visual modification to the source USD file
Reimport the usd file
Notice that both the BP and the level sequence don’t reflect the new mesh. They are modified and now point to “/Engine/Transient/…”. The reimport has broken them.
If I do the same with interchange, the updated mesh is updated everywhere as expected. However the level, BP and level seqeucne are all marked as modified. This is unexpected since they shouldn’t havent changed, only the mesh that the point to has changed.
Sorry for the delay. We’ve looked into this issue and have found the problem. It is not a regression from 5.6, it’s just another code path the previous fix did not take into account. We will have a fix soon that should properly handle all cases. The fundamental underlying issue in the legacy USDImporter is that a reimport will create a new asset instead of reusing the existing one and the reference in the package is not updated correctly, which is why the Blueprint points to the transient asset path.
This issue does not exist in Interchange since a reimport there will reuse the existing asset.
Also what you observe with the reimport of the static mesh dirtying other objects like the Blueprint and LevelSequence is the expected behavior (at least from the viewpoint of UE). The reimport of a static mesh triggers a recreation of the existing render contexts of the static mesh components that reference that static mesh. Internally, that recreation of the render context invalidates the lighting cache which dirties the static mesh component and its owner (actor, BP, level sequence, etc.). This is the correct behavior and will not change.
Hi Anousack, we switched from a custom git branch to use the Partner-VP-5.7 stream since we share our project with some members of the epic solutions team, and we wanted to use the same engine. It would be great if it could be merged to that stream, but if its not feasible let me know and i’ll try apply it as a local patch here. Thanks so much