Also semantically separate draw_lock and draw_unlock, as it
is more clear than a single method with a boolean argument.
Should be no functional changes.
This logic has not been working since 2014 [0] although it was briefly
fixed (by accident) when TARGETDIR_VER was made an absolute directory
[1] (since reverted as that caused problems with CPACK/WIN32).
"file(REMOVE_RECURSE ${TARGETDIR_VER})" would attempt to remove:
- "${CMAKE_BINARY_DIR}/${TARGETDIR_VER}" instead of
- "${CMAKE_INSTALL_PREFIX}/${TARGETDIR_VER}".
While this could be re-enabled by correcting the path,
it slows down the install target by copying files every "install".
This could be made to detect changes and only cleaning files in this
case however this ends up being fairly involved, see: PR !111084.
As stale files haven't been causing problems as far as I'm aware,
remove this code.
[0]: e43c5fa005
[1]: d605cc7574
Use the installed executable location instead of the build location,
this would work in situations when the build location had relevant
files accessible but this is often not the case.
This simple function just performed a null check and an array lookup.
Just writing it in the few places its used works fine too, and avoiding
the function call per triangle can improve and make the check clearer.
Also, avoiding the abstraction makes the "node fully visible" check
when building the PBVH more obvious; that has been refactored here.
Pull Request: https://projects.blender.org/blender/blender/pulls/111072
The goal is to move to more data oriented design, reducing memory
usage and simplifying code by clarifying data access, avoiding
unnecessary levels of abstraction, and reusing code.
- Simplify threading with the C++ threading API
- Pass the faces to update with an IndexMask instead of a pointer array
- IndexMask uses less memory and simplifies masking and iteration
- Store the grid to face map with indices instead of pointers
- Now this is exactly the same as `build_loop_to_face_map`
The changes in this keymap are much more involved.
If any shortcut isn't mentioned, that means it is unchanged.
General:
- All brush shortcuts have been removed for free custom mapping
- `S` & `U` are now consistently mapped for Brush size & strength
- Redundant shortcuts have been removed such as
- Line Session drawing (In GP Draw Tool)
- Select Alternate in GP
- Quadriflow Remesh (In Mesh Sculpt Mode)
- Box Hide (In Mesh Sculpt Mode)
- Dynamic Topology Toggle (In Mesh Sculpt Mode)
- Mask Overlay (In Mesh Sculpt Mode)
- Removed Lasso Mask/Select shortcuts (This keymap is mainly using the Tools instead. Easy to add back if needed.)
Mode Switching (Global change):
Easier mode switching access for any workflow.
- `123` = switch selection/mask modes for the **current mode**. If in object mode, it will first switch to edit mode (Previously this would always switch to edit mode)
- `4` = Mode switching pie menu (previously `4-7` for individual modes)
- `Tilde` = Transfer Mode (Previously not mapped. Useful for instant object switching while keeping the current mode)
- `5-0` = Unassigned
Brush vs Selection:
Multiple Modes were missing these shortcuts.
- `Shift` `LMB` = Smooth Brush
- `Ctrl` `LMB` = Inverted Brush
- `Shift` `Alt` `LMB` = Set Selection
- `Shift` `Alt` `Ctrl` `LMB` = Toggle-Extend Selection
Brush Size vs Select Linked:
These were previously in direct conflict. Now they are both distinct and based on other DCC software.
- `[` = Decrease Brush Size
- `]` = Increase Brush Size
- `Alt` `dbl LMB` = Select Linked Pick
- `Ctrl` `Alt` `dbl LMB` = Deselect Linked Pick
- `Ctrl` `L` = Select Linked
Select & Mask:
- `Q` = Cycle Masking/Selection Tools
- `Ctrl` `A` = Mask/Select Pie Menu (Draw, Paint, Sculpt Modes)
- `Alt` `A` = Auto-Masking Pie Menu (Mesh & GP Sculpt Mode)
- `Shift A` = Expand Mask (Mesh Sculpt Mode) / Grow Selection (Curve Sculpt Mode)
- `Shift` `Alt` `A` = Expand Mask by Normals (Mesh Sculpt Mode)
Face Sets & Visibility:
Previously missing shortcuts.
- `Shift` `W` = Face Set Expand
- `Shift` `Alt` `W` = Active Face Set Expand
- `Ctrl` `W` = Face Set Edit Pie Menu
- `Page Up` = Grow Active Face Set
- `Page Down` = Shrink Active Face Set
- `H` = Hide Active Face Set
- `Shift` `H` = Hide Inactive Face Sets / Show everything
- `Ctrl` `H` = Hide Masked Geometry
Transforming:
For Sculpt and Weight Painting modes. Previously missing
- `C` = Cursor Tool
- `W` = Move Tool
- `E` = Rotate Tool
- `R` = Scale Tool
- `T` = Transform Tool
- `Shift` `RMB` = Set Cursor / Set Transform Pivot in Sculpt Mode
Sculpting:
Consistent and easier to access shortcuts for remeshing and subdiv level .
- `Shift` `D` = Subdivision level Down (Previously on `Pg Down`)
- `D` = Subdivision level Up (Previously on `Pg Up`)
- `Shift` `Ctrl` `D` = Voxel Size / Dyntopo Size
- `Ctrl` `D` = Voxel Remesh / Dyntopo Flood Fill
Adding missing shortcuts
Painting:
Fixing various missing or inconsistent shortcuts.
- `Backspace` = Set Color/Weight
- `I` = Sample Color/Weight
- `Alt` `I` = Sample Vertex Group
- `Alt` `Ctrl` `I` = Vertex Group Lock Pie
- `X` = Swap Colors (Previously missing in Sculpt Mode)
Grease Pencil:
Adding many missing shortcuts.
- `Shift S` = Animation Menu (Previously on `I` and missing outside of Draw Mode)
- `Shift` `Alt` `S` = Insert Blank Keyframe
- `Alt` `H` = Unhide Layers
- `Ctrl` `H` = Hide Active Layer
- `Shift` H = Hide Inactive Layers
- `Y` = Active Layer Menu
- `Shift` `Y` = Merge Layer Down
- `Alt` `Y` = Material Menu
- `Alt` `Backspace`/`Delete` = Delete Active Keyframe (Previously on `D` `Backspace`/`Delete`)
Other:
Adding missing shortcuts.
- `MMB` for panning in the User Interface (Highly requested)
- `Shift F` = Center View to Mouse (Replacing Frame Selected(All Regions) shortcut)
- `D` = Annotate
- `L` = Toggle Stabilize Stroke (Previously on `Shift` `S`)
- `Ctrl F` = Weight radial control in weight painting modes
Ref !109750.
Use the variable instead of "." for the install destination.
While they're equivalent, it's not discoverable where the value
for "." is set.
It also results in paths containing "/./", while valid isn't so nice
if the paths are copied from the terminal for use elsewhere.
Recent change in [0] caused the CFLAGS variables not to be manipulated
by remove_cc_flag. Unfortunately EVAL is needed to set a variable
that references a variable name.
[0]: e95e6ad66a
After 12ef20990b, attributes and vertex group names were checked
simultaneously to fix the name collision. But this results in crash when
new attribute is added to curve object (it searches for vertex group
list). To avoid the crash, check for supported id types in new function
`BKE_id_supports_vertex_groups`.
Pull Request: https://projects.blender.org/blender/blender/pulls/111036
Part 2 of the patch I wrote moving USD over to the new Attributes API
for Colors: https://projects.blender.org/blender/blender/pulls/105347
This patch adds support for more types of generic Mesh Attributes.
Attribute Types and Domains are converted to their USD counterparts
where possible. For example, float Attributes used for modifying
shader masks or int Attributes for grouping are now able to be
round-tripped. Due to the differences in the two systems some
conversions are necessary, but attempts were made to keep data
loss to a minimum.
If you export to USDA, you'll find the Attributes get prefixed with
a "primvars:" namespace; this is expected behavior and identifies
the exported Attributes as different from other USD Schema.
Not supported:
- Edge domain. There doesn't seem to be a proper conversion for
this in USD. One exception is for creasing and sharpness, but if
they are desired I can add them in a future patch.
Co-authored-by: kiki <charles@skeletalstudios.com>
Co-authored-by: Charles Wardlaw <cwardlaw@nvidia.com>
Co-authored-by: Hans Goudey <h.goudey@me.com>
Co-authored-by: Charles Wardlaw <kattkieru@users.noreply.github.com>
Co-authored-by: Michael Kowalski <makowalski@nvidia.com>
Pull Request: https://projects.blender.org/blender/blender/pulls/109518
The split face code relied a lot of the edges added to the weld context.
But with 113004687d, some edges are removed from context. And even more
edges can be removed (reducing loops and arrays).
Removing the dependence on edges decreases the array and time spent in
loops.
Furthermore, the corner edge array should not be needed for the
merge by distance operation.
So this commit redoes the face/loops iterator which previously
needed the `loop_next` member to skip loops depending on the previous
one (possibly linked to the edge whose vertex will be merged) and now
uses the `switch_to` member to switch loops instead of skipping and
depend on the former.
With the end goal of simplifying ownership and memory management,
and allowing the use of `get_name` in contexts without statically
allocated strings, use `std::string` for the return values of these two
operator type callbacks instead of `const char *` and `char *`.
In the meantime things get uglier in some places. I'd expect `std::string`
to be used more in the future elsewhere in Blender though.
Pull Request: https://projects.blender.org/blender/blender/pulls/110823
Use appropriate function for converting paths. This adds an ugly
dependency on a function that is private to python/, similar to how it
is done for Freestyle. Solving that will be for a separate change.
Ref #110765