Commit Graph

1303 Commits

Author SHA1 Message Date
Campbell Barton
b3afbcab8f ListBase API: add utility api funcs for clearing and checking empty 2014-02-08 06:24:05 +11:00
Campbell Barton
37026b12ec Code cleanup: use bool for static methods 2014-02-05 22:36:15 +11:00
Campbell Barton
76543574bc Code cleanup: declarations for removed functions 2014-02-04 07:20:19 +11:00
Campbell Barton
8b1731e13d Scanfill: skip checks for loose edges when they can't occur
Only editmesh needs this, text, curves, masks - can all skip this check
2014-02-04 02:57:27 +11:00
Howard Trickey
68521841a8 Bevel: remove unused assignments.
Caught by coverity.
2014-02-03 09:53:27 -05:00
Sergey Sharybin
d484eb8c25 Fix T38421: Vertex Parenting & Triangle Vertex Parenting causes segfaults.
Issue was caused by clearing dirty flags from element table in bmesh before
the data was fully ready.

This confused checks happening from threads and some threads did consider
element table is usable while other thread was still filling it in.
2014-02-03 19:13:25 +06:00
Campbell Barton
d900f5be55 Code cleanup: use bools where possible 2014-02-03 19:35:44 +11:00
Campbell Barton
1dc1d92dab Code cleanup: white space and cmake was broken on all platforms 2014-02-03 13:56:34 +11:00
Campbell Barton
fed1b8b16d Code cleanup: suffix vars to make obvious they are squared 2014-02-03 02:46:45 +11:00
Campbell Barton
b4ae05e4db BMesh: optimize lookups for triangle fill 2014-02-02 17:09:38 +11:00
Campbell Barton
c4345a808c Smallhash: add reserve option to avoid resizing when size is known 2014-02-02 17:08:26 +11:00
Howard Trickey
39202a53b5 Bevel: fix glitch in "pipe" case with square profile.
The "pipe" case -- where two beveled edges are in line
and there is at least one more beveled edge -- needed better
handling when profile parameter = 1.0 (square outward).
2014-01-28 13:20:42 -05:00
Howard Trickey
37f1b717eb Bevel code cleanup: get rid of old 'ADJ' code.
The new subdiv 'adj' pattern is working well, so removing the
old code and taking opportunity to remove 'subdiv' from a number
of names.
2014-01-28 07:03:25 -05:00
Campbell Barton
a5c35fb27f Code cleanup: use booleans where appropriate 2014-01-28 04:00:04 +11:00
Campbell Barton
1c29fd77d3 Code Cleanup: style and correct API class ref 2014-01-26 22:17:01 +11:00
Howard Trickey
01c1790a11 Make multisegment bevel profiles even for all parameters.
The method for calculating points on the profile for non-circles
and non-lines meant that the segments making up an edge had
uneven widths.
Use a numeric search technique to find superellipse evaluation
points that lead to equal-sized chords across the profile.
Also calculate the actual profile points sooner, so that they
don't have to be recalculated again and again.
This also sets up for a possible later feature of arbitrary
profile shapes, set by user.
2014-01-24 10:07:24 -05:00
Campbell Barton
933c2b0521 BMesh: collapse_uvs - avoid clearing and flagging for every cd-layer 2014-01-22 17:16:38 +11:00
Campbell Barton
4ae7ae6f2e Code Cleanup: use bool for return values and correct comments
also remove CDDM_Check, theres no need for it.
2014-01-22 02:53:48 +11:00
Bastien Montagne
7acb7cb897 Replace XOR swapping by default ("naive", with extra var) one.
Ref: http://en.wikipedia.org/wiki/XOR_swap_algorithm, modern compilers/CPUs are much more efficient with "naive" algo than XOR one.
Doubled check, for me in an optimized build, XOR is several times slower than naive algo.
2014-01-21 15:50:44 +01:00
Howard Trickey
45b9822259 Fix T38300: Bevel didn't always reconstruct faces properly.
With new subdivision method for making the vertex mesh, we always
subdivide the edges between the new vertices around a vertex
(we used to not subdivide edges between two non-beveled edges).
This fixes a bug related to this change.
2014-01-21 09:02:27 -05:00
Campbell Barton
a0f25f2301 Fix own mistake with zealous check for face splitting
Was disallowing adjacent loops to be split which is correct for a single
split across a face, but not fore BM_face_split_n
2014-01-21 12:27:38 +11:00
Campbell Barton
37242e6b0b Code Cleanup: style 2014-01-21 12:05:27 +11:00
Howard Trickey
a502959e4b Bevel: fixed problems with vertex bevel and some 'weld' cases.
Vertex bevel was completely messed up after last change,
and this fixes.
'Weld' bevels, where there are exactly two beveled edges
meeting at a vertex, now look better in cases where one
of the beveled edges is on a flat plane.
2014-01-20 08:55:07 -05:00
Campbell Barton
621bf47e91 Docs: doxygen file descriptions for BLF, GPU and WM 2014-01-19 23:15:25 +11:00
Campbell Barton
63ccb26303 Code Cleanup: spelling 2014-01-17 17:35:03 +11:00
Campbell Barton
477a84a738 BMesh: minor optimization for remove doubles
- replace heap allocation with stack for small arrays.
- remove edge-lookup when its already known.
2014-01-17 17:21:41 +11:00
Campbell Barton
7df8452d1a BMesh: add bmesh delete functions that dont depend on operator flags 2014-01-17 14:55:06 +11:00
Campbell Barton
52bccd1188 Code Cleanup: remove redundant bmesh functions & make static 2014-01-17 09:42:30 +11:00
Campbell Barton
2883a48b3c BMesh: minor speedup for deleting faces. also remove unused delete-all 2014-01-17 09:35:53 +11:00
Campbell Barton
e7a6efa2a7 Code Cleanup: move delete funcs out of bmesh_construct.c into own file 2014-01-17 09:21:30 +11:00
Campbell Barton
38e683cbb1 Fix T38217: Fix glitch adding Monkey with view align
added an option so view-align can default to a different axis.
2014-01-16 23:54:04 +11:00
Campbell Barton
af93ebcb50 Code Cleanup: style and redundant casts 2014-01-16 19:15:53 +11:00
Campbell Barton
bb1a7e4d87 Code Cleanup: simplify matcaps checks and quiet warning 2014-01-16 18:32:57 +11:00
Campbell Barton
e5c7535beb Code Cleanup: float/double promotions 2014-01-15 13:40:40 +11:00
Howard Trickey
c5d3abc863 Bevel fix to clamping for percent type.
The clamp code is still very crude and over-conservative,
but was totally wrong for the percent amount type.
2014-01-14 11:21:56 -05:00
Campbell Barton
5611fb6a32 Fix T38186: mesh inset didn't follow edge directions for flat surfaces
also improve evenness when the inset direction wasn't exactly between both edges,
2014-01-14 09:48:59 +11:00
Campbell Barton
61ff3dfdda Code Cleanup: spelling 2014-01-13 15:31:57 +11:00
Howard Trickey
c925b5bbb2 Bevel fixes for profiles: better way to calculate.
It is better to keep the profile as it is perpedicular
to the edge, and then project it onto a given plane
at the corners. Also fixed the interpolation to a
different number of segments when the profile is not
round.
2014-01-12 14:10:39 -05:00
Campbell Barton
fc39e895e9 Style Cleanup: whitespace 2014-01-12 22:27:55 +11:00
Campbell Barton
62aa004c25 Style Cleanup: whitespace 2014-01-12 22:05:24 +11:00
Campbell Barton
e47a41e3fc Code Cleanup: style 2014-01-09 11:44:59 +11:00
Campbell Barton
8305fd8841 Code Cleanup: style edits to bevel and remove unneeded boundvert_rep_face call 2014-01-09 00:50:32 +11:00
Howard Trickey
49aa701645 Add profile control parameter to Bevel.
Parameter controls concavity / convexity.
    <.25 means: concave inward
    .25 means: straight slanted
    >.25 means: concave outward
    .5 means: circular (the default)
    1 means: straight along original sides
