Commit Graph

105 Commits

Author SHA1 Message Date
ca7d1ec39d style cleanup: use <pre> for doxygen ascii art 2012-08-13 15:17:15 +00:00
6264579f6b Fix #31951 Subdivide with multires splits uvs.
The bug is related to 31581 and the main cause is the small offset that
BM_loop_interp_from_face introduces before calculating barycentric
weights. Solved by only calculating displacement layer.
2012-06-29 10:12:42 +00:00
af3e348430 code cleanup: use TRUE/FALSE rather then 1/0 for better readability, also replace do prefix with do_ for bool vars. 2012-05-19 13:28:19 +00:00
2a1ba8c85b style cleanup: formatting and some float/double promotion 2012-05-03 19:57:24 +00:00
ef054e165c style cleanup: format 'for' loop macros the same as for loops, some renaming to BLI_array macros. 2012-04-28 15:14:16 +00:00
792f536b36 code cleanup: better use of BLI_array_* (grow in larger steps where possible), include BMO_iter_new in for loops. 2012-04-23 02:17:57 +00:00
16ff7e40e6 code cleanup: change C naming convention (so py and C api match), eg:
C: BM_face_calc_area(f), Py: BMFace.calc_area()
2012-04-23 01:19:50 +00:00
b40476455e code cleanup: remove unused BMesh args. 2012-04-19 14:38:09 +00:00
475ecbb0ce remove BM_ITER, BM_ITER_INDEX macros, use ELEM or MESH variants only (the maceros had unused args in both cases). 2012-04-19 13:47:58 +00:00
75b869e428 style cleanup: BM_ITER / BM_ITER_INDEX / BMO_ITER 2012-04-19 11:44:12 +00:00
c776418b24 add missing NULL check for BM_vert_collapse_faces(), could crash in rare cases. 2012-04-18 08:11:08 +00:00
9a4aecbcc3 bmesh: fix own bug in BM_vert_collapse_faces() with option 'kill_degenerate_faces', was removing data as it iterated, would crash in some cases. 2012-04-18 07:27:15 +00:00
8fa17c5362 code cleanup: no functional changes
- memset(..., -1) is used incorrectly even though it worked: MOD_solidify.c - thanks Halley from IRC for noticing this. use fill_vn_i() instead.
- quiet warnings in editmesh_slide.c
- cleanup comments in bmesh and some other minor comment additions.
2012-04-07 12:37:15 +00:00
1635d8e873 add option not to delete edges/verts when joining faces, needed so we can loop over edges and join them without having to check if they have been removed. 2012-04-04 14:48:10 +00:00
7044d80639 code cleanup: remove BMesh * args from query functions which don't need it 2012-03-22 07:53:11 +00:00
d76c05cd36 style cleanup: bmesh 2012-03-21 09:10:08 +00:00
4f19c1a995 spelling cleanup 2012-03-18 07:38:51 +00:00
bed5ae5366 *picky* fix for edge rotate
- Edge rotate would leave verts selected, this would give problems because those selections would leave edges that would try to rotate when run again. now de-select old verts on edge rotate.

- Rotating into hidden verts gave odd results, now make sure hidden state is ok.

- BMO_slot_buffer_hflag_disable / BMO_slot_buffer_hflag_enable now have flushing for the hide flag too.
2012-03-15 23:23:04 +00:00
4f7bdc59d3 style cleanup: spelling.
also remove large, duplicate comments from sunsky.h
2012-03-09 00:41:09 +00:00
c82c456247 bmesh py api, new functions:
* bmesh.utils.face_vert_rip(f, v)
* bmesh.utils.loop_rip(l)
2012-03-08 20:00:37 +00:00
17786b3b3e building without python works again, cleanup bmesh include paths (cmake and scons). 2012-03-08 03:25:53 +00:00
541d239cdc fix for error in r44711, needed to update sequencer callback.
also quiet some warnings.
2012-03-07 19:19:56 +00:00
9f742303a7 Knifetool uses direct cutting instead of scanfill: fixes bugs 29908, 28963, 30333.
Knifetool accumulates a bunch of proposed cuts and when the user
confirms, it makes them all. The old code did this by using scanfill
to triangulate the cutting edges in their faces, and then merging
triangles where possible. This sometimes ended up with strange
lost faces, and also made it so that when holes were cut, the
surrounding face ended up totally triangulated. But 29908 was
an example of a lost face.

This new code directly finds chains of cutting edges that go from
one side of a face to the other and using BM_edge_split_n to make
the cuts. Holes are handled by finding two good places where
the hole can be connected to the containing face (using two
because I think some other code in bmesh assumes that there are
no edges that appear twice in a face).

The old code is still there with #if SCANFILL_CUTS, so can easily revert
if this proves to be a bad idea.

Also, a small fix to previously added BM_split_n (forgot to
copy face attributes to new face).
2012-03-07 14:44:43 +00:00
d1937de1d2 fix for own error in edge-rotate keeping edge customdata - this was crashing when rotating multiple edges.
Now create the rotate edge in advance and copy its customdata (before joining the faces).

