Commit Graph

17476 Commits

Author SHA1 Message Date
Nathan Letwory
c3d6929e4f Version cycle 2.83, master is now in alpha and open for new work and features 2020-01-10 11:26:52 +02:00
Nathan Letwory
20ca8fddf8 Merge branch 'blender-v2.82-release' 2020-01-10 11:26:03 +02:00
Nathan Letwory
a72d823489 Version cycle to 2.83 alpha for master. 2020-01-10 11:25:54 +02:00
Nathan Letwory
95200045f3 Version 2.82 cycle to beta for bcon3, stabilizing period 2020-01-10 08:10:27 +02:00
0e37045f32 Cleanup: use paint/sculpt prefix in BKE_paint.h
PoseIKChain for example reads as if this is related to armature/pose
when it's a sculpting feature.
2020-01-08 12:59:48 +11:00
fdf89acc86 Sculpt: Pose Brush with Inverse Kinematics
This commits introduces the pose_ik_segments brush property in the Pose Brush. When increasing the IK segments count, the brush generates more segments and weights associations following the topology of the mesh. When moving the brush, these segments are transformed using an IK solver and they are used to deform the mesh.

When pressing Ctrl, the brush controls the segments' roll rotation instead of using the IK solver. The brush falloff controls how much rotation is propagated from the first to the last segment in the chain.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D6389
2020-01-07 16:57:54 +01:00
bd766f8f06 Fix T72935: Applying transform to parent mesh changes rotation of children using quaternions
`ob->quat` is `v4`.
2020-01-07 12:42:37 -03:00
94d19d5ff5 GPencil: Fix unreported memory leak
Thanks to @dfelinto for his help
2020-01-07 14:14:19 +01:00
a99f6e5df1 GPencil: Remove memory allocation for triangles
This will be replaced later, so it's not logic allocate now.
2020-01-07 14:14:19 +01:00
11292edba6 BMesh: remove BMEditMesh.ob pointer
Remove this pointer since it's linking Mesh data back to the object,
where a single edit-mesh may have multiple object users,
causing incorrect assumptions in the code.

Resolves dangling pointer part of the T72667 crash,
although there are other issues which still need to be fixed.

In EDBM_op_finish and EDBM_update_generic,
full Main lookups have been added which should be replaced with mesh
argument or the update tagging moved elsewhere.
2020-01-07 17:47:17 +11:00
e95c0fba09 BMesh: remove BMEditMesh.ob use BKE_editmesh_lnorspace_* API
Note that this is a bit clumsy having both edit-mesh and mesh,
BKE_editmesh_ensure_autosmooth & BKE_editmesh_lnorspace_update
are often called together, these could be made into a single functions.
2020-01-07 14:27:59 +11:00
a8d11995bf BMesh: remove BMEditMesh.ob use for vert coord access, projection 2020-01-07 13:53:03 +11:00
60c54be053 Fix/Cleanup invalid call to blendfile reading in UNDO_DISK.
Currently harmless since undo to disk is disabled, but that is not a
good reason to have invalid code.
2020-01-06 15:46:43 +01:00
7213c42b6e Fix BKE_mesh_validate_arrays invalidating face selection
Use `totpoly` instead of `totface`.

The original code was written for non-bmesh case and likely missed this
update.
2020-01-06 09:26:21 -03:00
Maxim Vasiliev
e993667a46 Fix (unreported) critical mistake in Node copying code.
Nice reversed-logic mistake in rB693721cc7e7d.

How this could remain unnoticed for almost one year is fairly
mysterious, this should have basically broke all node tree copying,
would expect such bug to get reported within days, weeks at most...
Probably because that function is not that much used in current code.

Nice reminder also that those bloody nodetrees still need a lot of
cleanup/refactor/simplification when it comes to ID management code.

Reported/fixed as part of D6484, but this really needs its own commit.
2020-01-05 18:27:00 +01:00
311178fcf2 Fix T72821: Crash when IOD is removed from post-update callback
IDs recalc clear flag was accessing freed memory.

