利用者:Lucarood/Cloth

提供: wiki
移動先: 案内検索

Cloth Development

On this page you can follow all my developments on the Cloth Simulator, and related workflow improvements. I'm currently working on the items described in my proposal.

You can watch all my demo and test videos related to these developments on my Vimeo collection.

Any updates on the development will be posted or linked in this page.

Development Checklist

Implementation Notes

Mass-Spring Model

All proposed changes to the mass spring model have been successfully implemented, however, there is one small limitation regarding the angular bending springs. Only spring and damping forces were possible to implement for angular bending, but not their derivatives. This is the case because the derivatives for angular bending with polygons of more than three vertices would introduce asymmetry to the solver matrix, and the integration method currently used in Blender (Preconditioned Conjugate Gradient) requires the matrix to be symmetric.

What this means in practice, is just that the higher the bending forces, the more unstable the simulation will get, but this can easily be mitigated by increasing the number of substeps. Furthermore, this issue is only really apparent on materials with very high bending forces, such as papers or metals, while the bending forces for most types of cloth are far too low to cause issues with any reasonable amount of substeps.

The derivatives could potentially be included in the computation, if another integration method that doesn't rely on symmetry, such as Gauss-Seidel (slower), was implemented. However, I don't think the effort required to implement another integrator, coupled with the lower overall integration performance, would really be justified simply by the ability to compute the angular derivatives. For all we know, the increased simulation cost caused by an integrator that can handle asymmetry might even be higher than the cost of increasing the substeps to eliminate the bending instability.

Plasticity

I had previously mentioned here that plasticity was being reset in certain situations, but I have since fixed that issue.

Surface Deform Modifier

I have considered this completed, as the Modifier's initial functionality is fully implemented, and it is ready to be tested/evaluated for inclusion into master. This does however not mean no further development will occur, as there are still features I wish to add, such as the alternative UV binding method, which will enable better binding of complex geometry, and will most likely also improve interpolation behavior.