|
Blender
V3.3
|
Go to the source code of this file.
Macros | |
| #define | DM_TANGENT_MASK_ORCO (1 << 9) |
Functions | |
| void | BKE_mesh_calc_loop_tangent_single_ex (const struct MVert *mverts, int numVerts, const struct MLoop *mloops, float(*r_looptangent)[4], const float(*loopnors)[3], const struct MLoopUV *loopuv, int numLoops, const struct MPoly *mpolys, int numPolys, struct ReportList *reports) |
| void | BKE_mesh_calc_loop_tangent_single (struct Mesh *mesh, const char *uvmap, float(*r_looptangents)[4], struct ReportList *reports) |
| void | BKE_mesh_calc_loop_tangent_ex (const struct MVert *mvert, const struct MPoly *mpoly, uint mpoly_len, const struct MLoop *mloop, const struct MLoopTri *looptri, uint looptri_len, struct CustomData *loopdata, bool calc_active_tangent, const char(*tangent_names)[64], int tangent_names_len, const float(*vert_normals)[3], const float(*poly_normals)[3], const float(*loop_normals)[3], const float(*vert_orco)[3], struct CustomData *loopdata_out, uint loopdata_out_len, short *tangent_mask_curr_p) |
| void | BKE_mesh_calc_loop_tangents (struct Mesh *me_eval, bool calc_active_tangent, const char(*tangent_names)[MAX_NAME], int tangent_names_len) |
| void | BKE_mesh_add_loop_tangent_named_layer_for_uv (struct CustomData *uv_data, struct CustomData *tan_data, int numLoopData, const char *layer_name) |
| void | BKE_mesh_calc_loop_tangent_step_0 (const struct CustomData *loopData, bool calc_active_tangent, const char(*tangent_names)[64], int tangent_names_count, bool *rcalc_act, bool *rcalc_ren, int *ract_uv_n, int *rren_uv_n, char *ract_uv_name, char *rren_uv_name, short *rtangent_mask) |
| #define DM_TANGENT_MASK_ORCO (1 << 9) |
Definition at line 75 of file BKE_mesh_tangent.h.
| void BKE_mesh_add_loop_tangent_named_layer_for_uv | ( | struct CustomData * | uv_data, |
| struct CustomData * | tan_data, | ||
| int | numLoopData, | ||
| const char * | layer_name | ||
| ) |
Definition at line 448 of file mesh_tangent.c.
References CD_CALLOC, CD_MLOOPUV, CD_TANGENT, CustomData_add_layer_named(), CustomData_get_named_layer_index(), and NULL.
Referenced by BKE_editmesh_loop_tangent_calc(), and BKE_mesh_calc_loop_tangent_ex().
| void BKE_mesh_calc_loop_tangent_ex | ( | const struct MVert * | mvert, |
| const struct MPoly * | mpoly, | ||
| uint | mpoly_len, | ||
| const struct MLoop * | mloop, | ||
| const struct MLoopTri * | looptri, | ||
| uint | looptri_len, | ||
| struct CustomData * | loopdata, | ||
| bool | calc_active_tangent, | ||
| const char(*) | tangent_names[64], | ||
| int | tangent_names_len, | ||
| const float(*) | vert_normals[3], | ||
| const float(*) | poly_normals[3], | ||
| const float(*) | loop_normals[3], | ||
| const float(*) | vert_orco[3], | ||
| struct CustomData * | loopdata_out, | ||
| uint | loopdata_out_len, | ||
| short * | tangent_mask_curr_p | ||
| ) |
See: BKE_editmesh_loop_tangent_calc (matching logic).
Referenced by do_multires_bake(), and blender::draw::extract_tan_init_common().
| void BKE_mesh_calc_loop_tangent_single | ( | struct Mesh * | mesh, |
| const char * | uvmap, | ||
| float(*) | r_looptangents[4], | ||
| struct ReportList * | reports | ||
| ) |
Wrapper around BKE_mesh_calc_loop_tangent_single_ex, which takes care of most boilerplate code.
Definition at line 153 of file mesh_tangent.c.
References BKE_mesh_calc_loop_tangent_single_ex(), BKE_report(), BKE_reportf(), CD_MLOOPUV, CD_NORMAL, CustomData_get_layer(), CustomData_get_layer_named(), float(), Mesh::ldata, mesh, Mesh::mloop, Mesh::mpoly, Mesh::mvert, RPT_ERROR, Mesh::totloop, Mesh::totpoly, and Mesh::totvert.
| void BKE_mesh_calc_loop_tangent_single_ex | ( | const struct MVert * | mverts, |
| int | numVerts, | ||
| const struct MLoop * | mloops, | ||
| float(*) | r_looptangent[4], | ||
| const float(*) | loopnors[3], | ||
| const struct MLoopUV * | loopuv, | ||
| int | numLoops, | ||
| const struct MPoly * | mpolys, | ||
| int | numPolys, | ||
| struct ReportList * | reports | ||
| ) |
Compute simplified tangent space normals, i.e. tangent vector + sign of bi-tangent one, which combined with split normals can be used to recreate the full tangent space. NOTE: * The mesh should be made of only tris and quads!
| void BKE_mesh_calc_loop_tangent_step_0 | ( | const struct CustomData * | loopData, |
| bool | calc_active_tangent, | ||
| const char(*) | tangent_names[64], | ||
| int | tangent_names_count, | ||
| bool * | rcalc_act, | ||
| bool * | rcalc_ren, | ||
| int * | ract_uv_n, | ||
| int * | rren_uv_n, | ||
| char * | ract_uv_name, | ||
| char * | rren_uv_name, | ||
| short * | rtangent_mask | ||
| ) |
Here we get some useful information such as active uv layer name and search if it is already in tangent_names. Also, we calculate tangent_mask that works as a descriptor of tangents state. If tangent_mask has changed, then recalculate tangents.
Referenced by BKE_editmesh_loop_tangent_calc().
| void BKE_mesh_calc_loop_tangents | ( | struct Mesh * | me_eval, |
| bool | calc_active_tangent, | ||
| const char(*) | tangent_names[MAX_NAME], | ||
| int | tangent_names_len | ||
| ) |
Definition at line 712 of file mesh_tangent.c.
References MLoopTri_Store::array, BKE_mesh_calc_loop_tangent_ex(), BKE_mesh_poly_normals_ensure(), BKE_mesh_runtime_looptri_ensure(), BKE_mesh_vertex_normals_ensure(), CD_NORMAL, CD_ORCO, CustomData_get_layer(), Mesh::ldata, MLoopTri_Store::len, Mesh_Runtime::looptris, Mesh::mloop, Mesh::mpoly, Mesh::mvert, Mesh::runtime, Mesh::totloop, Mesh::totpoly, and Mesh::vdata.
Referenced by mesh_calc_tri_tessface().