Commit Graph

127943 Commits

Author SHA1 Message Date
Sybren A. Stüvel
cb2afa6553 Cleanup: Anim, remove out of date note on ANIM_armature_runtime_refresh
The docstring warned about memory not being freed, but that information
is out of date so I removed it.

No functional changes.
2023-09-15 14:54:04 +02:00
Sybren A. Stüvel
89962977e5 Anim: only show editable bone collections in M/shift+M menu
When showing a list of bone collections in the M/Shift+M menus, only show
those bone collections that can be assigned to. Bone collections from
linked armatures are hidden, because they're read-only anyway.

It would probably be better to still show these read-only collections,
but not sure how that can be done with the current code.
2023-09-15 14:54:04 +02:00
Sybren A. Stüvel
24048ef05d Anim: allow assigning bones to added-in-local-override collections
Assigning & unassigning to the active collection works. Using named
collections is still untested.
2023-09-15 14:54:04 +02:00
Sybren A. Stüvel
8499c6d4b3 Refactor: Anim, consistent abstraction level ANIM_armature_bonecoll_assign
Refactor `ANIM_armature_bonecoll_assign()` to ensure it has a consistent
abstraction level.

No functional changes.
2023-09-15 14:54:03 +02:00
Sybren A. Stüvel
347ffd6262 Anim: add support for renaming bone collections added by overrides
Add a flag `BONE_COLLECTION_OVERRIDE_LIBRARY_LOCAL` that's only set on
bone collections that have been overridden locally.
2023-09-15 14:54:03 +02:00
Sybren A. Stüvel
89aee9defb Anim: store Armature's active bone collection by name
Instead of storing the active bone collection as `BoneCollection*`, store
its name in DNA. This makes it impossible to point to non-owned bone
collections, makes it easier to handle copy-on-write copies, and should
make it possible to use library overrides on it.

This now also introduces a new requirement that bone collections always
have a name. If the name is set to the empty string, the default name
("Bones") will be used instead.

The `active_collection` pointer is still there for ease of access, but
it's been moved to the armature's `runtime` property.

The library overrides part isn't working yet, though.
2023-09-15 14:54:03 +02:00
Sybren A. Stüvel
f1c65c9635 Anim: allow appending bone collections with liboverrides 2023-09-15 14:54:03 +02:00
Sybren A. Stüvel
63f2a416b2 Anim: allow (de)selecting bones in collection on overridden armature
When the Armature & its Object are library-overridden, allow (de)selecting
the bones in a bone collection.
2023-09-15 14:54:03 +02:00
Sybren A. Stüvel
68bb3fa388 Anim: disallow bone collection operations on linked armatures
Do not allow bone collection operations on linked armatures, regardless of
whether it is overridden or not. This is the first step in making the
library overrides system work with bone collections.

This changes the pre-existing check on the object to actually check the
armature, which is the owner of bone collections. The object is irrelevant
here.
2023-09-15 14:54:03 +02:00
Pratik Borhade
59e8be7aa4 Fix #101550: Transfer Mode operator doesn't update outliner selection
Notifiers was sent to outliner for redraw but outliner was out of sync
due to missing flag which is required for syncing.
This will correctly set the select/active outliner element flags with
the help of Base in `outliner_select_sync_from_object`. So correct active
tree element will be highlighted in `outliner_draw_highlights`

Pull Request: https://projects.blender.org/blender/blender/pulls/112370
2023-09-15 13:21:08 +02:00
Pablo Vazquez
2f31077463 Fix #112032: Theme: Wrong colors editing list items
Fixed by using a slightly transparent white color that blends
correctly with the background of text inputs and list items.

Also use the same colors in the Text Editor for consistency in both
Dark and Light themes.
2023-09-15 13:00:05 +02:00
Julian Eisel
4fff53d9ef Cleanup: Improve internal asset shelf function name
Be a bit more clear about what this is doing. It's now more obvious what
part of the UI this belongs to.
2023-09-15 12:59:21 +02:00
Lukas Tönne
5d77d8d832 Fix #112233: Panel collapsed state should not hide socket links
#112019 included open/closed state of the parent panel in socket
visibility calculation. This prevents dragging links, but also disables
other features that should still work, such as drawing links.

A narrower condition is needed for icon visibility vs. general socket
visibility. The cases which use the new `is_icon_visible` condition:
- Drawing socket selection outlines (same as unselected sockets)
- Drawing multi-input sockets (same as unselected sockets)
- `node_find_indicated_socket`, used by a wide range of mouse click
  operators, including the link-drag operator that was cause for
  #112019.

