Blender  V3.3
Classes | Variables
armature_deform.c File Reference
#include <ctype.h>
#include <float.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_task.h"
#include "BLI_utildefines.h"
#include "DNA_armature_types.h"
#include "DNA_gpencil_types.h"
#include "DNA_lattice_types.h"
#include "DNA_listBase.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
#include "BKE_action.h"
#include "BKE_armature.h"
#include "BKE_customdata.h"
#include "BKE_deform.h"
#include "BKE_editmesh.h"
#include "BKE_lattice.h"
#include "DEG_depsgraph_build.h"
#include "CLG_log.h"

Go to the source code of this file.

Classes

struct  ArmatureUserdata
 

Functions

Armature Deform Internal Utilities
static void pchan_deform_accumulate (const DualQuat *deform_dq, const float deform_mat[4][4], const float co_in[3], float weight, float co_accum[3], DualQuat *dq_accum, float mat_accum[3][3])
 
static void b_bone_deform (const bPoseChannel *pchan, const float co[3], float weight, float vec[3], DualQuat *dq, float defmat[3][3])
 
float distfactor_to_bone (const float vec[3], const float b1[3], const float b2[3], float rad1, float rad2, float rdist)
 
static float dist_bone_deform (const bPoseChannel *pchan, float vec[3], DualQuat *dq, float mat[3][3], const float co[3])
 
static void pchan_bone_deform (const bPoseChannel *pchan, float weight, float vec[3], DualQuat *dq, float mat[3][3], const float co[3], float *contrib)
 

Variables

static CLG_LogRef LOG = {"bke.armature_deform"}
 

Armature Deform #BKE_armature_deform_coords API

#BKE_armature_deform_coords and related functions.

typedef struct ArmatureUserdata ArmatureUserdata
 
static void armature_vert_task_with_dvert (const ArmatureUserdata *data, const int i, const MDeformVert *dvert)
 
static void armature_vert_task (void *__restrict userdata, const int i, const TaskParallelTLS *__restrict UNUSED(tls))
 
static void armature_vert_task_editmesh (void *__restrict userdata, MempoolIterData *iter, const TaskParallelTLS *__restrict UNUSED(tls))
 
static void armature_vert_task_editmesh_no_dvert (void *__restrict userdata, MempoolIterData *iter, const TaskParallelTLS *__restrict UNUSED(tls))
 
static void armature_deform_coords_impl (const Object *ob_arm, const Object *ob_target, float(*vert_coords)[3], float(*vert_deform_mats)[3][3], const int vert_coords_len, const int deformflag, float(*vert_coords_prev)[3], const char *defgrp_name, const Mesh *me_target, BMEditMesh *em_target, bGPDstroke *gps_target)
 
void BKE_armature_deform_coords_with_gpencil_stroke (const Object *ob_arm, const Object *ob_target, float(*vert_coords)[3], float(*vert_deform_mats)[3][3], int vert_coords_len, int deformflag, float(*vert_coords_prev)[3], const char *defgrp_name, bGPDstroke *gps_target)
 
void BKE_armature_deform_coords_with_mesh (const Object *ob_arm, const Object *ob_target, float(*vert_coords)[3], float(*vert_deform_mats)[3][3], int vert_coords_len, int deformflag, float(*vert_coords_prev)[3], const char *defgrp_name, const Mesh *me_target)
 
void BKE_armature_deform_coords_with_editmesh (const Object *ob_arm, const Object *ob_target, float(*vert_coords)[3], float(*vert_deform_mats)[3][3], int vert_coords_len, int deformflag, float(*vert_coords_prev)[3], const char *defgrp_name, BMEditMesh *em_target)
 

Detailed Description

Deform coordinates by a armature object (used by modifier).

Definition in file armature_deform.c.

Typedef Documentation

◆ ArmatureUserdata

Function Documentation

◆ armature_deform_coords_impl()

static void armature_deform_coords_impl ( const Object ob_arm,
const Object ob_target,
float(*)  vert_coords[3],
float(*)  vert_deform_mats[3][3],
const int  vert_coords_len,
const int  deformflag,
float(*)  vert_coords_prev[3],
const char *  defgrp_name,
const Mesh me_target,
BMEditMesh em_target,
bGPDstroke gps_target 
)
static

