3 years agoFix T47967: Select next active fails in some cases
Campbell Barton [Tue, 29 Mar 2016 17:56:18 +0000 (04:56 +1100)]
Fix T47967: Select next active fails in some cases

For cases when there are multiple matches,
find the closest match (with increasingly fuzzy tests) instead of failing.

3 years agoBuildbot: Attempt to work-around unsupported clang on OSX machine
Sergey Sharybin [Tue, 29 Mar 2016 17:46:10 +0000 (19:46 +0200)]
Buildbot: Attempt to work-around unsupported clang on OSX machine

Ideally this would need to be fixed by nvcc itself. but they didn't
do that for a long time.

3 years agoFix error in ghash/gset_ensure_p_ex
Campbell Barton [Tue, 29 Mar 2016 16:00:26 +0000 (03:00 +1100)]
Fix error in ghash/gset_ensure_p_ex

The key is needed in the case the ghash resizes.
Caused regression T47984.

3 years agoFix T47902: Particle grid not using modifier stack, Take II.
Bastien Montagne [Tue, 29 Mar 2016 15:45:56 +0000 (17:45 +0200)]
Fix T47902: Particle grid not using modifier stack, Take II.

Now only fix correct handling of use_modifier_stack for grid distribution,
fixing it globally breaks all existing edited hair systems. :/

3 years agoRevert "Fix T47902: Particle grid not using modifier stack."
Bastien Montagne [Tue, 29 Mar 2016 15:33:08 +0000 (17:33 +0200)]
Revert "Fix T47902: Particle grid not using modifier stack."

This reverts commit 2bd3acf7cd27c0c3ee77b10d56b91c3b03226d39.

Commit is valid in theory - but in practice, it means nearly all edited hair systems
would need to be re-created from scratch... Not nice, so better revert and note in code
that particle distribution is ugly and does not respect 'use modifier stack' option in most cases.

3 years agoGPencil New Stroke Smoothing: Don't perform smoothing on pressure values
Joshua Leung [Tue, 29 Mar 2016 14:21:33 +0000 (03:21 +1300)]
GPencil New Stroke Smoothing: Don't perform smoothing on pressure values

As noted by Antonio and Daniel, performing smoothing on the pressure values
for new strokes doesn't work that great. From an artist POV, it is apparently
"very strange that line thickness shrink suddenly after drawing it".

3 years agoDriver Mapping Types: Added temporary icons to break up the two types of mapping...
Joshua Leung [Tue, 29 Mar 2016 14:18:01 +0000 (03:18 +1300)]
Driver Mapping Types: Added temporary icons to break up the two types of mapping behaviours (modal vs manual)

3 years agoRMB Menu: Add icons for delineating each cluster of options in this menu
Joshua Leung [Tue, 29 Mar 2016 14:14:52 +0000 (03:14 +1300)]
RMB Menu: Add icons for delineating each cluster of options in this menu

From T33052 by Harley Acheson (harley)

3 years agoDrivers Setup: Expose all mapping types for creating drivers
Joshua Leung [Tue, 29 Mar 2016 14:01:27 +0000 (03:01 +1300)]
Drivers Setup: Expose all mapping types for creating drivers

* This includes the "manually create" modes, which correspond to the previous behaviour
  for setting up drivers. This is necessary when the current screen layout is not
  well suited to having multiple property editors open (e.g. small screen or heavily
  subdivided screen).

* Only the modes relevant for the current property type (i.e. array vs single)
  will be shown

* The "Add Driver" entries in the RMB context menu have now been replaced by a
  submenu which will list all the available mapping types.

* NOTE: The code for the ANIM_OT_button_driver_add() operator is perhaps a bit hairy.
  However, it currently allows us to have the desired behaviour. It can always get
  cleaned up later though.

3 years agoAdd license text for OCIO configuration
Sergey Sharybin [Tue, 29 Mar 2016 10:48:50 +0000 (12:48 +0200)]
Add license text for OCIO configuration

3 years agoFix T47987: Blender Cycles standalone does not properly read UV coordinates from XML
Sergey Sharybin [Tue, 29 Mar 2016 08:02:17 +0000 (10:02 +0200)]
Fix T47987: Blender Cycles standalone does not properly read UV coordinates from XML

3 years agoFix T47986: OBJ Import fails w/ imagepath encoding
Campbell Barton [Tue, 29 Mar 2016 07:22:35 +0000 (18:22 +1100)]
Fix T47986: OBJ Import fails w/ imagepath encoding

3 years agoFix T47958: Crash in Walk or Fly Navigation in Camera mode when invoking from non...
Bastien Montagne [Mon, 28 Mar 2016 16:17:45 +0000 (18:17 +0200)]
Fix T47958: Crash in Walk or Fly Navigation in Camera mode when invoking from non-3DView region

3 years agoT47532: Pop-ups drop fast mouse clicks
Julian Eisel [Mon, 28 Mar 2016 14:42:13 +0000 (16:42 +0200)]
T47532: Pop-ups drop fast mouse clicks

Caused by rBc24be7ec6e5.

