Feedback on the actual state of the Chaos Physics Engine

Dear Unreal team and readers,

I would like to share with you my feedback on the first approach and use of the Chaos Physics engine and some very strong problems that I personally believe require to be fixed in order to improve the general quality of the simulation and the use of chaos engine as a main driver for physics.

I am a Phycisist and I am working on a Physically based flight simulation game. I do deeply appreciate all the effort done by the entire epic team, and I would like to return you a feedback on the Chaos physics expecially considering that it is listed as 0.1 version, so there is lot of space to improve it now.

It has been very frustrating to work and troubleshoot with the chaos system and I would like to share with you, how the system could be drastically improved in specific scenarios. Ill try to make a list

  • Center of mass definition, the center of mass is defined as “offset”, and is not extremely clear offset respect to what, is it origin of the body? If yes why not define it as “Relative position”? Is it the original center of mass of the body? If yes how am I supposed to know where it is in a complex body? Why I cannot choose to move the center of mass simply by saying it has to be there? - In my game this is extremely relevant, because I want it to be physically accurate, and apply forces to a center that the engine does not recognize as it, is frustrating. There are work arounds for that, but I will now tell you where they fall off.

  • I wanted to implement a landing gear system and use the body constrain to allow for a rotation on specific directions in a Tyre like system. I had my airframe body with his mass and center of mass well defined, I introduced 3 sphere collisions and connected them with the main body, allowing them to simulate physics and to prevent problems with the center of mass I gave them an extremely low mass. The aircraft weight 1000kg the wheel 0.001 this result as you know in a total surface penetration.
    There is no parameter that I have found that allows me to tune this and to be honest this is all but physics… in wich way the collision between a rigid surface and a light body that has to support a massive weight would result in a penetration of the surface?
    The constrain system should join togheter masses and spread them correctly on the surface if I may suggest. A main body of 1000kg constrained to 4 wheels of 0.001 weight exert a force equal to 250.001 kg over each surface (if the axis movement constrains are locked), this would already solve the problem and the math should be computed only once at the begin of the constrain, with an update only when necessary (like destruction of an element). It seems like there is no distinction made between locked body physics and limited or constrained. if a constrain is locked in one direction, it should not simply add an extremely hard force (this may result according to framerate in problems), when a body is “locked” that component of physics should just turn in “move body by x” without calculating forces. I have no idea how this is calculated in your engine, but seems to me that would save lot of un-needed computational resources and make the entire simulation way more stable and precitable.

  • The constrain problem extends also to the rest of the physics. The center of mass cannot be set easily and also setting the offset of the new bodies try to make them coincide with the main body does not works, returning extremely weird position when you set the offset and call back the center of mass to verify where it is.

  • No easy access to physical materials, this is a problem that I have noticed too. We can apply physical materials, but we cannot change their parameters on the “flight”. I assume this is due to the pipeline of the simulation, but this could have work as a workaround some of those problems for me.

  • There is no access to the forces acting on the body, it would be extremely simple to give us access to the vector “Forces acting on the body” like it is for “Physics linear velocity”. I can sum all the forces that I add to the body, but this would not return me the collisions, impulses, gravity acting on my actor, it would be extremely important to have this to allow a better work with the physics. After all the physics begins by looking at the sum of the forces acting on the rigid body, it is strange to not have it =)

  • Add a rotational inertia parameter, I am surprised that there is no way to input our rotational inertia to a body, this makes things weird when you want to add forces

  • Please add for every physics element and input the unit of measure that we are supposed to input, this is already there for mass and thruster force, but not for other quantities… is not always clear if we are adding a force that has to be normalized by the tick frame or not.

  • I have found that when my propeller generate a constant minimal force (is rotating when engine is on), the physics system is not capable of keeping the body locked to the ground.

  • Make more clear when we are working with physics and when with chaos… I have found informations that the 4.26.1 only use chaos, so I assume this is the one that I am using, but when I create a phys material I cannot us chaos phys material, but I have to use phys material…

  • LOT of space for documentation improvement… all the documentations about the phys functions (and also others) would benefit in a better explanation and more precision. Center of mass does not tell you anything about what you are off-setting from, how is someone suppose to give an “offset” if you do not know what you consider the origin??? At least change it in relative position… and maybe give a access to something in the viewport that allows to visualize the center of mass position in real time for the bodies so you can change it in the viewport itself, il would solve lot of problems. Be more specific with the unit of measure… when I add a force I do not know if you want to have the force in N or in N/s or N*s or what do you expect from that specifically.

At last keep in mind that I am a “newbie” of UE4 and maybe there are solutions that I am not aware of, or error that I am doing, but as a person that is involved in learning how to use your phys engine unbiased this are the problems that I am personally facing despite my “academical preparation as a physicist”. I hope this feedback could be helpful and beneficial for the improvement of the Quality of life and the success of the Unreal Engine =)