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-02Merge branch 'blender-v3.3-release'Hans Goudey
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-30Sculpt: Opaque vertex type for sculptJoseph Eagar
This is a port of sculpt-dev's `SculptVertRef` refactor (note that `SculptVertRef was renamed to PBVHVertRef`) to master. `PBVHVertRef` is a structure that abstracts the concept of a vertex in the sculpt code; it's simply an `intptr_t` wrapped in a struct. For `PBVH_FACES` and `PBVH_GRIDS` this struct stores a vertex index, but for `BMesh` it stores a direct pointer to a BMVert. The intptr_t is wrapped in a struct to prevent the accidental usage of it as an index. There are many reasons to do this: * Right now `BMesh` verts are not logical sculpt verts; to use the sculpt API they must first be converted to indices. This requires a lot of indirect lookups into tables, leading to performance loss. It has also led to greater code complexity and duplication. * Having an abstract vertex type makes it feasible to have one unified temporary attribute API for all three PBVH modes, which in turn made it rather trivial to port sculpt brushes to DynTopo in sculpt-dev (e.g. the layer brush, draw sharp, the smooth brushes, the paint brushes, etc). This attribute API will be in a future patch. * We need to do this anyway for the eventual move to C++. Differential Revision: https://developer.blender.org/D14272 Reviewed By: Brecht Van Lommel Ref D14272
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.
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
2022-02-10Refactor: Move PBVH update tag out of MVertHans Goudey
This is part of the project of converting `MVert` into `float3`. (more details in T93602), The pbvh update flag is removed and replaced with a bitmap stored in the PBVH structure. This patch is similar to D13878. This is mainly setup for an eventual performance improvement by removing the extra data from mesh vertices, but if it's consistent with testing in the other patch doing the same thing for another "temp tag", then it may actually increase the speed of sculpt code slightly, since less memory needs to be loaded when checking/changing the flags. Differential Revision: https://developer.blender.org/D14000
2021-12-08Cleanup: move public doc-strings into headers for 'editors'Campbell Barton
Ref T92709
2021-04-27Fix T87596: Pose brush not using automasking optionsPablo Dobarro
Automasking cache factors were missing in the pose brush deform function. Reviewed By: JacquesLucke Maniphest Tasks: T87596 Differential Revision: https://developer.blender.org/D11005
2021-03-13Cleanup: add BKE_pbvh_vertex_iter_begin to clang-formatPablo Dobarro
Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D10707
2021-02-10Cleanup: Unindent if statements in sculpt tools codePablo Dobarro
This removes indentations from if statements by converting them to early returns and continue. Most of the code of brushes and tools has loops with a full indented body inside of an if, which was also copied into some of the new tools. Reviewed By: JacquesLucke Differential Revision: https://developer.blender.org/D10333
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2020-12-07UI: Fix mistakes in UI messages.Bastien Montagne
2020-09-24Cleanup: spellingCampbell Barton
2020-09-18Unify all XYZ symmetry options using Mesh SymmetryPablo Dobarro
This adds XYZ symmetry as a property of meshes and updates all modes to use the mesh symmetry by default to have a consistent tool behavior between all modes and when switching objects. Reviewed By: brecht, mano-wii, campbellbarton Maniphest Tasks: T79785 Differential Revision: https://developer.blender.org/D8587
2020-08-18Sculpt: Enable Cloth Simulation Target for Pose and BoundaryPablo Dobarro
This adds a new brush property called "Deformation Target" which controls how the brush deformations is going to affect the mesh data. By default is set to Geometry, which makes the brushes displace the vertices. When set to Cloth Simulation, the deformation of the brush is applied to the cloth solver constraints, so the simulation is responsible to apply the final deformation. This allows to add cloth simulation effects to other sculpt tools with minor modifications to their code. This patch enables Cloth Simulation deformation target for Pose and Boundary brushes, which are tools that are already designed to work in low poly counts and produce large deformations. This allows creating the most common cloth effects, like bending and compressing folds, without relying on collisions. Reviewed By: sergey Differential Revision: https://developer.blender.org/D8578
2020-08-12Clenaup: Rename random_access_init to random_access_ensurePablo Dobarro
Reviewed By: sergey Differential Revision: https://developer.blender.org/D8529
2020-08-06Merge branch 'blender-v2.90-release'Pablo Dobarro
2020-08-06Fix Pose Brush FK mode detecting wrong rotation originPablo Dobarro
The Pose FK mode assings the rotation origin to the boundary of the last visited face set in the floodfill operation. In some cases, the topology of the model may make the flood fill operation to visit a face set as the first one (assinging it to target) and visit it again as the last one (assinging it to origin). This will make the pose brush to default the origin and target to the brush location and not to the face sets as it considers that there is only one possible boundary. This adds a GSet to ensure that a particular face set is not visited twice in the flood fill, fixing these cases. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7984
2020-08-05Sculpt: Option to lock the rotation in the Pose Brush scale deform modePablo Dobarro
The scale deform mode includes rotation by default, so when when scaling down a part of the models it becomes harder to control as the effect of the rotation less predictable (similar to using trackball rotation in a very small radius). This locks the rotation of the segment, so parts of the model can be scaled down in a more predictable way. Reviewed By: sergey Differential Revision: https://developer.blender.org/D8465
2020-08-01Cleanup: use term init instead of initialize/initialiseCampbell Barton
The abbreviation 'init' is brief, unambiguous and already used in thousands of places, also initialize is often accidentally written with British spelling.
2020-07-03Cleanup: Editors/Sculpt/Paint, Clang-Tidy else-after-return fixesSybren A. Stüvel
This addresses warnings from Clang-Tidy's `readability-else-after-return` rule in the `source/blender/editors/sculpt_paint` module. No functional changes.
2020-07-03Fix Pose Brush crashing after disabling connected only in FK modePablo Dobarro
This function was returning the ik_chain before disabling the fake_neighbors, so when the brush was used again with fake neighbors disabled after rebuilding the PBVH and free them, they were still enabled in the SculptSession, causing a the crash. Reviewed By: sergey Differential Revision: https://developer.blender.org/D8195
2020-06-30Sculpt: Pose Brush option to affect loose partsPablo Dobarro
This option allows posing meshes with different disconnected elements using the Pose Brush. This is achieved by doing the following: - Creating an ID per vertex that stores the connected component of that vertex. - By using those IDs, one fake topology connection is created per vertex to the nearest vertex in a different ID. The maximum distance to create that connection is determined by the "Max Element Distance" property. These fake connectivity neighbors are used in the Sculpt API functions iterators, so all the algorithms of the Pose Brush can run without modifications as if everything was part of the same mesh. In order to make this work, the "Connected only" property of the Pose Brush needs to be disabled. This will add an extra performance cost to the Pose Brush and its preview. To achieve optimal results, max element distance should be as low as possible. Reviewed By: sergey, campbellbarton Differential Revision: https://developer.blender.org/D7282
2020-06-29Remove Threaded Sculpt optionPablo Dobarro
Threaded Sculpt is now always enabled by default. If it causes performance problems compared single threaded sculpt it should be considered a bug. Reviewed By: sergey Maniphest Tasks: T77638 Differential Revision: https://developer.blender.org/D7960
2020-06-09Sculpt: Pose Squash and Stretch deform modePablo Dobarro
This implements squash and stretch as a deform mode for the Pose Brush. It is similar to scale, but it applies different scale values in different axis. To achieve this, the pivot local space of the transform needs to be aligned to the segment when using this deform mode to apply the scale in the correct direction. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7934
2020-06-02Sculpt: Improve twist axis in Pose FK modePablo Dobarro
Previously, the twist rotation was aligned using the stroke location. This was causing unexpected results when rotating some Face Sets rigs. Now the intersection with the first Face Set in the flood fill is used, which produces much better results. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7900
2020-06-02Cleanup: Remove unused grab delta in Pose BrushPablo Dobarro
The grab delta is not used in do_pose_brush_task_cb_ex, so there is no reason to add it to SculptThreadedTaskData Reviewed By: sergey Differential Revision: https://developer.blender.org/D7901
2020-06-01Sculpt: Pose Brush Face Sets FK modePablo Dobarro
This Pose Brush origin mode simulates an FK deformation in the entire model when clicking on the face sets, as they were controls of a fully rigged character. Combined with the previous Face Sets modes that allow creating IK chains, the pose brush should now be able to simulate most of the common rigs deformations. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7839
2020-05-27Cleanup: Use bitmaps insteand of bool and char arraysPablo Dobarro
This was propsed in D7059, so I applied it to the rest of the code Reviewed By: campbellbarton, sergey Differential Revision: https://developer.blender.org/D7480
2020-05-26Merge branch 'blender-v2.83-release'Pablo Dobarro
2020-05-26Fix Pose Brush origin position with large brush sizePablo Dobarro
When the brush size is bigger than the entire mesh, fdata.tot_co can be 0, so the pose origin will default to (0,0,0), which does not make much sense. After this patch, the pose origin will be set to the farthest vertex from the pose origin, which at least should be in the surface of the mesh and in most cases in the direction the pose brush was already detecting the origin. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7773
2020-05-25Sculpt: Pose Brush Scale/Transform deform modePablo Dobarro
This is an alternative deformation brush for the Pose Brush intended quickly change the proportions of the mesh. The regular mode scales using the segment's origin as a pivot. The inverted mode drags the entire segment using the grab delta. The only difference with the regular pose brush is that it is not compatible with IK, so the option is disabled and set to 1 segment. The rest of the options should work as expected. Reviewed By: sergey Differential Revision: https://developer.blender.org/D7374
2020-05-09Cleanup: double-spaces in commentsCampbell Barton
2020-04-30Task: Use TBB as Task SchedulerBrecht Van Lommel
This patch enables TBB as the default task scheduler. TBB stands for Threading Building Blocks and is developed by Intel. The library contains several threading patters. This patch maps blenders BLI_task_* function to their counterpart. After this patch we can add more patterns. A promising one is TBB:graph that can be used for depsgraph, draw manager and compositor. Performance changes depends on the actual hardware. It was tested on different hardwares from laptops to workstations and we didn't detected any downgrade of the performance. * Linux Xeon E5-2699 v4 got FPS boost from 12 to 17 using Spring's 04_010_A.anim.blend. * AMD Ryzen Threadripper 2990WX 32-Core Animation playback goes from 9.5-10.5 FPS to 13.0-14.0 FPS on Agent 327 , 10_03_B.anim.blend. Reviewed By: brecht, sergey Differential Revision: https://developer.blender.org/D7475
2020-03-29Cleanup: spelling, commentsCampbell Barton
2020-03-28Cleanup: compiler warningsBrecht Van Lommel
2020-03-27Sculpt: Pose Brush Face Sets origin modePablo Dobarro
This commit introduces a new mode for calculating the positions and weights of the IK segments in the Pose Brush based on the Face Sets. The first segment of the chain will always include all face sets inside the brush radius and it will propagate until the boundary of the last face sets added in the flood fill. Then consecutive connected face sets are added to the chain until the chain length limit is reached or all face sets of the mesh are already part of the chain. This feature enables complete control over the pose brush origins in case that is needed. Also, with this mode, the user can have a library of base meshes with face sets already configured to get to the initial pose as fast as possible. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D7235
2020-03-27Cleanup: uppercase macros for sculpt iterators, add to clang-formatCampbell Barton
Also use sculpt prefix for SCULPT_CLAY_STABILIZER_LEN.
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-06Cleanup: Use the SCULPT_ prefix in all sculpt_intern functionsPablo Dobarro
2020-03-01Cleanup: Move pose brush to its own filePablo Dobarro
Reviewed By: brecht Differential Revision: https://developer.blender.org/D6973