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:
authorCampbell Barton <ideasman42@gmail.com>2010-07-12 12:43:49 +0400
committerCampbell Barton <ideasman42@gmail.com>2010-07-12 12:43:49 +0400
commitc013974a7c2e0365f8884390002ba9b515a5edb2 (patch)
tree0d9732bba0bf4b7d2f9d4ac6d3c1baf3c19a53a2 /source/blender/blenkernel/intern/mball.c
parent75a0301c7df147a35789db191346f8a266aef591 (diff)
set metaball limit for not drawing small scale motherballs to a 1/10th of what it was. durian blood splats were reaching this threshold.
also fix for memory leaks when the motherball is too small.
Diffstat (limited to 'source/blender/blenkernel/intern/mball.c')
-rw-r--r--source/blender/blenkernel/intern/mball.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c
index a97bec670d6..c41dcfa9588 100644
--- a/source/blender/blenkernel/intern/mball.c
+++ b/source/blender/blenkernel/intern/mball.c
@@ -2125,13 +2125,22 @@ void metaball_polygonize(Scene *scene, Object *ob, ListBase *dispbase)
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) */
+ /* don't polygonize metaballs with too high resolution (base mball to small)
+ * note: Eps was 0.0001f but this was giving problems for blood animation for durian, using 0.00001f */
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))
+ if( ob->size[0] <= 0.00001f * (metaball_tree->first->x_max - metaball_tree->first->x_min) ||
+ ob->size[1] <= 0.00001f * (metaball_tree->first->y_max - metaball_tree->first->y_min) ||
+ ob->size[2] <= 0.00001f * (metaball_tree->first->z_max - metaball_tree->first->z_min))
{
+ new_pgn_element(-1); /* free values created by init_meta */
+
MEM_freeN(mainb);
+
+ /* free tree */
+ free_metaball_octal_node(metaball_tree->first);
+ MEM_freeN(metaball_tree);
+ metaball_tree= NULL;
+
return;
}
}