There is more detailed comment about solution in the code.
2020-01-02 17:19:29 +01:00
9583932538 Fix T70986: NLA strip Animated Influence does not respect Default Interpolation
Since we are already respecting the User Preference for 'auto_smoothing'
in 'BKE_nlastrip_validate_fcurves', we should also do this for default
interpolation and handles.

Maniphest Tasks: T70986

Differential Revision: https://developer.blender.org/D6490
2020-01-02 12:46:43 +01:00
e9ac784237 Cleanup: quiet const warnings 2020-01-02 13:08:20 +11:00
0314561684 Sculpt: Add color alpha controls to the brush cursor
Previously the alpha was hardcoded to 0.7. Now it is possible to control
the cursor alpha by changing the alpha color of the cursor color
property. New alpha default is 0.9. This, with the new saturated colors,
should make the cursor more visible on highdpi screens.

I also removed the cache location preview as it is too visible right now
with the new alpha and color values.

Reviewed By: billreynish

Differential Revision: https://developer.blender.org/D6433
2019-12-30 16:42:25 +01:00
9aab9970c6 Shrinkwrap: improve triangle boundary stability in Target Normal Project.
Rewrite the checks for determining if the solution is actually within
the triangle to fix stability issues when the correct solution is on
an edge, and step is very small, i.e. the solution is already very
close. Also, comment more clearly what is happening geometrically.

This should fix problems when vertices that should project exactly
onto an edge actually miss, resulting in weird spikes. This made
Target Normal Project unusable for the voxel remesher.
2019-12-25 13:15:31 +03:00
33eabb8220 Action Constraint: introduce a mix mode setting.
Currently the action channels are applied after the existing
transformation, as if the action controlled a child of the
bone. This is not very natural, but more importantly, the
transform tools are not designed to work conveniently with an
additional 'pseudo-child' transformation, resulting in effects
like an unexpected pivot location.

Implementing a Before mode that integrates the action channels
as if applied to a parent allows using the special transform
tool code intended for dealing with such constraints.

Note that in either mode, Action constraints should be added
in reverse order, putting a new constraint before the existing
ones that the Action was keyframed to work together.

In order to implement the option, extract a utility from
the Copy Transform constraint code for combining transforms
with special anti-shear scale handling that matches the
Aligned Inherit Scale mode.

The Before mode also requires switching the constraint to
the Local owner space, while the After mode can still use the
World space for efficiency as before. Since the constraint
doesn't have an Owner space option in the UI, this has to be
handled in an RNA setter.

For full backward compatibility, the original simple matrix
multiplication mode is preserved as the third option, but it
is not recommended due to creating shear.

Differential Revision: https://developer.blender.org/D6297
2019-12-24 19:58:09 +03:00
2ba9572d9e Cleanup: remove unused statvis code & struct members
This code has been moved into the draw manager.
2019-12-24 22:40:07 +11:00
b450ba84d9 Cleanup: correct filenames in comments 2019-12-24 09:37:21 +11:00
b888711e50 Fix T72443: Support time remapping for camera-markers 2019-12-23 17:28:15 +11:00
f9e65fcea7 Textures: Support UDIM images
This adds UDIM support to e.g. the Displacement modifier.

The implementation is straightforward: If the image is tiled, lookup the
tile based on UVs and shift the UVs into the tile's coordinates.
2019-12-20 21:46:36 +01:00
5804f18b1f Cleanup: in ID name management code: root_name -> base_name.
`root_name` did not really meant much here, `base_name` is much more
accurate.
2019-12-20 14:29:35 +01:00
46607bc09d ID Management: Improve speed of code used when creating/renaming and ID.
This commit affects `id_sort_by_name()` and `check_for_dupid()` helper:
* Add a new parameter, `ID *id_sorting_hint`, to `id_sort_by_name()`,
  and when non-NULL, check if we can insert `id` immediately before or
  after it. This can dramatically reduce time spent in that function.
