Age | Commit message (Collapse) | Author |
|
|
|
* BRUSH_CHANNEL_VEC3/4 are now implemented
* New flag BRUSH_CHANNEL_COLOR
* Also tried to sculpt's usage of wm.radial_control in keymaps
|
|
* Sculpt now has an API to get brush channel settings.
If a sculpt cache exists it will use the channels there
(ss->cache->channels_final), otherwise it pulls them
from a brush and Sculpt toolsettings. Exampes:
float f = SCULPT_get_float(ss, "setting", sd, brush);
itn i = SCULPT_get_int(ss, "setting", sd, brush);
* Improved the UI a bit
|
|
* The input device curves for brush channels
now use a copy on write mechanism.
+ It's based on a global cache of curves.
The alternative is to reference count
BrushChannels, which I also implemented
then abandoned.
+ Profiling showed that copying CurveMapping
instances was actually a problem.
* Lots of small fixes to the old<-> new brush setting
conversion code;
* Brush commands can now, sortof, have individual
spacing. The default brush spacing still acts
as a minimum though.
* Added a BLI_ghash_lookup_p_ex method that
returns the key ptr inside the ghash (it
returns the actual key, not a pointer to
Entry.key).
* Added a general 1d CurveMapping preset operator
that uses an RNA path to get the curve.
|
|
of upper case.
|
|
BrushChannels are now stored in linked lists
instead of simple arrays. This helps to
avoid memory corruption.
I had originally wanted to be able to pass
BrushChannels by value, but that doesn't really
work since they heap allocd data (the input
mapping curves).
|
|
|
|
Pushing this commit early due to computer
weirdness
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- Show "Lasso Select" in menus (along with Box & Circle select)
- Show "Extrude to Cursor" (along with other extrude actions).
- Rename operators that add/extrude on Ctrl-Click
since their names were inconsistent.
This is mainly for discoverability.
|
|
While the screenshot operator showed an "Area" option,
it wasn't usable from the main menu (unless accessed via menu search).
Split screenshot area into an operator that depends on cursor.
|
|
|
|
"App" is a name reserved for the application templates at the moment.
It may become its own term in the near future if Templates are separated
from "Apps".
So since this is a name not exposed to the users we should renamed it
sooner than later.
Note that this will require scripts to update since the name of the
class is renamed here.
This also requires an update in the User Manual.
Differential Revision: https://developer.blender.org/D12523
|
|
This breaks API compatibility. However we are now grouping this setting
in the proper section (preferences.apps), so scripts had to update anyways.
So they may as well do it for the final name.
The reason to remove from the UI is that this is intended for app setup,
and as such it should not be exposed to final users until we have apps
better presented (for 3.1 hopefully).
Differential Revision: D12516
|
|
Seperate enabling PBVH_BMESH from enabling DynTopo:
* Created a new option to globally disabled
DynTopo.
* The DynTopo panel header now reads "Dynamic Mode",
to hopefully signal that turning on PBVH_BMESH is
a seperate step from enabling or disabling DynTopo
itself.
* The first checkbox in the panel is "DynTopo" so it
should be clear enough (it's on by default, with multiple
layers of file versioning checks).
PBVH_BMesh's undo system:
* CD_MESH_ID layers are now permanently saved once
they are created (by default they are not). This
fixed a *lot* of bugs:
Before this the undo system had to save maps between
mesh indices and mesh IDs on transitioning
between sculpt and global undo steps. This was
extremely error prone, and it simply wasn't possible
to cover all of the corner cases
* Note that there is still an odd bug where the first
global undo push after a sculpt step gets ignored,
I dunno what's up with this.
* Dyntopo undo should be nearly (hopefully completely)
bug-free after this commit.
C++20
* Made a few small changes to get blender to compile
with c++20. std::result_of was removed, had to
replace a couple of usages of it with std::invoke_result.
* I'm planning to do some design studies on rewriting
sculpt into C++.
* I strongly suspect we are going to need C++20'a new
concepts feature if we move sculpt into C++.
I'm planning to do some design studies on how
that might work.
|
|
- Material Properties: Use split column layout
- Remove the redundent term 'Options'
- Remove the redundent term 'Freesttle'
|
|
Class SEQUENCER_PT_overlay as defined twice.
|
|
Suggested and funded by [[ https://blendernpr.org/| BNPR ]], this patch aims to update the long not-updated Freestyle UI
**Why do the UI upgrade:**
- Freestyle UI doesn't match the rest of Blender UI, it was neglected for a long time
- The current UI makes Freestyle workflows tedious and distracting
**Highlights:**
For before/after screenshots see https://developer.blender.org/D10505
Video:
https://youtu.be/qaXhuJW_c9U
Workflow video (older revision): https://youtu.be/IqbjIq_A800
Doc patch (WIP): https://github.com/bnpr/FreestyleUIUpgrade/blob/main/freestyle-ui-upgrade-docs.diff
Reviewed By: #user_interface, Blendify, HooglyBoogly, Severin
Differential Revision: https://developer.blender.org/D10505
|
|
With this commit, curve objects support the geometry nodes modifier.
Curves objects now evaluate to `CurveEval` unless there was a previous
implicit conversion (tessellating modifiers, mesh modifiers, or the
settings in the curve "Geometry" panel). In the new code, curves are
only considered to be the wire edges-- any generated surface is a mesh
instead, stored in the evaluated geometry set.
The consolidation of concepts mentioned above allows remove a lot of
code that had to do with maintaining the `DispList` type temporarily
for modifiers and rendering. Instead, render engines see a separate
object for the mesh from the mesh geometry component, and when the
curve object evaluates to a curve, the `CurveEval` is always used for
drawing wire edges.
However, currently the `DispList` type is still maintained and used as
an intermediate step in implicit mesh conversion. In the future, more
uses of it could be changed to use `CurveEval` and `Mesh` instead.
This is mostly not changed behavior, it is just a formalization of
existing logic after recent fixes for 2.8 versions last year and two
years ago. Also, in the future more functionality can be converted
to nodes, removing cases of implicit conversions. For more discussion
on that topic, see T89676.
The `use_fill_deform` option is removed. It has not worked properly
since 2.62, and the choice for filling a curve before or after
deformation will work much better and be clearer with a node system.
Applying the geometry nodes modifier to generate a curve is not
implemented with this commit, so applying the modifier won't work
at all. This is a separate technical challenge, and should be solved
in a separate step.
Differential Revision: https://developer.blender.org/D11597
|
|
With D12436 two File Browser properties were renamed but two references
not changed in space_filebrowser.py
See D12449 for details.
Differential Revision: https://developer.blender.org/D12449
Reviewed by Hans Goudey
|
|
to forcibly set autosmooth_fset_slide to zero
(i.e. treat face set boundaries as hard edges
and not project them on the surface).
|
|
Preferences / File Browser section made less confusing.
See D12436 for details and comparisons.
Differential Revision: https://developer.blender.org/D12436
Reviewed by Campbell Barton and Julian Eisel
|
|
This implements the initial core framework for fields and anonymous
attributes (also see T91274).
The new functionality is hidden behind the "Geometry Nodes Fields"
feature flag. When enabled in the user preferences, the following
new nodes become available: `Position`, `Index`, `Normal`,
`Set Position` and `Attribute Capture`.
Socket inspection has not been updated to work with fields yet.
Besides these changes at the user level, this patch contains the
ground work for:
* building and evaluating fields at run-time (`FN_fields.hh`) and
* creating and accessing anonymous attributes on geometry
(`BKE_anonymous_attribute.h`).
For evaluating fields we use a new so called multi-function procedure
(`FN_multi_function_procedure.hh`). It allows composing multi-functions
in arbitrary ways and supports efficient evaluation as is required by
fields. See `FN_multi_function_procedure.hh` for more details on how
this evaluation mechanism can be used.
A new `AttributeIDRef` has been added which allows handling named
and anonymous attributes in the same way in many places.
Hans and I worked on this patch together.
Differential Revision: https://developer.blender.org/D12414
|
|
Mistake in {rB459974896228}.
To use Object Fonts, (vertex) instancing needs to be enabled.
So bring back the instancing panel and improve the instancing choice
(similar to rB6c0c766bcaa0) by just giving the 'Vertex' choice (or
'None') and explain this is only used for Object Fonts on characters.
Was reported in D11348 itself.
Differential Revision: https://developer.blender.org/D12438
|
|
* Collapse now uses code from decimate to detect
degenerate cases.
* Remaining, unknown (and rare) degenerate cases
are now detected (via presence of duplicate verts
in faces) and fixed.
* DynTopo fills in undo size properly now,
so undo memory limiting works.
|
|
The panning angle allows a more intuitive panning when the output is
surround sound. It sets the angle on the horizontal plane around the
listener. 0 degrees is to the front, negative values go to the left and
positive ones to the right. +/-180 degrees is directly from the back.
Technical detail: the panning value is linear with the panning angle
with a factor of 90 degrees. For stereo this means that -1 is left and
+1 right, since the speakers are exactly 90 degrees to either side.
Differential Revision: https://developer.blender.org/D12275
|
|
This adds an option to use a capture of the entire main window as the
blend file preview thumbnail.
See D10492 for details and examples.
Differential Revision: https://developer.blender.org/D10492
Reviewed by Campbell Barton
|
|
I remember when we originally decided on the Dimensions panel,
one of the reasons we combined time and image size properties in the same panel,
was simply because the 2.49 and previous UIs used fixed-size panels,
so we often put two categories of properties inside a panel, using two columns.
Now that we no longer do this, we could clarify and simplify some panels
by splitting them, such as the Output > Dimensions panel
{F6753690}
Reviewed By: brecht, pablovazquez
Differential Revision: https://developer.blender.org/D4440
|
|
Allow the UDIM grid to be shown and adjusted when there are images
loaded in UV edit mode. Right now the grid feature disappears once an
image is loaded and many have found this to be confusing.
Based on community and artist feedback, there was support to change this
behavior[1]
This patch does the following:
- Allows the grid to be shown even when images are present
- The max allowable dimensions for the grid has been increased from
10x10 to 10x100 to match the underlying maximum UDIM range that blender
supports
Note: This should not affect other Image editor modes like Paint/Mask or
the Render Result viewer etc. Future work in this area is currently
documented in a dedicated design task[2]
[1] https://devtalk.blender.org/t/the-udim-tile-grid-design-and-feedback-thread/20136
[2] https://developer.blender.org/T90913
Differential Revision: https://developer.blender.org/D11860
|
|
The parameter wa sin the UI but was not used because it was replaced by Use Thickness.
|
|
|
|
All props of annotations are not animatable by design and opacity must be equal.
As the opacity is reused by gpencil objects, a new prop has been created in order to use different props for annotations and GP objects.
|
|
Steps to reproduce:
- enable Extended Asset Browser
- open a regular File Browser
gives:
"rna_uiItemR: property not found: FileSelectParams.asset_category"
Now do proper poll.
Differential Revision: https://developer.blender.org/D12350
|
|
I might write a paper on this. Topology rake now locally
updates a vector field, which it uses to smooth the input
and constrain to mesh (including face set) boundaries.
This can make an enormous difference for things like
smoothing.
Note that this is different from the existing 'curvature rake'
mode, which also builds a field and which is fed into the input
of this new one.
The only oddity is that the field is stored in a CD_PROP_COLOR
since we don't have a CD_PROP_FLOAT4, and this shows up in the UI
(not sure if I'm messing up the CD_TEMPORARY flags or if the UI
doesn't check for them).
|
|
|
|
|
|
Added an option to split face set boundaries on mirror
boundaries; currently only DynTopo supports this.
Very useful for making hard edges along mirror lines.
|
|
It's kind of hackish mathematically.
|
|
Works by projecting non-boundary verts onto boundary vert
normals and weighting by boundary_smooth_Factor.
|
|
Add mode to overwrite strips on overlap instead of resolving overlap.
When overlap is created, 3 things can happen:
- On partial overlap, handles of overlapped strip are moved
- On complete overlap with smaller strip, overlapped strip is split
- On complete overlap with larger strip, overlapped strip is removed
This mode can be enabled in header.
Reviewed By: fsiddi, mano-wii
Differential Revision: https://developer.blender.org/D11805
|
|
|
|
These buttons were in Meshes but not for Grease Pencil. This patch add them in order to keep consistency.
Reviewed By: HooglyBoogly
Maniphest Tasks: T90973
Differential Revision: https://developer.blender.org/D12328
|
|
|
|
The inset tool requires moving the cursor towards the center of the
selection, making it nearly impossible to use the inset tool
when the view was aligned with the vertical handle.
Use custom settings for VIEW3D_GGT_tool_generic_handle_free
to make it draw hollow, as large as the scale tool.
Resolves T87991.
|
|
Also add gizmo group example to the tool-template.
|