Commit Graph

94406 Commits

Author SHA1 Message Date
Bastien Montagne
167e2fda15 Merge branch 'blender-v3.3-release' 2022-08-26 18:09:05 +02:00
Bastien Montagne
8181494ffe Fix assert in id remapper tests.
Was using uninitialized ID name, leading to unknown ID type.

Thanks at Ray molenkamp (@LazyDodo) for noting the issue.
2022-08-26 18:08:46 +02:00
Hans Goudey
aaea263be4 Cleanup: Fix const correctness in CustomData set name function
The function does modify the object since it changes the name of a layer
it owns. Ideally this wouldn't be possible, but raw pointers don't have
ownership semantics so this is a common problem with CustomData.
2022-08-26 10:57:43 -05:00
Luis Pereira
763cafc2b1 Fix T55284: error in Hybrid MultiFractal Musgrave texture
The calculation was revised to address two issues:
* Discontinuities occurring when detail was a non-integer greater than 2.
* Levels of detail in the interval [0,1) repeating the levels of detail in
  the interval [1,2).

This fixes Cycles, Eevee and geometry nodes.

Differential Revision: https://developer.blender.org/D15785
2022-08-26 17:27:43 +02:00
Aras Pranckevicius
a1c8a17b4d IDManagement: fix missing WM name validation when using "keep current WM list" code path
The blendfile_liblink and blendfile_io python tests in debug fired an
assert that WMWinMan object was in Main database, but not in the ID
name map. This was caused by wm_window_match_do going into case 3
there: the new WM list is completely empty, the old list is not empty,
and it was directly using the old/current list (via
wm_window_match_keep_current_wm function), without actually
registering/validating the objects in it through the name map.

Reviewed By: Bastien Montagne
Differential Revision: https://developer.blender.org/D15787
2022-08-26 12:15:12 +02:00
Aras Pranckevicius
3e51ebaf54 IDManagement: fix missing WM name validation when using "keep current WM list" code path
The blendfile_liblink and blendfile_io python tests in debug fired an
assert that WMWinMan object was in Main database, but not in the ID
name map. This was caused by wm_window_match_do going into case 3
there: the new WM list is completely empty, the old list is not empty,
and it was directly using the old/current list (via
wm_window_match_keep_current_wm function), without actually
registering/validating the objects in it through the name map.

Reviewed By: Bastien Montagne
Differential Revision: https://developer.blender.org/D15787
2022-08-26 11:49:02 +03:00
Philipp Oeser
e1f8136230 Merge branch 'blender-v3.3-release' 2022-08-26 09:16:46 +02:00
Philipp Oeser
60420f6ea4 Fix T100602: Incoming Vector in world shader for Eevee is inverted
Regression from {rBf4d7ea2cf61} where the direction was flipped.

Maniphest Tasks: T100602

Differential Revision: https://developer.blender.org/D15779
2022-08-26 09:13:55 +02:00
Campbell Barton
054cec404b Cleanup: use booleans 2022-08-26 15:58:32 +10:00
Campbell Barton
6bf2c73249 Cleanup: quiet GCC array bounds warning 2022-08-26 15:06:33 +10:00
Campbell Barton
e77ac31799 makesrna: type check bool/int/float/enum get/set callbacks
While converting types from callbacks isn't a bug, it's unlikely
we ever want to do this on purpose and can hide mistakes such as
silently converting floating point values to ints as happened
with Sequencer.frame_start.
2022-08-26 14:43:16 +10:00
Campbell Barton
5bd4aea29c Cleanup: use matching function signatures for RNA callbacks
Use matching int/float/boo types for RNA callbacks.
2022-08-26 14:37:16 +10:00
Campbell Barton
4a0dd1d435 Merge branch 'blender-v3.3-release' 2022-08-26 14:26:55 +10:00
Campbell Barton
c9723d9464 Fix Sequence.frame_start being rounded to int when assigned 2022-08-26 14:22:58 +10:00
Campbell Barton
6fc7b37583 Cleanup: reduce variable scope 2022-08-26 12:51:46 +10:00
Campbell Barton
a3e1a9e2aa Cleanup: spelling in comments, format 2022-08-26 12:47:21 +10:00
Bastien Montagne
047d0e6c4a Merge branch 'blender-v3.3-release' 2022-08-25 17:26:58 +02:00
Bastien Montagne
500d815478 Fix T100255: Make RigidBodyWorld (and effector_weights) collections refcounted.
Those collections were so far mainly just tagged as fake user (even
though a few places in code already incremented usercount on them).

