Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Tönne <lukas.toenne@gmail.com>2014-12-02 17:56:30 +0300
committerLukas Tönne <lukas.toenne@gmail.com>2015-04-20 13:22:10 +0300
commit83b20c7ddfe60ca779f53a0d337cc1b7854fb14c (patch)
tree7570d5ccd0e7b3a0d3272dbe10143a04f5a3ee89 /source/blender/bmesh/intern/bmesh_strands.h
parent0e06a6016870d8909e0bba9c5a5e6366840a7825 (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.h6
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;