Commit Graph

328 Commits

Author SHA1 Message Date
71c11dbb02 Fix T40252: Knife snapping ignores axis-constraint 2014-05-20 13:53:52 +10:00
46bd759964 Code cleanup: rename BM_face_legal_splits -> BM_face_splits_check_legal 2014-05-13 17:48:25 +10:00
7660218202 Correct fix for knife interior use, distance needed to be in object-space 2014-05-06 09:32:06 +10:00
d2920e9876 Knife too: was using a ray-cast direction scaled down by the knife epsilon 2014-05-06 09:02:16 +10:00
cd9aed7059 Fix T38623: Knife tool completely failing on interior geometry 2014-05-06 08:35:43 +10:00
d7d2e71a03 Correct some errors in auto-cleanup 2014-04-27 22:02:59 +10:00
c67bd49e56 Code cleanup: use 'const' for arrays (editors) 2014-04-27 00:25:15 +10:00
f2f3ef8692 Fix Knife bug T39617: midpoint snap should affect intermediate points.
This reverts to the 2.69 behavior, where the snap-to-midpoint option
affected the intermediate crossed edges as well as the endpoints.
2014-04-16 14:19:36 -04:00
412826a504 Mempool: delay allocating an initial chunk, its not always used 2014-04-08 12:58:56 +10:00
a91247c2b4 Code cleanup: unreachable break/return 2014-03-19 12:47:09 +11:00
ec4e12d9a2 Code cleanup: comments and typos 2014-03-18 05:40:18 +11:00
c1be7e12ee Fix T37510 Knife missed cuts on small faces.
For very thin faces, knife sometimes missed cutting a few.
Problem was that a test for edges being totally inside a face
was being applied in inappropriate circumstances. An assumed
invariant about the knife hit structure is not true when
actually in the middle of making cuts.
Also make a 'big epsilon' a little smaller, though don't think
that was the problem in this bug.
2014-03-06 10:55:12 -05:00
13ea967cce Code cleanup: correct abs use and quiet warnings 2014-03-01 14:26:18 +11:00
a815e04f72 Fix T38834: Knife constraint is offset after moving the view 2014-02-27 13:28:25 +11:00
b3afbcab8f ListBase API: add utility api funcs for clearing and checking empty 2014-02-08 06:24:05 +11:00
fed1b8b16d Code cleanup: suffix vars to make obvious they are squared 2014-02-03 02:46:45 +11:00
c4345a808c Smallhash: add reserve option to avoid resizing when size is known 2014-02-02 17:08:26 +11:00
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
c1c26c36f6 Style Cleanup: remove preprocessor indentation (updated wiki style guide too) 2013-12-22 14:12:19 +11:00
93b24b91a9 Knife Tool: incorrect sized vector args (harmless but misleading) 2013-12-03 09:10:03 +11:00
5da703e915 BMesh/Mesh: replace scanfill with polyfill 2013-11-30 22:13:52 +11:00
84334bde01 Fix 37571: Knife Select should be disabled when no faces are selected
also check a similar case for bisect
2013-11-26 09:44:08 +11:00
238d2f962d BMesh Refactor: BKE_bmbvh_new can now be created without an EditMesh.
This adds BM_bmesh_calc_tessellation() so we can get triangles from a
bmesh without having to have an editmesh available.
2013-11-18 18:25:47 +11:00
0d1a499366 knife tool: Remove unused 'extend' variable 2013-11-08 18:01:07 +00:00
b144f15579 knife tool: Clean up line hits when starting a new cut
Fixes intersection points of the previous cut still being drawn when
starting a new cut.
2013-11-08 18:01:05 +00:00
3143536b08 Fix knife bug exposed by valgrind.
Was reading cage coordinate from those of existing
BMVerts even for newly created verts that don't
have cage coordinates there.
2013-11-06 15:27:19 +00:00
538a6ed57a Rewrote a lot of knife tool. Now allows cut-through
to make new vertices in the middle of faces.
This also fixes knife bugs:
#36678, #35945, #35943, #35387, #35045, #35002.
2013-11-05 16:24:00 +00:00
e8c54b682a Add 'cut-through' option for Knife Project operator.
If enabled, it makes knife project act as the
cut-through (Shift-K) version of knife.
This option will soon be more useful when a better
cut-though Knife change is submitted, allowing
this to work for cuts within faces in addition
to cuts across them.
2013-11-01 11:42:11 +00:00
7267221715 remove return argument from wmOperatorType->cancel, was only ever returning OPERATOR_CANCELLED. 2013-10-30 23:08:53 +00:00
dee671276d rename BM_vert_at_index -> BM_vert_at_index_find (since this searches the mempool).
needed for other changes - coming.
2013-10-27 10:01:35 +00:00
eabf7ab335 code cleanup: utility function for getting a bool as a string. 2013-10-13 00:32:31 +00:00
e220d3228f add MEM_SIZE_OPTIMAL to avoid memory fragmentation & waste lost to slop-space. 2013-10-10 18:18:13 +00:00
ec4a7fcad1 fix for lasso selection (in non-zbuf mode) when the line intersected its self.
isect_point_poly_v2() - add argument to check overlapping areas.
2013-10-04 10:48:24 +00:00
1fa59cdf4d allow knife-project to use sub-pixel length edges. 2013-10-01 15:52:29 +00:00
f06b440d63 quiet warnings (converting pointer to boolean) 2013-09-26 10:35:41 +00:00
8bbe81db4d knife was projecting vertex locations to the screen when it wasnt needed. 2013-09-25 11:38:30 +00:00
8c7eb60ba0 fix [#36780] Knife Project broken
was regression in r59665 (fix for [#35002]).

now when checking a segment that lies on the same plane as the triangle intersects,
clip the segment by the triangle bounds so we know the points remain inside the triangle.
2013-09-25 08:23:31 +00:00
7d7adf4488 Prevent assert failure in knife.
It seems sometimes a knife edge with the same
vertex on both ends was created sometimes.
2013-09-19 13:35:43 +00:00
67fa1a57ba Fix potential crash in knife.
A crash was reported but without info to reproduce.
This is a likely crash introduced by previous fix
to allow linehits to snap to vertices.
The function to find connected linehits can't
assume all linehits have edges any more.
2013-09-19 12:47:35 +00:00
Dalai Felinto
7fa2d32de3 bugfix: [#34663] Cannot rotate view while using Knife tool with Maya preset
fix as suggested by Ton Roosendaal in tracker:
"the knife tool has a "MODE_PANNING" state, it could be nice to set this
in the modal map as well, to define the shortcut(s) that have to be passed on."
2013-09-17 20:35:17 +00:00
Dalai Felinto
5aeade4c60 add support for trackpad navigation while in knife operator
I caught this while looking at:
[#34663] Cannot rotate view while using Knife tool with Maya preset

(though it's not the original report).
I'll look at the other operators, there are probably a few in the same
situation as knife.
2013-09-17 15:20:44 +00:00
35cd649c66 rename cursor setting functions to make modal set/restore more clearly related functions. 2013-09-06 22:34:29 +00:00
29efa96940 style cleanup 2013-09-04 03:30:41 +00:00
aa3bea133a Fix a possible bug in knife detected by coverity.
A selection copy may have been passed a null pointer.
Also quieted a couple other complaints by coverity.
2013-09-03 11:37:47 +00:00
e8605f9df9 quiet compiler warnings 2013-08-30 16:52:54 +00:00
86f8470a5d Some knife fixes. Avoids duplicating verts; better handling of cut-through ortho.
Now cut lines detect vertices that they pass (almost) exactly over
and snap to them, to avoid making verts vert close to other ones.

Added radius arg to BKE_bmbvh_ray_cast so that can detect an obscuring
face when the ray might otherwise go exactly between two triangles.
Needed an isect_line_tri_epsilon function for similar reason.

Fixes last part of bug #35002. Other knife bugs still present but
getting this commit in now before continuing bug fixing.
2013-08-30 16:34:44 +00:00
8937a8b839 use BM_CREATE_NOP arg rather then zero, with pointer and bool args in either side in some cases it gets a bit confusing.
also correct edge-rotate where bool->flag conversion worked by accident.
2013-08-21 05:39:46 +00:00
5fafc222f0 style cleanup 2013-08-17 08:21:40 +00:00
fd14c344e0 switch arg order for BM_elem_select_copy(), would like to make this constant for all bmesh functions eventually. 2013-08-13 00:35:23 +00:00
4982f200fa move alloca define into its own header since its not related to BLI_array 2013-07-28 10:38:25 +00:00