Before rBc24be7ec6e5,  wm_handlers_do always called handlers a second time with event value KM_PRESS in case of a double click. After it, this was only the case for non-LEFTMOUSE events.
Since ui_popup_handler (almost) always returned WM_UI_HANDLER_BREAK, the second handler iteration with KM_PRESS wouldn't run. This fix just makes sure we return WM_UI_HANDLER_CONTINUE for double click events instead (causing second iteration to run).

3 years agoFix T47969: Select Random always uses same seed
Campbell Barton [Mon, 28 Mar 2016 14:20:45 +0000 (01:20 +1100)]
Fix T47969: Select Random always uses same seed

Increment the seed on each use,
otherwise calling again selects the same order, unless you manually adjust the seed.

3 years agoFix T47972: Blender crash showing particle system.
Bastien Montagne [Mon, 28 Mar 2016 13:37:08 +0000 (15:37 +0200)]
Fix T47972: Blender crash showing particle system.

Do same as with faces - if no orcodata is available, fill orco with current location...

3 years agoFix T47973: Render stamp ignores font alpha
Campbell Barton [Mon, 28 Mar 2016 13:25:07 +0000 (00:25 +1100)]
Fix T47973: Render stamp ignores font alpha

3 years agoBLF: alpha support for drawing to buffer
Campbell Barton [Mon, 28 Mar 2016 13:23:37 +0000 (00:23 +1100)]
BLF: alpha support for drawing to buffer

3 years agoFix T47931: Missed world shader update when having object dependency
Sergey Sharybin [Mon, 28 Mar 2016 08:45:29 +0000 (10:45 +0200)]
Fix T47931: Missed world shader update when having object dependency

3 years agoFix T47898: Error adding mask node with "Add Mask Node" operator
Sergey Sharybin [Mon, 28 Mar 2016 08:07:06 +0000 (10:07 +0200)]
Fix T47898: Error adding mask node with "Add Mask Node" operator

This operator is intended to be used by drag-n-drop, no user invocation
is expected to happen here. Use Add->Search to quickly add nodes instead.

3 years agoCleanup: Unused variable
Sergey Sharybin [Mon, 28 Mar 2016 07:36:41 +0000 (09:36 +0200)]
Cleanup: Unused variable

3 years agoGraph Editor UI: Experimental Tweak - Use tabs for properties region, to make it...
Joshua Leung [Mon, 28 Mar 2016 01:45:54 +0000 (14:45 +1300)]
Graph Editor UI: Experimental Tweak - Use tabs for properties region, to make it easier to navigate

3 years agoGPencil: Note that clicking outside the active area also exits draw mode
Joshua Leung [Sun, 27 Mar 2016 14:42:31 +0000 (03:42 +1300)]
GPencil: Note that clicking outside the active area also exits draw mode

3 years agoFix T47959: make tip for 'individual origins' pivot point in UV editor more accurate.
Bastien Montagne [Sun, 27 Mar 2016 15:00:28 +0000 (17:00 +0200)]
Fix T47959: make tip for 'individual origins' pivot point in UV editor more accurate.

Based on D1877 from Philipp Oeser (lichtwerk), thanks.

3 years agoGPencil: Remove the old UserPrefs-based On/Off Stroke Smoothing method
Joshua Leung [Sun, 27 Mar 2016 14:39:26 +0000 (03:39 +1300)]
GPencil: Remove the old UserPrefs-based On/Off Stroke Smoothing method

This never really worked that well, and often ended up being far too strong
to be of practical use. The new options do similar things, but with greater
control, so removing this old method now.

3 years agoGPencil: Smooth and Subdivision variable/setting naming
Joshua Leung [Sun, 27 Mar 2016 14:20:15 +0000 (03:20 +1300)]
GPencil: Smooth and Subdivision variable/setting naming

On second thought, these might be better names for these... I'm still not 100%
happy with these, but they will do for now.

(Best results currently seem to be with smooth 0.7, and subdivision steps 1 or 2)

3 years agoGPencil: Removed the restriction of not subdividing strokes further if it exceeds...
Joshua Leung [Sun, 27 Mar 2016 14:05:01 +0000 (03:05 +1300)]
GPencil: Removed the restriction of not subdividing strokes further if it exceeds GP_STROKE_BUFFER_MAX

Assuming that this subdivision + smoothing mostly only happens at the end of a stroke
anyway, enforcing this max-points limit in some cases was resulting in strokes that
weren't quite getting subdivided properly as the others.

3 years agoGPencil: Code Cleanup - Simplify and clarify the code for subdividing a stroke
Joshua Leung [Sun, 27 Mar 2016 13:56:43 +0000 (02:56 +1300)]
GPencil: Code Cleanup - Simplify and clarify the code for subdividing a stroke

3 years agoGPencil: Restore ability for Smooth brush to affect pressure values of strokes
Joshua Leung [Sun, 27 Mar 2016 13:55:59 +0000 (02:55 +1300)]
GPencil: Restore ability for Smooth brush to affect pressure values of strokes

3 years agoCode Cleanup - Style tweaks
Joshua Leung [Sun, 27 Mar 2016 13:33:14 +0000 (02:33 +1300)]
Code Cleanup - Style tweaks