Cases using the original `is_visible` (true even if parent panel is
collapsed):
- `nodeLinkIsHidden` draws links only when at least one socket is
  visible.
- `node_update_basis`, sockets still added to layout even if icon isn't
  rendered.
- `node_update_hidden`, panels are ignored for "hidden" nodes, all
  sockets are rendered.
- `NODE_OT_link_make` operator for finding "best" sockets to connect.
- `node_link_viewer` finding sockets to connect to a viewer node.
- `get_main_socket` used for insert-on-links (find sockets to splice
  into) and some shader previews
- `node_gather_link_searches`, suggestions for adding a new node at the
  end of a link.

Pull Request: https://projects.blender.org/blender/blender/pulls/112326
2023-09-15 12:57:56 +02:00
Julian Eisel
18281ee211 Asset Shelf: Make header buttons consistent with Asset browser
In the Asset Browser, the display popup is first, and the search second.
Also, the search button is enlarged horizontally. Apply both to the
asset shelf header.
2023-09-15 12:51:03 +02:00
Julian Eisel
213b8325bf Asset Shelf: Make display popup more constistent with Asset Browser
- Use property split layout
- Use "Size" instead of "Preview Size" for the label
- Place size option at the top
2023-09-15 12:40:19 +02:00
Pratik Borhade
0b8c83d273 GPv3: Send updates after drop operation
Redraw dopesheet and outliner editors when layer is dropped to some other
position or inside a group.

Pull Request: https://projects.blender.org/blender/blender/pulls/111519
2023-09-15 11:31:25 +02:00
Sergey Sharybin
a53329fda7 Cleanup: Strict compiler warnings in Cycles Metal BVH
Pull Request: https://projects.blender.org/blender/blender/pulls/112406
2023-09-15 09:54:37 +02:00
Christoph Lendenfeld
bd305c8d18 Fix #110108: NLA absolute snapping
Before this patch the following snapping options were broken

* snap to markers
* snap to seconds with "Absolute Time Snap" turned on
* technically also snap to Frames with "Absolute Time Snap"
turned on (but made no real difference)

The issue was that each end of the strip would snap individually.
Potentially collapsing the strip.
This would happen e.g. when snapping to markers but with only 1 marker present.

This PR fixes the issue by finding out the closest snap offset and
shifting the strip as a whole by that amount.
That means either the start or the end of the strip will snap to the target.
By doing it that way the length of the strip is never changed by snapping.

This means when snapping to Seconds with "Absolute Time Snap" turned on,
the start of the strip might not be on a full second when the end is.

Pull Request: https://projects.blender.org/blender/blender/pulls/111984
2023-09-15 09:52:40 +02:00
Campbell Barton
4790c6ac61 addon_utils: don't print a traceback when the add-on isn't found
This was already done for ImportError but missed, ModuleNotFoundError.
2023-09-15 17:23:08 +10:00
Campbell Barton
8d62b7c01c Fix fast-path addon_utils._initialize_once not being used on startup
Changes to initialization from [0] accidentally reverted renaming
_initialize to _initialize_once.

[0] 6de294a191
2023-09-15 17:00:46 +10:00
Campbell Barton
af81ee37b9 Fix divide by zero displaying characters with an unknown column width
The result of BLI_wcwidth wasn't checked before using the result to
calculate a width, this cause a negative return value to be multiplied
by the font size which divided by zero.
2023-09-15 16:05:29 +10:00
Campbell Barton
bc51449ff1 Fix cursor motion across characters with an unknown column width
BLI_str_utf8_char_width returns -1 for character without a known width.
This caused the right cursor motion to skip these characters.

While editable text should not contain control characters,
cursor motion should behave properly in cases when they do.
2023-09-15 16:04:28 +10:00
Campbell Barton
635a4eac05 Fix delete key setting a control character in wmEvent::utf8_buf
The check for control characters didn't account for delete (127).
This wasn't noticeable in most cases as delete is mapped to delete text.
Pressing Shift-Delete would enter 127 control character in the
text-editor, 3D text & Python console. This happened X11 & Wayland,
I didn't check other platforms.
2023-09-15 16:01:00 +10:00
Campbell Barton
67c9056bed Fix memory leak in PyC_Err_Format_Prefix for Python 3.12
In Python 3.12 Every PyErr_Fetch must have a matching PyErr_Restore
call, otherwise references are created and never de-referenced.
2023-09-15 14:26:49 +10:00
Campbell Barton
425cc82aff Cleanup: remove unnecessary PyC_Err_Format_Prefix use
In this case there is no error to prefix, use PyErr_Format instead.
2023-09-15 14:23:16 +10:00
Campbell Barton
9903a692cc Cleanup: clarify & simplify Python traceback extraction
- Remove duplicate PyErr_NormalizeException call.
- Avoid unnecessary traceback casts.
- Remove warning about #97731 which has been resolved.
- Clarify comments.
2023-09-15 13:17:12 +10:00
Hans Goudey
99f9a53321 Attributes: Expose "is required" read-only property to Python
This allows detecting if deleting the attribute will be possible
without actually trying to delete it, which can give warning
messages in the terminal.