* Use loop over whole list in `check_for_dupid()` to also define the
  likely ID pointer that will be neighbor with our new one.

This gives another decent speedup to all massive addition cases:

| Number and type of names of IDs  | old code | new code | speed improvement |
| -------------------------------- | -------- | -------- | ----------------- |
| 40K, mixed (14k rand, 26k const) |      39s |      33s |               18% |
| 40K, fully random                |      51s |      42s |               21% |
| 40K, fully constant              |      40s |      34s |               18% |

Combined with the previous commits, this makes massive addition of IDs more
than twice as fast as previously.
2019-12-20 14:29:35 +01:00
4cc8201a65 ID Management: Improve speed of code used when creating/renaming and ID.
This commit affects `check_for_dupid()` helper:
* Add a special, quicker code path dedicated to sequential addition of a
  large number of IDs using the same base name.

This gives a significant speedup to adding 'randomly'-named IDs:

| Number and type of names of IDs  | old code | new code | speed improvement |
| -------------------------------- | -------- | -------- | ----------------- |
| 40K, mixed (14k rand, 26k const) |      49s |      39s |               26% |
| 40K, fully random                |      51s |      51s |                0% |
| 40K, fully constant              |      71s |      40s |               78% |

Note that 'random' names give no improvement as expected, since this new code
path will never be used in such cases.
2019-12-20 14:29:35 +01:00
2aab727009 ID Management: Improve speed of code used when creating/renaming and ID.
This commit affects `check_for_dupid()` helper:
* Further simplify the general logic of the code (we now typically only do
  one loop over the list of data-blocks, instead of two).

This gives a significant speedup to adding 'randomly'-named IDs:

| Number and type of names of IDs  | old code | new code | speed improvement |
| -------------------------------- | -------- | -------- | ----------------- |
| 40K, mixed (14k rand, 26k const) |      62s |      49s |               27% |
| 40K, fully random                |      76s |      51s |               49% |
| 40K, fully constant              |      77s |      71s |                8% |

Note that 'constant' names give little improvement, as in that case the first
loop over the list of IDs (checking whether base given name was already in use)
was aborting very quickly.
2019-12-20 14:29:35 +01:00
4ed3a62d0f ID Management: Fix/Sanitize code used when creating or renaming an ID.
This commit affects `check_for_dupid()` helper:
* Fix (serious though rare) bug where several IDs could end up with
  exact same name (happened with over 10k IDs with same very long name).
* Fix (relatively harmless) func reporting it did not change the given
  name when it actually had truncated it.
* Sanitize handling of supported min/max number suffixes (it now handles
  between 1 and 1 billion, which should be way more than enough).
* Sanitize general logic to (hopefully!) make it easier to follow.
* General cleanup (naming, comments, variables scope, remove dead code, etc.).

Note that general performances here remain the same, there is no
measurable gain or loss. Algorithm remain also the same globally.

