Reality Composer Pro exporting larger and larger .reality files for each reference usage

We've noticed something kind of odd related to the exported .reality file in Reality Composer Pro 3. Our exported .reality file seems to be increasing a lot in size just by referencing an imported asset or another entity in the scene. This contradicts everything we previously knew about references. Essentially it seems like our assets are being copied or duplicated on each export.

Before you dive into the description of the issue, yes, I've already created feedback about this. I think it's a bug, but am willing to be corrected if this is an expected, if somewhat odd, behavior. The feedback number is FB25253483

I did a quick test with a single model (Earth.usdz from the RCP2 content library.

Project A: RCPExportDupeIssues

Phase 01

  • Created new project in RCP 3
  • Imported the file and added it to the default world entity
  • Generated an Xcode linked project and used RCP3 to run the app in the simulator (this runs through the entire .reality export process.)
  • Result: 48.4 MB

Phase 02

  • Created AnotherScene entity
  • Added the imported earth model to it
  • Used RCP3 to run the app in the simulator
  • Result: 64.5 MB

Phase 03

I thought maybe if I added the earth import to a single entity and added that entity to the other two scenes, I might get some savings. This also increased the overall export size.

  • Created EarthEntity
  • Added the imported earth model to it
  • Used RCP3 to run the app in the simulator
  • Result: 80.7 MB

Overall result: an RCP3 project with a single imported Earth asset, used in three otherwise empty scenes, ends up with a massive 80 MB.

I even tried deleting the Earth import reference in the first two scenes. Even with only the Earth entity present, the export was still 80.7 MB.

Project B: RCPExportNoDupes

I tried a second project without ever adding the Earth import file to the first two scenes. I created a dedicated EarthEntity and only added that to the other two scenes.

  • Created new project in RCP 3
  • Created EarthEntity
  • Imported the file and added it to EarthEntity
  • Added `EarthEntity to the default world entity
  • Created AnotherScene entity and added `EarthEntity to it
  • Generated an Xcode linked project and used RCP3 to run the app in the simulator (this runs through the entire .reality export process.)
  • Result: 80.7 MB

Apple: I provided zipped versions of the exports in the feedback item (FB25253483)

Hi @JosephSimpson,

This appears to be a bug, and I've passed your feedback along to the engineering team so they can investigate a fix. Thanks for bringing this to our attention!

In the meantime, you should be able to work around this by exporting everything from a single root scene. To do so, create a scene/entity that contains everything your app uses. Then, create a Reality Export Settings asset in your project (New > Settings > Reality Export Settings), turn off Export All Entities, and add only that scene to its Assets list. Finally, click Export Reality File. In my testing, instance/prototype assets are stored once in the resulting file, preventing its file size from increasing erroneously.

Let me know if you run into any issues with that workaround, and thanks again for the feedback!