◆ armature_vert_task()

static void armature_vert_task ( void *__restrict  userdata,
const int  i,
const TaskParallelTLS *__restrict   UNUSEDtls 
)
static

Definition at line 400 of file armature_deform.c.

References armature_vert_task_with_dvert(), BLI_assert, data, and NULL.

Referenced by armature_deform_coords_impl().

◆ armature_vert_task_editmesh()

static void armature_vert_task_editmesh ( void *__restrict  userdata,
MempoolIterData iter,
const TaskParallelTLS *__restrict   UNUSEDtls 
)
static

◆ armature_vert_task_editmesh_no_dvert()

static void armature_vert_task_editmesh_no_dvert ( void *__restrict  userdata,
MempoolIterData iter,
const TaskParallelTLS *__restrict   UNUSEDtls 
)
static

Definition at line 440 of file armature_deform.c.

References armature_vert_task_with_dvert(), BM_elem_index_get, data, NULL, and v.

Referenced by armature_deform_coords_impl().

◆ armature_vert_task_with_dvert()

static void armature_vert_task_with_dvert ( const ArmatureUserdata data,
const int  i,
const MDeformVert dvert 
)
static

◆ b_bone_deform()

static void b_bone_deform ( const bPoseChannel pchan,
const float  co[3],
float  weight,
float  vec[3],
DualQuat dq,
float  defmat[3][3] 
)
static

◆ BKE_armature_deform_coords_with_editmesh()

void BKE_armature_deform_coords_with_editmesh ( const Object ob_arm,
const Object ob_target,
float(*)  vert_coords[3],
float(*)  vert_deform_mats[3][3],
int  vert_coords_len,
int  deformflag,
float(*)  vert_coords_prev[3],
const char *  defgrp_name,
BMEditMesh em_target 
)

Definition at line 654 of file armature_deform.c.

References armature_deform_coords_impl(), and NULL.

◆ BKE_armature_deform_coords_with_gpencil_stroke()

void BKE_armature_deform_coords_with_gpencil_stroke ( const Object ob_arm,
const Object ob_target,
float(*)  vert_coords[3],
float(*)  vert_deform_mats[3][3],
int  vert_coords_len,
int  deformflag,
float(*)  vert_coords_prev[3],
const char *  defgrp_name,
bGPDstroke gps_target 
)

Definition at line 608 of file armature_deform.c.

References armature_deform_coords_impl(), and NULL.

◆ BKE_armature_deform_coords_with_mesh()

void BKE_armature_deform_coords_with_mesh ( const Object ob_arm,
const Object ob_target,
float(*)  vert_coords[3],
float(*)  vert_deform_mats[3][3],
int  vert_coords_len,
int  deformflag,
float(*)  vert_coords_prev[3],
const char *  defgrp_name,
const Mesh me_target 
)

Definition at line 631 of file armature_deform.c.

References armature_deform_coords_impl(), and NULL.

◆ dist_bone_deform()

static float dist_bone_deform ( const bPoseChannel pchan,
float  vec[3],
DualQuat dq,
float  mat[3][3],
const float  co[3] 
)
static

◆ distfactor_to_bone()

float distfactor_to_bone ( const float  vec[3],
const float  b1[3],
const float  b2[3],
float  rad1,
float  rad2,
float  rdist 
)

◆ pchan_bone_deform()

static void pchan_bone_deform ( const bPoseChannel pchan,
float  weight,
float  vec[3],
DualQuat dq,
float  mat[3][3],
const float  co[3],
float contrib 
)
static

◆ pchan_deform_accumulate()

static void pchan_deform_accumulate ( const DualQuat deform_dq,
const float  deform_mat[4][4],
const float  co_in[3],
float  weight,
float  co_accum[3],
DualQuat dq_accum,
float  mat_accum[3][3] 
)
static

Variable Documentation

◆ LOG

CLG_LogRef LOG = {"bke.armature_deform"}
static

Definition at line 43 of file armature_deform.c.

Referenced by armature_deform_coords_impl().