3 years agoImprove grease pencil stroke quality
Antonio Vazquez [Sun, 27 Mar 2016 10:24:14 +0000 (23:24 +1300)]
Improve grease pencil stroke quality

Improve the quality of current grease pencil strokes adding a new dynamic smooth and subdivision. The level of smooth and subdivide can be adjusted using UI parameters. These options are disabled by default in order to keep the grease pencil stroke compatible with any existing add-on.

Both parameters are defined at layer level.

Reviewers: aligorith

Differential Revision:

3 years agoMore tooltip tweaks
Joshua Leung [Sun, 27 Mar 2016 05:25:26 +0000 (18:25 +1300)]
More tooltip tweaks

The "UI_OT_eyedropper_id" operator only actually works in the 3D view,
so change the tooltip to match that

3 years agoFix T45075: "Error, region type 2 missing in - name:"File", id:5"
Julian Eisel [Sun, 27 Mar 2016 11:36:12 +0000 (13:36 +0200)]
Fix T45075: "Error, region type 2 missing in - name:"File", id:5"

Unexpectedly found out what was going wrong here. If a file was saved with a filebrowser open, we searched for the channel region in the wrong list (see 'ListBase *regionbase = (sl == sa->spacedata.first) ? &sa->regionbase : &sl->regionbase;').

Minor annoyance is that I had to move the loookup to the 2.77.1 version patch now.

3 years agoFix T47697: Smoke simulation doesn't work in viewport
Sergey Sharybin [Sun, 27 Mar 2016 11:19:09 +0000 (13:19 +0200)]
Fix T47697: Smoke simulation doesn't work in viewport

Seems to be a division by zero error.

Should be safe for an upcoming 'a' release.

3 years agoFix changing view in default video editing layout broken
Julian Eisel [Sun, 27 Mar 2016 11:17:10 +0000 (13:17 +0200)]
Fix changing view in default video editing layout broken

Own mistake in 802bb422671
Apparently we only store one preview region for all views, didn't know that (makes sense though).

3 years agoFix T47962: It's possible to set a Sound strip as a modifier Mask.
Bastien Montagne [Sun, 27 Mar 2016 11:01:58 +0000 (13:01 +0200)]
Fix T47962: It's possible to set a Sound strip as a modifier Mask.

3 years agoCleanup: Silence some compiler warnings
Sergey Sharybin [Sun, 27 Mar 2016 10:33:34 +0000 (12:33 +0200)]
Cleanup: Silence some compiler warnings

3 years agoDriver Eyedropper: Auto detection/correction magic for rotation properties
Joshua Leung [Sun, 27 Mar 2016 04:57:27 +0000 (17:57 +1300)]
Driver Eyedropper: Auto detection/correction magic for rotation properties

When linking a rotation property to a non-rotation property (going in either
direction - i.e. rot -> normal, normal -> rot), the driver expression will
now be set so that the new drivers behave as expected (i.e. you get the values
you see, instead of "weird" values that seem several orders of magnitude off).

This may not be that great for everyone (i.e. the rare users out there who
actually like to look at their rotations in radians), but they usually know
what they're doing anyway, so this will be easy to correct.

3 years agoDrivers: Add a "none" mode for use when adding drivers
Joshua Leung [Sun, 27 Mar 2016 04:02:53 +0000 (17:02 +1300)]
Drivers: Add a "none" mode for use when adding drivers

Although it isn't currently exposed, this allows for the old behaviour,
where an "empty" driver was added (without any target assigned yet).
For this reason, it's also referred to as the "Manual" mode.

There are also some attempts at improving the tooltips + names for the
other modes (again, not shown anywhere yet)

3 years agoCode Cleanup - Split out the property-button-finding code so that it can be used...
Joshua Leung [Sat, 26 Mar 2016 12:22:19 +0000 (01:22 +1300)]
Code Cleanup - Split out the property-button-finding code so that it can be used for other eyedroppers

3 years agoFix crash opening some .blend files after recent fix for hidden preview regions.
Brecht Van Lommel [Sun, 27 Mar 2016 00:55:51 +0000 (01:55 +0100)]
Fix crash opening some .blend files after recent fix for hidden preview regions.

3 years agoFix T47758: rigidbody bug with constraint breaking and disable collisions.
Brecht Van Lommel [Sun, 27 Mar 2016 00:25:25 +0000 (01:25 +0100)]
Fix T47758: rigidbody bug with constraint breaking and disable collisions.

This is a regression in Bullet, reverted the problematic change for now with
a custom patch.

3 years agoFix T47668: Cycles OpenCL glass not rendering correctly on AMD.
Brecht Van Lommel [Sat, 26 Mar 2016 22:44:30 +0000 (23:44 +0100)]
Fix T47668: Cycles OpenCL glass not rendering correctly on AMD.

Work around what appears to be a compiler bug.

3 years agoFix T47939, take II: Check clang package version, not llvm-devel one.
Bastien Montagne [Sat, 26 Mar 2016 20:07:04 +0000 (21:07 +0100)]
Fix T47939, take II: Check clang package version, not llvm-devel one.