Attempt to use a GHash to speed up checks of used names proved to be
much worse, just building the GHash would already take as much time as
the whole process with current code...
2019-12-20 14:29:35 +01:00
d840658078 ID Management: Improve speed of code used when creating/renaming and ID.
This alone can make e.g. adding 40k IDs with default name (i.e. 'fully
constant' case in table below) about 15-20% faster:

| Number and type of names of IDs  | old code | new code | speed improvement |
| -------------------------------- | -------- | -------- | ----------------- |
| 40K, mixed (14k rand, 26k const) |      75s |      62s |               21% |
| 40K, fully random                |      90s |      76s |               18% |
| 40K, fully constant              |      94s |      77s |               22% |

Idea is to use a first pass, where we just check one item every nth ones,
until we have found the chunk in which we want to insert the new item,
then do a basic linear comparison with all items in that chunk as before.

Also, list is now walked backward, as in most common 'massive insertion'
cases new ID's names have higher number, hence ends up towards the end of
the list.

This new sorting function can be between a few percents and 50% quicker than
original code, depending on various factors (like length of common parts of
ID names, whether new IDs should be added towards the end or not, how high
in numbering we are, etc.).

Note: another, full bisecting approach was also tried, which gives a massive
reduction of comparisons (from n items to log2(n)), but it only gave minor
improvements of speed from original fully linear code, while adding a fair
amount of complexity to the logic. Only case it was shining was the unlikely
'very long, almost similar ID names' case (since `strcasecmp()` is rather
costly then).
2019-12-20 14:29:35 +01:00
334ddce17c Cleanup: spelling 2019-12-20 10:46:17 +11:00
838dc349ca Cleanup: const warning, unused var 2019-12-19 00:21:50 +11:00
31b9ddd876 Fix error assigning the fluid particle flag to the wrong member 2019-12-18 12:57:28 +11:00
0019216722 Fix linking errors WITH_MOD_FLUID=OFF, again
Expose BKE_fluid_modifier_* functions for readfile versioning.
2019-12-18 12:52:15 +11:00
0149b76dc6 Cleanup: warnings 2019-12-18 11:32:14 +11:00
e6a5e5077b Fluid: Fix placement of flag reset
Flag reset needs to be placed outside the object loop
2019-12-18 00:02:29 +01:00
e998cb2c2e Sculpt: Use more saturated colors in the cursor
The previous cursor colors were chosen to match the toolbar icon color,
but the contrast on top of the default matcaps was not enough. This
commit uses more saturated colors, which are more visible on top of the
default matcaps.

Reviewed By: jbakker, billreynish

Differential Revision: https://developer.blender.org/D6194
2019-12-17 19:45:19 +01:00
a04573f4aa Fluid: Fix that maps old smoke and fluid modifiers to new manta modifier 2019-12-17 18:00:27 +01:00
7830ea29c2 Fix T68665: FCurve group disappear on Curve/Surface object data
When going from EDIT to OBJECT mode, Blender updates the object data from
the edit-mode data. This took care of renaming FCurves that animate Curve
control points when control points are added/removed, but this didn't keep
the FCurve groups intact. Since the FCurve groups are tightly connected to
the Action channels, it's hard to keep the group pointers intact during
this process. Instead of making the code even more complex in an attempt to
do that, I implemented a function (`BKE_action_groups_reconstruct()`) that
rebuilds the group channel pointers.

The call to `action_groups_add_channel()` had to be removed because it
updates the the next/prev pointers of the FCurve while we're looping over
them, causing infinite loops.
2019-12-17 15:22:29 +01:00
bda4a284d2 Fluid: Fix particle settings type 2019-12-17 11:39:23 +01:00
7d2d2ffa76 Cleanup: spelling 2019-12-17 16:30:39 +11:00
ca277d7d60 Cleanup: renaming guiding -> guide
The term guide makes sense on it's own in this context.
2019-12-17 14:00:19 +11:00
db043e7e5b Cleanup: naming for BKE_fluid particle functions
Create/Destroy are more commonly paired terms in BLI/BKE API's.
2019-12-17 12:17:57 +11:00
f7745b15b7 Cleanup: use uint 2019-12-17 12:14:52 +11:00
d61d68a310 Cleanup: remove redundant string initialization
Fixed sized strings are always initialized & this is not done
elsewhere before calling BLI_path_join.

Remove since it's not needed and makes it read as if the function
might not initialize the output argument.
2019-12-17 12:11:28 +11:00
814a11be59 Cleanup: use snake case variable & function names 2019-12-17 12:04:57 +11:00
1ef6be3686 Cleanup: redundant struct declarations 2019-12-17 10:15:22 +11:00
f4d7d5e75d Cleanup: sort struct declarations 2019-12-17 10:08:47 +11:00
bc92d05522 Cleanup: sort file lists 2019-12-17 10:07:44 +11:00