diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-11-09 07:10:15 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-11-09 07:10:15 +0400 |
commit | 1c3640997c225d9bcd6e7559863d69366edc16ee (patch) | |
tree | 6e1784773cc47f978dd19f95185fb6ae8ddc4038 /source/blender/blenkernel | |
parent | 610d746c12c33954774a6fc903e42e03590ecb81 (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')
-rw-r--r-- | source/blender/blenkernel/intern/anim.c | 15 |
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; } |