Campbell Barton
ddc2dbc2a4
style cleanup
2012-10-22 08:15:51 +00:00
Campbell Barton
2342209c95
enable bmesh decimator by default.
2012-10-22 02:09:41 +00:00
Campbell Barton
39ed660bc6
fix own mistake - passing wrong argument to bmesh decimator when calculating boundary quadric.
2012-10-22 02:02:52 +00:00
Campbell Barton
248b2fc6d6
bmesh-decimator update
...
- update face normals when triangulating.
- avoid divide by zero when interpolating customdata on a zero length edge.
- replace zero float comparisons with fabsf() < FLT_EPSILON to avoid numeric error.
also renamed BLI_heap_empty() --> BLI_heap_is_empty() so its obviously readonly function.
2012-10-21 15:20:53 +00:00
Campbell Barton
203ff71b9e
bmesh decimate fixes
...
- don't collapse boundary verts into non boundary edges (was ugly causing spikes)
- handle degenerate cases better, rather then removing double edges after collapse, check before collapsing that there won't be any degenerate faces/edges.
2012-10-21 12:35:01 +00:00
Campbell Barton
d599b643b7
style cleanup: bge, switch statements mostly.
...
also left bmesh decimator on in previous commit.
2012-10-21 07:58:38 +00:00
Campbell Barton
7deb8d8a26
code cleanup: spelling
2012-10-20 20:36:51 +00:00
Campbell Barton
bc8f602601
style cleanup
2012-10-20 18:46:57 +00:00
Campbell Barton
3da4b08110
bmesh-decimator, skip recalculating face normals on each edge collapse. (they are not used so faster to avoid)
2012-10-20 18:12:22 +00:00
Campbell Barton
eee64aeccf
bmesh-decimate now only does CustomData_has_math for loop layers, add CustomData_has_interp() for vert & edges.
2012-10-20 17:39:56 +00:00
Campbell Barton
8944dab58a
bmesh decimator support for loop & edge customdata. (most importantly UVs and vertex colors).
2012-10-20 17:31:07 +00:00
Campbell Barton
d20128bbbc
fix for BM_edge_other_loop() not working right (own error in recent commit), and add new function BM_vert_step_fan_loop() for stepping around the loops of a face fan with manifold edges.
2012-10-20 16:48:04 +00:00
Campbell Barton
deeecc2029
code cleanup: remove unused members of BMIter struct to save some space. (this iterator is used everywhere).
...
also rename vars in the struct.
2012-10-20 10:11:26 +00:00
Campbell Barton
23d43396ff
code cleanup: quiet -Wshadow warning, var name changes for splice functions and add assert for BM_edge_splice() when edges don't use the same vertices.
2012-10-20 09:56:40 +00:00
Campbell Barton
a7a723283b
add BM_edge_find_double() and use in bmesh decimator to fix crash.
2012-10-20 09:48:41 +00:00
Campbell Barton
9f8070d047
code cleanup:
...
- define array sizes for functions that take vectors.
- quiet some -Wshadow warnings.
- some copy/paste error in readfile.c made it set the same particle recalc flag twice.
2012-10-20 08:02:18 +00:00
Campbell Barton
e527ce552e
add option to initialize heap with a known number of elements, since this may be known in advance - it avoids re-allocing too much.
2012-10-19 10:40:32 +00:00
Campbell Barton
e648542872
decimate modifier rewrite to use bmesh (#ifdef-disabled by default for now).
...
- maintains quads & ngons
- supports some customdata (weight paint for example works fine).
TODO
- add suppory for loop data (UV's / VCol's).
- outputs invalid geometry when heavily reducing some meshes, needs to be made stable in these cases.
2012-10-19 07:31:51 +00:00
Campbell Barton
9b07c98bb4
code cleanup: minor style change & quiet warning, also add assert for BM_vert_splice() to check for invalid use.
2012-10-19 03:07:58 +00:00
Campbell Barton
0c2a1500f2
minor changes
...
- stub from last commit was incorrect (copied old docs)
- decimator was making copy of quadric for no reason.
- correct typo
2012-10-17 16:10:04 +00:00
Campbell Barton
12a8c19956
un-subdivide bmesh operator, useful for making lower polygon versions of models, can give nicer results then edge collapsing which tends to give a lot of sharp triangles.
...
works on edges and faces, has iteration option to further reduce the poly count.
access from the edge menu, under subdivide.
example: http://www.graphicall.org/ftp/ideasman42/bmesh_unsubdivide.png
2012-10-16 16:04:12 +00:00
Campbell Barton
eb771c78cd
fix for free NULL pointer in BM_vert_splice() and BM_iter_as_arrayN() failed with BM_VERTS_OF_MESH/BM_EDGES_OF_MESH/BM_FACES_OF_MESH.
2012-10-16 14:35:37 +00:00
Campbell Barton
aacdd76c06
fix for 2 cases BM_disk_dissolve() could fail/assert.
...
- when there was a vertex with 2 boundary edges and one manifold edge (vert at the boundary between 2 quads) it could assert.
- when there is a vertex with 2 boundary verts connected that both use the same face, it would do nothing.
2012-10-16 09:11:07 +00:00
Campbell Barton
5e1508528f
style cleanup
2012-10-16 01:56:54 +00:00
Nicholas Bishop
1de76baf88
Add BMesh and WM symmetrize operators
...
* The symmetrize operation makes the input mesh elements symmetrical,
but unlike mirroring it only copies in one direction. The edges and
faces that cross the plane of symmetry are split as needed to
enforce symmetry.
* The symmetrize operator can be controlled with the "direction"
property, which combines the choices of symmetry plane and
positive-negative/negative-positive. The enum for this is
BMO_SymmDirection.
* Added menu items in the top-level Mesh menu and the WKEY specials
menu.
* Documentation:
http://wiki.blender.org/index.php/User:Nicholasbishop/Symmetrize
* Reviewed by Brecht:
https://codereview.appspot.com/6618059
2012-10-15 23:50:09 +00:00
Campbell Barton
da9394f596
code cleanup: define sizes of vectors for function args and use C style comments
2012-10-15 09:11:17 +00:00
Campbell Barton
643f331cb5
Rip-fill mesh tool (option for rip operator)
...
Alt+V will fill the area inbetween the ripped faces - a bit like extrude.
faces are flipped to match existing geometry and customdata (uv, vcols etc) is copied from surrounding geometry too.
2012-10-14 04:42:11 +00:00
Campbell Barton
7412e321a3
add support for ripping off a single face from a single vertex when the vertex has 3 surrounding verts & faces.
2012-10-13 01:46:57 +00:00
Joshua Leung
8b7f410f95
Code cleanup - silence some "uninitialised" warnings in BMesh code
...
There are still a lot more in bmo_bevel.c and bmo_extrude.c, but those don't
seem that easy to fix.
2012-10-08 06:28:06 +00:00
Campbell Barton
c9c76a9a68
add compiler hints that failing to create a bmesh face is unlikely.
2012-10-01 11:12:49 +00:00
Campbell Barton
ed1cda9a6c
style cleanup
2012-09-30 06:12:47 +00:00
Campbell Barton
f3850ca13b
fix for adding triangle-fan filled circle not tagging the center vertex.
2012-09-27 03:32:13 +00:00
Campbell Barton
dbeddcdbce
style cleanup: also correct incorrect doxy heading
2012-09-26 20:26:31 +00:00
Campbell Barton
aa49ca25d5
incorrect spelling in comments
2012-09-26 20:05:38 +00:00
Campbell Barton
e2baa41ec7
fix [ #32665 ] Inconsistent Circle Mesh Edge Subdivision
2012-09-26 11:14:40 +00:00
Campbell Barton
25c96bc9f3
code cleanup: remove unused macros, commet some which may be useful later - or good to keep for completeness. quieted some warnings and add flags -Wmissing-include-dirs and -Wno-div-by-zero to cmake/gcc
2012-09-20 01:02:39 +00:00
Campbell Barton
0d5d2146eb
code cleanup: make shape key api names consistent with our new convention.
2012-09-19 10:12:07 +00:00
Campbell Barton
f5d3e361ce
fix for missing NULL check in init_render_texture() (possibly own fault), also remove some redundant code.
2012-09-19 08:09:22 +00:00
Campbell Barton
db051f2b2d
fix MESH_OT_tris_convert_to_quads() limit options (uv and vertex color) were not working at all.
2012-09-19 04:48:34 +00:00
Campbell Barton
aff591c6e1
code cleanup: typos and set exceptional cases of zero length normals as UNLIKELY().
2012-09-17 22:22:06 +00:00
Campbell Barton
d724d0adfe
code cleanup: quiet warnings for gcc's -Wundef, -Wmissing-declarations
2012-09-16 00:26:36 +00:00
Campbell Barton
e75f5c8208
quiet -Wmissing-prototypes warnings, and enable this warning by default for C with gcc.
...
helps for finding unused functions and making functions static, also did some minor code cleanup.
2012-09-15 01:52:28 +00:00
Campbell Barton
77e351300b
code cleanup: replace BM_DISK_EDGE_LINK_GET define with inline function, that checks for the vertex not matching either of the edges verts.
2012-09-12 05:11:38 +00:00
Campbell Barton
bd5fdf63cb
fix [ #31456 ] Extreme lag editing meshes
...
running BM_CHECK_ELEMENT was taking over 75% of the time to subdivide a mesh, since this only reports errors, and is so slow - only run this on non-release builds.
2012-09-12 04:53:49 +00:00
Campbell Barton
319831d7b8
code cleanup: use an enum for uiBut->pointype (more useful debug display of members),
...
and rename COL -> COLOR --- less confusing since the layout engine has row/col's.
2012-09-11 23:10:23 +00:00
Campbell Barton
10d18e5b5f
code cleanup: use min/max inline functions rather than macros & simplify loop
2012-09-11 09:39:37 +00:00
Campbell Barton
39231c90dd
fix [ #31738 ] BM_vert_splice modifies loops during iteration
...
patch by Nicholas Bishop, modified to avoid looping over vert-loops one extra time.
added BM_iter_as_arrayN(), returns an iterator as an array without knowing the length before calling.
2012-09-11 06:12:48 +00:00
Campbell Barton
2f436612fe
replace BM_vert_face_count() use of BM_LOOPS_OF_VERT iterator with a direct call to bmesh_disk_facevert_count()
2012-09-11 05:27:15 +00:00
Campbell Barton
1a7eb3454e
style cleanup
2012-09-08 08:59:47 +00:00
Campbell Barton
a9f10b6bc2
style cleanup
2012-09-08 06:40:03 +00:00