Commit Graph

610 Commits

Author SHA1 Message Date
Campbell Barton
9682108113 minor speedup for bevel, avoid calling find_bevvert() when we know the edge isn't beveled. 2012-11-22 11:02:57 +00:00
Campbell Barton
55535b21fe fix own error - remove doubles slot name. 2012-11-22 01:00:40 +00:00
Antony Riakiotakis
031230265c Fix: Normal maps and triangulate modifier will give incorrect result on
rectangular faces after applying rotation, reported by Metalliandi

This issue is caused by floating point precision error. After applying
rotation, the edge lengths change slightly and on rectangular faces the
length comparison can be flipped. Solved by giving a slight offset to
the length calculation for the diagonal during triangulation
calculation. (Same as done during uv unwrapping)
2012-11-21 21:42:07 +00:00
Howard Trickey
0d27c16894 bevel: fix bug where constructed where parallel test
didn't work (angle check too sensitive). Caused some
(nan,nan,nan) results from offset_in_two_planes.
2012-11-21 13:07:03 +00:00
Campbell Barton
2fd1f38fbc enable edge draw by default for new edges,
alternate fix for [#33217] Mirror Modifier not showing "Shadow" mesh in wireframe view
2012-11-21 10:57:45 +00:00
Campbell Barton
68e9fdeb81 code cleanup: comment unused members of bmesh operator slots and some osl style edits. 2012-11-20 14:31:58 +00:00
Campbell Barton
ebaf1306b8 bmesh operator api:
avoid per vert/edge/face string lookups in BMO_slot_map_* functions --- used in array modifier, subdivide, remove doubles and other tools.
2012-11-20 13:29:27 +00:00
Campbell Barton
dbdc76c9d0 code cleanup: make bmesh operator names more consistant since python has access to these as input arguments and return values.
all output values currently have ".out" suffix, this may go in the future, but for now it makes it clear in C code what are inputs and outputs.
2012-11-20 05:50:19 +00:00
Campbell Barton
e8667421ed bmesh operator api edits, add macros and NULL the buffer if BMO_slot_buffer_alloc()'s len is zero. 2012-11-20 03:29:12 +00:00
Campbell Barton
7cafd45f2b fix for crash in wireframe tool with verts that only have one boundary edge (degenerate cases - edge with 3+ faces using it). 2012-11-20 00:33:11 +00:00
Campbell Barton
5716762c02 fix for changes in own recent commit:
selected linked in face mode was crashing. (needs bmesh operator flags)

also some style edits, remove unused includes and change triangulate modifiers use_beauty to a flag.
2012-11-19 23:52:24 +00:00
Campbell Barton
48639af5f8 use input and output slots for bmesh operators, needed for the python api to get return values. 2012-11-19 14:58:31 +00:00
Campbell Barton
185cf6095e improvements to bevel
- the resulting selection is now correct

internal details
- bev_rebuild_polygon() now only rebuilds polygons that are attached to a bevel vertex (was rebuilding ALL).
  ... need to take care we don't leave faces pointing to removed geometry, so far this works fine.

-  bev_rebuild_polygon() uses stack memory for <32 size ngons to reduce allocs.

- skip hash lookup when removing bevel verts (use tag instead).
2012-11-19 02:26:59 +00:00
Campbell Barton
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
Campbell Barton
a9af563526 bmesh: lazy initialize bmesh tool flag pool, has the advantage that modifiers that dont use bmesh operators can skip allocating it. 2012-11-18 12:14:22 +00:00
Campbell Barton
42ebc9bc80 bmesh: move internal API flags out of BMFlagLayer, into BMHeader which was being padded up anyway, added static assert to make sure it stays <=16 bytes. 2012-11-18 10:17:07 +00:00
Campbell Barton
fd9dac77d1 bevel now only takes manifold edges (so it doesnt need to check for them) 2012-11-18 09:33:11 +00:00
Campbell Barton
b72c1ac33c bmesh function was still using bmesh operator flags, use edge tags instead. 2012-11-18 09:25:57 +00:00
Campbell Barton
4401ac8c9e finish moving bevel code out of the operator dir (it works again) 2012-11-18 08:35:27 +00:00
Campbell Barton
9a74fb5b05 moving bevel to tools dir as-is to keep svn history (breaks build, will fix next). 2012-11-18 08:20:02 +00:00
Campbell Barton
916039f520 move decimator into tools/ dir 2012-11-18 08:16:09 +00:00
Campbell Barton
b867f9f17e style cleanup: comments & spelling 2012-11-18 01:22:31 +00:00
Campbell Barton
c3c14f862b use quad-strip for filling even when no segments are being added, this gives quad-loops along the bevel whereas before it made ngons. 2012-11-16 21:25:11 +00:00
Campbell Barton
6de13de7ab more straightforward way to implement quad-strip face filling suggested by Howard Trickey,
also some other changes - no need to check the new loops face is larger and no longer split up the ngon more times then there are subdivisions in the face strip (now ngons will remain on both sides).
2012-11-16 21:05:27 +00:00
Campbell Barton
dc06523622 rework the bevel quad strip logic to work with ngons correctly, previously it only worked properly with triangles. 2012-11-16 14:28:37 +00:00
Campbell Barton
8928344bf7 fix for own bug in quad-stip fill method, quad strips were skewed. 2012-11-16 13:41:21 +00:00
Campbell Barton
b7dbf83d19 more minor improvements to bevel use of math functions 2012-11-16 12:33:24 +00:00
Campbell Barton
6b0c200403 code cleanup: remove unneeded normalize (face normal), and unneeded call to len_v3v3 2012-11-16 12:25:15 +00:00
Campbell Barton
3edbd1d0e2 bevel: save some memory by aligning struct members. 2012-11-16 10:15:25 +00:00
Campbell Barton
f5b356bf18 wip - alternate bevel curve calculation (still disabled)
now USE_ALTERNATE_ADJ works, giving more stable corners that don't flicker and glitch out as the offset changes.

The shape is not a circle though and doesnt look quite as nice as the existing method.
2012-11-16 08:12:06 +00:00
Campbell Barton
b3f6c12136 bevel: wip ifdef'd code to test an alternative method of placing corner vertices. 2012-11-15 23:21:21 +00:00
Campbell Barton
8270592fa4 code cleanup: some renaming to avoid confusion. 2012-11-15 22:32:29 +00:00
Campbell Barton
987f6a7d4f code cleanup: move local math functions into math_geom.c, math_vector.c, no functional changes. 2012-11-15 13:24:14 +00:00
Campbell Barton
283ee53085 fix for deleting lines hanging the text editor when no markers are used, presence of markers still hangs.
also compiler warnings and some style edits.
2012-11-15 02:11:40 +00:00
Howard Trickey
cd8584aad5 Fix 'polygon eating' problem in bevel (bug #33141)
which was due to almost-parallel lines.
2012-11-15 02:05:32 +00:00
Campbell Barton
a286afe75d use memarena for bevel allocs 2012-11-14 11:06:58 +00:00
Campbell Barton
7295d98e07 use ghash for bevel verts, saves list lookups when getting a BMVert's BevVert 2012-11-14 10:23:38 +00:00
Campbell Barton
0163ae1701 speedup bevel by tagging verts and edges to bevel, this avoids a loop over all bevel edges for each bevel vert (can use edges-of-vert instead) 2012-11-14 10:08:39 +00:00
Campbell Barton
7c3db355b1 remove ifdef'd bevel code, current bevel works better then the previous code.
reduce strlen check in texttool_suggest_add()
use 'del list[:]' rather then 'list[:] = []' in python scripts which clear lists.
2012-11-14 09:45:15 +00:00
Campbell Barton
66aa7e9192 add simple quad-strip filling to bevel, use to bevel edges when 2 bevel-edges share a vertex.
this gives more useful topology, eg:
http://www.graphicall.org/ftp/ideasman42/bevel_strip_fill.png
2012-11-12 16:08:02 +00:00
Campbell Barton
0364a83771 fan filling didnt always work well, now only apply this when its going to work properly. 2012-11-12 12:30:58 +00:00
Campbell Barton
fbdae9ca0a change bevel do/while loops to step the pointer in the while check, no functional changes. 2012-11-12 12:16:21 +00:00
Campbell Barton
08ec3ab64e bevel fan fill edges meeting non selected geometry rather then making ngons which often dont triangulate nicely to follow rounded corners: http://www.graphicall.org/ftp/ideasman42/bevel_fan_fill.png 2012-11-12 11:59:28 +00:00
Campbell Barton
cf6994b910 code cleanup: spelling,
also initialize bmesh-bevel settings struct to zero to avoid possible uninitialized memory later.
2012-11-12 07:33:01 +00:00
Campbell Barton
0bfc92ff8e BM_iter_as_arrayN() can now take an optional existing array argument, useful to avoid many small malloc's by passing a fixes size stack variable instead.
Will give some speedup to edge-split modifier and bevel.
2012-11-12 05:53:43 +00:00
Campbell Barton
428e5b7a99 bmesh bevel todo: don't loop through all faces to find faces connected to a vertex. 2012-11-12 05:29:54 +00:00
Campbell Barton
97b7154142 replace BM_edge_face_count with BM_edge_is_manifold/BM_edge_is_wire/BM_edge_is_boundary 2012-11-12 04:50:45 +00:00
Campbell Barton
744378483c style cleanup 2012-11-12 03:41:25 +00:00
Campbell Barton
d22c5d4341 update to python api Gotcha docs to reflect changes to the api. also add a section about modifying linked library data. 2012-11-12 03:23:47 +00:00
Howard Trickey
b747759698 Bevel: several bug fixes. 2012-11-12 02:52:24 +00:00