4369627e7143e7c9c7df75e42ec8eb2e8370fd34
Blender currently has 2 algorithms for merging vertices: - `BKE_mesh_merge_verts`; - `blender::geometry::create_merged_mesh` `BKE_mesh_merge_verts` has a simplified algorithm to work with Array, Mirror and Screw modifiers. It doesn't support merge results that would create new faces. However it has shortcuts to be more efficient in these modifiers. `blender::geometry::create_merged_mesh` tries to predict all possible outcomes. So it's a more complex. But it loses in performance to `BKE_mesh_merge_verts` in some cases. The performance comparison between these two depends on many factors. `blender::geometry::create_merged_mesh` works with a context that has only the affected geometry. Thus a smaller region of the mesh is read for duplicate checking. Therefore, the smaller the affected geometry, the more efficient the operation. By my tests `blender::geometry::create_merged_mesh` beats `BKE_mesh_merge_verts` when less than 20% of the geometry is affected in worst case `MESH_MERGE_VERTS_DUMP_IF_EQUAL` or 17% in case of `MESH_MERGE_VERTS_DUMP_IF_MAPPED` . For cases where the entire geometry is affected, a 30% loss was noticed, largely due to the creation of a context that represents the entire mesh. Co-authored-by: Germano Cavalcante <germano.costa@ig.com.br> Pull Request #105136
…
Blender
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.
Project Pages
Development
License
Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.
See blender.org/about/license for details.
Description
Languages
C++
78%
Python
14.9%
C
2.9%
GLSL
1.9%
CMake
1.2%
Other
0.9%
