diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-05-16 00:34:40 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-05-16 00:34:40 +0400 |
commit | 1df12416cac4e9c0339667626a41529a6a597e26 (patch) | |
tree | 9d5177b001f9e043fcd9bc4c521ae6197bfa2353 /source/blender/bmesh/intern | |
parent | 85530846b66c3e206dee82a1eb64d28a924bfc9e (diff) |
bmesh, grid fill tool.
This uses 2 edge loops and fills them with a grid, taking into account curvature of surrounding edges.
Access from face menu: Ctrl+F,G
http://www.graphicall.org/ftp/ideasman42/grid_fill.png
Diffstat (limited to 'source/blender/bmesh/intern')
-rw-r--r-- | source/blender/bmesh/intern/bmesh_opdefines.c | 24 | ||||
-rw-r--r-- | source/blender/bmesh/intern/bmesh_operators_private.h | 1 |
2 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/bmesh/intern/bmesh_opdefines.c b/source/blender/bmesh/intern/bmesh_opdefines.c index 53e01b94712..88fc7652885 100644 --- a/source/blender/bmesh/intern/bmesh_opdefines.c +++ b/source/blender/bmesh/intern/bmesh_opdefines.c @@ -530,6 +530,29 @@ static BMOpDefine bmo_bridge_loops_def = { }; /* + * Grid Fill. + * + * Create faces defined by 2 disconnected edge loops (which share edges). + */ +static BMOpDefine bmo_grid_fill_def = { + "grid_fill", + /* slots_in */ + {{"edges", BMO_OP_SLOT_ELEMENT_BUF, {BM_EDGE}}, /* input edges */ + /* restricts edges to groups. maps edges to integer */ + {"mat_nr", BMO_OP_SLOT_INT}, /* material to use */ + {"use_smooth", BMO_OP_SLOT_BOOL}, /* smooth state to use */ + {{'\0'}}, + }, + /* slots_out */ + /* maps new faces to the group numbers they came from */ + {{"faces.out", BMO_OP_SLOT_ELEMENT_BUF, {BM_FACE}}, /* new faces */ + {{'\0'}}, + }, + bmo_grid_fill_exec, + BMO_OPTYPE_FLAG_NORMALS_CALC | BMO_OPTYPE_FLAG_SELECT_FLUSH, +}; + +/* * Edge Loop Fill. * * Create faces defined by one or more non overlapping edge loops. @@ -1701,6 +1724,7 @@ const BMOpDefine *bmo_opdefines[] = { &bmo_extrude_face_region_def, &bmo_extrude_vert_indiv_def, &bmo_find_doubles_def, + &bmo_grid_fill_def, &bmo_inset_individual_def, &bmo_inset_region_def, &bmo_join_triangles_def, diff --git a/source/blender/bmesh/intern/bmesh_operators_private.h b/source/blender/bmesh/intern/bmesh_operators_private.h index 2a67407b261..bce599736d4 100644 --- a/source/blender/bmesh/intern/bmesh_operators_private.h +++ b/source/blender/bmesh/intern/bmesh_operators_private.h @@ -65,6 +65,7 @@ void bmo_extrude_edge_only_exec(BMesh *bm, BMOperator *op); void bmo_extrude_face_region_exec(BMesh *bm, BMOperator *op); void bmo_extrude_vert_indiv_exec(BMesh *bm, BMOperator *op); void bmo_find_doubles_exec(BMesh *bm, BMOperator *op); +void bmo_grid_fill_exec(BMesh *bm, BMOperator *op); void bmo_inset_individual_exec(BMesh *bm, BMOperator *op); void bmo_inset_region_exec(BMesh *bm, BMOperator *op); void bmo_join_triangles_exec(BMesh *bm, BMOperator *op); |