Commit Graph

649 Commits

Author SHA1 Message Date
d7cc2be2b7 add linklist stack macros, use where over allocating an array was previously done. 2013-08-17 05:33:55 +00:00
ef8ea14f45 rewrite edgenet fill bmesh operator.
previous code created faces with mixed face-flipping and could get very slow,
test with ~60,000 edges here hung my system for over 2min (didnt wait for it to finish), new code executes in about 1 second.

new code doesn't attempt to flip faces correctly, its quite involved to do so, especially when the new faces are not created adjacent to eachother.
so simpler to calculate normals afterwards.
2013-08-16 14:18:54 +00:00
5157eea977 bmesh edge-net: refactor out face creation into its own function, replace array reallocation with alloca.
fix for error increasing the face tag count when the face might not be created.
2013-08-13 23:48:48 +00:00
91f04bebf0 bmo_edgenet_fill_exec was building a vertex array when it didnt need to. also simplify for loops. 2013-08-13 22:28:16 +00:00
5a9c012d86 fix for bug in rip tool, isolated verts would remain selected after ripping. 2013-08-13 01:52:36 +00:00
49411a6e37 fix own regression, rip tool wasn't handling selection. 2013-08-13 01:00:07 +00:00
98c574e41a use 'greater/less then or equal to' operators rather then adding 1. 2013-08-11 05:40:35 +00:00
00b39c4e5b code cleanup: more confusion with 0/NULL/false 2013-08-07 03:55:21 +00:00
78d69a1e15 code cleanup: replace strcpy with BLI_strncpy for fixed size strings, and correct some harmless but incorrect sizeof() use 2013-08-04 18:12:49 +00:00
5f72462e38 correct edgeloop tagging assigning an uninitialized value, also remove redundant NULL check in edgenet fill 2013-08-03 17:29:53 +00:00
a4b922ad9b correct invalid sizeof() use in bmesh (harmless in practice) 2013-08-03 17:27:05 +00:00
c17f5960df correct error in own recent edits to triangle joining 2013-08-02 13:35:04 +00:00
78820edafc use bmesh for loop macros for looping over mesh verts/edges/faces 2013-08-01 18:33:35 +00:00
76e989d7b1 function renaming for own recently added BLI_math functions, suggested by Brecht. 2013-07-30 10:58:36 +00:00
1300721d57 add asserts to ensure face normal is up to date. 2013-07-29 09:12:23 +00:00
cdc315a69b bmesh optimization (noted as todo), avoid recalculating normal every time BM_face_legal_splits() runs,
assume normal is valid (assert when its not).
2013-07-29 06:04:09 +00:00
4f02555004 new mesh tool for cleaning up meshes, splits up non-planar faces while they exceed a given angle threshold
(access from the 'Mesh -> Clean' menu).
2013-07-28 19:53:46 +00:00
c754eaa0f9 add inline functions getting a single axis from mul_m3_v3() 2013-07-28 19:46:33 +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
72f2917032 bmesh: skip error checks when building in release mode (minor speedup),
also more strict use of BLI_array_declare(), only allow after array is declared.
2013-07-28 09:05:27 +00:00
d68917cb86 code cleanup: typos 2013-07-27 07:02:27 +00:00
8aa1bdbc89 simplify triangle joining and remove use of BLI_array. 2013-07-27 06:45:11 +00:00
6b3abde8d4 fix for joining face selection after recent api change, also bmo_join_triangles_exec() wasn't filling in its 'face' output slot. 2013-07-27 06:11:54 +00:00
a0969adb4e fix for bridge tool selection flushing (after recent api change), also exposed bug in bmesh edgering-subdiv operator. 2013-07-27 05:57:20 +00:00
5dc3cfc983 fix [#36282] Spin error with non uniform scale
add support for passing object matrix to bmesh transform operators.
2013-07-26 11:15:22 +00:00
29df776b89 optimization: call one bmesh operator for rotate (not 3).
added pivot_m4() utility function since rotating about an arbitrary point is handy.
2013-07-26 06:12:49 +00:00
09a9aa5720 add twist option to bridge tool (for circular loops) 2013-07-25 19:27:18 +00:00
4bc32d5ded mesh tool to fill in holes, added in mesh clean menu,
unlike other face creation tools it copies data from surrounding faces.
2013-07-25 18:43:05 +00:00
a15e9ca495 triangulate and beauty fill also needed changes to selection handling after recent changes. 2013-07-25 07:00:07 +00:00
3270031660 correct problem with limited-dissolve not leaving the selection correctly (caused by BM_elem_attrs_copy no longer dealing with selection) 2013-07-25 06:05:44 +00:00
19496ab62a internal bmesh api change: BM_elem_attrs_copy() no longer copies the selection flag.
this was slowing down modifiers since the selection flags would be copied and flushed to connected geometry.
2013-07-24 19:31:58 +00:00
cdac157f4c code cleanup: use iterator macros, and replace BM_LOOPS_OF_FACE with direct loop access when converting a bmesh to a mesh. 2013-07-24 18:38:55 +00:00
57ce6d1470 old todo, rotate around individual origins now supports connected face/edge islands.
previously this gave very odd/annoying results, see bug reports [#36134], [#35419]
2013-07-22 14:50:38 +00:00
7398c49776 add support for BM_mesh_calc_face_groups to use vertex connectivity (not currently used yet) 2013-07-22 08:12:50 +00:00
7db1d6556d code cleanup: add break statements in switch ()'s, (even at the last case). 2013-07-21 08:16:37 +00:00
a2492e0603 style cleanup: braces/indentation 2013-07-19 16:44:17 +00:00
7087b8b9fe code cleanup: remove BLI_array use when extruding individual faces. also use BM_face_copy utility function. 2013-07-19 11:45:21 +00:00
79b919644b code cleanup: remove array reallocation in bmesh duplicate function (use alloca) 2013-07-19 10:39:32 +00:00
7430701600 correct own incorrect check bmesh edgerin subdivide, also add missing break in orthogonalize_m3 though this one wouldn't effect release builds. 2013-07-16 11:39:48 +00:00
b7396654e1 fix for bad NULL check in bmo_connect_pair, also remove duplicate checks in if statements and redundant initialization vars. 2013-07-13 16:25:47 +00:00
13e33522dc fix for bridge tool where the 2 loops overlap (typical use for scanfill), however its nice to support with bridge too since it can do subdivisions, handles customdata and fills in quads. 2013-07-11 08:37:30 +00:00
bd5cb6fb3b fix for own error in normal-recalc r58077, initial face flipping wasn't checking against face-island center. 2013-07-09 01:18:15 +00:00
14ab39c5e0 minor improvements
- calc normals only check flag when needed.
- keymap, dont get name unless its needed.
- keymap, avoid property lookup.
- idprop debug print, include pointer, helpful for troubleshooting.
2013-07-09 00:13:17 +00:00
27734f5bec fix/improve normal calculation, noticed when checking on the previous bugfix.
- normals depended on the meshes rotation, so you could rotate Suzzane and in some cases one of the eye normals would be flipped.
- normals depended on the meshes placement in relation to the meshes center, now find the outer most face by each face-island center.
2013-07-08 13:30:11 +00:00
61bbefe40d remove unused normal-recalc flags. 2013-07-08 08:56:46 +00:00
335fd7388f move normal recalculation into its own source file. 2013-07-08 08:50:04 +00:00
2c8087aa2a fix [#36047] Recalculate normals produces faulty normals on certain simple meshes
The mesh in the report had 3 faces-user-edges, resolve the problem by not walking over these edges.
also don't recurse anymore (avoids realloc's).
2013-07-08 00:51:30 +00:00
0a1bcc78e0 fix for writing past array end with loop filling. 2013-07-06 02:20:39 +00:00
0d18f1829a fix [#35989] bridge tool flip mash
open edge loops were calculating flipping incorrectly.
2013-07-05 08:45:42 +00:00
e9208e99b7 bridge tool: calculate face normals before triangulating, own error when removing normal recalc from the bmesh operator.
also rename `Fill Grid` -> `Grid Fill` to match `Beauty Fill`
2013-07-01 07:15:12 +00:00