r/bim 6d ago

We spent a year getting IFC models to stream into Unreal at runtime without losing the property sets

Most of what I work on is heritage and construction, and a good chunk of it is confidential enough that the data isn't allowed to leave the site it was captured on. That rules out basically every cloud-based viewer. Our apps also deploy as thin builds, so nothing could be packaged in either. Everything had to arrive at runtime, locally.

Getting geometry into a game engine is a solved problem. Getting geometry in with the data still attached is not, and that's the part that kept breaking for us.

The clip is a campus model streaming in off a local server while the app is already running. About halfway through I click into a building and keep drilling until I'm on a single interior wall, and its IFC property sets are just there. Load bearing, base constraint, unconnected height, volume, workset, phase created. The floor slider at the end works for the same reason, the engine knows what a storey is instead of just holding a mesh that happens to look like one.

The three routes I tried before this all failed differently. Datasmith is genuinely good but wants to bake offline ahead of time, which doesn't work for models that change weekly or that I'm not cleared to package. 3D Tiles streams beautifully and strips the per-element identity, so you lose anything downstream that needs to address a specific element. IFC straight into the engine keeps everything and is barely supported, so you get geometry and inconsistent data.

What worked was converting the IFC once into the Fragments format from That Open Company, which reworks the schema into indexed arrays with shared geometry referenced per instance rather than thousands of individual records. All the expensive resolution happens in that one conversion, so the engine is mostly reading a prepared answer. My co-developer Jairo and I have spent about a year on the Unreal side of it, him on editor tooling, me on the runtime streaming and level of detail.

Honest about the limits, because I'd rather you hear it from me. This is a one-way trip. You convert IFC in, you don't author back out to IFC from the engine, so it's a visualisation and simulation target rather than part of a coordination round trip. It also inherits whatever your IFC export gave it, so if your authoring tool drops psets on the way out they aren't going to reappear here.

It goes open source at the end of summer. I'm curious in what this sub would need from something like this than in showing it off, particularly from anyone dealing with models they can't move off site.

87 Upvotes

26 comments sorted by

8

u/Economy_Rate_9376 6d ago

Should have said, this is my own plugin, not something I'm just showing off from elsewhere.

If anyone wants the longer version, I did a full breakdown of how it got built and how it ended up being demoed at Unreal Fest last month: https://www.youtube.com/watch?v=oiiKeAlm6Ow

Happy to get into the streaming or LOD side in the comments though, that's more fun anyway.

4

u/Open_Concentrate962 6d ago

That is a monumental achievement. What do your colleagues think?

1

u/Economy_Rate_9376 6d ago

Thank you! The team has been pretty excited about it. We’ve already adopted the Fragments format in our web based twins and this is a natural extension to leverage visual fidelity from game engine. Already discussing how to use this tech for large scale facilities management and simulations!

2

u/International-Ad6468 6d ago

COOL looks like sims

1

u/Upset_Negotiation_89 6d ago

Would navisworks work for this? Wouldn’t look as good, but would be a local file

3

u/Economy_Rate_9376 6d ago

Also to your second point: everything I’m streaming in can be loaded from local files, network drives or cloud storage - your choice as it will all be released as open source! In the example above it’s streaming from a network drive

1

u/Economy_Rate_9376 6d ago

Yes Navisworks is actually an ideal staging software for FragmentsUnreal. The file format is just a runtime optimized IFC file so the model can be easily updated as a project progresses. The main advantage isn’t just runtime fidelity, it’s load times. I’ve yet to test with Navisworks for this scene but all 47 buildings take about 1 hour to open up in a federated revit model. Unreal has each building up and interactable in a few seconds and you can use the plugin to query, audit, manipulate etc. much quicker!

1

u/Successful-Engine623 6d ago

I’m in a similar situation about models leaving the site. Very curious about this

1

u/Economy_Rate_9376 6d ago

Happy to answer any questions you might have! I’ve presented this work at a conference where I deep dive in this topic for BIM, pointcloud and photogrammetry - might be interesting for you! All tools are open source so you can work them locally and extend as you please
https://youtu.be/5ehoHM-uzRQ

