From abe84a4f43939fd14a4830d958890e870ddeb180 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 15 Jul 2013 11:11:36 +0000 Subject: Fix #36139: cycles not taking texture spacing settings into account for generated coordinates on text objects. --- source/blender/blenkernel/BKE_mesh.h | 1 + source/blender/blenkernel/intern/DerivedMesh.c | 9 +-------- source/blender/blenkernel/intern/mesh.c | 13 +++++++++++++ source/blender/makesrna/intern/rna_main_api.c | 4 ++++ 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 11c9c00613f..1c88a5c45dd 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -209,6 +209,7 @@ const char *BKE_mesh_cmp(struct Mesh *me1, struct Mesh *me2, float thresh); struct BoundBox *BKE_mesh_boundbox_get(struct Object *ob); void BKE_mesh_texspace_get(struct Mesh *me, float r_loc[3], float r_rot[3], float r_size[3]); +void BKE_mesh_texspace_copy_from_object(struct Mesh *me, struct Object *ob); /* if old, it converts mface->edcode to edge drawflags */ void BKE_mesh_make_edges(struct Mesh *me, const bool use_old); diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 99104ad6b83..8f91c1cb2d9 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -484,8 +484,6 @@ void DM_to_mesh(DerivedMesh *dm, Mesh *me, Object *ob, CustomDataMask mask) Mesh tmp = *me; int totvert, totedge /*, totface */ /* UNUSED */, totloop, totpoly; int did_shapekeys = 0; - float *texloc, *texrot, *texsize; - short *texflag; CustomData_reset(&tmp.vdata); CustomData_reset(&tmp.edata); @@ -533,12 +531,7 @@ void DM_to_mesh(DerivedMesh *dm, Mesh *me, Object *ob, CustomDataMask mask) } /* copy texture space */ - if (BKE_object_obdata_texspace_get(ob, &texflag, &texloc, &texsize, &texrot)) { - tmp.texflag = *texflag; - copy_v3_v3(tmp.loc, texloc); - copy_v3_v3(tmp.size, texsize); - copy_v3_v3(tmp.rot, texrot); - } + BKE_mesh_texspace_copy_from_object(&tmp, ob); /* not all DerivedMeshes store their verts/edges/faces in CustomData, so * we set them here in case they are missing */ diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index f3aefbe03e0..1b5b7101c71 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -702,6 +702,19 @@ void BKE_mesh_texspace_get(Mesh *me, float r_loc[3], float r_rot[3], float r_siz if (r_size) copy_v3_v3(r_size, me->size); } +void BKE_mesh_texspace_copy_from_object(Mesh *me, Object *ob) +{ + float *texloc, *texrot, *texsize; + short *texflag; + + if (BKE_object_obdata_texspace_get(ob, &texflag, &texloc, &texsize, &texrot)) { + me->texflag = *texflag; + copy_v3_v3(me->loc, texloc); + copy_v3_v3(me->size, texsize); + copy_v3_v3(me->rot, texrot); + } +} + float (*BKE_mesh_orco_verts_get(Object *ob))[3] { Mesh *me = ob->data; diff --git a/source/blender/makesrna/intern/rna_main_api.c b/source/blender/makesrna/intern/rna_main_api.c index 4c652770e3f..fd931262904 100644 --- a/source/blender/makesrna/intern/rna_main_api.c +++ b/source/blender/makesrna/intern/rna_main_api.c @@ -335,6 +335,8 @@ Mesh *rna_Main_meshes_new_from_object( return NULL; } + BKE_mesh_texspace_copy_from_object(tmpmesh, ob); + BKE_libblock_free_us(&bmain->object, tmpobj); break; } @@ -362,6 +364,8 @@ Mesh *rna_Main_meshes_new_from_object( else BKE_mesh_from_metaball(&ob->disp, tmpmesh); + BKE_mesh_texspace_copy_from_object(tmpmesh, ob); + break; } -- cgit v1.2.3