Since we now clear the fakeuser flag when linking/appending data, ensure
that these collections are preserved by making these usages regular ID
refcounting ones.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D15783
2022-08-25 17:21:39 +02:00
Bastien Montagne
9b41ac6251 Revert "LibOverride: Preserve viewlayers when creating overrides of collecitons."
Commit is not working as expected in some cases, as revealed by
liboverride testcase entering infinite loop.

Code needs some more thinking.

This reverts commit ee7bd79b54.
2022-08-25 16:17:34 +02:00
Bastien Montagne
ee7bd79b54 LibOverride: Preserve viewlayers when creating overrides of collecitons.
Usually, when overriding collections, the linked reference ones are
removed from the ViewLayer, and the overrides replace them.

This change to `layer_collection_sync` code makes it so that in case
there is a free viewlayer hierarchy matching the linked collection, it
gets re-used for the override one, instead of re-creating everything
from scratch.

To achieve this, resync process is split into two steps, first regular
collections are processed, then the override ones. This should ensure
an override does not steal the layers of its reference if the later is
still instantiated in the view layer.
2022-08-25 12:22:38 +02:00
Philipp Oeser
e50c7a244b Merge branch 'blender-v3.3-release' 2022-08-25 09:25:22 +02:00
Philipp Oeser
714a3739da Fix T100599: dont reset parent inverse setting parent type the same
Since rBb100bdca25b1 the parent inverse was always reset in
ED_object_parent (also for just changing the parent type).

This does make sense (since there is no point keeping it when e.g
changing from "Bone" to "Object" or "Vertex" to "Object", for this to
really make sense it would have to be properly recalculated anyways
which does not happen afaict).

The reported issue was that setting the prop to the same value as it was
before (e.g. from "Object" to "Object") would still reset the parent
inverse which was really unexpected since from a user standpoint,
nothing has changed here.

So in case the value does not really change, we now just early out and
skip `ED_object_parent`.

Maniphest Tasks: T100599

Differential Revision: https://developer.blender.org/D15771
2022-08-25 09:22:55 +02:00
Campbell Barton
f36d8d59c2 Cleanup: remove redundant calculation in bmo_poke_exec
Mistake in [0] calculated the mean-face-center which wasn't used.

0: 23344bca6c
2022-08-25 15:14:34 +10:00
Campbell Barton
fcecbc5610 Cleanup: rename mat3_to_quat_is_ok to mat3_to_quat_legacy
Update comment, noting why this is kept.
2022-08-25 14:33:01 +10:00
Campbell Barton
be40f31d03 Keyframing: replace mat3_to_quat_is_ok with mat4_to_quat
Added [0] which notes in most cases results are the same but in some
cases the result seems better. While true at the time of writing since
then mat3_to_quat has been improved and used for nearly all matrix
to quaternion conversion.

0: 876cfc837e
2022-08-25 14:32:34 +10:00
Campbell Barton
a7650c6206 BLI_math: ensure non-negative matrices for mat3_to_quat calculations
Making the callers responsible for this isn't practical as matrices are
often passed indirectly to a functions such as mat3_to_axis_angle,
BKE_object_mat3_to_rot & BKE_pchan_mat3_to_rot.
Or the matrix is combined from other matrices which could be negative.

Given quaternions calculated from negative matrices are completely
invalid and checking only needs to negate matrices with a negative
determinant, move the check into mat3_to_quat and related functions.

Add mat3_normalized_to_quat_fast for cases no error checking on the
input matrix is needed such as blending rotations.
2022-08-25 13:48:31 +10:00
Campbell Barton
8593228a13 Cleanup: remove outdated, unhelpful comments 2022-08-25 13:36:54 +10:00
Campbell Barton
9f1c05d5cb Fix matrix/quaternion conversion with negative scaled cameras 2022-08-25 12:38:04 +10:00
Mattias Fredriksson
87e8810dd0 Cleanup: Add asserts to curves data-block creation
Ref D14481
2022-08-24 18:22:39 -04:00
Mattias Fredriksson
1dae11ccb5 Cleanup: Improve comments
Add to comments in curves header, fix typo in attribute header.

