diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2014-12-02 17:56:30 +0300 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2015-04-20 13:22:10 +0300 |
commit | 83b20c7ddfe60ca779f53a0d337cc1b7854fb14c (patch) | |
tree | 7570d5ccd0e7b3a0d3272dbe10143a04f5a3ee89 /source/blender/bmesh/intern/bmesh_strands.h | |
parent | 0e06a6016870d8909e0bba9c5a5e6366840a7825 (diff) |
Enforce hair constraints (constant segment length) after applying a tool.
Currently uses the same approach as old particle edit mode (rescale
hair segments from the root on). A more sophisticated approach using
least-square error minimization of the displacement could yield better
results.
Diffstat (limited to 'source/blender/bmesh/intern/bmesh_strands.h')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_strands.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/bmesh/intern/bmesh_strands.h b/source/blender/bmesh/intern/bmesh_strands.h index 7df7eb65493..96d5fa9f8aa 100644 --- a/source/blender/bmesh/intern/bmesh_strands.h +++ b/source/blender/bmesh/intern/bmesh_strands.h @@ -64,9 +64,15 @@ typedef enum BMStrandsIterType { #define BM_ITER_STRANDS(ele, iter, bm, itype) \ for (ele = BM_strand_iter_new(iter, bm, itype, NULL); ele; ele = BM_iter_step(iter)) +#define BM_ITER_STRANDS_INDEX(ele, iter, bm, itype, indexvar) \ + for (ele = BM_strand_iter_new(iter, bm, itype, NULL), indexvar = 0; ele; ele = BM_iter_step(iter), (indexvar)++) + #define BM_ITER_STRANDS_ELEM(ele, iter, data, itype) \ for (ele = BM_strand_iter_new(iter, NULL, itype, data); ele; ele = BM_iter_step(iter)) +#define BM_ITER_STRANDS_ELEM_INDEX(ele, iter, data, itype, indexvar) \ + for (ele = BM_strand_iter_new(iter, NULL, itype, data), indexvar = 0; ele; ele = BM_iter_step(iter), (indexvar)++) + typedef struct BMIter__vert_of_strand { BMVert *v_next; BMEdge *e_next; |