Fix for bug #8463: object texture mapping for duplis was changed to
act as if the object was in its original position, instead of being different for all instances. However, this is desired behavior in some cases and so breaks compatibility. Now it only does the new behavior when enabling the "From Original" option.
This commit is contained in:
@@ -353,6 +353,7 @@ typedef struct TexMapping {
|
||||
#define MTEX_ALPHAMIX 8
|
||||
#define MTEX_VIEWSPACE 16
|
||||
#define MTEX_DUPLI_MAPTO 32
|
||||
#define MTEX_OB_DUPLI_ORIG 64
|
||||
|
||||
/* blendtype */
|
||||
#define MTEX_BLEND 0
|
||||
|
||||
@@ -1468,8 +1468,9 @@ void do_material_tex(ShadeInput *shi)
|
||||
dx= dxt;
|
||||
dy= dyt;
|
||||
VECCOPY(tempvec, shi->co);
|
||||
if(shi->obi && shi->obi->duplitexmat)
|
||||
MTC_Mat4MulVecfl(shi->obi->duplitexmat, tempvec);
|
||||
if(mtex->texflag & MTEX_OB_DUPLI_ORIG)
|
||||
if(shi->obi && shi->obi->duplitexmat)
|
||||
MTC_Mat4MulVecfl(shi->obi->duplitexmat, tempvec);
|
||||
MTC_Mat4MulVecfl(ob->imat, tempvec);
|
||||
if(shi->osatex) {
|
||||
VECCOPY(dxt, shi->dxco);
|
||||
|
||||
@@ -3429,6 +3429,9 @@ static void material_panel_map_input(Object *ob, Material *ma)
|
||||
|
||||
if(ELEM(mtex->texco, TEXCO_UV, TEXCO_ORCO))
|
||||
uiDefButBitS(block, TOG, MTEX_DUPLI_MAPTO, B_MATPRV, "From Dupli", 820,140,88,18, &(mtex->texflag), 0, 0, 0, 0, "If object is duplicated by vertices, faces or particles, inherit texture coordinate from parent object");
|
||||
else if(mtex->texco == TEXCO_OBJECT)
|
||||
uiDefButBitS(block, TOG, MTEX_OB_DUPLI_ORIG, B_MATPRV, "From Original", 820,140,88,18, &(mtex->texflag), 0, 0, 0, 0, "If object is duplicated, use object coordinates as if the object was in its original position");
|
||||
|
||||
|
||||
/* COORDS */
|
||||
uiBlockBeginAlign(block);
|
||||
|
||||
Reference in New Issue
Block a user