Age | Commit message (Collapse) | Author |
|
(lots of tools are 3d :)), and redundant assignment.
|
|
|
|
|
|
warnings under some configurations.
|
|
|
|
Thanks for Sergey for finding the bug & patching, This fix works a bit differently.
Theres no need to allocate the customdata in the first place - since its written into. So add a flag for vert/edge/face/loop creation functions so they can skip customdata creation.
|
|
use_singleedge -> use_single_edge)
also remove duplicate docs for operator arg formatting.
|
|
BMO_op_vinitf comments.
|
|
quite a bit with bmesh operators).
also add utility functions BMO_slot_buffer_from_single(), BMO_slot_buffer_get_single()
|
|
add type checking for element buffers, there was nothing stopping python from passing any element type into an argument when in some cases only verts/edges/faces were expected.
now operator args define which types they support.
|
|
access to these as input arguments and return values.
all output values currently have ".out" suffix, this may go in the future, but for now it makes it clear in C code what are inputs and outputs.
|
|
get return values.
|
|
|
|
there are 3 operators here that share
utility functions with eachother but have nothing in common with other operators in bmo_utils.c
|
|
Recently addons were submitted for review and this was the only advantage they had over blenders existing internal
select-similar tool.
|
|
|
|
- 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.
|
|
|
|
|
|
- building without python works again
- rename maxi/mini to i_max/i_min (so thay are available for function names)
- some minor edits to IK stretch setting (no functional changes).
|
|
|
|
is to respect hidden geometry.
this is useful for bmesh tools that operate in object mode or for modifiers which would previously use hidden faces in some cases.
|
|
|
|
|
|
|
|
|
|
- style - multi-line ifs move braces onto new lines.
- iterators - convert some to macros, other split up and move brace.
|
|
- use angle_normalized_v3v3() where both vectors are known to be normalized.
- remove needless radian to degrees conversions.
- move checks for customdata layers outside the inner loop (for bevel and crease).
|
|
|
|
to BLI_array macros.
|
|
possible), include BMO_iter_new in for loops.
|
|
C: BM_face_calc_area(f), Py: BMFace.calc_area()
|
|
|
|
|
|
maceros had unused args in both cases).
|
|
|
|
|
|
iterator macros.
|
|
include so definitions dont get out of sync.
|
|
|
|
|
|
oflag.
|
|
|
|
scons).
|
|
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
|
|
|
|
|
|
* 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.
|
|
|
|
* name bmesh operator func's BMO_slot_buffer_* rather then BMO_slot_* since it wasnt obvious some only dealt with buffer, some both.
* more typechecks and asserts of BMO_ functions (I lost some time calling a map with a buffer function that failed silently).
* small speedup for extrude check - test if the edge is wire _before_ doign a hash lookup.
|