Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_util.cc
| Show First 20 Lines • Show All 69 Lines • ▼ Show 20 Lines | void MOD_get_texture_coords(MappingInfoModifierData *dmd, | ||||
| if (texmapping == MOD_DISP_MAP_OBJECT) { | if (texmapping == MOD_DISP_MAP_OBJECT) { | ||||
| if (dmd->map_object != nullptr) { | if (dmd->map_object != nullptr) { | ||||
| Object *map_object = dmd->map_object; | Object *map_object = dmd->map_object; | ||||
| if (dmd->map_bone[0] != '\0') { | if (dmd->map_bone[0] != '\0') { | ||||
| bPoseChannel *pchan = BKE_pose_channel_find_name(map_object->pose, dmd->map_bone); | bPoseChannel *pchan = BKE_pose_channel_find_name(map_object->pose, dmd->map_bone); | ||||
| if (pchan) { | if (pchan) { | ||||
| float mat_bone_world[4][4]; | float mat_bone_world[4][4]; | ||||
| mul_m4_m4m4(mat_bone_world, map_object->obmat, pchan->pose_mat); | mul_m4_m4m4(mat_bone_world, map_object->object_to_world, pchan->pose_mat); | ||||
| invert_m4_m4(mapref_imat, mat_bone_world); | invert_m4_m4(mapref_imat, mat_bone_world); | ||||
| } | } | ||||
| else { | else { | ||||
| invert_m4_m4(mapref_imat, map_object->obmat); | invert_m4_m4(mapref_imat, map_object->object_to_world); | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| invert_m4_m4(mapref_imat, map_object->obmat); | invert_m4_m4(mapref_imat, map_object->object_to_world); | ||||
| } | } | ||||
| } | } | ||||
| else { /* if there is no map object, default to local */ | else { /* if there is no map object, default to local */ | ||||
| texmapping = MOD_DISP_MAP_LOCAL; | texmapping = MOD_DISP_MAP_LOCAL; | ||||
| } | } | ||||
| } | } | ||||
| /* UVs need special handling, since they come from faces */ | /* UVs need special handling, since they come from faces */ | ||||
| Show All 38 Lines | void MOD_get_texture_coords(MappingInfoModifierData *dmd, | ||||
| const MVert *mv = BKE_mesh_verts(mesh); | const MVert *mv = BKE_mesh_verts(mesh); | ||||
| for (i = 0; i < verts_num; i++, mv++, r_texco++) { | for (i = 0; i < verts_num; i++, mv++, r_texco++) { | ||||
| switch (texmapping) { | switch (texmapping) { | ||||
| case MOD_DISP_MAP_LOCAL: | case MOD_DISP_MAP_LOCAL: | ||||
| copy_v3_v3(*r_texco, cos != nullptr ? *cos : mv->co); | copy_v3_v3(*r_texco, cos != nullptr ? *cos : mv->co); | ||||
| break; | break; | ||||
| case MOD_DISP_MAP_GLOBAL: | case MOD_DISP_MAP_GLOBAL: | ||||
| mul_v3_m4v3(*r_texco, ob->obmat, cos != nullptr ? *cos : mv->co); | mul_v3_m4v3(*r_texco, ob->object_to_world, cos != nullptr ? *cos : mv->co); | ||||
| break; | break; | ||||
| case MOD_DISP_MAP_OBJECT: | case MOD_DISP_MAP_OBJECT: | ||||
| mul_v3_m4v3(*r_texco, ob->obmat, cos != nullptr ? *cos : mv->co); | mul_v3_m4v3(*r_texco, ob->object_to_world, cos != nullptr ? *cos : mv->co); | ||||
| mul_m4_v3(mapref_imat, *r_texco); | mul_m4_v3(mapref_imat, *r_texco); | ||||
| break; | break; | ||||
| } | } | ||||
| if (cos != nullptr) { | if (cos != nullptr) { | ||||
| cos++; | cos++; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 178 Lines • Show Last 20 Lines | |||||