Naturalis v1.3: Advanced Soft Physics
The features here correspond to the toggles in the main plugin window, and can be enabled/disabled by default in user preferences.
Local Distortion Physics and Depth Physics both adjust soft physics dynamically (up to every physics update per every soft physics joint). This has a slight performance impact which can be detrimental to the experience if you’re not hitting a stable framerate.
Mesh Pressure
Mesh pressure expands the soft physics mesh as soft joints are pushed towards the center of the mesh. It automatically compensates for volume loss in collisions by physically expanding the soft physics mesh by an appropriate amount.
For a demo of the effect, see the video in the v1.3-beta1 update post on the Hub.
Currently the only way to customize mesh pressure is with the Fat Pressure Multiplier parameter:
It is a multiplier on the amount of pressure force (and therefore amount of expansion) that soft physics joints can receive. By default, the parameter’s value gradient is set up so that soft physics joints near the center of the area expand more easily, while those around the outer edge expand much less. The low outer multiplier ensures that the pressure force doesn’t create a sharp edge between the area covered by the soft physics mesh and the skin just outside that area.
Depth Physics
Depth physics is the change of soft physics parameter values based on the depth of soft joints relative to the center of the mesh. A parameter’s value can be configured to either increase or decrease as the soft joint moves closer to the center, or increase or decrease as it moves further from the center. Depth Physics is very similar to Local Distortion Physics, the measurement that drives the parameter’s value to change is just different.
Each supported parameter has the following sliders:
Term | Definition |
---|---|
Effect | How much the parameter’s value changes (per unit of distance) when a joint moves closer to the center (depth in) or further from the center (depth out). A positive value means the parameter’s value will increase, a negative value means the parameter’s value will decrease. |
Sensitivity | The ease at which the effect is applied when there’s only a small amount of change in depth. A value of 1 means the effect is applied linearly: the parameter’s value will change proportionally with depth. A value of 0 means the effect is applied along a steep S-curve, making the change noticeable only when there’s a very significant deformation in the mesh. |
Default Settings
As with Local Distortion Physics, a lot of behaviors are possible with custom settings. By default:
Physics Parameter | Description |
---|---|
Fat Spring | Increases with depth in, decreases with depth out. Simulates how the mesh will resist compression in the depth direction the more you compress. |
Fat Damper | Decreases with both depth in and out. |
Fat Mass | Increases with depth in to emphasize how compressing an area increases the density of that area, and decreases with depth out to reduce density. |
Fat Distance Limit | No effect by default. |
Fat Pressure Multiplier | No effect by default. |
Fat Collider Radius | Increases with both depth in and out. As with Local Distortion Physics, the idea here is to reduce clipping. |
Fat Collider Depth | No effect by default. |
Fat Collider Friction | Increases with depth in, making colliders that are pushed in slightly more sticky due to the force pushing them in. |
Local Distortion Physics
Local Distortion Physics enables soft physics to react to local skin compression and stretching. It changes the values of soft physics parameters on individual soft joints based on the distances of those joints from their neighboring joints. When the distance decreases, the mesh is compressing at that joint, and when the distance increases, the mesh is stretching at that joint - in other words, there’s local distortion in the mesh.
This video from v1.0 provides an overview of the feature in practice:
Each supported parameter has the following sliders:
Term | Definition |
---|---|
Effect | How much the parameter’s value changes (per unit of distance) when a joint’s distance from its neighboring joints decreases (compression) or increases (stretching). A positive value means the parameter’s value will increase, a negative value means the parameter’s value will decrease. |
Sensitivity | The ease at which the effect is applied when there’s only a small amount of change in distance. A value of 1 means the effect is applied linearly: the parameter’s value will change proportionally with distance. A value of 0 means the effect is applied along a steep S-curve, making the change noticeable only when there’s a very significant deformation in the mesh. |
Default Settings
The default settings are mostly a result of experimentation. There’s a very wide range of possible physics behaviours you can achieve by adjusting the LDP parameters along with the basic offsets and gradient adjustments (see Physics Customization.
Physics Parameter | Description |
---|---|
Fat Spring | Increases with both stretching and compression. The idea is simulate how the mesh resists changes in shape beyond a certain limit. |
Fat Damper | Decreases with both compression and stretching. This slightly exaggerates the jiggle physics in animations, but in a way that prevents the joints from oscillating too much when in the calibrated “resting” shape. |
Fat Mass | Increases with compression and decreases with stretching. The idea is to facilitate “rippling” of the physics mesh. |
Fat Distance Limit | No effect by default. |
Fat Pressure Multiplier | No effect by default. |
Fat Collider Radius | Increases with compression and stretching. This helps reduce clipping through the gaps between colliders. |
Fat Collider Depth | Increases with stretching. This makes colliding objects bury themselves in the mesh the more force is being applied that stretches out the mesh. |
Fat Collider Friction | Increases slightly with stretching in order to reduce slipping when an object is pushing against the mesh. |