This decision happened before I joined Epic, but I believe a principle reason was that we wish to be able to modify the physics engine so that it more fits our needs. Some of the things we want to build require deep integration into the physics engine which would be difficult or impossible when using an external physics engine. E.g., destruction, networked physics, etc.
Chaos is actually based on PBD. This comes with problems of its own and is not quite the nirvana one might think, but it works and we’re running with it. One restriction is that we must compete with PhysX in terms of performance on existing scenes, which means we have had to compromise some benefits of PBD for this. E.g., we have linearized the constraint error calculations. One day we will provide options to select between linear and non-linear, but not yet.
Our ultimate goal is to support cross-simulation of rigids, soft bodies, cloth and fluids, but that’s a fair way off. In the meantime we have research projects on various ways to improve simulations, but none are ready for discussion at this time.
You cannot attach rigid bodies to cloth at the moment
But Cloth can react to surrounding collision, the skeletal mesh component has two check boxes that can be used for that in the Clothing section:
CollideWithEnvironment
ForceCollisionUpdate
(Read the tooltip for more detailed information about them)
We do have plans to make this easier, including a way to implement a callback in blueprint. This is still in early development though, so in the meantime the somewhat awkward C++ method is the only way.
This is definitely not true now. Physics is extremely important to Epic and is a core feature in all internal projects. If you follow Fortnite, for example, you’ll notice that more and more physics-based features have appeared with every release.
I believe this issue should be fixed in the incoming 5.1 release
Regarding soft constraints we are not aware of any issues, if you think you have found a bug, submit a bug report to UDN with a way to repro it and we’ll look at it
Thanks
Changing the iteration counts should also work in Chaos. As should reducing the timestep (by enabling sub stepping and setting the max substep tick). If these don’t work, maybe there’s a bug (please post a UDN if so).
We also have a non-linear joint solution that is quite a lot more expensive but is more stable. Currently you can only enable this system-wide (and not per asset for example) via a console variable, but you may find it useful:
The large world coordinates effort is really about having objects with arbitrarily large locations, and not about having arbitrarily large objects. So sadly, single planet-sized objects are still off the table (though you could in principle build one out of streamable pieces). You would need to write your own gravity sim though and apply the forces manually.
One way to prevent shapes from going through (especially if they are moving fast) is to use CCD ( in the advanced collision options )
I can also recommend testing it on different surfaces ( a standard box or other meshes ) and see if the result varies
I would also recommend testing this in 5.1 when it get released as we have since fix many bugs in Chaos
If after that it is still an issue, please submit a bug report through UDN
Our solution is actually fairly similar although we have had to take some shortcuts for performance reasons. One day we will provide options to enable more a advanced/stable solver.
I noticed there’s a lot of talk about the game ReVolt in chat below that video - that was my first game! I wrote the physics engine and various other things Ah the good old days.
Thank you all so much for coming and asking questions, your feedback is invaluable. Also, big thank you to our guests for this AUA session, Credric, Chris & Devon! Your time is very appreciated!
This thread is going to be closed but remain up to be referenced whenever you’d like a refresher, and if your questions weren’t answered please don’t be afraid to post them in the forums.