From a31571481be6ea74c93cf91bb330a5f511bccfc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20T=C3=B6nne?= Date: Tue, 4 Mar 2014 11:22:56 +0100 Subject: Fix for regression noted in T38942: Blender Internal rendering can lead to wrong obmats of nested dupli objects. Restoring obmats after BI nested dupli object rendering has to happen in reverse order, so higher level omats are applied last. --- source/blender/render/intern/source/convertblender.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'source/blender') diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index 8844fae904b..a9e83e65455 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -5108,8 +5108,11 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp if (re->test_break(re->tbh)) break; } - /* restore obmats */ - for (dob= duplilist->first, i = 0; dob; dob= dob->next, ++i) { + /* restore obmats + * NOTE: this has to happen in reverse order, since nested + * dupli objects can repeatedly override the obmat + */ + for (dob= duplilist->last, i = totdob - 1; dob; dob= dob->prev, --i) { copy_m4_m4(dob->ob->obmat, duplilist_extra[i].omat); } -- cgit v1.2.3