Looks like some distro still provide llvm-3.4-devel, while no more clang-3.4.
Since clang depends on llvm of same version, check clang only should ensure
us we also have matvhing llvm... *sigh*

3 years agoFix T47935: Hair particles; The display percentage parameter breaks after a render...
Bastien Montagne [Sat, 26 Mar 2016 16:41:56 +0000 (17:41 +0100)]
Fix T47935: Hair particles; The display percentage parameter breaks after a render is done.

Follow same logic in `psys_render_restore` as in `psys_render_set` - if hair and
display percentage is not 100%, we have to recompute particles...

With regular 'emitter' particles just hiding some is fine (though using random here
will not give a precise proportion...).

3 years agoFix T47951: UserId problem on reload.
Bastien Montagne [Sat, 26 Mar 2016 15:22:17 +0000 (16:22 +0100)]
Fix T47951: UserId problem on reload.

readfile.c would increment object usercount in three places, where it should not.
Remember kids: Objects are **only** refcounted by Scene's bases, and Object->proxy!

3 years agoFix own regression in rBc08924bf94f2dff - foreach ID looper was broken due to missing...
Bastien Montagne [Sat, 26 Mar 2016 15:07:57 +0000 (16:07 +0100)]
Fix own regression in rBc08924bf94f2dff - foreach ID looper was broken due to missing initialization.

Quite unbelievable this could slip in... tons of shame on me :/

3 years agoRevert "Fix T47896: Scripted Expression string length limit is too short for some...
Joshua Leung [Sat, 26 Mar 2016 10:00:20 +0000 (23:00 +1300)]
Revert "Fix T47896: Scripted Expression string length limit is too short for some autogenerated expressions"

This reverts commit 322f86d6b330ebeb1da5c1f527714745dc901460.

3 years agoDriver Variable Name Validation: Added missing check for zero-length (i.e. "blank...
Joshua Leung [Sat, 26 Mar 2016 05:01:02 +0000 (18:01 +1300)]
Driver Variable Name Validation: Added missing check for zero-length (i.e. "blank") names

3 years agoDriver Setup Workflow Improvement: Property Eyedropper
Joshua Leung [Sat, 26 Mar 2016 04:55:42 +0000 (17:55 +1300)]
Driver Setup Workflow Improvement: Property Eyedropper

This commit brings some long requested improvements to the workflow for setting up
drivers, which should make it easier and faster to set up new drivers in a more
interactive fashion.

The new workflow is as follows:
1) Hover over the property (e.g. "Lamp Energy" or "Y Location") or properties ("Rotation")
   you wish to add drivers to. We'll refer to this as the "destination"
2) Ctrl-D to active the new "Add Drivers" eyedropper
3) Click on the property you want to use as the source/target. The property under the
   mouse will be used to drive the property you invoked Ctrl-D on.

For example, to drive the X, Y, and Z location of the Cube using the Y Location of the Lamp,
hover over any of the X/Y/Z location buttons, hit Ctrl-D, then click on the Y-Location
button of the Lamp object. Drivers will be added to the X, Y, and Z Location properties
of the Cube; each driver will have a single variable, which uses the Y-Location Transform
Channel of the Lamp.

- Transform properties will automatically create "Transform Channel" driver variables.
  Everything else will use "Single Property" ones

- Due to the way that Blender's UI Context works, you'll need two Properties Panel instances
  open (and to have pinned one of the two to show the properties for the unselected
  object). It's slightly clunky, but necessary for implementing a workflow like this,
  as the UI cannot be manipulated while using eyedroppers to pick data.

- The eyedropper operator implemented here actually has three modes of operation.
  1) The "1-N" (one to many) mode is the default used for Ctrl-D, and "Add Driver to All"
     in the RMB Menu. This is the behaviour described above.
  2) There's also a "1-1" (one to one) mode that is used for the "Add Single Driver" in the
     RMB Menu.
  3) Finally, there's the "N-N" mode (many to many), which isn't currently exposed.
     The point of this is to allow mapping XYZ to XYZ elementwise (i.e. direct copying)
     which is useful for things like locations, rotations, scaling, and colours.

Implementation Notes:
- The bulk of the driver adding logic is in editors/animation/drivers.c, where most of
  the Driver UI operators and tools are defined

