Commit Graph

714 Commits

Author SHA1 Message Date
Hans Goudey
084db58fbd Cleanup: Use typedef for bevel angle kind enum
This makes debugging slightly easier, and makes the code slightly more
explicit about its intentions.
2020-11-02 23:05:15 -06:00
Hans Goudey
6290bc4a37 Merge branch 'blender-v2.91-release' 2020-11-02 22:35:15 -06:00
Hans Goudey
c6d8300823 Fix T82120: Arc miter bevel creates miters on straight edges
In some situations where two beveled edges were very close to in-line
but not quite straight, bevel would build a miter when it shouldn't.
The code that chose whether to use a miter at each vertex was slightly
incorrect.

For outer miters there is a check for 3 or more selected edges, but an
inner miter can still be useful with only two beveled edges at a vertex,
so we can't use that here. Instead I changed the check for in-line edges
to run before determining whether the angle is reflex or not. The logic
ends up a bit more straightforward as well. This doesn't completely
remove the rather strange looking triangle vertex meshes at each corner,
but it does make it stable when locations are slightly adjusted.

The only other place this `edges_angle_kind` function was used is for
profile=1.0 vertex meshes. I tested and made sure that still works well.

Differential Revision: https://developer.blender.org/D9420
2020-11-02 22:34:57 -06:00
Campbell Barton
4b188bb08c Cleanup: use over-line for doxy comments
Follow our code style for doxygen sections.
2020-10-27 21:45:55 +11:00
Howard Trickey
2f9068449f Fix T81884, clamping with percent, addendum.
The previous fix forgot the case where there is an intermediate
edge and everything isn't in one plane.
2020-10-24 15:10:19 -04:00
Howard Trickey
574d711008 Fix T81884, clamping with percent, addendum.
The previous fix forgot the case where there is an intermediate
edge and everything isn't in one plane.

Differential Revision: https://developer.blender.org/D9336
2020-10-24 14:44:28 -04:00
Harley Acheson
3d26cd01b9 Spelling: Apart Versus A Part
Corrects incorrect usages of the fragment 'apart of' when 'a part of' was required.

Differential Revision: https://developer.blender.org/D9245

Reviewed by Campbell Barton
2020-10-19 09:47:19 -07:00
Harley Acheson
d1eefc4215 Spelling: Then Versus Than
Corrects incorrect usages of the words 'then' and 'than'.

Differential Revision: https://developer.blender.org/D9246

Reviewed by Campbell Barton
2020-10-19 08:43:08 -07:00
Harley Acheson
3a7fd309fc Spelling: It's Versus Its
Corrects incorrect usage of contraction for 'it is', when possessive 'its' was required.

Differential Revision: https://developer.blender.org/D9250

