(NB – we bear the City of Pittsburgh no ill will / Batman did it first)
In order to ensure performance, we’ve worked hard to produce a complex Physics simulation based on rigid body physics that can calculate the effect of impacts on it. Starting in 2D and moving to 3D.
We are looking to then move this over onto the GPU threads to liberate the CPU for some other tasks.
This approach will allow us to accurately (as well as tune to be fun!) present change and damage to an environment in a computationally efficient manner. By using multiple single threads we can then scale this simulation and ensure the experience of physics in the engine is both consistent and can scale up to factor in a range of elements.
Like many other components, it can be tuned, enabled / disabled and can draw in values within the existing vowelised environment. It can also be augmented with the profiling service – to allow game or simulation driven systems to then augment the change in the scene. For instance whether a pathway is clear, or only now passable to certain types of vehicle…which in turn can propagate back into other systems and decisions based on cost, mitigation or time.
Debris can quickly pile up and continues to interact whilst still comfortably running at 63FPS or higher even when the scene is nearly filled with dynamically simulated voxels.
This particular demo also lets you see how different particles can penetrate, and others cannot – within following a fault line in the structure of the different layer – whereas later and successive shots are attenuated and or don’t penetrate as far – with randomised values able to allow us to see how a series of effects interface with the voxel scene.
From 2D > 3D
Within the single threaded development build we can now target and strike at specific points as well as see the forces propagate out across the structure and the impact on the overall structure as it strains. Whilst still a little “wobbly” this is simply because we want to work on procedural generation of different components of a building – and their representative values.
We know from speaking to ANSYS and other FEM models that there are a lot of uncertainties in the data used – and that the simulation can quickly go wrong if even small elements (especially anchoring points) aren’t correctly modelled. This is something that’s always a challenge (where’s the data coming from and is often still an estimation!) but less so for the gaming side of things or if a representative approach is taken.
And a quick gif to show the progress…
This also fell over a birthday… so this seemed obligatory…
Bridging the gap
So one application for this is in games – where it would be interesting to simulate the collapse of bridges and structures (without going fully red faction!). To that end we had a think about some large and famous cities with a lot of bridges – and Pittsburgh popped up – as it’s incredibly famous for it’s bridges.
and also for the filming of the Batman – Dark Night Rises
So we have been having a look at some open source models based on the Central business district and what happens if a bridge were to be closed or demolished. (Mainly because of the bridges but also because of the model being available).
That’s all for this post – we will have more updates to share once we’ve completed some more work on the Generative terrain (including the supporting structures and internals).