For now, there is a hard lower limit of .15
because more work is needed to get decent
results in the range below that.

The profile is actually a superellipse, and the
parameter is 1/4 of the exponent in the implicit equation
for a superellipse, except at the extreme values of 0 and 1.
2014-01-08 07:40:01 -05:00
Howard Trickey
e164a500c8 Fix to own previous commit for bevel vertex only case.
In separating out the adj mesh change from a profile change,
I'd forgotten that some profiles need to be flat (in particular,
for vertex-only bevels). This fixes that.
2014-01-06 15:53:22 -05:00
Campbell Barton
bdd20e18ef Bevel: use stack memory for interp_vmesh()
Rather then using the memarena and never freeing.
2014-01-07 03:17:32 +11:00
Howard Trickey
e0a4a4afc3 Bevel: change 'adj' pattern to use subdivision.
This gets rid of a hacky way of setting the mesh
coordinates at corners, which created overlaps
in some cases.
Also, special case a cube-like corner with all
edges beveled, to snap to a sphere, giving more
expected curvature in that case.
2014-01-06 10:52:31 -05:00
Campbell Barton
c5cb42f402 Code Cleanup: use bool for bmesh operator boolean mapping functions 2014-01-03 21:35:29 +11:00
Campbell Barton
3ffba79ac6 Fix for own recent commit 2013-12-24 18:56:07 +11:00
Campbell Barton
04a902965e BMesh optimize face splitting by taking loops rather then verts
- add BM_vert_pair_share_face
- add BM_loop_is_adjacent
- remove BM_verts_connect
2013-12-24 11:13:58 +11:00
Campbell Barton
133bc4b991 BMesh API: optimize BM_edge_exists(). 2013-12-23 16:57:39 +11:00