Reviewed by Campbell Barton
2020-10-19 08:12:33 -07:00
Howard Trickey
b17ad27adc Silence an unused variable warning in bmesh_bevel.c. 2020-10-19 06:54:24 -04:00
Jacques Lucke
bd15efefd2 Cleanup: clang tidy 2020-10-19 11:35:23 +02:00
Howard Trickey
48c484a22e Fix Bevel percent mode, and clamping for it too (T79898).
The code for Bevel's percent (and absolute) modes were pretty bogus.
It assumed, like the rest of the modes, that the offset lines are
parallel to the beveled edge. Which is not true for these modes,
though it accidentally works sometimes if the legs are equilength.
Also the clamping code for those modes was completey wrong.
It is too hard to really fix the clamping code for absolute mode,
but it is a little better now. Percent mode clamping is fixed.
2020-10-18 16:27:07 -04:00
Campbell Barton
2abfcebb0e Cleanup: use C comments for descriptive text
Follow our code style guide by using C-comments for text descriptions.
2020-10-10 22:04:51 +11:00
Valentin
5ac4778056 Cleanup: convert gforge task ID's to phabricator format
Cleanup old tracker task format to the new. e.g: [#34039] to T34039

Ref D8718
2020-09-30 20:11:06 +10:00
Howard Trickey
ab7608af1b Apply patch D8816, from Zachary(AFWS) for collection boolean operand.
Also added code so that exact solver does the whole collection at once.
This patch allows users to use a collection (as an alternative to Object)
for the boolean modifier operand, and therefore get rid of a long modifier stack.
2020-09-13 16:57:27 -04:00
Howard Trickey
de21ab418d Add a Self option to the Exact boolean modifier. Fixes T52425.
With this option, self-intersections in either or both operands
will be handled properly (if both sides are piecewise winding
number constant, and maybe some other cases too).
In the Boolean tool, this flag was there already but the code
forced a unary operation in that case; this commit corrects it
to make a binary operation. This flag makes the code slower, which
is why it is an option and not an always-on thing.
2020-09-07 14:29:12 -04:00
Sebastian Parborg
2115232a16 Cleanup: Clang-Tidy readability-inconsistent-declaration-parameter-name fix
No functional changes
2020-09-04 21:04:16 +02:00
Howard Trickey
9e09b5c418 Merge newboolean branch into master.
This is for design task T67744, Boolean Redesign.
It adds a choice of solver to the Boolean modifier and the
Intersect (Boolean) and Intersect (Knife) tools.
The 'Fast' choice is the current Bmesh boolean.
The new 'Exact' choice is a more advanced algorithm that supports
overlapping geometry and uses more robust calculations, but is
slower than the Fast choice.
The default with this commit is set to 'Exact'. We can decide before
the 2.91 release whether or not this is the right choice, but this
choice now will get us more testing and feedback on the new code.
2020-08-28 11:01:06 -04:00
Hans Goudey
2c7394acce Cleanup: Reduce indentation level
Check the simpler case first and return early.
2020-08-11 16:17:11 -04:00
Hans Goudey
90b8df8a99 Cleanup: Remove unecessary variables 2020-08-11 16:14:26 -04:00
Hans Goudey
18b1d1af95 Cleanup: Use sizeof first in allocations 2020-08-11 15:58:04 -04:00
Hans Goudey
3eebdf8a2d Cleanup: Reduce indentation level
Exit early if the bevel width is zero instead of putting
the main function in an if statement.
2020-08-11 15:51:24 -04:00
Hans Goudey
7e9f47c06c Cleanup: Reduce scope of variable declarations in bmesh_bevel.c
This commit generally moves variable declarations to the smallest scope
the variables are used in. This makes the code more readable by
making it clearer when variables are used and by removing the block
of variable declarations at the top of each function.
2020-08-11 15:08:04 -04:00
Campbell Barton
0c0f972e86 Cleanup: spelling 2020-08-11 13:19:09 +10:00
Campbell Barton
171e77c3c2 Cleanup: use array syntax for sizeof with fixed values
Also order sizeof(..) first to promote other values to size_t.
2020-08-08 13:38:00 +10:00
Campbell Barton
48e089375e Cleanup: pass arrays const where possible 2020-08-07 22:56:13 +10:00
Campbell Barton
b134434224 Cleanup: declare arrays arrays where possible 2020-08-07 22:37:39 +10:00
Jacques Lucke
7283e6fb73 Merge branch 'blender-v2.90-release' into master 2020-08-07 10:04:57 +02:00
Jacques Lucke
91694b9b58 Code Style: use "#pragma once" in source directory
This replaces header include guards with `#pragma once`.
A couple of include guards are not removed yet (e.g. `__RNA_TYPES_H__`),
because they are used in other places.

This patch has been generated by P1561 followed by `make format`.

Differential Revision: https://developer.blender.org/D8466
2020-08-07 09:50:34 +02:00
Hans Goudey
f2ac432467 Cleanup: Bevel: Split two case for loop into separate function
Previously a for loop with two iterations was used to calculate the
3D segment locations for the input number and the higher power of 2.
Splitting off the inside of the for loop to a separate function makes
the code more readable.

This commit also includes a simple timer for bevel, enabled with a
define. Interestingly, the cleanup in this commit happended to give
a 3% speedup on a Ryzen 3700x for a bevel calculation with 64
segments.
2020-08-04 11:43:42 -04:00
Hans Goudey
4b99df20d5 Merge branch 'blender-v2.90-release' 2020-08-03 18:18:02 -04:00
Hans Goudey
fbc3c1b24d Fix (unreported): Bevel tool custom profile uses wrong segments number
The bevel code initialized the CurveProfile with the "higher power of 2"
segments after the normal number of segments, leaving the widget in an
incorrect state after the calculation. A simple fix is to re-order the
initializations, doing the input number second.
2020-08-03 18:12:24 -04:00
Hans Goudey
862d79fffc Cleanup: Reduce indentation in function 2020-08-03 17:40:07 -04:00
Campbell Barton
61eec61adb Merge branch 'blender-v2.90-release' into master 2020-08-03 21:14:49 +10:00
Campbell Barton
3f94f47113 Fix T79482: Triangulate quads with 'Beauty' can make zero area faces 2020-08-03 21:12:46 +10:00
Campbell Barton
901ee66ea1 Cleanup: use term init instead of initialize/initialise
The abbreviation 'init' is brief, unambiguous and already used
in thousands of places, also initialize is often accidentally
written with British spelling.
2020-08-01 13:51:05 +10:00
Howard Trickey
37ad90c35f Fix T29189 bevel crash.
New code to calculate UV islands made an incorrect assumption about
maximum stack size.
2020-07-23 08:44:34 -04:00
Howard Trickey
4ae24c0b57 Fix T79189 bevel crash.
New code to calculate UV islands made an incorrect assumption about
the maximum size of a stack.
2020-07-23 08:27:10 -04:00
Hans Goudey
4aa2a5481c Bevel: Refactor "Vertex Only" to an enum
This matches the change that was done to the bevel modifier so that the
interface for the modifier, the active tool, and the operator are consistent.

 This commit extends the refactor to the bmesh implementation too, so
that the parameters in the implementation don't stray too far from what
is exposed.

Tests are adjusted and still pass.
2020-07-21 16:32:00 -04:00
Howard Trickey
731d9f0bfa Fix T78733 Bevel sometimes produces zero-area UV face with odd segments.
A bug introduced when I made the choice of interpolation face cleverer.
2020-07-20 16:08:43 -04:00
Campbell Barton
613d314251 UV: support region fill for path select
This matches edit-mesh region selection (Ctrl-Shift-Select).
2020-07-15 23:20:25 +10:00
Campbell Barton
5338b36fcc Cleanup: spelling 2020-07-14 15:19:52 +10:00
Jacques Lucke
725973485a Clang Tidy: enable readability-non-const-parameter warning
Clang Tidy reported a couple of false positives. I disabled
those `NOLINTNEXTLINE`.

Differential Revision: https://developer.blender.org/D8199
2020-07-13 11:27:09 +02:00
Campbell Barton
b0378440ce Fix missing adjacent UV check for recent UV path select
Path selection could cross UV islands if the destination element was
on an island boundary.
2020-07-10 12:19:30 +10:00
Campbell Barton
a0d3b60015 Cleanup: use FLT_MAX for the maximum path selection cost
A large number below FLT_MAX was used to avoid overflow,
however this doesn't cause any problems.
2020-07-10 11:49:46 +10:00
Campbell Barton
0b77e2f4c4 Cleanup: variable names, use define for maximum path cost 2020-07-10 11:49:46 +10:00
Campbell Barton
ea5fe7abc1 UV: path selection support
This adds support for path selection for vertex edge & face selection
modes, matching mesh editing behavior, useful with the UV rip tool.

Region select & edge tagging are currently not supported,
although they could be added eventually.
2020-07-09 18:43:23 +10:00
Campbell Barton
6e609f0eb0 Cleanup: use doxy comments 2020-07-07 17:52:05 +10:00
Campbell Barton
99feb10b8b Cleanup: warning, spelling 2020-07-06 23:07:18 +10:00
Germano Cavalcante
073c426900 Fix faces disappearing when AutoMerge & Split 2020-07-06 09:03:33 -03:00