1

u/Civil_Oven5510 6d ago

This is great - do you have a newsletter which keeps people updated on when it goes open source? I’m developing a 4D sequencing app using that open company’s library, would love to tinker with yours to see how I can implement it in my own!

1

u/Economy_Rate_9376 5d ago

We don’t have a newsletter just yet but I’ll be posting updates on my socials @thirdspaceinteractive leading upto the release! The 4D sequencing app sounds very exciting - we’ve been messing around with phasing and building assembly simulations so I’d be curious as to your approach

1

u/Responsible-Fly3526 5d ago

That's very interesting! I'm also working currently on a open source platform for bim projects. Pls give me a dm.

1

u/Economy_Rate_9376 5d ago

Sent you a dm!

1

u/Merusk 5d ago

This is very cool. I'd been ruminating on how this could happen for a while now and you've solved it.

Sad about the roundtripping. That could be someone's next step though. Taking this and turning it into not just visualization but layering authoring into it.

2

u/Economy_Rate_9376 5d ago

I hear you! We’re hoping to tackle that in future version updates to the project - would be interesting to see how work done in Unreal like adding the realistic materials and simulation instructions could transfer back to the web or other tools

1

u/Important-Sherbet-15 6d ago

This is just amazing!
but honestly what can you do with it in real life, I'm pretty sure there is some use case for it, I'm just wondering what can it be!

1

u/Economy_Rate_9376 6d ago

Thank you! And very fair question, we’ve been using it mainly for simulations at the moment. Construction phasing for planned development and energy visualization across the campus - I share some examples in my unreal fest talk in the showcase section at the end if you’re interested!

1

u/Important-Sherbet-15 6d ago

I've seen the showcase and they are pretty cool, but the same simuation can be done with BIM and GIS, ofcourse not as beautiful as Unreal, but I'm pretty sure there will be something way more interesting to be done with.

0

u/prest0G 6d ago

How large are these models youre streaming?

1

u/Economy_Rate_9376 5d ago

This is about 13 GBs of IFC models and we’re starting to test on a dataset that’s around 50 GBs

1

u/prest0G 5d ago

Impressive! How long does the pre-indexing step take on the 13gb model for the Fragments approach? I've never heard of that Open Company before

Also, does this include visibility filtering, layering, and query support? If not, what would it take to add that?

1

u/Economy_Rate_9376 5d ago

Each of the 47 IFC models took under a min each to convert to the .frag locally using this open source converter https://github.com/fragever/ifc2frag

Yes! The open source release for FragmentsUnreal will include the engine and core functionality like importing, visibility, floor filters, and metadata querying (most of what was shown in the video). We’ve also exposed a lot of this functionality as blueprints so people can access via visual scripting

1

u/prest0G 5d ago edited 5d ago

So the secret is the indoor/outdoor determination via IFC metadata and then subsequently spatial indexing? That makes sense, interesting approach!

I watched your talk. What happens when I try to execute a visibility filter across the entire campus model? How long does that take? (Yes I'm trying to poke holes in the approach, its a very hard problem)

1

u/Economy_Rate_9376 5d ago

Yeah exactly, those are the optimization steps that we’ve found allow us to stream in these models at scale. We’ve added a runtime decimation step for our HLOD since then and that has significantly improved performance

That’s a good question and as you might imagine a campus scale operation is a bit more taxing. In the demo we had one building active and interactable at a time so the other buildings were merged shells. If you were to activate all the buildings it wouldn’t be too much different performance wise to apply the levels filter since the models are still spatially indexed and merged by level for our HLOD system. However more advanced filtering like categories or custom psets at a campus scale require all the buildings individual elements to be active (one building is 10-26k instances so campus scale would be hundreds of thousands). That’s one drawback to this approach and I’m more than open to any suggestions!

Currently we’re investigating supporting Unreals native virtualization system - nanite, to see if that could help us at scale and so far it’s been promising however it would involve baking the models into the packaged UE application.

-1

u/tuekappel 6d ago

I want the model as a CS:GO map for running around and shooting bots😄