- The property eyedropper code is in interface_eyedropper.c along with all the other
  eyedroppers (even though they don't share much actual code in common). However, this
  turns out to be necessary, as we can't get access to many of the low-level buttons API's

- It may be necessary to restore a way to access the old behaviour (i.e. "manual setup")
  in case it is not practical to immediately pick a property.

- Other things to investigate here include extra hotkeys (e.g. Ctrl-Shift-D for Add Single?),
  and to expose the N-N mode.

- Other things we could try include interactively applying scaling factors, picking
  multiple targets (e.g. for location difference and rotation difference drivers),
  and/or other ways of using these property picking methods.

3 years agoDrivers Workflow: Change hotkey for "Add Drivers" to Ctrl-D (it was previously just...
Joshua Leung [Sat, 26 Mar 2016 04:28:02 +0000 (17:28 +1300)]
Drivers Workflow: Change hotkey for "Add Drivers" to Ctrl-D  (it was previously just DKEY)

Just using DKEY for this was resulting in too many drivers being accidentally created
by users drawing using Grease Pencil. This change also works better with the following
workflow changes to the driver setup process.

3 years agoFix T47939: Install Deps OSL 1.7.1 and clang-3.5
Bastien Montagne [Fri, 25 Mar 2016 23:31:41 +0000 (00:31 +0100)]
Fix T47939: Install Deps OSL 1.7.1 and clang-3.5

Until we officially support llvm3.5 or more, only allow for 3.4 llvm packages,
and build own stuff otherwise...

3 years agoFix T47902: Particle grid not using modifier stack.
Bastien Montagne [Fri, 25 Mar 2016 21:46:19 +0000 (22:46 +0100)]
Fix T47902: Particle grid not using modifier stack.

Disclaimer: this is tentative fix, seems to be working but you never know with particles.
If issue arise, we'll just revert this commit and hide 'use modifier stack' option
for grid distribution instead.

This commit also try to make choice of which dm to use during distribution more generic
(deduplication of code), again hopping not to break anything. :P

3 years agoFix sequencer view in video editing layout containing hidden preview region
Julian Eisel [Fri, 25 Mar 2016 23:03:43 +0000 (00:03 +0100)]
Fix sequencer view in video editing layout containing hidden preview region

Steps to reproduce were:
* Open default video editing layout
* Drag down or click '+' icon in upper right corner of sequencer view
* A preview region appears, even though the view type is not set to sequencer-preview split mode

Another bug that has been there since ages :/ Reported by @Blendify via IRC, thanks!

3 years agoFix Cycles debug panel, being shown in BI as well.
Thomas Dinges [Fri, 25 Mar 2016 18:59:18 +0000 (19:59 +0100)]
Fix Cycles debug panel, being shown in BI as well.

3 years agoCycles: Add an option to build single kernel only which fits current CPU
Sergey Sharybin [Fri, 25 Mar 2016 15:09:05 +0000 (16:09 +0100)]
Cycles: Add an option to build single kernel only which fits current CPU

This seems quite useful for the development, so you don't need to wait
all the kernels to be re-compiled when working on a new feature, which
speeds up re-iteration.

Marked as an advanced option, so if it doesn't work so well in practice
it's safe to revert anyway.

3 years agoCycles: Cleanup, indent nested preprocessor directives
Sergey Sharybin [Fri, 12 Feb 2016 17:33:43 +0000 (18:33 +0100)]
Cycles: Cleanup, indent nested preprocessor directives

Quite straightforward, main trick is happening in path_source_replace_includes().

Reviewers: brecht, dingto, lukasstockner97, juicyfruit

Differential Revision:

3 years agoCycles: Use dedicated BVH for subsurface ray casting
Sergey Sharybin [Thu, 25 Feb 2016 14:12:11 +0000 (15:12 +0100)]
Cycles: Use dedicated BVH for subsurface ray casting

This commit makes it so casting subsurface rays will totally ignore all
the BVH nodes and primitives which do not belong to a current object,
making it much simpler traversal code and reduces number of intersection

Reviewers: brecht, juicyfruit, dingto, lukasstockner97

Differential Revision:

3 years agoFix T47928: Crashing save corruption with dynamic paint drip effector groups.
Bastien Montagne [Fri, 25 Mar 2016 12:15:50 +0000 (13:15 +0100)]
Fix T47928: Crashing save corruption with dynamic paint drip effector groups.

Dynapaint's `foreachIDLink` was mnot handling effector_weights->group pointer...

3 years agoFix modal bevel OP immediately stopping when called using enter key from search menu
Julian Eisel [Fri, 25 Mar 2016 11:21:54 +0000 (12:21 +0100)]
Fix modal bevel OP immediately stopping when called using enter key from search menu

Steps to reproduce were:
* Go to edit mode, select geometry
* Spacebar -> search for bevel OP
* Activate *using enter key*
* Immediately stops when releasing enter key

To fix we simply make sure the initial release event is ignored. For mouse events that wasn't an issue since activating an element is done on key release in menus. An alternative fix would be to do the same for enter key, but that's more risky. Also, checking event value is highly recommended anyway.

3 years agoRevert "Fix T47263: numpad4/6 rotates around worl Z axis and not view Y axis."
Bastien Montagne [Fri, 25 Mar 2016 11:09:59 +0000 (12:09 +0100)]
Revert "Fix T47263: numpad4/6 rotates around worl Z axis and not view Y axis."

This reverts commit fe0ca82b232dcab29030c4a20b8bd1b033d1d346.

This is a design issue, needs more thinking, for now just revert back to old behavior.

3 years agoCMake: Disable Cycles OSL for the light configuration
Sergey Sharybin [Fri, 25 Mar 2016 10:27:08 +0000 (11:27 +0100)]
CMake: Disable Cycles OSL for the light configuration

While it was indirectly disabled already, it's handy to use the config
as template and enable certain features. In case of Cycles enabling it
would also enable OSL which is not very expected.

3 years agoUI: Presets for scene units
Campbell Barton [Thu, 24 Mar 2016 18:01:15 +0000 (05:01 +1100)]
UI: Presets for scene units

This adds simple preset menu for unit scale scene property.

D1799 by @alm

3 years agoMake IDPreview handling code use new recursive libquery looper.
Bastien Montagne [Thu, 24 Mar 2016 15:10:05 +0000 (16:10 +0100)]
Make IDPreview handling code use new recursive libquery looper.

3 years agoRework library_query foreach looper - add optional recursivity.
Bastien Montagne [Thu, 24 Mar 2016 11:28:41 +0000 (12:28 +0100)]
Rework library_query foreach looper - add optional recursivity.

This commit:
* Fixes bad handling of 'stop iteration' (by adding a status flag, so that we can actually
  stop in helper functions too, and jumping to a finalize label instead of raw return, to
  allow propper clean up).
* Adds optional recursion into 'ID tree' - callback can also decide to exclude current id_pp
  from recursion. Note that this implies 'readonly', modifying IDs while recursing is not
  something we want to support!
* Changes callback signature/expected behavior: return behavior is now handled through flags,
  and 'parent' ID of id_pp is also passed (since it may not always be root id anymore).

Reviewers: sergey, campbellbarton

Differential Revision:

3 years agoCycles: Minor optimization of equirectangular projection
Sergey Sharybin [Thu, 24 Mar 2016 14:00:09 +0000 (15:00 +0100)]
Cycles: Minor optimization of equirectangular projection

Don't calculate sine twice, store this in a variable instead.

Perhaps compilers can optimize this out, but helping them a but wouldn't hurt.

3 years agoUI: search operator's by word prefix
Campbell Barton [Thu, 24 Mar 2016 12:28:46 +0000 (23:28 +1100)]
UI: search operator's by word prefix

Would match middle of words which wasn't very useful in most cases.

3 years agoFix BLI_strncasestr use with a single character
Campbell Barton [Thu, 24 Mar 2016 12:17:43 +0000 (23:17 +1100)]
Fix BLI_strncasestr use with a single character

3 years agoColor sources for point density textures based on mesh vertices
Lukas Tönne [Thu, 24 Mar 2016 10:41:44 +0000 (11:41 +0100)]
Color sources for point density textures based on mesh vertices

This patch adds support for coloring point density textures based on several mesh vertex attributes.

* Vertex Color: Use a vertex color layer for coloring the point density texture
* Vertex Weight: Use a weights from a vertex group as intensity values. (for Blender Render engine the additional color band is used)
* Vertex Normals: Use object-space vertex normals as RGB values.

The vertex color source enum is stored separately from the particle color source, to avoid invalid values when switching.

Note that vertex colors are technically "corner colors" (MLoop), so each vertex can have as many colors as faces it is part of.
For the purpose of point density the mloop colors are simply averaged, which is physically plausible because corners can be viewed
as multiple points in the same location.

3 years agoFix some typos and incorrect tooltips/descriptions
Joshua Leung [Thu, 24 Mar 2016 10:13:46 +0000 (23:13 +1300)]
Fix some typos and incorrect tooltips/descriptions

3 years agoFix T47910: Knife project fails
Campbell Barton [Thu, 24 Mar 2016 07:27:39 +0000 (18:27 +1100)]
Fix T47910: Knife project fails

Regression in fix for T43896, using screen-space precision here is very problematic,
using lower precision here works for both reports.

3 years agoCleanup: use prefix for return args
Campbell Barton [Thu, 24 Mar 2016 07:05:10 +0000 (18:05 +1100)]
Cleanup: use prefix for return args

3 years agoFix incorrect arg type
Campbell Barton [Thu, 24 Mar 2016 06:56:30 +0000 (17:56 +1100)]
Fix incorrect arg type

3 years agoFix T47838: Walk gravity fails w/ intersecting objects
Campbell Barton [Thu, 24 Mar 2016 06:50:20 +0000 (17:50 +1100)]
Fix T47838: Walk gravity fails w/ intersecting objects

Regression in 3ad0344, fix from @mano-wii.

More comprehensive fix can be done after 2.77a.

3 years agoDriver Keyframing: Some tweaks to make inserting keyframes on Driver F-Curves easier
Joshua Leung [Thu, 24 Mar 2016 06:33:13 +0000 (19:33 +1300)]
Driver Keyframing: Some tweaks to make inserting keyframes on Driver F-Curves easier

Now, when trying to insert a keyframe on a driven property (using IKEY, or with
autokeying enabled), the keyframes will get created on the Driver's F-Curve
(instead of creating a new FCurve that goes into the active action, but will never
do anything). Furthermore, the x-value of the new keyframe will be the current
result of the driver expression.

This way, it becomes easier to create corrective drivers, as you can position all
the targets the driver depends on, then adjust the driver value until it does what
you need, and then you keyframe that value to bake it into the Driver F-Curve
(in effect, "training" the computer how to behave in that case).

Usage Notes:
* In practice, that particular workflow is still quite clunky to achieve, due to some
  quirks of how the driver system and the UI widgets interact. Specifically, you'll
  need to disable/mute the driver before trying to edit the setting (to prevent the
  driver from immediately resetting the value - before even autokey fires!). However,
  if you're using the Graph Editor to preview/monitor/manage the keying process, you'll
  then want to re-enable the driver before changing the targets, so that you can see
  how much of a change you'll want to be applying!

* The warning about editing driver values may need to be disabled or selectively
  knocked out. I had it disabled while testing this functionality, but it's actually
  harmless in its current state (if just a bit annoying).

3 years agoFix T47900: VSE adjustment crashes on blank frame
Campbell Barton [Thu, 24 Mar 2016 06:09:10 +0000 (17:09 +1100)]
Fix T47900: VSE adjustment crashes on blank frame

Regression, should have been included in previous fix.

3 years agoFix dodgy indentation
Joshua Leung [Thu, 24 Mar 2016 02:20:56 +0000 (15:20 +1300)]
Fix dodgy indentation

3 years agoDrivers UI: Added name validation/linting for Driver Variables
Joshua Leung [Thu, 24 Mar 2016 02:15:04 +0000 (15:15 +1300)]
Drivers UI: Added name validation/linting for Driver Variables

When attempting to change a driver variable name to an "invalid" name,
an indicator will now be shown beside the offending variable name.
Clicking on this icon will show a popup which provides more information
about why the variable name cannot be used.

Reasons that it knows about are:
1) Starts with number
2) Has a dot
3) Has a space
4) Starts with or contains a special character
5) Starts with an underscore (Python does allow this, but it's bad practice,
   and makes checking security of drivers harder)
