Age | Commit message (Collapse) | Author |
|
|
|
Was calling the fast path for finding edge order in cases
where it should not have been called.
|
|
|
|
|
|
Also resolves: T34294
|
|
|
|
- remove edge scaling, instead avoid checking intersections with connected edges.
- replace local line intersection functions with BLI_math
- center the projection for more precise calculation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This can be used to re-allocate bmesh data with/without tool flags.
Needed for Symmetrize since it uses bmesh operators from dyntopo.
|
|
|
|
Saves 8 bytes per vert/edge/face.
Gives overall ~20-25% memory saving for dyntopo sculpting
and modifiers that use BMesh.
|
|
For simple cases bitmasks were OK, but didnt work for vert/edge, vert/edge tests.
Tag verts instead, makes logic easier to follow and gives minor speedup.
|
|
|
|
|
|
In the case of having 3+ boundary edges, we need to find the best.
|
|
In rare cases intersect would attempt to add edges with the same vertex twice
from edge-vert / edge-edge intersections.
Solve by checking for duplicates when creating vertex-array for these types of intersections
(always under 3x comparisons, so not much overhead).
|
|
Need account for cases where vertex connects a single edge.
|
|
|
|
Own error in recent decimeter commit
|
|
BM_face_split_edgenet wasn't correctly detecting boundary vertices to walk over,
since vertices may be attached to boundary edges not part of the newly created face.
|
|
Since this function is called a lot, loop over data directly.
|
|
|
|
BMO iterator would loop over removed faces.
Recent changes to mempool FREEWORD size exposed this bug.
|
|
|
|
This allows the error threshold for calculating the optimized location to be much lower.
Resolves visible artifacts w/ 1m-tri happy-buddha example.
|
|
|
|
Created double faces, leaked memory.
|
|
This can't be avoided completely, however the threshold used can be much lower.
|
|
Auto-merge caused all edges between selected vertices to be selected.
This only makes sense in vertex-select-mode.
Correct edge-flag merging code, which now merges flags from multiple edges.
|
|
D1988 by @wisaac, with own edits and improvements.
This improves on existing tangent calculation functions too.
- BM_face_calc_tangent_auto: Chooses method based on number of sides, used by manipulator (not exposed to Python).
- BM_face_calc_tangent_edge: from longest edge.
- BM_face_calc_tangent_edge_pair: from longest edge-pair (most useful with quads).
- BM_face_calc_tangent_edge_diagonal: edge farthest from any vertex.
- BM_face_calc_tangent_vert_diagonal: vert farthest from any vertex.
Also optimize BM_vert_tri_calc_tangent_edge* functions to avoid sqrt.
|
|
Some adjustments to how bevel edge 'profiles' are adjusted in some
cases. For the bug fix, wanted to handle cases of middle of three
coplanar beveled cases to make profile curve rather than linear
interpolate.
Also undid an earlier decision to make profile plane be perpendicular
to beveled edge i the non-coplanar case.
|
|
|
|
Bevel had assumed that when rebuilding a face that touches
a vertex with beveled edges, the edges of the face at that vertex
would be adjacent in internal order. That is not necessarily true
if there are edges with more than two faces attached.
We could just prohibit beveling any edges that touch a vertex
where this happens (we already don't bevel non-manifold edges)
but the use case in the model of T47257 seems reasonable.
Also had to fix the edge-ordering code, and the face reconstruction
code to take care of cases where the face normal may not be as expected.
|
|
|
|
|
|
Its important to add tri-edge intersections from both sides.
|
|
|
|
In nearly all cases this isn't needed.
|
|
|
|
Was showing an error message,
now dissolve the faces that and delimit at non-manifold boundaries.
|
|
An island walker that only walks over manifold edges.
|
|
|
|
Callers need to check for NULL, if we need to know exact cause it could be a return arg.
|
|
Instead of setting an exception, treat non-manifold edges as boundaries.
|