This commit also fixes an annoyance where tryangulating faces could create duplicate edges.
2012-03-06 19:29:05 +00:00
5ba020da4f bmesh: speedup for deselecting all, (avoid topology loops since all get deselected anyway).
& some ascii art to explain BM_face_other_vert_loop() behavior.
2012-03-06 16:17:55 +00:00
d87f08cbaa Add BM_face_split_n which splits a face with intermediate points with given coordinates.
This will be used in soon-to-be-commited knife tool rewrite.
Interpolates using the original face.
Also fixed or improved a couple of comments.
2012-03-06 12:09:35 +00:00
4b940364a1 edge rotate now keeps edge properties (like seam, crease, bevel weight.. etc) 2012-03-05 01:53:30 +00:00
4d84e869a0 Improvements to bmesh edge rotate
On a user level, edge rotate now works better with multiple edges selected, it wont make zero area faces or rotate edges into existing ones.

With a single edge selected - rotate is less strict and will allow ugly resulting faces but still checks on duplicate edges.

API:
* BM_edge_rotate now takes a flag, to optionally...
** check for existing edge
** splice edge (rotate and merge)
** check for degenerate resulting faces (overlapping geometry, zero area)
** beauty - only rotate to a better fit.
... this allows it to still be used as a low level API function since all checks can be skipped.

* BM_edge_rotate() now works a bit different, it find the new edge rotation before joining the faces - exposed by BM_edge_rotate_calc().

* Added api call bmesh_radial_faceloop_find_vert() - Radial Find a Vertex Loop in Face
2012-03-05 00:50:18 +00:00
76e9f91d1c switch arg order for BM_face_other_* funcs (make face come first), and add nice ascii art for BM_face_other_vert_loop since this stuff is hard to grasp as text. 2012-03-04 16:01:02 +00:00
86cec98f9e fix for leak in bmesh edge split - assert when invalid args are given rather then returning NULL. 2012-03-03 14:48:50 +00:00
9c18ade898 bmesh edge rotate
* improve check to see if edge rotate can be done,
  was checking if both edges verts have an edge count of 2, which is really a meaningless test since the verts can have stray edges connected and the result wont work right.
  instead check if the next verts in both faces share a vertex.

* add utility function BM_face_other_vert_loop() which gets the next loop in a face.
* add convenience function BM_edge_face_pair() which returns 2 faces for edges that have exactly 2 face users. (saves ugly e->l->radial_next ... in code) and is more readable.
2012-03-03 12:35:37 +00:00
ea13ec1699 Spelling Cleanup 2012-03-01 12:20:18 +00:00
a6f420b828 update doxygen comments for bmesh. 2012-02-29 06:55:10 +00:00
dcfd1dd7e2 code cleanup: de-duplicate bmesh face creation code, 2012-02-28 19:30:44 +00:00
2a7f1af61e Code Cleanup:
- apply some rules for function naming conventions, added to main bmesh doc in bmesh.h.
- remove unused function BM_loops_to_corners().
2012-02-28 19:10:53 +00:00
d1d11bbe9b more header re-arranging.
Some function comments were in headers, some in the C files, some in both.
Moved function comments from headers into the C files.
2012-02-28 18:28:30 +00:00
e828b10251 Code Cleanup
* remove one the changes to fix #30374, instead just check if the face exists.
* remove some unneeded edge checks in BM_face_create_quad_tri_v().
2012-02-28 08:17:53 +00:00
7536bcbe70 Code Cleanup: bmesh
* remove unneeded struct's from headers.
* give argument names for return ** pointers r_ prefix.
2012-02-28 07:42:48 +00:00
d2cab3e8b0 move bmesh wiki docs into bmesh header and update doxygen.
also have doxygen ignore *.py files and fix some warnings.
2012-02-27 20:27:19 +00:00
e17bf02c2d Code Cleanup:
* made bmesh_structure.h function names more consistant.
* remove unused code in bmesh_structure.c
* removed 'Edge Flip' operator (missing from bmesh but looked into trunk feature and dont think its worth keeping).
* tagged  some BMESH_TODO's
2012-02-27 13:47:53 +00:00
3ba37b65a3 style cleanup 2012-02-26 22:38:49 +00:00
5cfab7f521 bmesh api name change, add _count suffix for BM_*_share functions. 2012-02-26 19:46:12 +00:00
03f5758b48 replace BMESH_ERROR with BMESH_ASSERT, most areas it was used are better suited to an assert anyway.
also tag all error cases as UNLIKELY() for better branch prediction.
2012-02-26 16:39:21 +00:00
62f9959a8e replace bmesh_error with macro that gives the file/line/func the error happens on. 2012-02-26 14:57:41 +00:00
1004b03578 bmesh - remove faces with <3 sides after dissolve/collapse (most tools already did this). 2012-02-26 05:48:12 +00:00
a631b5a651 fix for a bug in bmesh_jekv (and its main caller BM_vert_collapse_faces).
Collapsing an edge could result on 2 edges sharing the same verts, now check for this and 'splice' one edge into another.
2012-02-26 04:38:37 +00:00
ebeb815577 fix for vertex dissolve not doing anything with a single vertex on a single face.
now collapse the vertex into the edges.

also disable removing the vertrex when it could not be collapsed (old code), found it could would connected faces which isn't acceptable - now return fail in that case.
2012-02-26 00:43:47 +00:00
b4b7d809f1 bmesh code cleanup
* minor edits to header
* make BM_vert_dissolve() easier to read.
2012-02-25 23:41:31 +00:00
e20d09f079 fix [#30352] Dissolving a vert in an edgeloop (no faces) just deletes the verts killing connections
collapse the vertex into an edge when it has 2 edges connected to it.
2012-02-25 23:29:12 +00:00
3fc2fbc333 style cleanup, use { on newline after function definition.
spelling 'impliment' -> 'implement'
2012-02-25 16:49:59 +00:00