Commit Graph

2495 Commits

Author SHA1 Message Date
7ae1949517 Select Random: add option to de-select
also made metaball operator behave like the others.

Path originally from Walid Shouman, with own edits.
2014-01-13 20:39:12 +11:00
62aa004c25 Style Cleanup: whitespace 2014-01-12 22:05:24 +11:00
e47a41e3fc Code Cleanup: style 2014-01-09 11:44:59 +11:00
49aa701645 Add profile control parameter to Bevel.
Parameter controls concavity / convexity.
    <.25 means: concave inward
    .25 means: straight slanted
    >.25 means: concave outward
    .5 means: circular (the default)
    1 means: straight along original sides
For now, there is a hard lower limit of .15
because more work is needed to get decent
results in the range below that.

The profile is actually a superellipse, and the
parameter is 1/4 of the exponent in the implicit equation
for a superellipse, except at the extreme values of 0 and 1.
2014-01-08 07:40:01 -05:00
6734936c13 RNA API: use bool's for enum itemf callbacks. 2014-01-04 18:10:01 +11:00
091740f858 Mesh Bisect: add header info message for modal operation
Fixes T37700

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D166
2014-01-04 05:41:58 +01:00
d8f4cb9b69 Fix T37965, loop multicut confirmation not happening when numeric input
is used. When numerical input was active confirmation events were not
getting handled.

Code here seems a bit duplicated, it may be possible to simplify it, but
leaving it slightly bloated for now.
2014-01-01 06:27:17 +02:00
709041ed0b Threaded object update and EvaluationContext
Summary:
Made objects update happening from multiple threads. It is a task-based
scheduling system which uses current dependency graph for spawning new
tasks. This means threading happens on object level, but the system is
flexible enough for higher granularity.

Technical details:

- Uses task scheduler which was recently committed to trunk
  (that one which Brecht ported from Cycles).

- Added two utility functions to dependency graph:
  * DAG_threaded_update_begin, which is called to  initialize threaded
    objects update. It will also schedule root DAG node to the queue,
    hence starting evaluation process.

    Initialization will calculate how much parents are to be evaluation
    before current DAG node can be scheduled. This value is used by task
    threads for faster detecting which nodes might be scheduled.

  * DAG_threaded_update_handle_node_updated which is  called from task
    thread function when node was fully handled.

	This function decreases num_pending_parents of node children and
	schedules children with zero valency.

    As it might have become clear, task thread receives DAG nodes and
    decides which callback to call for it.

    Currently only BKE_object_handle_update is called for object nodes.

    In the future it'll call node->callback() from Ali's new DAG.

- This required adding some workarounds to the render pipeline.
  Mainly to stop using get_object_dm() from modifiers' apply callback.
  Such a call was only a workaround for dependency graph glitch when
  rendering scene with, say, boolean modifiers before displaying
  this scene.

  Such change moves workaround from one place to another, so overall
  hackentropy remains the same.

- Added paradigm of EvaluaitonContext. Currently it's more like just a
  more reliable replacement for G.is_rendering which fails in some
  circumstances.

  Future idea of this context is to also store all the local data needed
  for objects evaluation such as local time, Copy-on-Write data and so.

  There're two types of EvaluationContext:

  * Context used for viewport updated and owned by Main. In the future
    this context might be easily moved to Window or Screen to allo
    per-window/per-screen local time.

  * Context used by render engines to evaluate objects for render purposes.
    Render engine is an owner of this context.

  This context is passed to all object update routines.

Reviewers: brecht, campbellbarton

Reviewed By: brecht

CC: lukastoenne

Differential Revision: https://developer.blender.org/D94
2013-12-26 17:24:42 +06: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
01acc2a7dc EditMesh: wireframe tool, add offset and vgroup support (not used yet) 2013-12-22 06:54:37 +11:00
87cc890aef Support units in modal numinput
Summary:
This completly changes the way modal numinput is handled. Now, edited expression is a string, which then gets unit- and py-evaluated to get a float value.

We gain many power and flexibility, but lose a few "shortcuts" like '-' to negate, or '/' to inverse (if they are really needed, we still can add them with modifiers, like e.g. ctrl-/ or so).