6) Is a reserved Python keyword

3 years agoFix T47896: Scripted Expression string length limit is too short for some autogenerat...
Joshua Leung [Thu, 24 Mar 2016 00:02:22 +0000 (13:02 +1300)]
Fix T47896: Scripted Expression string length limit is too short for some autogenerated expressions

While most scripted expressions are quite short (e.g. "var" or "frame + 1"),
those that are autogenerated by scripts (to take into account a wide range of factors)
may require a bit more headroom to operate in.

By doubling the maximum length here, we now make it possible to combine up to 38
3-letter variables in some linear combination (with all factors expressed to 4 dp).
That should be more than enough for anyone or anything for quite a while!

Unfortunately, this does increase memory consumption for drivers across the board.

3 years agoRevert "Fix T47869: OpenColorIO Error with unicode path to config file under Windows"
Sergey Sharybin [Wed, 23 Mar 2016 18:25:29 +0000 (19:25 +0100)]
Revert "Fix T47869: OpenColorIO Error with unicode path to config file under Windows"

White the config itself could be loaded this way, lookup tables can not. Additionally,
that's not really clear how to solve the issue with search path which is multi-byte
only in the API.

Reverting for further investigation.

This reverts commit ab4307aa0868f2d8389cc0dd500eff38909b08f1.

