diff options
author | Jiri Hnidek <jiri.hnidek@tul.cz> | 2006-07-07 15:10:53 +0400 |
---|---|---|
committer | Jiri Hnidek <jiri.hnidek@tul.cz> | 2006-07-07 15:10:53 +0400 |
commit | f51c8f276c0c7f214a36f87f79de63bded7438c8 (patch) | |
tree | b9576983ee62c797b366554cc3dad678e263432d /source/blender/blenkernel/intern/mball.c | |
parent | 9a168d828553515b9bb598959cb72df13892bab5 (diff) |
- bug fix for #4606,
too small size of base MetaBall object caused infinitive loop
Diffstat (limited to 'source/blender/blenkernel/intern/mball.c')
-rw-r--r-- | source/blender/blenkernel/intern/mball.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index 8bbcb476654..0eb61c3b61c 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -2022,9 +2022,20 @@ void metaball_polygonize(Object *ob) if((totelem > 1) && (totelem <= 64)) init_metaball_octal_tree(1); if((totelem > 64) && (totelem <= 128)) init_metaball_octal_tree(2); if((totelem > 128) && (totelem <= 512)) init_metaball_octal_tree(3); - if((totelem > 512) && (totelem <= 1024))init_metaball_octal_tree(4); + if((totelem > 512) && (totelem <= 1024)) init_metaball_octal_tree(4); if(totelem > 1024) init_metaball_octal_tree(5); + /* don't polygonize metaballs with too high resolution (base mball to small) */ + if(metaball_tree) { + if(ob->size[0]<=0.0001f*(metaball_tree->first->x_max - metaball_tree->first->x_min) || + ob->size[1]<=0.0001f*(metaball_tree->first->y_max - metaball_tree->first->y_min) || + ob->size[2]<=0.0001f*(metaball_tree->first->z_max - metaball_tree->first->z_min)) + { + MEM_freeN(mainb); + return; + } + } + /* width is size per polygonize cube */ if(G.rendering) width= mb->rendersize; else { |