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
diff options
context:
space:
mode:
authorJiri Hnidek <jiri.hnidek@tul.cz>2006-07-07 15:10:53 +0400
committerJiri Hnidek <jiri.hnidek@tul.cz>2006-07-07 15:10:53 +0400
commitf51c8f276c0c7f214a36f87f79de63bded7438c8 (patch)
treeb9576983ee62c797b366554cc3dad678e263432d /source/blender/blenkernel/intern/mball.c
parent9a168d828553515b9bb598959cb72df13892bab5 (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.c13
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 {