62 float mapref_imat[4][4];
70 float mat_bone_world[4][4];
75 invert_m4_m4(mapref_imat, map_object->object_to_world().ptr());
79 invert_m4_m4(mapref_imat, map_object->object_to_world().ptr());
91 const Span<int> corner_verts = mesh->corner_verts();
101 for (
const int i :
faces.index_range()) {
103 for (
const int corner : face) {
104 const int vert = corner_verts[corner];
107 r_texco[vert][0] = (uv_map[corner][0] * 2.0f) - 1.0f;
108 r_texco[vert][1] = (uv_map[corner][1] * 2.0f) - 1.0f;
123 for (
i = 0;
i < verts_num;
i++, r_texco++) {
124 switch (texmapping) {
129 mul_v3_m4v3(*r_texco, ob->object_to_world().ptr(),
cos !=
nullptr ? *
cos : positions[
i]);
132 mul_v3_m4v3(*r_texco, ob->object_to_world().ptr(),
cos !=
nullptr ? *
cos : positions[
i]);
136 if (
cos !=
nullptr) {
164 if (*defgrp_index != -1) {
165 *dvert = mesh->deform_verts().data();
188 const char *bonename,
189 const char *description)
191 if (
object ==
nullptr) {
204#define INIT_TYPE(typeName) (types[eModifierType_##typeName] = &modifierType_##typeName)
Blender kernel action and pose functionality.
bPoseChannel * BKE_pose_channel_find_name(const bPose *pose, const char *name)
CustomData interface, see also DNA_customdata_types.h.
void CustomData_validate_layer_name(const CustomData *data, eCustomDataType type, blender::StringRef name, char *outname)
bool CustomData_has_layer(const CustomData *data, eCustomDataType type)
void BKE_image_user_frame_calc(Image *ima, ImageUser *iuser, int cfra)
bool BKE_image_is_animated(Image *image)
MDeformVert * BKE_lattice_deform_verts_get(const Object *oblatt)
#define BLI_BITMAP_NEW(_num, _alloc_string)
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void mul_m4_v3(const float M[4][4], float r[3])
void mul_v3_m4v3(float r[3], const float mat[4][4], const float vec[3])
bool invert_m4_m4(float inverse[4][4], const float mat[4][4])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void DEG_add_object_relation(DepsNodeHandle *node_handle, Object *object, eDepsObjectComponentType component, const char *description)
float DEG_get_ctime(const Depsgraph *graph)
#define MAX_CUSTOMDATA_LAYER_NAME
Object is a sort of wrapper for general info.
#define OB_TYPE_SUPPORT_VGROUP(_type)
Read Guarded memory(de)allocation.
void MOD_init_texture(MappingInfoModifierData *dmd, const ModifierEvalContext *ctx)
#define INIT_TYPE(typeName)
void MOD_depsgraph_update_object_bone_relation(DepsNodeHandle *node, Object *object, const char *bonename, const char *description)
void MOD_get_vgroup(const Object *ob, const Mesh *mesh, const char *name, const MDeformVert **dvert, int *defgrp_index)
void MOD_previous_vcos_store(ModifierData *md, const float(*vert_coords)[3])
void modifier_type_init(ModifierTypeInfo *types[])
void MOD_get_texture_coords(MappingInfoModifierData *dmd, const ModifierEvalContext *, Object *ob, Mesh *mesh, float(*cos)[3], float(*r_texco)[3])
GAttributeReader lookup_or_default(StringRef attribute_id, AttrDomain domain, AttrType data_type, const void *default_value=nullptr) const
VecBase< float, 2 > float2
void * MEM_dupallocN(const void *vmemh)
void MEM_freeN(void *vmemh)
float(* vert_coords_prev)[3]
struct Object * map_object
struct ModifierData * next