The UV Grid display options were only available in the UV Editor and
when in Edit Mode. On the surface, this could make sense as you
only edit UVs in Edit Mode and that is where the grid options are most
useful.
However, now that UVs can be seen in Object Mode, it is good to be able
to adjust the UDIM tile count in object mode as well.
See !158449 for details and screenshots.
Pull Request: https://projects.blender.org/blender/blender/pulls/158449
Move "Select Tile", "Select Pinned", "Select by Winding" &
"Select Overlap" to a new "Select All by Trait" sub-menu.
This allows for additional items without cluttering the menu,
it also matches mesh selection in the 3D viewport.
Ref !157611
When the node editor has an active compositor node, its gizmo is shown
in the image editor. The following nodes are supported:
- Crop
- Glare (Sun Beams)
- Corner pin
- Box Mask
- Ellipse Mask
- Split
- ~~Viewer~~: (not ported because there are already dedicated
navigation gizmos in the image editor.)
When multiple node editors are present, the image editor shows gizmos
from the most recently used node editor (similar to geometry nodes
gizmos in viewport).
Implementation:
- The most recently used node editor is determined by
`bNodeTree::active_viewer_key`, see `find_node_editor()`
- Gizmos in both editors share `refresh()` and `setup()` callbacks but
each space implements its own `poll()` and `draw_prepare()` callback.
The reason is image drawing uses different conventions for offsets. So
`draw_prepare()` callbacks can later be unified once this is fixed.
Pull Request: https://projects.blender.org/blender/blender/pulls/153930
This was previously hidden from menus and other parts of the UI, however
bpy.ops.image.pack() could still be called.
Now add this case to `image_pack_test` so the operator poll properly
fails.
Also with that in place, nowadays we try to keep menus consistent, and
explain why something cannot be done
Pull Request: https://projects.blender.org/blender/blender/pulls/153122
This PR adds a UV edge opacity slider to match the UV face opacity
slider in the UV editor, which controls wireframe opacity outside edit
mode. UV general opacity previously controlled this, but was not
accessible outside edit mode.
Pull Request: https://projects.blender.org/blender/blender/pulls/151368
This patch standardizes ellipses on labels that require further input
from the user before running the operator as per our
HIG.
- PR does not include buttons (e.g. "Purge" in Outliner) and only
modifies menu items.
- PR does not include operators that wait for input from the user during
modal operation (e.g. `view3d.select_box`, `paint.sample_color`).
- Some usage of ellipses were removed since they were only present to
indicate the start of the sentence (to be finished by submenu items).
E.g. "Make Local...", "Sort Elements...", "Move..." do not require extra
input from the user.
Pull Request: https://projects.blender.org/blender/blender/pulls/150950
An asterisk in a UI string usually means that the attached data has
been modified, but not saved. Following the Human Interface Guidelines.
In commit 2439c6f4bb, a button was changed in the preferences to move
the asterisk from end to beginning so that it is displayed even when
the button is clipped.
This commit moves the asterisk to the beginning in four more places:
- In the brush selection menu from various painting and sculpting
modes.
- In the Image menu from the Image editor.
- In the catalog tree view.
- In the translation add-on, when listing add-ons for which to update
translations.
Suggested by Pablo Vazquez in !147938.
Pull Request: https://projects.blender.org/blender/blender/pulls/148565
Addresses #146305.
Ever since moving to the "sequencer scene" paradigm, attempting to
render an image or animation when a sequencer with strips is present
often seems to outright ignore the sequencer in most cases. This is
because the sequencer scene usually differs from the active scene (which
is the true render target), so one must first switch their active scene
to the sequencer scene before rendering. This is confusing and
seems like a regression in behavior. To improve clarity, this patch does
the following:
When a sequencer scene with at least one strip (and the sequencer step
enabled in the pipeline) exists in the current workspace, new options
"Render Sequencer Image" and "Render Sequencer Animation" appear. These
options may be invoked by alt-F12 and ctrl-alt-F12, respectively.
Additionally, if such a valid sequencer scene is the same as the active
scene, then only the regular render options are listed, since in this
case they are identical to the sequencer render operators, meaning F12
still works predictably.
To switch back and forth between sequencer and main scene render
outputs, a new toggle has been added to the image editor to "Show
Sequencer Scene" output. This button only appears for the render result
if there is a valid sequencer scene that differs from the active scene.
Pull Request: https://projects.blender.org/blender/blender/pulls/146934
Support sync selection in the UV editor, with face-corner selection,
so it's possible to select individual UV vertices/edges in the UV editor
without UV's attached to the same underlying edge also becoming selected.
There is limited support for maintaining the UV selection when selecting
from the 3D viewport, common operations such as picking &
box/circle/lasso select support this, however other selection operations
such as "Select Random" or "Select Similar" will clear this data,
causing all UV's connected to selected mesh elements to become selected.
We may add support for additional operators as needed.
Details:
- UV Sync Selection is now enabled by default.
- In edit-mode the UV selection is stored in BMLoop/BMFace which are
written to custom-data layers when converted to a Mesh.
- To avoid unnecessary overhead - this data is created on demand.
Operators may clear this data - selecting all or none do so,
as there is no reason to store this data for a uniform selection.
- The Python API includes functions to synchronize the selection to/from
UV's as well as flushing based on the mode.
- Python scripts that manipulate the selection will either need to clear
this synchronized state or maintain it.
See:
- Design task: #78393.
- Implementation task: #131642.
Ref !138197
Increase width in some popovers where labels would get trimmed.
This was even worst for other languages, but at least now labels don't
get ellipsis by default (English at 1.0 UI scale).
The operator moves selected UVs, using the num-pad for directional keys:
Modifiers control the units:
- UDIM / UV unit (NUMPAD KEY)
- Dynamic grid unit (CTRL + NUMPAD KEY)
- Pixel unit (SHIFT + NUMPAD KEY)
Implements design task #78405.
Ref !139608
Similar to 327a1925cf
* Renames `strength_curve` to `curve_distance_falloff`
* Renames `curve_preset` to `curve_distance_falloff_preset`
These changes are done for consistency with the other concepts in the
other paint modes.
Pull Request: https://projects.blender.org/blender/blender/pulls/147071
Move several clip and mask display options into a common Overlays popover,
consistent with other editors. Includes a global toggle (Shift-Alt-Z) to
show/hide all overlays at once.
Also adds the missing annotations toggle, cursor visibility toggle, and moves mask display options in
the Image Editor into the Overlays popover due to shared code paths.
See PR for images.
Pull Request: https://projects.blender.org/blender/blender/pulls/145895
This commit implements the design task #78398
- Box region
- Set Custom UV Region (Ctrl-B).
- Disabled with Custom Region checkbox in the menu or (Ctrl-Alt-B).
- Box Select (Pinned) changed to (Alt-B).
- When the Custom Region enum is chosen the islands are packed
into the bounding box of the drawn region.
Ref !140020
Arranges selected Islands along a selected Axis.
Islands can be aligned to center/left/right/top/bottom.
Initial Implementation of #78408
Ref !139658
Co-authored-by: Campbell Barton <campbell@blender.org>
This was disabled because island selection used to be exposed as a
UV selection mode (along with vertex/edge/face) where selecting
parts of other islands would seem like a bug.
Now island selection has been moved to a separate toggle it makes
sense to allow connected geometry to be included in the selection when
other selection options enforce this.
Edge and Vertex marks such as Crease, Bevel Weight, Seam, Sharp, have
specific use cases and colors assigned to them that users get familiar
with over time.
It can be hard to remember which color belong to what, this PR tries to
address this by introducing colored icons that follow the theme setting
for that edge mark/flag.
See PR for details and screenshots.
Pull Request: https://projects.blender.org/blender/blender/pulls/144075
The Image Editor had a different menu order compared to the 3DView (this
came with fb74dcc5d6).
Now made the order in the Image Editor match the one of the 3DView.
Also matches the order in the sidebar now.
Pull Request: https://projects.blender.org/blender/blender/pulls/143222
"Selected to Grid" and "Cursor to Grid" are now swapped to fix the
consistency between UV Snap Pie Menu and 3DView Snap Menu.
Resolves#140714
Co-authored-by: Nig3l <nig3lpro@gmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/141300
"Mirror" can mean:
- To symmetrize something (i.e. generate a new mirrored copy of it or
edit it in a symmetric fashion).
- To flip something (i.e. invert its values along X, Y or Z axes).
- To repeat a texture in a mirrored fashion outside its bounds.
Reported by Gabriel Gazzán in #43295.
Change island selection from being it's own selection mode,
along side vertex/edge & face modes, to a separate toggle.
This makes it possible to use sync-select without loosing functionality
as previously island selection didn't work when sync-select was enabled.
Now island selection supports sync-select although at the moment this
only works in face-select mode, when !138197 is merged this limitation
will be removed.
In practice this change is subtle, making it possible to toggle island
selection no matter which selection mode is currently active.
Details:
- The UI is mostly unchanged, this option is available
in the same location in the header & menu as a toggle.
- The shortcut 4-key is kept, toggling instead of switching modes.
- Enabling island selection no longer isolates islands,
it just acts on selection actions made after being enabled.
This commit renames the python Brush properties that end with `_tool` to
`_brush_type` (e.g. `sculpt_tool` -> `sculpt_brush_type`) to better
distinguish the property from the concept of tools in a workspace
context.
Resolves#124201
Pull Request: https://projects.blender.org/blender/blender/pulls/139909
With 24d08e0bae, the ability to view UVs
in the Image Editor was introduced in all modes, not just Texture Paint
and Edit Mode. This introduced a new flag that was enabled by default,
causing UVs to be displayed in any of the Image Editor modes.
While this is helpful for some workflows, it is unnecessarily
distracting for many usecases when using the Image and Mask modes of the
Image Editor. To remedy this, this PR adds various polls to ensure
that these are only shown in the Paint Mode of the Image Editor and the
UV Editor. Further thought should be put into the potential separation
between the different usecases of this editor, but that is out of scope
for now.
Pull Request: https://projects.blender.org/blender/blender/pulls/139563
Previously sync-select in edge-select mode behaved in much the same
way as vertex selection, since a selected edge could cause a vertex
on an a disconnected UV island to be selected.
Now single vertices are no longer considered selected when the
Sticky-Mode is set to "Location" (the default).
Notes on changes when sync-select is enabled:
- The main change from a user perspective is edge & face select modes
show the selected edges.
- This resolves a problem in edge & face selection modes where it wasn't
possible to differentiate between a selected edge and two selected
vertices on either side of an unselected edge.
Previously UV sync-select in face mode would isolate UV selection
so dragging a face would disconnect it from adjacent faces.
Now the sticky mode is respected for face selection.
This is needed for #136817 so storing per-selection doesn't result
in a user visible change in behavior.
Calling UV stitch from menu executes `exec` function instead of modal() due
to wrong opcontext. Set `operator_context=INVOKE_REGION_WIN` so that
clicking operator from menu invokes `stitch_invoke()` which later calls
modal operation.
Pull Request: https://projects.blender.org/blender/blender/pulls/138075
**Problem**
When using Texture Paint mode, the Image Editor will show a UV Wireframe
to display the active object's UVs. In every other mode, this wireframe
is absent. This is currently a big problem for Sculpt Mode since the
Experimental Texture Paint system is a part of that mode, meaning that
the user can't see their UVs while they paint in Sculpt Mode. This is
also troublesome for users that would like to quickly view an object's
UVs without using Texture Paint Mode.
**Solution**
Since it's useful to be able to view an object's UVs at all times, the
Image Editor should display UV Wireframes in all Object Modes regardless
of the Image Editor's mode. This is the best solution since it means
that future Blender features, that would benefit from having a preview
of an object's UV Wireframes, will automatically have that option since
UV Wireframes are supported in all modes. Also, if a user doesn't want
to see UV Wireframes for any reason, it can be disabled with an Overlay
option.
Additionally, when multiple objects are selected, each object should
have its UV Wireframe drawn in the Image Editor. The selected objects
that aren't active should have less opaque wireframes to indicate which
wireframe belongs to the active object. This is the best approach for
having multiple objects selected since it allows the user to quickly
view the UV layout for all selected objects to troubleshoot UV problems,
like texture mapping. This is especially helpful when using a material
for multiple different objects.
An alternative solution would be to only show the UV Wireframe for the
active object, but this would be undesirable because it would make
troubleshooting UV positions tedious when working with multiple objects
since the user would need to select objects individually.
Co-authored-by: T0MIS0N <50230774+T0MIS0N@users.noreply.github.com>
Co-authored-by: Sean Kim <SeanCTKim@protonmail.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/135102
This adds icons for ICON_RGB_RED, ICON_RGB_GREEN, and ICON_RGB_BLUE
that display with those colors. This does not remove the existing
monochrome ICON_COLOR_* icons. This also allows the translation of
the "R", "G", "B" characters shown, for languages that prefer color
words that do not start with these.
Pull Request: https://projects.blender.org/blender/blender/pulls/136154
With the brush assets project, brushes were moved from being local to
the working blendfile to being linked from asset libraries. This breaks
the Image Paint 'Clone' brush, as it has a brush property that links to
other Image datablocks.
To support this functionality, this commit adds the corresponding
properties into the `ImagePaintSettings` struct so that it is stored
locally with the images that will be used by the tool, inside the main
blendfile.
The source image property is shared with the 3D version of the 'Clone'
brush instead of adding a separate field to preserve old behavior.
Notably, this has the following limitations:
* If clone brush assets have been made and shared with external packs,
they would not work out of the box with linked image assets.
* Despite these settings being stored on the scene, they are populated
inside the tool window under "Brush Settings" which is potentially
misleading. However, this is already the case for the 3D version of
the brush, so further UI refinement will happen outside of this PR.
* Users will be unable to use separate images simultaneously for the
Image editor and the 3D viewport, unlike in pre-4.3 versions. This
can be adjusted in the future if it is a critical workflow.
Because the intended design and functionality of this tool is currently
questionable, this commit opts to make these changes instead of doing
further design to support both accessing data on the brush and on the
scene.
Pull Request: https://projects.blender.org/blender/blender/pulls/134474
This adds an Animation panel to the Mask tab of the n-panel of the
Movie Clip and Image editors. Masks can be animated (for example, the
opacity of a Mask Layer), but there was no way to manage the Action
and Slot that held those F-Curves.
To keep things DRY, this PR also moves the code for drawing Action+Slot
selectors from the `PropertiesAnimationMixin` class to a utility
function, which is now called from both that class and the Mask UI code.
Pull Request: https://projects.blender.org/blender/blender/pulls/133153