As an example:
```
>>> [(item.name, item.is_required) for item in mesh.attributes]
[('Attribute', False),
 ('position', True),
 ('.edge_verts', True),
 ('sharp_face', False),
 ('.corner_vert', True),
 ('.corner_edge', True)]
```

Pull Request: https://projects.blender.org/blender/blender/pulls/111468
2023-09-15 04:56:27 +02:00
Campbell Barton
9d92f03536 Fix #112399: Memory leak with exceptions from scripts in the text editor
Regression in [0] caused the function to jump to the error in the text
editor not to restore the exception, using the trace-back being iterated
over instead of the original value.

[0]: 2d2baeaf04
2023-09-15 12:23:42 +10:00
Campbell Barton
bcda667d37 Fix crash executing a script when sys.modules doesn't contain __main__
While in practice sys.modules has __main__ module, the purpose of
PyC_MainModule_Backup/Restore is to temporarily override __main__.

Running code outside of the text editor (callbacks for timers for e.g.)
could remove the __main__ module which would then crash when running
a script from the text editor.
2023-09-15 12:23:41 +10:00
Campbell Barton
7516a9c0b6 Fix Python console command execution without a __main__ module
Account for sys.modules not to have a __main__ module, various other
minor improvements too.

- Use a context manager to temporarily override the __main__ module.
- Use a context manager to override the stdin when auto-completing.
- Remove `_BPY_MAIN_OWN` constant as the __main__ module is needed.
2023-09-15 12:23:40 +10:00
Campbell Barton
2c28f87230 Fix missing weight-paint overlay popover when mixing pose & weight-paint
Since [0] mixing weight-paint & pose modes made weight-paint overlay
options inaccessible. Display both popovers in the 3D view header
in this case.

[0]: 4fa4f5432d
2023-09-15 10:49:22 +10:00
Campbell Barton
a106760efa Cleanup: use variables for the 3D View header
Avoid re-accessing values already known.
2023-09-15 10:44:45 +10:00
Campbell Barton
0ed14c813f Cleanup: remove redundant checks from space_view3d.py
The context's mode implies having an active object in the mode
being checked.
2023-09-15 10:44:43 +10:00
Campbell Barton
3c6731969e Cleanup: simplify use of tool_settings in space_view3d.py
Assign early in and reuse, access directly from context.
2023-09-15 10:44:42 +10:00
Campbell Barton
def4a06fc9 Cleanup: format 2023-09-15 10:44:40 +10:00
Pablo Vazquez
4fa4f5432d UI: Viewport: Split object/mode overlays into own popover
Move object/mode-specific overlays into their own popover
in order to reduce scrolling and improve discoverability.

Pull Request: https://projects.blender.org/blender/blender/pulls/112156
2023-09-14 21:20:48 +02:00
Habib Gahbiche
64bd2091cf Realtime Compositor tests: enable keying tests.
Tests are not crashing anymore, so no reason to skip them.

Blend files are already available in svn. Reference images have been updated in svn revision `r63481`

Pull Request: https://projects.blender.org/blender/blender/pulls/112198
2023-09-14 20:27:31 +02:00
Philipp Oeser
4086ef986c Fix #112374: loading reference/background images filters out movies
Movies are perfectly fine for reference/background images, now allow for
loading them by adjusting the default filter for the filebrowser.

Pull Request: https://projects.blender.org/blender/blender/pulls/112378
2023-09-14 19:42:26 +02:00
Pablo Vazquez
2ec2e52a90 UI: Theme: Allow transparency when editing text in widgets
Allow transparency in both text and background color, to allow blending
the selected color with whatever is underneath. Making theming more
flexible, especially since the same property is used in different backgrounds.

Note: this doesn't affect the default themes since all of them have the alpha
component in inner at `1.0`.

Pull Request: https://projects.blender.org/blender/blender/pulls/112090
2023-09-14 19:28:30 +02:00
Brecht Van Lommel
42ed81b9ab Fix #112299: crash calling context.copy() in operator with popup
The context contained an invalid region pointer after closing the popup.
In the bug report this caused problems making a copy of context.property
which accesses the region, but doing other access to context.region was
a problem as well.
2023-09-14 18:59:10 +02:00
Brecht Van Lommel
89b3249c14 UV: when finding the best packing method, use area as tie breaker
When multiple packing methods results in effectively the same bounds,
prefer the packer that uses the smallest area. When all islands can
easily fit this is usually the box packer instead of alpaca. The zigzag
method of the latter has a tendendcy to take up more area and rotate
islands.