Features:
- units (cm, ", deg, etc.).
- basic operations from python/BKE_unit (+, *, **, etc.), and math constants and functions (pi, sin, etc.).
- you can navigate in edited value (left/right key, ctrl to move by block) and insert/delete chars, e.g. to fix a typo without having to rewrite everything.
- you can go to next/previous value with (ctrl-)TAB key.
- As before, hitting backspace after having deleted all leading chars will first reset the edited value to init state, and on second press, the whole "modal numinput" editing will be cancelled, going back to usual transform with mouse.

Notes:
- Did not touch to how values are shown in header when modal numinput is not enabled (would do that in another commit), so this is still quite inconsistent.
- Added back radian support in BKE_unit.
- Added arcminute/arcsecond to BKE_unit.
(those unit changes affect all angle UI controls, btw, so you can now enter radians or longitude/latitude values when in degrees units).

Related to T37600.

Reviewers: brecht, campbellbarton, carter2422

Reviewed By: brecht, campbellbarton, carter2422
Thanks everybody!

Differential Revision: http://developer.blender.org/D61
2013-12-21 17:44:48 +01:00
f5076d54cb 'Transform' Python Function for armature, curve and lattice.
patch by Paolo Acampora with some edits.
2013-12-17 23:04:36 +11:00
60a6b2422d Modeling: add optional angle limit for beauty fill
Makes this tool more useful on an entire mesh by only applying
beautify to planar surfaces.
2013-12-14 23:25:29 +11:00
e23f77b935 Code Cleanup: move mesh mapping functions into their own file/header 2013-12-12 16:28:52 +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
caf6bf80f7 Fix T37203: New face from an edge failed if only one vert was connected to a wire edge 2013-11-27 18:59:56 +11:00
4dd949632a Fix for recent error (editmesh triangulate crashed). 2013-11-27 13:00:40 +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
1768bd2c33 Fix T37617: "Add plane" was adding a 2*2 grid
Was a regression from rBaa3c06b41ca9, hope this time all things are OK again (note the X/Y subdivision values still are different than before (-1 for same result), but imho they make more sense this way).
2013-11-25 21:01:22 +01:00
63caaa2b12 Code Cleanup: rename vars for detecting change to be more consistent
rename change/is_change/is_changed/modified -> changed
also use bools over int/short/char and once accidental float.
2013-11-26 06:39:14 +11:00
41a9007760 Fix mesh triangulate not flushing selection 2013-11-25 17:54:18 +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
59e4600526 Fix [#37380] vertex paint colors don't render.
Another Evil Typo (r) one, you could add much more than the 8 allowed VCol layers!

Note: added some (warning-only) checks in mesh validate functions, but we still have a big issue with new cdlayer merge function, which could generate more than 8 layers of UVs or VCol... Don't know yet how to handle this situation. :(
2013-11-11 20:37:19 +00:00
3967371886 Used wrong RNA access routine in bevel amount commit. 2013-11-11 12:19:39 +00:00
bfb9cefccb Added options for how bevel amount is measured.
Now there is an 'Offset Type' dropdown on tool
shelf with types:
Offset - current method, offset of new edge
  from old along sliding face
Width - width of new bevel face (if segments=1)
Depth - amount a chamfering plane moves down
  from original edge
Percent - percent of way sliding edges move
  along their adjacent edges

The different options mainly are useful when
beveling more than one edge at once.

Leaving as a TODO to put these in the modifier,
as doing that has more permanent effects so
want to let users shake out problems with this
first.
2013-11-10 12:31:57 +00: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
f4762eb12b UI messages fixes... 2013-11-04 18:58:22 +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
7371aaab08 fix for weight-paint crash picking the weight with the mask modifier (or any modifier which removes geometry).
was incorrectly mixing indices from the DerivedMesh and the original mesh.
2013-11-01 01:14:36 +00:00
7267221715 remove return argument from wmOperatorType->cancel, was only ever returning OPERATOR_CANCELLED. 2013-10-30 23:08:53 +00:00
Dalai Felinto
a7b44c82e5 Triangulate Modifier: using different ngon and quad methods
Quads: Beauty, Fixed, Fixed Alternate, Shortest Diagonal
Ngons: Beauty, Scanfill

* Shortest Diagonal is the default method in the modifier (popular
  elsewhere), but beauty is the default in Ctrl+T).

* Remove the need for output slot and beauty operator to be called
after Clt+T

Patch with collaborations and reviewed by Campbell Barton
2013-10-29 02:42:51 +00:00
3264461598 move bmesh array lookup data and utility functions from editmesh into bmesh,
since enough bmesh operations can also take advantage of direct index lookups on verts/edges/faces.

developers note:
- EDBM_index_arrays_init/ensure/free -> BM_mesh_elem_table_ensure/init/free
- EDBM_vert/edge/face_at_index -> BM_vert/edge/face_at_index
- EDBM_uv_element_map_create/free -> BM_uv_element_map_create/free
- ED_uv_element_get -> BM_uv_element_get
2013-10-28 02:05:33 +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
ff7dbdbaee rename give_cursor to ED_view3d_cursor3d_get 2013-10-26 04:07:18 +00:00
b7f0a1fabe Updating tooltip for Fill Holes "Sides" option.
This makes the tooltip much more descriptive to tell the user what the setting does. Suggestion by Thomas Beck and bcon13.
2013-10-25 14:12:22 +00:00
292d1f55fd refactor transform.c - minor changes
- use TREDRAW_HARD define
- use apply prefix for transform callbacks.
- make callbacks static.
2013-10-23 03:57:42 +00:00
ac602142d3 add 'Extrude Region, Vertex Normal' to the extrude menu, equivalent of 'Extrude, Escape, Alt+S' 2013-10-15 18:30:49 +00:00
Dalai Felinto
70efa7f1aa renaming "Beautify Fill" to "Beautify Faces"
changing the ot->name only, not the ot->idname
(to avoid breaking scripts)

The tool requires the selection to be fill previously,
the original name was confusing if we consider we have
"Fill" with the "Beauty" option.

Discussed with Bastien Montagne and Brecht van Lommel.
2013-10-15 15:34:14 +00:00
a00c693f99 note in bisect tooltip that you need to click-drag the plane. 2013-10-14 08:45:43 +00:00
eabf7ab335 code cleanup: utility function for getting a bool as a string. 2013-10-13 00:32:31 +00:00
7998b2f6a7 transform - use 2d float's for the viewport center (allows for vector math functions to be used more easily). 2013-10-12 03:42:06 +00:00
b6db417ee4 code cleanup: use const's for vector args. 2013-10-12 02:19:37 +00:00
3f5be1ef0a fix for select linked walking over the same faces multiple times. (caused gset assertion). 2013-10-10 23:18:37 +00:00
03602dc158 use BLI_bitmap for editmesh selection buffer to save some memory. 2013-10-10 22:30:16 +00:00
ecc5eb59c6 fix [#37030] Loop Cut and Slide doesn't clear header text if you click a blank area 2013-10-10 21:04:39 +00:00