6bdff7e2ad
fix [ #36481 ] When "Rip Edge" cannot be completed, Blender crashes weirdly
2013-08-19 10:00:17 +00:00
19d3e230e6
improved BM_face_copy_shared to copy from more possible connected loops and add filter function (not used yet).
2013-08-18 11:44:51 +00:00
1677758e45
new bmesh queries BM_face_exists_overlap, BM_face_exists_overlap_subset
...
the subset version of the function checks if any faces has all its verts in the given array.
also made some additions to linklist functions (arena and pool versions of append).
2013-08-16 13:02:34 +00:00
4770848871
code cleanup: bmesh use 'const' for query functions.
2013-08-03 16:37:23 +00:00
31761f5e5b
code cleanup: replace bmesh_radial_face_find -> BM_edge_in_face
2013-08-03 15:30:57 +00:00
cdc315a69b
bmesh optimization (noted as todo), avoid recalculating normal every time BM_face_legal_splits() runs,
...
assume normal is valid (assert when its not).
2013-07-29 06:04:09 +00:00
57ce6d1470
old todo, rotate around individual origins now supports connected face/edge islands.
...
previously this gave very odd/annoying results, see bug reports [#36134 ], [#35419 ]
2013-07-22 14:50:38 +00:00
7398c49776
add support for BM_mesh_calc_face_groups to use vertex connectivity (not currently used yet)
2013-07-22 08:12:50 +00:00
27734f5bec
fix/improve normal calculation, noticed when checking on the previous bugfix.
...
- normals depended on the meshes rotation, so you could rotate Suzzane and in some cases one of the eye normals would be flipped.
- normals depended on the meshes placement in relation to the meshes center, now find the outer most face by each face-island center.
2013-07-08 13:30:11 +00:00
0ff22044cd
Support for bridge tool subdivisions, smoothing and shape along the profile.
...
also added the underlying subdivision as a standalone operator in the edge menu, named: subdivide edge-ring.
http://www.graphicall.org/ftp/ideasman42/bridge_subd.png
2013-05-23 06:19:04 +00:00
c838b2d2a7
bmesh api: add 'is_boundary' attribute to verts.
2013-05-14 02:56:24 +00:00
0ffde4fae3
expose bmesh volume calculation to python api (use for print toolbox addon).
2013-05-07 00:00:32 +00:00
34f9932418
simple optimization, replace BM_face_other_edge_loop() with BM_loop_other_edge_loop() in situations where the loop is known this avoids a lookup.
2013-04-19 01:02:58 +00:00
5aee8b1487
py api, bmesh
...
- add BMEdge.calc_face_angle_signed() which gives a negative angle for for concave edges.
- add BMEdge.is_convex
2013-04-04 18:22:01 +00:00
32f63f6b4c
misc minor changes
...
- make it clear that navmesh visualize option only works in path mode.
- use 2 decimal places for motion-blur shutter speed (user request).
- use 'const' for some bmesh functions.
2013-03-26 01:46:12 +00:00
0488af00fe
fix for crash with laplacian smooth when unselected ngons were used, volume calculation assumed unselected face were not ngons.
...
- added convenience function BM_face_calc_tessellation() to get triangles from an ngon.
- expose volume function as BM_mesh_calc_volume().
2013-03-13 06:32:08 +00:00
4528405597
add BM_edge_is_contiguous(), check for python api.
2013-02-04 10:14:31 +00:00
1f21efdeac
fix [ #34073 ] Combined EdgeLoop slides weirdly on even try
...
concave check on co-linear edges could fail, avoid by using the loop-direction + face normal.
2013-02-03 06:09:29 +00:00
69585591d6
Correct fix for r54164, the testcase I was using worked but different edge slide examples didn't.
...
Edge slide needed to check for concave ngons too.
add BM_loop_is_convex() and expose to python too.
2013-01-29 03:25:47 +00:00
2b7db66edf
optimize BM_face_exists(), was doing a lot of redundant checks.
2013-01-14 18:37:58 +00:00
b27854bd47
use booleans for bmesh api.
2013-01-14 16:42:43 +00:00
827f9aa737
rename BM_edge_calc_squared_length -> BM_edge_calc_length_squared, matching len_v3, len_squared_v3
2012-12-31 02:40:15 +00:00
2d39e46414
Add BM_edge_calc_squared_length() query function
...
Same as BM_edge_calc_length(), but avoids square root for cases where
only comparison is needed.
2012-12-30 18:22:21 +00:00
bb26d80ad8
code cleanup and move alternate shell calculation method into its own function: BM_vert_calc_shell_factor_ex
2012-12-14 16:10:46 +00:00
cf2c459325
Fix #33285 : loop cut is not supposed to cut through triangles/ngons, but it
...
still happened when the loop would go all the way around the mesh with just one
triangle/ngon inbetween to close the loop.
2012-11-26 06:59:59 +00:00
cdc4037f0d
bmesh: BM_verts_in_face was using bmesh operator flag which is no longer ensured to be available,
...
use internal apiflag instead, Thanks to Nicholas Bishop for spotting.
also quiet some warnings.
2012-11-19 00:54:55 +00:00
89845f280f
fix [ #33142 ] Ctrl LMB higher selection mode in edit mode sometimes selects extra elements
2012-11-11 23:33:59 +00:00
6cdb555e6e
bmesh refactor - rename some of the BM_****_share_****_count() functions to BM_***_share_check()
...
some of these were only returning a boolean, others returned a count even though only a boolean was needed.
split some of the functions in two as well where check/count are both needed.
2012-11-09 14:52:05 +00:00
d20128bbbc
fix for BM_edge_other_loop() not working right (own error in recent commit), and add new function BM_vert_step_fan_loop() for stepping around the loops of a face fan with manifold edges.
2012-10-20 16:48:04 +00:00
a7a723283b
add BM_edge_find_double() and use in bmesh decimator to fix crash.
2012-10-20 09:48:41 +00:00
643f331cb5
Rip-fill mesh tool (option for rip operator)
...
Alt+V will fill the area inbetween the ripped faces - a bit like extrude.
faces are flipped to match existing geometry and customdata (uv, vcols etc) is copied from surrounding geometry too.
2012-10-14 04:42:11 +00:00
7412e321a3
add support for ripping off a single face from a single vertex when the vertex has 3 surrounding verts & faces.
2012-10-13 01:46:57 +00:00
df201548ea
Utility function to get the first loop of a vert. Behaves identical to
...
the iterator initialization function.
2012-06-27 15:39:14 +00:00
405f6a7c77
code cleanup:
...
style and remove BM_face_find_longest/shortest_edge functions,
... instead use BM_face_find_longest/shortest_loop()->e
2012-05-27 11:10:27 +00:00
cdba862223
use faces longest edge when orienting the manipulator to the active face
...
also small speedup for finding the longest edge
2012-05-22 15:49:41 +00:00
5e22802fae
Add new BMesh length query functions.
...
BMEdge *BM_face_find_shortest_edge(BMFace *f);
BMEdge *BM_face_find_longest_edge(BMFace *f);
Reviewed by Campbell Barton.
2012-05-22 15:19:33 +00:00
41a5e731a2
bmesh: new wireframe tool
...
- makes wireframe from faces.
- options similar to inset (even offset, relative scale)
- copies face settings and loops (uvs, vcolors)
- optionally replaces the existing geometry.
2012-04-29 10:44:00 +00:00
16ff7e40e6
code cleanup: change C naming convention (so py and C api match), eg:
...
C: BM_face_calc_area(f), Py: BMFace.calc_area()
2012-04-23 01:19:50 +00:00
741a177a74
bmesh: improve rip tool
...
- When the rip extends into a fan, pick the opposite edge in the fan (rather then 2 along)
- When stepping over the fan to find the rip edge, walk in the direction closest to the mouse (generally works nicer)
2012-04-19 21:47:32 +00:00
e387ccdb42
bmesh inset: add depth option (make use of relative and even offset options)
2012-04-19 19:03:15 +00:00
b40476455e
code cleanup: remove unused BMesh args.
2012-04-19 14:38:09 +00:00
db2edfcfde
bmesh api function: BM_edge_face_tangent()
...
was used by inset but make into an api function since scripts can use this too.
2012-04-19 11:25:05 +00:00
a1337caac0
bmesh api: minor simplify & cleanup
...
- add BM_face_edge_share_loop(f, e) -- edge version of existing BM_face_vert_share_loop(f, v)
- simplify BM_edge_ordered_verts_ex(), check could be reduced.
- use BM_ELEM_INTERNAL_TAG for bmesh_jfke(), not BM_ELEM_TAG to avoid clobbering tagged data tools might use.
2012-04-18 04:32:55 +00:00
fffe342d87
bmesh inset: another small improvement - use the shared edge vector rather then the cross product between 2 faces if the faces infact share an edge - works best for non planer faces.
...
also added utility function - BM_loop_other_vert_loop
2012-03-25 14:44:48 +00:00
7044d80639
code cleanup: remove BMesh * args from query functions which don't need it
2012-03-22 07:53:11 +00:00
753056d4e8
BMesh utility functions, not used yet,
...
- BM_edge_loop_pair incase you need the loops rather then the faces.
- BM_edge_ordered_verts_ex() - accepts a loop argument.
- BM_edge_length_calc() - simple length calc, useful if the edge is in some array, saves assigning a var and using len_v3v2().
2012-03-19 01:57:42 +00:00
ac24d98e24
bmesh: edge loop select
...
add support for loop selecting boundry edges only - handy for loop selecting the side of an ngon.
2012-03-11 21:47:14 +00:00
33d8104716
Fix edge loop selection. Now boundary selection checks only for filled edges to determine when to stop and stops at vertices shared by only 2 edges.
2012-03-11 20:45:58 +00:00
7fa7e4ba1f
bmesh python api additions:
...
- BMesh.is_wrapped
- BMesh.copy()
- BMesh.clear()
- BMesh.free()
- BMesh.from_object(obj, apply_modifiers=True)
- BMEdge.calc_length()
- BMLoop.calc_normal()
- BMLoop.calc_tangent()
2012-03-11 05:58:22 +00:00
c82c456247
bmesh py api, new functions:
...
* bmesh.utils.face_vert_rip(f, v)
* bmesh.utils.loop_rip(l)
2012-03-08 20:00:37 +00:00