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:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-11-09 07:10:15 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-11-09 07:10:15 +0400
commit1c3640997c225d9bcd6e7559863d69366edc16ee (patch)
tree6e1784773cc47f978dd19f95185fb6ae8ddc4038 /source/blender/blenkernel/intern/anim.c
parent610d746c12c33954774a6fc903e42e03590ecb81 (diff)
Fix #33082: dupliverted metaball showing wrong in cycles render and metaball
edit mode. I've made it follow blender internal now, but this system should really be improved once, metaballs that are in linked dupligroups will never show up.
Diffstat (limited to 'source/blender/blenkernel/intern/anim.c')
-rw-r--r--source/blender/blenkernel/intern/anim.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c
index 4b0c89f3a7a..1aed26db48d 100644
--- a/source/blender/blenkernel/intern/anim.c
+++ b/source/blender/blenkernel/intern/anim.c
@@ -726,9 +726,15 @@ static DupliObject *new_dupli_object(ListBase *lb, Object *ob, float mat[][4], i
* dupli object between frames, which is needed for motion blur. last level
* goes first in the array. */
dob->persistent_id[0] = index;
- for(i = 1; i < level; i++)
+ for (i = 1; i < level; i++)
dob->persistent_id[i] = persistent_id[level-1-i];
+ /* metaballs never draw in duplis, they are instead merged into one by the basis
+ * mball outside of the group. this does mean that if that mball is not in the
+ * scene, they will not show up at all, limitation that should be solved once. */
+ if (ob->type == OB_MBALL)
+ dob->no_draw = TRUE;
+
return dob;
}
@@ -781,9 +787,6 @@ static void group_duplilist(ListBase *lb, Scene *scene, Object *ob, int persiste
{
dob->no_draw = TRUE;
}
- else {
- dob->no_draw = FALSE;
- }
if (go->ob->transflag & OB_DUPLI) {
copy_m4_m4(dob->ob->obmat, dob->mat);
@@ -1643,7 +1646,7 @@ static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBas
}
/* keep track of persistent id */
- if(level > 0)
+ if (level > 0)
persistent_id[level-1] = index;
if (ob->transflag & OB_DUPLIPARTS) {
@@ -1690,7 +1693,7 @@ static void object_duplilist_recursive(ID *id, Scene *scene, Object *ob, ListBas
}
/* clear persistent id */
- if(level > 0)
+ if (level > 0)
persistent_id[level-1] = 0;
}