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
2021-06-26Edit Mesh: optimize common use-cases for partial updatesCampbell Barton
Skip updating normals & tessellation for contiguous geometry regions for operations such as translate & uniform scale. This means when all geometry is selected, no updates are needed as the relative locations of vertices aren't being modified. Performance: As this is skipping a multi-threaded operation, larger improvements are noticeable on systems with fewer cores. - ~1.15x to ~1.3x overall gain for 32 cores. - ~1.7x to ~2.2x overall gain for 1 core (limited using `-t 1` argument). Details: - Rotate & non-uniform scale only skip tessellation. - Proportional editing and axis-mirror have special handling ensure geometry is properly grouped before considering a face part of a single group that can be skipped. - Loose vertices always need their normals to be recalculated since they're calculated based on the location. - Non-affine transform operations such as shrink-fatten & bend, don't take advantage of this optimization. - Snap projection also disables the optimization.
2021-06-14BMesh: support face-normal calculation in normal & looptri functionsCampbell Barton
Support calculating face normals when tessellating. When this is done before updating vertex normals it gives ~20% performance improvement. Now vertex normal calculation only needs to perform a single pass on the mesh vertices when called after tessellation. Extended versions of normal & looptri update functions have been added: - BM_mesh_calc_tessellation_ex - BM_mesh_normals_update_ex Most callers don't need to be aware of this detail by using: - BKE_editmesh_looptri_and_normals_calc - BKE_editmesh_looptri_and_normals_calc_with_partial - EDBM_update also takes advantage of this, where calling EDBM_update with calc_looptri & calc_normals enabled uses the faster normal updating logic.
2021-06-05Edit Mesh: partial updates for normal and face tessellationCampbell Barton
This patch exposes functionality for performing partial mesh updates for normal calculation and face tessellation while transforming a mesh. The partial update data only needs to be generated once, afterwards the cached connectivity information can be reused (with the exception of changing proportional editing radius). Currently this is only used for transform, in the future it could be used for other operators as well as the transform panel. The best-case overall speedup while transforming geometry is about 1.45x since the time to update a small number of normals and faces is negligible. For an additional speedup partial face tessellation is multi-threaded, this gives ~15x speedup on my system (timing tessellation alone). Exact results depend on the number of CPU cores available. Ref D11494 Reviewed By: mano-wii
2021-05-21Transform: use ID_RECALC_GEOMETRY flag when updating object dataCampbell Barton
While this doesn't provide any noticeable benefits at the moment, it allows for geometry updates skipping copy-on-write in edit-mode in the future.
2021-04-29Merge branch 'blender-v2.93-release'Campbell Barton
2021-04-29Fix T87808: Connected proportional editing includes hidden geometryCampbell Barton
Regression in 21b9231d7f5a248027c32dcc7daab3318390c20f
2021-04-26Cleanup: compiler warningCampbell Barton
2021-04-26Cleanup: Rearrange the functions in 'transform_convert_mesh.c'Germano Cavalcante
The creation of `TransCustomData` is best located at the beginning of the file as it is a specific struct of the file and can be used a lot locally.
2021-04-24Cleanup/Refactor: Unify similar flagsGermano Cavalcante
2021-04-24Cleanup/Refactor: Move FOREACH_TRANS_DATA_CONTAINER to outside of some functionsGermano Cavalcante
So we can reuse the same loop for different corrections.
2021-04-24Cleanup: Add a common prefix for some transform functionsGermano Cavalcante
2021-04-24Cleanup: Add a common prefix for some transform functionsGermano Cavalcante
2021-03-23Fix T86753: Connected Proportional editing with individual origins using ↵Germano Cavalcante
different orientation than set The problem happened when the selection only allowed "single_islands" (only vertices are selected, no edges or faces). The result of `is_zero_v3(v->no)` was erroneously being compared to `0.0f` This commit corrects the wrong condition and optimizes it by adding a earlier return when the islands don't need to be calculated. (It also improves the code's readability by joining some variables in the `struct TransIslandData`).
2021-02-22Fix proportional connected not working with loose edges due to hidden geometryPablo Dobarro
This was introduced in the new geodesic distances algorithm for proportional editing. When all faces of an edge are hidden, that edge should be considered as loose geometry. Initial patch by Pablo with modifications by Brecht. Differential Revision: https://developer.blender.org/D10488
2021-02-20Cleanup: doxygen sectionsCampbell Barton
2021-01-20Cleanup: remove extra in trailing asteriskCampbell Barton
Comment blocks not conforming to convention.
2021-01-13Transform: geodesic distances for proportional edit connected modeBrecht Van Lommel
Use approximate geodesic distance computatiom that crosses through triangles rather than only along edges. Using only edges would give artifacts already on a simple grid. Fixes T78752, T35590, T43393, T53602 Differential Revision: https://developer.blender.org/D10068
2021-01-04Fix T84376: Skin Resize(Ctrl + A) does not work in SymmetryGermano Cavalcante
Since the `TransData` converted from vertices is the same used for other transform modes (Move, Rotate, Resize), the logic used for mirroring focused only on the position of the vertices. The solution here is to create a specific `TansData` for `CD_MVERT_SKIN`.
2020-11-17BMesh: support for comparing loops when calculating face-groupsCampbell Barton
Add an optional callback to check source/destination loops for BM_mesh_calc_face_groups. This is needed so it can be used to calculate UV islands.
2020-10-19Spelling: Then Versus ThanHarley Acheson
Corrects incorrect usages of the words 'then' and 'than'. Differential Revision: https://developer.blender.org/D9246 Reviewed by Campbell Barton
2020-10-12Fix T81060: CustomData Correction sometimes breaks UVs and Vertex ColorsGermano Cavalcante
`CustomData_bmesh_interp` use the same CustomData decryptor (in this case, `bm->ldata`) in both blocks. So make sure that all CustomData layers match. This commit also removes redundant `BM_elem_attrs_copy_ex` calls. Maniphest Tasks: T81060 Differential Revision: https://developer.blender.org/D9159
2020-10-08Cleanup: Move transform_orientations functions to separate headerGermano Cavalcante
Improves the organization and identification of the API.
2020-09-30Cleanup: convert gforge task ID's to phabricator formatValentin
Cleanup old tracker task format to the new. e.g: [#34039] to T34039 Ref D8718
2020-09-15Cleanup: spellingCampbell Barton
2020-09-11Fix T80623: Correct Face Attributes affecting modes not listedGermano Cavalcante
Some transform modes (such as Mirror) are not listed to have UV corrected during the transformation. It messed up the UV of all of these.
2020-09-01Fix T80224: Crash after duplicating and hiding vertices while using X Axis ↵Germano Cavalcante
Mirror The mirror map can reference a hidden vertex that is currently ignored in the transformation. Thus the mirror element array is not filled.
2020-08-07Cleanup: declare arrays arrays where possibleCampbell Barton
2020-07-31Merge branch 'blender-v2.90-release'Germano Cavalcante
2020-07-31Fix T78600: Crash when transforming doubles with mirroring onGermano Cavalcante
`EDBM_verts_mirror_cache_begin_ex` could do a better work avoiding these duplicates, but this is a separate problem.
2020-07-30Cleanup: spellingCampbell Barton
2020-07-30Fix ghash return value on 'Correct Face Attributes' with 'Keep Connect'Germano Cavalcante
The result was somewhat unpredictable. This error was recently introduced.
2020-07-28Fix bad 'Correct Face Attributes' behavior when extruding facesGermano Cavalcante
A face must have area in order to be possible calculate interpolation weights. The same to the reference UVs. But the new faces created with the extrude operator, have no area (before moving). The solution was to get the loop data from some neighbor face. Differential Revision: https://developer.blender.org/D8278
2020-07-28Transform: Correct Face Attributes: Option to merge attributesGermano Cavalcante
Keeping face attributes connected is now optional. Keeping UV's connected is useful for organic modeling, but bad for architectural. Differential Revision: https://developer.blender.org/D8360
2020-07-17Transform: use GHASH_ITER when restoring customdataGermano Cavalcante
2020-07-13Cleanup: silence warningsGermano Cavalcante
2020-07-13Optimization: Use dedicated function to restore customdataGermano Cavalcante
Called when canceling a transform operation.
2020-07-13Cleanup: move unchanged condition out of loopGermano Cavalcante
2020-07-03Cleanup: Editors/Transform, 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/transform` module. No functional changes.
2020-07-03Fix T78570: Vert/Edge slide doesn't adjust UVsGermano Cavalcante
2020-07-01Transform: generalized custom-data correction supportGermano Cavalcante
Support custom-data correction based on surrounding geometry for all transformation modes of the mesh transform operators. The is the same logic used in Vert and Edge Slide. In order not to change the current default behavior, this property does not affect Vert and Edge Slide modes.
2020-07-01Cleanup: spellingCampbell Barton
2020-06-29Cleanup: reduce code indentation and simplify some code flowGermano Cavalcante
2020-06-26Fix T78151: Vertex/Edge Slide after enabling 'Even' doesn't cancel properlyGermano Cavalcante
Problem introduced by rBcf42721f
2020-06-22Transform: Simplify and rearrange mirror codeGermano Cavalcante
No real functional changes.
2020-06-22Transform: Do not compute island center when not usedGermano Cavalcante
No functional changes from the user's point of view.
2020-06-22Cleanup: Remove goto in transform_convert_mesh codeGermano Cavalcante
2020-06-22Cleanup: Rearrange transform_convert_mesh into doxy sectionsGermano Cavalcante
2020-06-16Fix T61777: Proportional editing doesn't work with multi edit-modeAlan Troth
2020-06-15Cleanup: Rearrange Vert and Edge slide functionsGermano Cavalcante
And make `trans_mesh_customdata_correction` a more generic utility.
2020-06-10Cleanup: Move each special_aftertrans_update to their respective TransData fileGermano Cavalcante