I would like to show you a plugin that I am currently developing. Magic Destruction Toolkit fully integrates NVIDIA Blast with Unity.
At the moment, using it you can:
Create destructible assets right inside the engine. There are several fracturing modes at your disposal (clustered, clustered with scaling, uniform and cutout). You can set as many (within reasonable) levels of destruction as you want and flexibly configure each of them: fracturing mode; the number of chunks at a given level; particle systems used for impacts and trails; pool sizes for particle systems. And many more are planned to be added, but more on that later.
When you fully set up all the destruction levels, the plugin bakes the asset data and saves a set of prepared meshes in a special format, taking up the minimum amount of space (depending on the complexity of the asset), and when the asset is placed on the scene, a pool of objects is created that are later used in runtime.
I have implemented a debug mode that allows you to view chunks at all destruction levels separately, as well as see the current graph of chunk connectivity (it is built only for the top destruction level and is processed by the Blast automatically).
And of course, destroy created assets in the engine with minimal impact on performance. When placing a destructible family, you can: select the loading priority (all objects are loaded when the game starts); select the simulation space (local or global); determine whether the object will check itself for the presence of anchor chunks.
Destructible Family Parameters
Also, I have implemented a simple algorithm for inflicting impact damage, this is how it looks at the moment, all of this, of course, will be refined.
And now what is planned to be implemented:
Blast Stress Solver integration;
algorithm for cleaning or deactivating unused chunks;
export and import of NvBlast assets;
improvement of the built-in asset editor;
support for more than two materials on a destructible object;
compound colliders for chunks with concave meshes;
and many more little things that will improve the experience of using this plugin.
Things that are under research:
Integration of the NvBlastExtRT library. In theory, it will allow you to destroy an object right at runtime, without baking;
using boolean operations on chunk meshes for more optimal use of scene resources (the maximum number of chunks will be on the scene only when the object is completely destroyed).
That’s all for now, I will be grateful for your comments and suggestions for improvement.
Unfortunately I have never used RayFire, so I cannot compare this two plugins directly. I think one of the obvious advantages is the native integration with GPU RigidBodies. Also there were people who asked me to give an early version of the package to test, as RayFire was inconvenient for them.
In terms of platform compatibility, this plugin should work on all platforms supported by PhysX and Blast. I need to test this to give an accurate answer.
Also, I must say that at the moment the development of the MDTK is paused, as currently I am doing the maintenance of the NVIDIA PhysX Plugin and planning to finish it by the end of April.
Would it make sense to provide runtime fragmentation of an object based on a seed? That way a seed could be passed over the network for identical fragmentation events decided upon at runtime.
I think yes, that may make sense, but in my opinion it would be much more reliable to pass over the network some kind of intermediate data such as voronoi sites (but obviously this will not be the most optimal way).
Hi! Recently I was asked a question about the release date of the plugin on our Discord server. So I can say that the approximate public beta release date is the Q1 2022.
Force earn physics on GPU? This is the dream of many people!
However, it will not be easy to beat the Rayfire in terms of convenience, flexibility and number of tools. I use it myself and this millet is great. But the calculations on the central processor(
Unfortunately, I still can’t say exactly how this two plugins differ, since I have never used Rayfire and have not yet fully decided on the set of features that will be present on the release. But I can say that this is becoming quite a frequently asked question and soon I will just write a list of implemented features so that users can determine the differences themselves and choose the plugin that suits them.
In order to find out, we need to conduct tests on the same meshes and compare the performance head-on, someday someone will do it… I think it will definitely be more performant (at least on Nvidia graphics cards) when I integrate PhysX Plugin support.