diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-05-23 14:06:06 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-05-23 14:06:06 +0400 |
commit | 02c4866d040d4cc695cae5e6afe4b0c2f1100df6 (patch) | |
tree | b33eabe501e56ab3c53438f990dea66078a94e0e /source/blender/render | |
parent | b46bdbcd0fb42c79f9fcac98f917e20635d29e40 (diff) |
Fix for bug #12526: object instancing didn't restore matrices
correct for envmap, could give objects rendering in the wrong
position.
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/envmap.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/render/intern/source/envmap.c b/source/blender/render/intern/source/envmap.c index 12d0efa59e8..73db5c4b0be 100644 --- a/source/blender/render/intern/source/envmap.c +++ b/source/blender/render/intern/source/envmap.c @@ -225,7 +225,7 @@ static void env_rotate_scene(Render *re, float mat[][4], int mode) ObjectInstanceRen *obi; LampRen *lar = NULL; HaloRen *har = NULL; - float imat[3][3], pmat[4][4], smat[4][4], tmat[4][4], cmat[3][3]; + float imat[3][3], pmat[4][4], smat[4][4], tmat[4][4], cmat[3][3], tmpmat[4][4]; int a; if(mode==0) { @@ -239,8 +239,10 @@ static void env_rotate_scene(Render *re, float mat[][4], int mode) for(obi=re->instancetable.first; obi; obi=obi->next) { /* append or set matrix depending on dupli */ - if(obi->flag & R_DUPLI_TRANSFORMED) - Mat4MulMat4(obi->mat, tmat, obi->mat); + if(obi->flag & R_DUPLI_TRANSFORMED) { + Mat4CpyMat4(tmpmat, obi->mat); + Mat4MulMat4(obi->mat, tmat, tmpmat); + } else if(mode==1) Mat4CpyMat4(obi->mat, tmat); else |