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:
authorBastien Montagne <montagne29@wanadoo.fr>2018-05-08 12:57:34 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2018-05-08 13:01:06 +0300
commit0cd3412d4cd401f1683356e8a1476dbf5ccd28d1 (patch)
tree7735987e15f6404217292db38d59ba6de34d6412 /source/blender/modifiers/intern/MOD_util.c
parent029d3fa8b6b6b607c66647d3691a514889e7ca15 (diff)
Mod_util: Add back vcos parameter to get_texture_coords_mesh().
Now we use vcos when provided, and fall back to mesh vertices' co otherwise. Deform modifiers usually do not have up-to-date coordinates in Mesh itself, only in given vcos array!
Diffstat (limited to 'source/blender/modifiers/intern/MOD_util.c')
-rw-r--r--source/blender/modifiers/intern/MOD_util.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c
index fd3f9e91b9e..195043c8ff8 100644
--- a/source/blender/modifiers/intern/MOD_util.c
+++ b/source/blender/modifiers/intern/MOD_util.c
@@ -72,10 +72,12 @@ void modifier_init_texture(const Scene *scene, Tex *tex)
}
/* TODO to be renamed to get_texture_coords once we are done with moving modifiers to Mesh. */
+/** \param cos may be NULL, in which case we use directly mesh vertices' coordinates. */
void get_texture_coords_mesh(
MappingInfoModifierData *dmd,
Object *ob,
Mesh *mesh,
+ float (*cos)[3],
float (*r_texco)[3])
{
const int numVerts = mesh->totvert;
@@ -135,16 +137,19 @@ void get_texture_coords_mesh(
for (i = 0; i < numVerts; ++i, ++mv, ++r_texco) {
switch (texmapping) {
case MOD_DISP_MAP_LOCAL:
- copy_v3_v3(*r_texco, mv->co);
+ copy_v3_v3(*r_texco, cos != NULL ? *cos : mv->co);
break;
case MOD_DISP_MAP_GLOBAL:
- mul_v3_m4v3(*r_texco, ob->obmat, mv->co);
+ mul_v3_m4v3(*r_texco, ob->obmat, cos != NULL ? *cos : mv->co);
break;
case MOD_DISP_MAP_OBJECT:
- mul_v3_m4v3(*r_texco, ob->obmat, mv->co);
+ mul_v3_m4v3(*r_texco, ob->obmat, cos != NULL ? *cos : mv->co);
mul_m4_v3(mapob_imat, *r_texco);
break;
}
+ if (cos != NULL) {
+ cos++;
+ }
}
}