diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2014-03-04 14:22:56 +0400 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2014-03-04 14:22:56 +0400 |
commit | a31571481be6ea74c93cf91bb330a5f511bccfc0 (patch) | |
tree | d7cf5e30c907abdd6327a79f0dbf2d4faab9739e | |
parent | dad96000048cbc30e0d21c567668aaa32dece4dd (diff) |
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.
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 7 |
1 files changed, 5 insertions, 2 deletions
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); } |