Ref D14481
2022-08-24 18:22:29 -04:00
Hans Goudey
f593a560d3 Cleanup: Deduplicate RNA mesh element index retrieval
Reuse the subtraction, which simplifies adding assertions
and refactoring to remove the custom data pointers.
2022-08-24 15:41:55 -04:00
Julian Eisel
b19c51c7f4 Cleanup: Move outliner types to namespace, avoid C-style type definition
With C++ we should transition towards namespaces to avoid naming
collisions. Having the namespace in place is the first step for that
transition.

Plus, the `typedef` isn't necessary for struct/class/enum definitions
in C++, so avoid the verbosity it adds.
2022-08-24 20:10:15 +02:00
Bastien Montagne
ce1f401b42 Merge branch 'blender-v3.3-release' 2022-08-24 19:17:14 +02:00
Bastien Montagne
3a1ea04d46 Cleanup warning about missing pointer casting. 2022-08-24 19:16:18 +02:00
Hans Goudey
fc26e3fe19 Cleanup: Fix typo in comment
Added by mistake in 6718afdc8a.
2022-08-24 11:25:04 -04:00
Bastien Montagne
5d4d5a2162 Merge branch 'blender-v3.3-release' 2022-08-24 17:12:01 +02:00
Bastien Montagne
8b7293eb41 LibOverride: Fix (unreported) crashes in some cases, preserve active object on Clear, general cleanup.
Inconsistencies in update/tagging code between different code doing the
same 'Clear. liboverride operation lead to crashes in some cases.

Unify deg tagging and WM notifiers accross the three editor-level
codepaths performing the common Make/Reset/Clear operations.

Preserve if possible the active object accross Clear operation.

Several cleanup/rename/re-arangement of code to make it more consistent.
2022-08-24 17:11:36 +02:00
Bastien Montagne
24dc84f156 Cleanup: rename new IDTemplate operator to create overrides to make.
Matches other operators' names and UI labels better.
2022-08-24 17:11:36 +02:00
Campbell Barton
be0a68f0d1 BLI_math: assert mat3_normalized_to_quat doesn't use a negative matrix
Add an assert to ensure callers don't pass in negative matrices as the
resulting quaternion is invalid.
2022-08-24 20:45:17 +10:00
Campbell Barton
489aeda034 Merge branch 'blender-v3.3-release' 2022-08-24 20:40:43 +10:00
Campbell Barton
8c38a994c6 Fix Quaternion.rotate(matrix) with negative matrices
Rotating a quaternion by a negative matrix gave an invalid result.

Follow up fix for T94231 which negated negative matrices too.
2022-08-24 18:59:04 +10:00
Campbell Barton
dc2d75d9bc Merge branch 'blender-v3.3-release' 2022-08-24 17:27:25 +10:00
Campbell Barton
62f764fad7 Fix T100606: Apply object transform fails with delta quaternion rotation
Apply transform failed to clear delta quaternion & axis-angle rotation.
2022-08-24 17:26:38 +10:00
Philipp Oeser
02d13c2d2f Merge branch 'blender-v3.3-release' 2022-08-24 09:17:51 +02:00
Philipp Oeser
62bd007646 Fix T100590: Crash when changing active image texture node
Mistake in own rBc76d7f7bde35.
Happened when no image was set in the Image Editor already (which is now
checked for).

Maniphest Tasks: T100590

Differential Revision: https://developer.blender.org/D15761
2022-08-24 09:15:14 +02:00
Campbell Barton
4fb64068a7 Cleanup: use determinant_m3(m) < 0 to implement is_negative_m3/m4
Use a more direct method of checking if a matrix is negative instead of
using cross & dot product.

Also replace some determinant_m3() < 0 checks with is_negative_m3.
2022-08-24 16:34:04 +10:00
Campbell Barton
f39c9d1596 Merge branch 'blender-v3.3-release' 2022-08-24 16:09:13 +10:00
Campbell Barton
10a4726a5b Fix T94231: Matrix.to_quaternion() returns invalid rotation
The result of mat3_normalized_to_quat isn't valid for negative matrices.

Isolate the fix to the Matrix.to_quaternion() instead of changing
mat3_normalized_to_quat to prevent unintended side effects elsewhere.
2022-08-24 16:07:56 +10:00
Campbell Barton
be81690b73 Merge branch 'blender-v3.3-release' 2022-08-24 10:20:52 +10:00
Campbell Barton
112a2c0627 Fix error from 21ea499558
Was not using the absolute index for comparison,
breaking the id_management test.
2022-08-24 10:20:05 +10:00