Commit Graph

24327 Commits

Author SHA1 Message Date
Hans Goudey
c1e2d01ce3 Cleanup: Move spacetypes.c to C++
See #103343

Pull Request: https://projects.blender.org/blender/blender/pulls/108905
2023-06-12 18:30:55 +02:00
Hans Goudey
612e306598 Attributes: Add identity default value to quaternion type
Missing from 1e4b80fed9.
2023-06-12 11:36:49 -04:00
Hans Goudey
1e4b80fed9 Attributes: Add quaternion rotation type
Add a quaternion attribute type that will be used in combination with
rotation sockets for geometry nodes to give a more intuitive experience
and better performance when using rotations.

The most interesting part is probably the interpolation, the rest is
the same as the last attribute type addition, 988f23cec3.
We need to interpolate multiple values with different weights.
Based on Sybren's suggestion, this uses the `expmap` methods from
4805a54525 for that.

This also refactors `SimpleMixerWithAccumulationType` to use a
function rather than a cast to convert to the accumulation type.

See #92967

Pull Request: https://projects.blender.org/blender/blender/pulls/108678
2023-06-12 15:49:50 +02:00
Campbell Barton
90f123e95a Cleanup: remove unused text editor documentation functions 2023-06-10 17:35:58 +10:00
Campbell Barton
a2865b701d Cleanup: rename max-length to maxncpy as this includes the null byte 2023-06-10 17:21:24 +10:00
Campbell Barton
39516324d2 Cleanup: various minor changes (code_clean.py) 2023-06-10 17:08:08 +10:00
Chao Li
b3356b1799 Mesh: Remove unnecessary mesh position copying
Remove unnecessary mesh position copying in the following places:
1. hair dynamics
2. shrinkwrap remesh target project
3. normal projection calculation in shrinkwrap (hidden copying)
4. multires modifier: reshape from object
5. vertex weight proximity modifier remesh

See #103789.

