Currently, if a force field is created with a //Surface// shape, particles (and hair and cloth) will be attracted or repelled along the normals of the mesh. With a positive force, particles are always repelled away from the nearest face. This works well for surface meshes, i.e. where the faces are two-sided. However, it is not useful for simulating solid meshes.
For a solid mesh, the faces should be considered to be single-sided: the direction of the force should not change when the particle crosses the face, as shown in B in the following diagram.
- A: Current behaviour: force direction always reverses at face boundary and at midpoint between faces. Particles can get trapped inside solid objects.
- B: Proposed behaviour: force direction is consistent across face boundary, but still reverses at midpoint. Allows particles to be repelled from surface and pushed out from inside.
This `.blend` file demonstrates the problem: if the particles or cloth end up inside the cube, they never escape. Under this proposal they should be repelled, because the force field strength is positive.
If this is option is implemented, it could be exposed as a new option, or the //Both Z// / //+Z// / //-Z// options could be reused for it.