3 years agoFix T47900: VSE adjustment crashes on blank frame
Campbell Barton [Wed, 23 Mar 2016 18:17:38 +0000 (05:17 +1100)]
Fix T47900: VSE adjustment crashes on blank frame

3 years agoFix T47870: Missing viewport update when material output is inside of the group
Sergey Sharybin [Wed, 23 Mar 2016 14:41:36 +0000 (15:41 +0100)]
Fix T47870: Missing viewport update when material output is inside of the group

3 years agoFix T47833: View-aligned GPencil strokes move in crazyspace when grabbed
Joshua Leung [Wed, 23 Mar 2016 14:32:02 +0000 (03:32 +1300)]
Fix T47833: View-aligned GPencil strokes move in crazyspace when grabbed

These fixes "seem" to do the right thing now...

3 years agoFix T47869: OpenColorIO Error with unicode path to config file under Windows
Sergey Sharybin [Wed, 23 Mar 2016 14:09:09 +0000 (15:09 +0100)]
Fix T47869: OpenColorIO Error with unicode path to config file under Windows

3 years agoAnimEditors: Fuzzy/Multi-Word Name Filtering
Joshua Leung [Wed, 23 Mar 2016 13:44:39 +0000 (02:44 +1300)]
AnimEditors: Fuzzy/Multi-Word Name Filtering

Thanks to D1080 by @rockets, I've now been able to easily implement the
ability to type multiple word snippets/partial words into the text filter
field (in the Animation Editors), and have it filter the channels which
contain just some of those parts (instead of having to match everything).

For example, the following search strings will now work:
* "loc rot" or "lo ro" will now filter all location and rotation FCurves
* "col loc" will filter all location and color FCurves
* "scale" will also work as before to filter all scale FCurves

But, the following will not work:
* "lc rt" will NOT filter all location and rotation, as the fuzzy search only
  breaks down the search string based on whitespace placement