Pull Request: https://projects.blender.org/blender/blender/pulls/108721
2023-06-09 18:38:35 +02:00
Hans Goudey
d651ee69bd Cleanup: Use explicit default for corner normals optional parameter 2023-06-09 11:53:40 -04:00
Hans Goudey
250c9ccc10 Cleanup: Avoid using custom data type enum incorrectly
The data transfer code stored values not in the `eCustomDataType`
enum in this variable, so the type was incorrect. Instead use a cast
when we expect the value to be a valid enum value.
2023-06-09 11:10:40 -04:00
Hans Goudey
09a4cc1f1d Merge branch 'blender-v3.6-release' 2023-06-09 11:08:24 -04:00
Hans Goudey
6a3ca93c7e Fix #108788: Data transfer nearest interpolated broken
Copy and paste mistake in d0705bd697.
2023-06-09 11:07:49 -04:00
Bastien Montagne
9e36690f6b Merge branch 'blender-v3.6-release' 2023-06-09 16:59:26 +02:00
Bastien Montagne
44e4b5fe33 Fix (unreported) Object's particle 'foreach_id` potentially accessing other IDs data.
Spotted while investigating #107860: Interactions with timeline after undo makes Blender crash.
Cannot reproduce any more crashes from this report.
2023-06-09 16:58:35 +02:00
Julian Eisel
9879e3a84d UI: Quiet warning when setting panel type description from C
No user visible changes expected.

Assigning a string literal to `PanelType.description` would give a
warning, because ISO C requires these to be `const char *`. Wasn't used
so far, but will be with #104831.
2023-06-09 16:44:31 +02:00
Jeroen Bakker
b1b74eb335 Cleanup: make format 2023-06-09 16:28:00 +02:00
Jacques Lucke
b8474d87b3 Merge branch 'blender-v3.6-release' 2023-06-09 14:19:27 +02:00
Jacques Lucke
5f7be257b8 Fix #107473: make links connected to unavailable sockets invalid
Such links shouldn't be considered at all. In fact, they might be removed
automatically in the future.
2023-06-09 14:14:47 +02:00
Hans Goudey
46cf093270 Mesh: Remove face map list, convert to integer attribute
Face maps were added as a prototype of a new rigging solution during
2.8 development. Their storage is redundant with the newer generic
attribute system (specifically with integer face attributes), and
they were never used much. This commit removes the face map list
and converts the storage to an attribute with the name `face_maps`.
There is nowhere to store the face map names anymore, so those
are not kept.

It probably still makes sense to have a feature like mesh face gizmo
selection for rigging. But the design and implementation woulds likely
have to change significantly, including possibly changing the storage
type, and making use of the generic attribute system instead of a
special type.

See #105317 for more discussion.
2023-06-09 13:54:52 +02:00
Hans Goudey
38833a20a6 Merge branch 'blender-v3.6-release' 2023-06-08 15:59:10 -04:00
Hans Goudey
fd74b280d9 Fix: Amend previous windows build error fix
Thanks to Ray for helping with this!
2023-06-08 15:55:47 -04:00
Hans Goudey
38eb063c0c Merge branch 'blender-v3.6-release' 2023-06-08 15:34:41 -04:00
Hans Goudey
0dde6ab424 Fix: Build error after previous remesh fix
MSVC requires some coddling to understand these templates.
2023-06-08 15:32:57 -04:00
Hans Goudey
fcc9828141 Merge branch 'blender-v3.6-release' 2023-06-08 14:04:07 -04:00
Hans Goudey
2b45f2d662 Mesh: Fix remesh color attribute propagation, improve performance
Fixes #108730

The call to `CustomData_interp` also interpolated the face corner
topology attributes, which broke the mesh completely. To fix this,
avoid relying on the CustomData API and move the attribute
interpolation to use the attribute API instead. This change also
makes it trivial to support all attribute types in the future.

Also, only retrieve the closest vertex once, instead of doing it
again for every attribute. Combined with building the topology
maps in parallel this approximately doubled the performance
of color attribute propagation in a test with 2 million vertices
and 8 color attributes on both domains (63 to 34 ms).

Pull Request: https://projects.blender.org/blender/blender/pulls/108773
2023-06-08 19:58:13 +02:00
Sergey Sharybin
a7644fd5bb Cleanup: Use references in the motion tracking code
Used for arguments which are not supposed to be nullptr.

Pull Request: https://projects.blender.org/blender/blender/pulls/108767
2023-06-08 17:55:16 +02:00
Habib Gahbiche
f3cb157452 Compositor: add new node: Kuwahara filter
The filter is used to reduce noise while preserving edges. It can be used to create a cartoon effect from photorealistic images.

It offers two variations:
1) Classic aka isotropic kuwahara filter: simple and faster computation. Algorithm splits an area around a single pixel in four parts and computes the mean of the region with the lowest standard deviation.
2) Anisotropic Kuwahara filter: improves the classical approach by considering the direction of structures of regions

This patch implements both approaches above as multi-threaded operations for the full-frame and tiled compositor.

Co-authored-by: Sergey Sharybin <sergey@blender.org>
Pull Request: https://projects.blender.org/blender/blender/pulls/107015
2023-06-08 16:14:45 +02:00
Sergey Sharybin
a20162392e Cleanup: Typo in constant name
No functional changes.

Pull Request: https://projects.blender.org/blender/blender/pulls/108764
2023-06-08 15:42:30 +02:00
Hans Goudey
319b68763f Cleanup: Simplify namespaces in geometry component files 2023-06-08 08:29:15 -04:00
Hans Goudey
3503f7675c Cleanup: Remove unused forward declaration 2023-06-08 08:28:57 -04:00
Falk David
7f4f771442 GPv3: Add "Select Box" operator
This implements the `VIEW3D_OT_select_box` for the new grease pencil data-block.

Note that this also adds a `get_evaluated_grease_pencil_drawing_deformation` function, but there are TODOs left.
This will have to be updated once the modifier logic is in place.

Pull Request: https://projects.blender.org/blender/blender/pulls/108661
2023-06-08 10:20:18 +02:00
Sybren A. Stüvel
42fe8de6f9 Assets: allow copying asset data from one ID to another
Asset data can now be copied in Python via assignment to
`id.asset_data`, so for example `dest.asset_data = source.asset_data`.
This copies the description, license, author, etc. fields, as well as
the tags and the asset catalog assignment.

This is intended to be used in the pose library, when updating a pose by
simply creating a new asset and having that replace the old one.

This is intentionally taking a copy, even though the above use case
could have sufficed with a higher-level 'move' function. By exposing
this as a copy, it can be used in a wider range of situations, from
whatever Python code wants to use it. This could include copying the
asset data from the active asset to all the other selected ones.

Any pre-existing asset data is freed before the copy is assigned. The
target ID MUST be marked as asset already for the assignment to work.
Assigning `None` to clear the asset status is not allowed. Instead
`.asset_mark()` resp. `.asset_clear()` should be used. This limitation
is in place to simplify the API, and to ensure that there is only one
way in which assets are marked/cleared, making it easier to change the
internals of the asset system without API changes.

Example code:

```python
src = bpy.data.objects['Suzanne']
dst = bpy.data.objects['Cube']