Fix #110724: smart UV project unnecessarily rotates islands

Pull Request: https://projects.blender.org/blender/blender/pulls/112295
2023-09-14 18:57:26 +02:00
Brecht Van Lommel
d4cc0d02cb UV: disable best fit rotation of all islands at end of UV packing
This has a tendency to place islands diagonally in the image which is
not usually wanted, even if it's maximimizing the number of pixels for
the island.

Fix #109906: UV unwrap packs island diagonally instead of straight

Pull Request: https://projects.blender.org/blender/blender/pulls/112295
2023-09-14 18:57:26 +02:00
Weizhen Huang
f014e44e8b Refactor: EEVEE: add utility function for 3D texture read
with manual trilinear interpolation. Currently only used for GGX BSDF LUT

Pull Request: https://projects.blender.org/blender/blender/pulls/112386
2023-09-14 18:46:07 +02:00
Hans Goudey
05045c3e50 Fix: Duplicate node tool catalog in point cloud edit mode
This isn't available in releases yet, but point cloud edit mode is
partially working with node group operators anyway.
2023-09-14 11:45:07 -04:00
Hans Goudey
cc83951951 Geometry Nodes: Update node tool menus dynamically
See #101778

Remove the requirement of restarting Blender to refresh the
extended 3D view menus for node group changes. Also avoid
rebuilding the tree of relevant assets and catalogs on every
redraw, since parsing asset libraries, etc. could become more
expensive than we want. Those two goals combined mean we
have to be more rigorous in how we invalidate the cached
catalog tree.

The first main change required is to clear the tree as asset libraries
are being read, similar to other dynamic asset menus. This is done
with a 3D view header listener rather than a menu listener in this case.

However, that isn't enough, because there is an issue with the asset
system where the "all" library isn't updated when the current file library
changes. The solution is to explicitly rebuild the "all" library's catalogs
when other asset libraries are changed.

The other necessity for dynamic updates is clearing the catalog tree
to be rebuilt when the node group "asset traits" are changed. This is
done with a new notifier type (with the goal of being a bit selective
about when we re-read assets). This _also_ requires running the
"presave" callback that builds asset metadata when updating the
property. Otherwise saving the file and sending the notifier is
necessary, which is too confusing.

Pull Request: https://projects.blender.org/blender/blender/pulls/112166
2023-09-14 17:43:33 +02:00
Hans Goudey
d2d4de8c71 Geometry Nodes: Show uncategorized assets in separate menus
In the add modifier menu, 3D viewport menus for node tools, and the node
editor add menu, assets not in catalogs are added to an "No Catalog"
menu rather than not being accessible at all.

This makes the default behavior when adding a node tool "not broken"
so at least something happens by default. The question of "How do I
add a catalog?" is much better than "Why didn't anything happen?"

Implements #111529
See #101778

---

![image](/attachments/b943e2c4-f660-4812-b9ab-f7c116b68b98)
![image](/attachments/e6ee94d7-cd14-475f-8fa6-abcc6774fd7e)
![image](/attachments/b1718d0c-4182-49c5-867a-1399082e98f0)

Pull Request: https://projects.blender.org/blender/blender/pulls/112355
2023-09-14 17:35:24 +02:00
Lukas Tönne
4aa3735d0f Node drawing: Fix unused variables in release builds
Pull Request: https://projects.blender.org/blender/blender/pulls/112384
2023-09-14 16:33:08 +02:00
Weizhen Huang
d10a87da48 Fix: EEVEE: wrong reflectance at IOR == 0.0
should be 1 instead of 0
2023-09-14 16:13:14 +02:00
Lukas Tönne
9433a1701a Nodes: Support for input/output sockets in same vertical space
Declarations can use the `add_input_output` method to create a combined input/output socket. The drawing code supports moving sockets up one vertical slot to align them with the predecessor.

Closes #112235

Pull Request: https://projects.blender.org/blender/blender/pulls/112250
2023-09-14 16:08:04 +02:00
Weizhen Huang
5baf652374 Cleanup: EEVEE: rename glass BTDF to BSDF at several places
because it contains reflectance and transmittance, so BSDF would be a
morep proper name.
Also rename BSDF to BRDF at places where only reflectance is returned.
2023-09-14 16:06:26 +02:00