By default, this is not enabled when using name filtering (i.e. magnifying glass is checked,
and some filtering text is specified). Instead, you need to enable the "AZ" toggle beside
the name field. This fuzzy matching is not enabled by default as it could end up being
quite a bit slower on really heavy scenes. (There are probably some optimisation
opportunities, but that's only a future option if someone really needs it)

3 years agoFix T47856: Cycles problem when running from multi-byte path
Sergey Sharybin [Wed, 23 Mar 2016 12:58:31 +0000 (13:58 +0100)]
Fix T47856: Cycles problem when running from multi-byte path

This is a mix of regression and old unsupported configuration.

Regression was caused by some checks added on Blender side which was
checking whether python function returned error or not. This made it
impossible to enable Cycles when running from a file path which can't
be encoded with MBCS codepage.

Non-regression issue was that it wasn't possible to use pre-compiled
CUDA kernels when running from a path with non-ascii multi-byte

This commit fixes regression and CUDA parts, but OSL still can't be
used from a non-ascii location because it uses non-widechar API to
work with file paths by the looks of it. Not sure we can solve this
just from our side by using some codepage trick (UTF-16?) since even
oslc fails to compile shader when there are non-ascii characters in
the path.

3 years agoFix T47893: BGE crashes w/ generated mesh data
Campbell Barton [Wed, 23 Mar 2016 12:37:08 +0000 (23:37 +1100)]
Fix T47893: BGE crashes w/ generated mesh data

3 years agoRadial Operator: Tweak number of digits displayed for the different property types
Joshua Leung [Wed, 23 Mar 2016 11:59:48 +0000 (00:59 +1300)]
Radial Operator: Tweak number of digits displayed for the different property types

* As requested by venomgfx, rotations now only display to 2 decimal places (more than
  enough for rotations in degrees)
* Also, made it so that the "factor" types now show 3 dp (previously only 2, which isn't
  really enough when dealing with values from 0.0 - 1.0)

3 years agoRadial Control Operator: Always show the property name + value on the header
Joshua Leung [Wed, 23 Mar 2016 11:55:37 +0000 (00:55 +1300)]
Radial Control Operator: Always show the property name + value on the header

The radial control operator is commonly used for setting sculpt brush Size and Strength
settings. However, when using it, it can often be difficult to remember which hotkey
is responsible for which setting, meaning that you can often accidentally modify the
wrong setting without knowing it (or even what new value you've set it to).

This commit makes it so that the property name and the current value are always shown
on the header. Previously this info was only shown when the doing numeric input.
(It also fixes a bug where the numeric input print would hang around even after it
wasn't being used).

3 years agoFix T47890: Vertex mask w/ subsurf select fails
Campbell Barton [Wed, 23 Mar 2016 10:01:21 +0000 (21:01 +1100)]
Fix T47890: Vertex mask w/ subsurf select fails

Regression in GL refactor

3 years agoUI: multi word filtering in search menu
Campbell Barton [Wed, 23 Mar 2016 07:45:32 +0000 (18:45 +1100)]
UI: multi word filtering in search menu

D1080 by @rockets, with own improvements to tests

3 years agoCleanup: style
Campbell Barton [Tue, 22 Mar 2016 17:47:16 +0000 (04:47 +1100)]
Cleanup: style

3 years agoCleanup: style (80-width)
Campbell Barton [Tue, 22 Mar 2016 17:25:08 +0000 (04:25 +1100)]
Cleanup: style (80-width)

3 years agoFix incorrect strncat use
Campbell Barton [Tue, 22 Mar 2016 16:54:04 +0000 (03:54 +1100)]
Fix incorrect strncat use

3 years agoFix T47830: Multi-edit w/ ui-list wont highlight
Campbell Barton [Tue, 22 Mar 2016 16:37:23 +0000 (03:37 +1100)]
Fix T47830: Multi-edit w/ ui-list wont highlight

Regression from 4d6b892.

3 years agoWeight Paint: support accumulate for blur brush
Campbell Barton [Tue, 22 Mar 2016 14:22:26 +0000 (01:22 +1100)]
Weight Paint: support accumulate for blur brush

This re-applies smoothing based on the previous update.

Can smooth more but harder to get such even distribution.

3 years agoFix for crash of point density textures due to undefined `point_data` on loading.
Lukas Tönne [Tue, 22 Mar 2016 14:07:56 +0000 (15:07 +0100)]
Fix for crash of point density textures due to undefined `point_data` on loading.

3 years agoWeight Paint: blur now smooths connected weights
Campbell Barton [Tue, 22 Mar 2016 11:14:26 +0000 (22:14 +1100)]
Weight Paint: blur now smooths connected weights

Previously it would average all points under the brush, giving an off feedback loop that often depended on the
direction of the brush stroke, giving not-very-useful smearing effect.

Now blend brush smooths between connected edges.

3 years agoMesh API: add BKE_mesh_vert_edge_vert_map_create
Campbell Barton [Tue, 22 Mar 2016 11:07:45 +0000 (22:07 +1100)]
Mesh API: add BKE_mesh_vert_edge_vert_map_create

Handy when you need to reference connected verts directly.

3 years agoFix T47882: startup camera not upright
Campbell Barton [Tue, 22 Mar 2016 06:22:41 +0000 (17:22 +1100)]
Fix T47882: startup camera not upright