Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-08-30Fix error in operator poll functionsCampbell Barton
- PALETTE_OT_color_add: crashed without a brush. - SCREEN_OT_actionzone: crashed without a window. - PREFERENCES_OT_studiolight_show: exception when opening prefs failed.
2022-08-30Fix T100673: crash when using slide brush without attachment infoJacques Lucke
The slide brush requires attachment information on the curves. Now a warning is shown instead of crashing Blender. The attachment information can be generated by executing the `Curves > Snap to Nearest Surface` operator.
2022-08-16Sculpt: Fix T100379: Anchored brush tags all nodes for updateJoseph Eagar
Node tagging needed to happen after the undo node's null check.
2022-08-04Sculpt: Support gradient color mode in sculpt paint brushRamil Roosileht
T99614 Support for gradient mode in sculpt paint brush {F13316165} Reviewed By: Joseph Eagar & Julian Kaspar Differential Revision: https://developer.blender.org/D15502 Ref D15502
2022-08-03Fix T100168: Sculpt positions undo not working after recent commitHans Goudey
efe0e2b18370 used the "normals_update" for applying positions from an undo step, which doesn't set the necessary flags for a redraw.
2022-08-02Fix T96810: Invalid sculpt normals after some operationsHans Goudey
Mask and color brushes were using the existing PBVH vertex "update tag" to mark their modifications. This was mostly unnecessary, and causes unnecessary calculation of normals. It also caused errors though, because they didn't tag the corresponding PBVH node for normal recalculation, causing problems on the borders of nodes, since one node might accumulate into another's vertex normals, but the other node wouldn't also accumulate and normalize the normals. The solution is to only use the update tag for tagging deformed vertices that need recalculated normals. Everything else is handled at the PBVH node level (which was already the case, but it wasn't clear). The update tag was also used for undo to tag the nodes corresponding to changed vertices. This was wrong though, because normals and visibility would also be recalculated for just color or mask undo steps. Instead, just use local arrays to map from vertices to nodes. Differential Revision: https://developer.blender.org/D15581
2022-07-28Curves: improve handling of empty surface meshesJacques Lucke
2022-07-27Sculpt: Remove debug printfJun Mizutani
Reviewed By: Joseph Eagar Differential Revision: D15547 Ref D15547
2022-07-26BLI: add use_threading parameter to parallel_invokeIliay Katueshenock
`parallel_invoke` allows executing functions on separate threads. However, creating tasks in tbb has a measurable amount of overhead. Therefore, it can be benefitial to disable parallelization when the amount of work done per function is small. See D15539 for some benchmark results. Differential Revision: https://developer.blender.org/D15539
2022-07-26Cleanup: spelling in commentsCampbell Barton
2022-07-25Curves: Unify poll functions, add message with no surfaceHans Goudey
The "snap to surface" operators now have "disabled" poll messages when there is no surface object. The implementation in most curves operators is also unified. The goal is to avoid having to define and use the poll failure messages in multiple places, to reduce the boilerplate that tends to be necessary to add an operator, and to increase the likelihood that operators are implemented with proper poll messages. Differential Revision: https://developer.blender.org/D15528
2022-07-25Curves: add warning when invalid uv map is used when adding curvesJacques Lucke
UV maps that are used for surface attachment must not have overlapping uv islands, because then the same uv coordinate would correspond to multiple surface positions. Ref T99936.
2022-07-25Undo: Improve image undo performanceAlex Parker
When texture painting a lot of time is spent in ED_image_paint_tile_find. This fixes stores the PaintTiles in a blender::Map making ED_image_paint_tile_find an O(1) rather than O(n) operation. When using threading the locking should happen during read as well, still this gives a boost in performance as the read is now much faster. Reviewed By: jbakker Maniphest Tasks: T99546 Differential Revision: https://developer.blender.org/D15415
2022-07-24Cleanup: Simplify uv sculpt toolChris Blackbourn
No functional changes.
2022-07-22Curves: support sculpting on deformed curvesJacques Lucke
Previously, curves sculpt tools only worked on original data. This was very limiting, because one could effectively only sculpt the curves when all procedural effects were turned off. This patch adds support for curves sculpting while looking the result of procedural effects (like deformation based on the surface mesh). This functionality is also known as "crazy space" support in Blender. For more details see D15407. Differential Revision: https://developer.blender.org/D15407
2022-07-22Fix crash loading factory settings in image paint modeCampbell Barton
Loading factory settings left the region NULL, causing the brushes poll function to crash.
2022-07-21Spreadsheet: Implement selection filter for curves sculpt modeHans Goudey
The spreadsheet can retrieve the float selection using the same utilities as curves sculpt brushes. Theoretically this can work in original, evaluated, and viewer node modes, at least when the sculpt selection attributes are able to be propagated. Differential Revision: https://developer.blender.org/D15393
2022-07-21Cleanup: Rename length parameterization interpolation functionHans Goudey
The name makes more sense as an action, other interpolation methods besides linear probably don't make sense here anyway.
2022-07-21Cleanup: add ISMOUSE_MOTION macroCampbell Barton
Replace verbose ELEM(..) usage, now each kind of mouse event has it's own macro.
2022-07-21Cleanup: spelling in comments, typos in tool-tipsCampbell Barton
2022-07-21Fix T99687: Cloth filter crashJoseph Eagar
The code was failing to exclude the sculpt object from the list of collision objects.
2022-07-20Curves: Remove use of CurveEval in sculpt brushesHans Goudey
This commit removes the use of PolySpline for resampling curves and replaces it with the length parameterization utility for that purpose. I didn't test performance, but I would expect the shrinking to be slightly faster because I reused some arrays to avoid allocating them for every curve. I noted some potential improvements in the "add curves" function. Differential Revision: https://developer.blender.org/D15342
2022-07-19Cleanup: quiet compiler warningsCampbell Barton
2022-07-17Fix T99644: Anchored brush mode fails for negative brushesJoseph Eagar
The stroke code now supports raycasting the original mesh. This fixes anchored mode not working for negative brushes, which might move the mesh out of the initial mouse cursor position.
2022-07-17Sculpt: Fix scene spacing mode (phase 1)Joseph Eagar
The scene spacing code was failing to check if a raycast failed, which can happen when sculpting the edges of objects in negative mode. Note I removed what I suspect was a hack put in to fix this, spacing was clamped to 0.001 scene units. Scene spacing mode is actually quite broken, so it will be fixed in a series of phases.
2022-07-13Fix T99659: Improve UV Island calculation with hidden faces.Chris Blackbourn
Simplify interface, regularize implementation and some light cleanup. See also: T79304 and D15419.
2022-07-11Fix T99383: Wrong origdata type in color filterJoseph Eagar
2022-07-11Fix T94633: Sculpt mode missing check for hidden active objectJoseph Eagar
Note there is a bug in BKE_object_is_visible_in_viewport, it returns false when the object is in local mode. The transform operator poll should do a similar test. That would allow us to move the test from sculpt_brush_strok_invoke to SCULPT_mode_poll (at the moment we cannot do this due to the brush operator falling through to the translate keymap item in global view3d keymap).
2022-07-09Weight & Vertex Paint: always respect edit mode hiding on faces.Alexander Gavrilov
In some cases it is mandatory to be able to hide parts of the mesh in order to paint certain areas. The Mask modifier doesn't work in weight paint, and edit mode hiding requires using selection, which is not always convenient. This makes the weight and vertex paint modes always respect edit mode hiding like sculpt mode. The change in behavior affects drawing and building paint PBVH. Thus it affects brushes, but not menu operators like Smooth or Normalize. In addition, this makes the Alt-H shortcut available even without any selection enabled, and implements Hide for vertex selection. Differential Revision: https://developer.blender.org/D14163
2022-07-08Geometry Nodes: new geometry attribute APIJacques Lucke
Currently, there are two attribute API. The first, defined in `BKE_attribute.h` is accessible from RNA and C code. The second is implemented with `GeometryComponent` and is only accessible in C++ code. The second is widely used, but only being accessible through the `GeometrySet` API makes it awkward to use, and even impossible for types that don't correspond directly to a geometry component like `CurvesGeometry`. This patch adds a new attribute API, designed to replace the `GeometryComponent` attribute API now, and to eventually replace or be the basis of the other one. The basic idea is that there is an `AttributeAccessor` class that allows code to interact with a set of attributes owned by some geometry. The accessor itself has no ownership. `AttributeAccessor` is a simple type that can be passed around by value. That makes it easy to return it from functions and to store it in containers. For const-correctness, there is also a `MutableAttributeAccessor` that allows changing individual and can add or remove attributes. Currently, `AttributeAccessor` is composed of two pointers. The first is a pointer to the owner of the attribute data. The second is a pointer to a struct with function pointers, that is similar to a virtual function table. The functions know how to access attributes on the owner. The actual attribute access for geometries is still implemented with the `AttributeProvider` pattern, which makes it easy to support different sources of attributes on a geometry and simplifies dealing with built-in attributes. There are different ways to get an attribute accessor for a geometry: * `GeometryComponent.attributes()` * `CurvesGeometry.attributes()` * `bke::mesh_attributes(const Mesh &)` * `bke::pointcloud_attributes(const PointCloud &)` All of these also have a `_for_write` variant that returns a `MutabelAttributeAccessor`. Differential Revision: https://developer.blender.org/D15280
2022-07-06Fix T99464: Curves sculpt add 3D brush symmetry brokenHans Goudey
The brush transform was not applied to the view direction.
2022-07-05Curves: move curves surface transforms to blenkernelJacques Lucke
This utility struct is useful outside of sculpting code as well.
2022-07-04Fix curves sculpting Selection Paint missing refreshDalai Felinto
This was reported as part of D15219 but it is a problem in master, not in the patch. EEVEE is drawing with a cheap sampling when navigating or painting, but we need to clear the painting flag when we are done painting. For a rainy day: DRW_state_is_navigating() should be renamed to indicate that it also checks for the painting flag.
2022-07-04Cleanup: use local variable in smear code instead of ss->cache->bstrengthJoseph Eagar
2022-07-04Fix T98698: Division by zero in smear code when strength is zeroJoseph Eagar
2022-07-02BLI: refactor length parameterizationJacques Lucke
This refactor had two main goals: * Simplify the sampling code by using an algorithm with fewer special cases. * Generalize the sampling to support non-sorted samples. The `SampleSegmentHint` optimization was inspired by `ValueAccessor` from OpenVDB and improves performance 2x in my test cases. Differential Revision: https://developer.blender.org/D15348
2022-07-02BLI: improve span access to virtual arraysJacques Lucke
* Make the class names more consistent. * Implement missing move-constructors and assignment-operators.
2022-07-01Cleanup: remove unused variableJacques Lucke
2022-06-30Cleanup: colon after params, move text into public doc-strings, spellingCampbell Barton
2022-06-30Curves: New tools for curves sculpt mode.Jacques Lucke
This commit contains various new features for curves sculpt mode that have been developed in parallel. * Selection: * Operator to select points/curves randomly. * Operator to select endpoints of curves. * Operator to grow/shrink an existing selection. * New Brushes: * Pinch: Moves points towards the brush center. * Smooth: Makes individual curves straight without changing the root or tip position. * Puff: Makes curves stand up, aligning them with the surface normal. * Density: Add or remove curves to achieve a certain density defined by a minimum distance value. * Slide: Move root points on the surface. Differential Revision: https://developer.blender.org/D15134
2022-06-30Fix T99196: sculpt_update_object calls paint updates for nonpaint toolsJoseph Eagar
Specifically BKE_texpaint_slots_refresh_object was being called, which causes cycles to reset at strange times (like moving the mouse cursor in pose, boundary and various other tools). This (along with some code that checks if the pbvh pixels need to be rebuilt) is only run if is_paint_mode (which used to be needs_colors) is true.
2022-06-30Sculpt: Fix a few bugs revealed by SCULPT_TOOL_NEEDS_COLOR name changeJoseph Eagar
* Color attributes are no longer auto-created when painting an image. * Workbench shading type is no longer automatically changed to Attribute for image paint.
2022-06-30Cleanup: Renamed SCULPT_TOOL_NEEDS_COLOR to SCULPT_tool_is_paintJoseph Eagar
Old name is confusing since SCULPT_TOOL_PAINT can paint on images too, and it's planned for smear to as well.
2022-06-29Fix T99231: Wrong anchored mode test for smear brushJoseph Eagar
2022-06-28Fix: Flush mode to evaluated object when exiting curves sculpt modeHans Goudey
Tagging the object for copy on write in order to change the mode on the evaluated object was already done when entering sculpt mode, it should happen when exiting sculpt mode as well. Also use the message system to tag updates of the mode property. This is commonly done for other "mode switch" operators. It's best to be consistent here, though I don't know that lacking that caused any issues.
2022-06-28Cleanup: fix various typosluzpaz
Differential Revision: https://developer.blender.org/D15304
2022-06-27Cleanup: formatCampbell Barton
2022-06-27Cleanup: remove redundant has key checksCampbell Barton
2022-06-27Fix T98673: Color attribute fill API didn't support editmodeJoseph Eagar
2022-06-27Fix T99100: Undo/redo bugs with paint and gravityJoseph Eagar
You can now push multiple sculpt undo nodes of different types. This is necassary to handle paint tools that have gravity enabled.