Fix #36139: cycles not taking texture spacing settings into account for
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 15 Jul 2013 11:11:36 +0000 (11:11 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Mon, 15 Jul 2013 11:11:36 +0000 (11:11 +0000)
generated coordinates on text objects.

source/blender/blenkernel/BKE_mesh.h
source/blender/blenkernel/intern/DerivedMesh.c
source/blender/blenkernel/intern/mesh.c
source/blender/makesrna/intern/rna_main_api.c

index 11c9c00613f3141c51d00e499cbdcebc31258292..1c88a5c45dd06706ba2d18b97da2a719adb7acd5 100644 (file)
@@ -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);
index 99104ad6b836bd416087365f2ed8ba321359fed4..8f91c1cb2d904735329041a9906dd227f1c8a797 100644 (file)
@@ -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 */
index f3aefbe03e0b1ddeb3d382f0dd3d3c8345af21ee..1b5b7101c7178ff0571be9d1c1e8b069664e4fb8 100644 (file)
@@ -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;
index 4c652770e3f89a5a9ea685f51b6efaffbebe9749..fd9312629040ad9a405b995c3e78de99dcdf92ca 100644 (file)
@@ -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;
 
                }