dst.asset_mark()
dst.asset_data = src.asset_data
```

Pull Request: https://projects.blender.org/blender/blender/pulls/108547
2023-06-08 10:11:41 +02:00
Campbell Barton
7a1e2c4d0c Cleanup: spelling in code 2023-06-08 10:43:55 +10:00
Campbell Barton
9c28eebc9a Cleanup: minor clarifications & corrections, use doxygen comments
Also replace full URL's in with #ID.
2023-06-08 10:43:55 +10:00
Bastien Montagne
a1e5d57b59 Cleanup/fix: Add file subversion bump to 3.6 for 'unversioned' versioning.
`blo_do_versions_300` still had some 'no version number' versioning code
at its end, should have been handled when 3.6 branch was created.
2023-06-07 17:01:33 +02:00
Omar Emara
f06929766b Realtime Compositor: Implement Movie Distortion node
This patch implements the Movie Distortion node for the realtime
compositor. The distorted coordinates are computed and cached for a
particular tracking camera distortion parameters. So for expensive
distortion models, the first run will take some time to compute, but
subsequent runs will be fast.

An alternative implementation would be to implement each of the
distortion modes in the shader, but that was decided against for a few
reasons:

1. We want to hide the implementation details of the distortion models,
   since it is provided through an external library (Libmv).
2. Some distortion models are expensive to solve accurately, and can be
   quite slow to solve each time the shader runs.
3. The typical usage of the node does not involve interactive editing of
   the distortion parameters, rather, the parameters are computed during
   camera calibration, so caching seems most fitting in that case.

Pull Request: https://projects.blender.org/blender/blender/pulls/108230
2023-06-07 14:45:46 +02:00
Hans Goudey
decf089e06 Cleanup: Remove unused deprecated socket type
"SOCK_MESH" was used for a particle nodes experiment,
never in a released version of Blender as far as I know.
2023-06-07 08:31:46 -04:00
Brecht Van Lommel
db43a8fb57 Refactor: realtime compositer context changes for render compositing
* Provide render data, node tree and color management directly instead
  of going through scene, as these may be modified by the render pipeline.
  Also better for cached texture hits this way.
* Change legacy pass type to pass name.
* Skip file output node when not doing final render.
* Gracefully handle incomplete render results.

Pull Request: https://projects.blender.org/blender/blender/pulls/108629
2023-06-07 14:17:37 +02:00
Campbell Barton
6704881708 Cleanup: spelling in comments 2023-06-07 21:47:45 +10:00
Campbell Barton
96bfcd0597 Cleanup: rename __SOCK_MESH to SOCK_MESH_DEPRECATED
Double underscores didn't communicate that this was deprecated,
and are typically for internal or platform defined identifiers and
shouldn't be used for public API's.
2023-06-07 17:53:08 +10:00
Campbell Barton
51c15ec933 Merge branch 'blender-v3.6-release' 2023-06-07 13:39:36 +10:00
Campbell Barton
64ead920a1 Fix #108495: Pasting a material crashes
References to data-blocks in a material were stored in-memory and could
crash if the data-blocks referenced by the material no longer existed
when pasting.

Resolve by using a blend-file for material copy/paste, matching how the
clipboard works in the 3D view-port.

Currently there is no support for including indirectly linked
data-blocks when pasting the material. Instead, data-blocks are restored
by name, by inspecting the current file.

This also fixes a crash where the `SpaceNode::nodetree` could point to
freed memory when pasting a material.

Ref !108496.

Includes contributions by @mont29.

---

Fix back-ported to main [0], including fix [1].

[0]: 5177e2f20b
[1]: 64aa96d421
2023-06-07 13:22:07 +10:00
Germano Cavalcante
8e059b569b UI: move 'Face Nearest' snap option to another section
The snap mode called "Face Nearest" (and the "Increment" but that's for
another time) doesn't behave like the other snap modes.

Unlike the other snap modes, "Face Nearest" does not act on a Snap
Base (or Snap Source).

It always acts on the origin of individually transformed elements, (such
as each vertex individually).

It works just like the "Project Individual Elements" option.

So this commit makes the following changes:
- `Snap With` was moved to the beginning of the popover
- `Align Rotation to Target` and `Backface Culling` have been moved closer to the snap targets
- `Snap With`, `Target Selection` and `Align Rotation to Target` are no longer hidden by varying the mode and options
- `Project Individual Elements` has been replaced with the `Face Project` option
- `Face Nearest` has been moved to stick together with the `Face Project` option

Co-authored-by: Germano Cavalcante <germano.costa@ig.com.br>
Pull Request: https://projects.blender.org/blender/blender/pulls/108555
2023-06-06 19:35:57 +02:00
Iliya Katueshenock
8dc70b9e2e Cleanup: Correcting default cases in node.cc
Add all other enum items to switch statements instead of using default.

Pull Request: https://projects.blender.org/blender/blender/pulls/107339
2023-06-06 19:19:53 +02:00
Chao Li
a56df90931 Fix #108198: Particle hair crash when using Hair Dynamics
`hair_out_mesh` and `hair_in_mesh` implicitly share edges.
In `hair_create_input_mesh()`, edge data of `hair_in_mesh` needs to be
updated and therefore are copied to a new location. In the subsequent
frames, `psys->clmd->clothObject->edges` won't be updated and point to
freed memory block. Therefore, Blender crashes.
By freeing `hair_out_mesh` first,
1. in `hair_create_input_mesh(),` at least edge data copying is avoided
2. `psys->clmd->clothObject->edges` always points to correct memory

However, since it's possible that similar situation will happen again
by adding another strong user to the same `CustomData` in the future,
it is safer to update `psys->clmd->clothObject->edges` for every frame.

Pull Request: https://projects.blender.org/blender/blender/pulls/108480
2023-06-06 18:46:35 +02:00
Hans Goudey
708dfbb91b Fix: Compile error in main after recent fmt usage
In the 3.6 branch we use `FMT_HEADER_ONLY`,
but that was changed in main by 0d38fa2422.
2023-06-06 12:43:38 -04:00
Bastien Montagne
6c7354a69a Merge branch 'blender-v3.6-release' 2023-06-06 17:38:42 +02:00
Damien Picard
f07a4c1eed I18n: disambiguate "Fill"
The "Fill" message can be either a noun or a verb. This commit
disambiguates the verb usages for translation through various
translation contexts.

The more involved change is in the generation of keymaps from paint
modes. By default, the enums defining brush names are in the default
context, but this commit changes the ones including a "Fill" item to
"Brush". In order to get the same contexts in the keymap, we introduce
a specific function in `paint.cc` to return the appropriate context
depending on the tool.

Issue reported by Gabriel Gazzán (@GabrielGazzan) in #43295.

Pull Request: https://projects.blender.org/blender/blender/pulls/108561
2023-06-06 16:29:22 +02:00
Damien Picard
d95486af95 18n: Use fmt::format() to replace string concatenation in nodes
The UI code for nodes uses `stringstream`s a few times to format
strings. In some cases it is fine, but in others it makes localization
hard or impossible to do properly, as explained in #92758.

This commit replaces some `stringstreams` by `fmt::format()`, a
library that is already used in other parts of Blender and was
suggested by Hans Goudey (@hooglyboogly) in
[D15996](https://archive.blender.org/developer/differential/0015/0015996/#inline-138440).

Pull Request: https://projects.blender.org/blender/blender/pulls/107260
2023-06-06 16:27:49 +02:00
Falk David
b29ba95cae GPv3: Add "(De)select All" operator and keymap
This adds the `GREASE_PENCIL_OT_select_all` operator as well as a new keymap for edit mode for the new grease pencil objects.

Pull Request: https://projects.blender.org/blender/blender/pulls/108628
2023-06-06 14:45:54 +02:00
Jeroen Bakker
91f9615ed2 Cleanup: Make format 2023-06-06 14:22:29 +02:00