diff options
author | Henrik Dick <weasel> | 2020-04-13 18:15:16 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2020-04-13 18:15:16 +0300 |
commit | 5cf72833429f4c63d27ea0a72878af1fec6dcf4e (patch) | |
tree | 28aa67ee52d78fa3751e9f74efb3f0f03c001f27 /source/blender/blenloader/intern/versioning_280.c | |
parent | c19f37764db96f5f5c781e8299a74a25a28e8ec2 (diff) |
Fix T75032: New complex solidify algorithm handles poorly merging threshold of small geometry details.
* Implemented the algortihm that would merge vertices to the weighted
center between them.
* Exposed the merge threshold to the user.
The new default tolerance is 0.0001 (versionning code ensures that
previous default value remains in use to avoid any change in existing
files).
Review and minor changes/cleanups from Bastien Montagne (@mont29).
Diffstat (limited to 'source/blender/blenloader/intern/versioning_280.c')
-rw-r--r-- | source/blender/blenloader/intern/versioning_280.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 5c99760dc9c..d53b6cde4ae 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -4890,7 +4890,6 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) } if (!MAIN_VERSION_ATLEAST(bmain, 283, 12)) { - /* Activate f-curve drawing in the sequencer. */ for (bScreen *screen = bmain->screens.first; screen; screen = screen->id.next) { for (ScrArea *area = screen->areabase.first; area; area = area->next) { @@ -4929,5 +4928,18 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain) */ { /* Keep this block, even when empty. */ + + /* Solidify modifier merge tolerance. */ + if (!DNA_struct_elem_find(fd->filesdna, "SolidifyModifierData", "float", "merge_tolerance")) { + for (Object *ob = bmain->objects.first; ob; ob = ob->id.next) { + for (ModifierData *md = ob->modifiers.first; md; md = md->next) { + if (md->type == eModifierType_Solidify) { + SolidifyModifierData *smd = (SolidifyModifierData *)md; + /* set to 0.0003 since that is what was used before, default now is 0.0001 */ + smd->merge_tolerance = 0.0003f; + } + } + } + } } } |