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:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-03-18 16:05:59 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-03-18 16:15:02 +0400
commita6e347177bb61ce3d6e5657c1dfbd6ffa7663c55 (patch)
tree3592708ccf1885b9a3a24490aed10615e3417133 /source/blender/render
parent5ff0500593021f42ef9e9945f6168321b340ba9b (diff)
Fix T39136: DupliFaces: Inconsistent handling of group member types
The issue was caused by assumption object matricies can be modified by DupliObject->obmat outside of the duplilist iteration cycle. This isn't really true. The thing is, old code used to modify object matrix based on the duplicated matrix to make it so modifier evaluation kind of works (it'll use proper matrix in most cases, but think there might be some cases when this assumption also breaks). Even when matrix is copied from dupliobject to object in advance (to mimic old behavior or dupli system) you're still to use matrix from dupliobject inside a cycle body. This is because the same object might be modified multiple times by different dupliobject. For example, in case of duplifaces loads of faces will modify object's matrix and before this change matrix from the last face would have been used. The fix is simple one-liner which makes it so render instance will use proper matrix from dupliobject. All the rest bits here (pre-loading matrices and restoring them in the reverse order) totally matches old behavior of duplilist. This is a regression and to be ported to 2.70 tag!
Diffstat (limited to 'source/blender/render')
-rw-r--r--source/blender/render/intern/source/convertblender.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index 53845b91c75..8fc8274dad1 100644
--- a/source/blender/render/intern/source/convertblender.c
+++ b/source/blender/render/intern/source/convertblender.c
@@ -5031,6 +5031,8 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp
if (!allow_render_object(re, obd, nolamps, onlyselected, actob))
continue;
+ copy_m4_m4(obd->obmat, dob->mat);
+
if (allow_render_dupli_instance(re, dob, obd)) {
ParticleSystem *psys;
ObjectRen *obr = NULL;