mirror of
https://github.com/blender/blender
synced 2026-09-29 04:37:17 +03:00
BMesh: add UV face transform and minmax utility functions
This commit is contained in:
parent
7785a9c9d2
commit
6694d7ac5f
2 changed files with 25 additions and 0 deletions
|
|
@ -126,6 +126,28 @@ float BM_face_uv_calc_cross(const BMFace *f, const int cd_loop_uv_offset)
|
|||
return cross_poly_v2(uvs, f->len);
|
||||
}
|
||||
|
||||
void BM_face_uv_minmax(const BMFace *f, float min[2], float max[2], const int cd_loop_uv_offset)
|
||||
{
|
||||
const BMLoop *l_iter;
|
||||
const BMLoop *l_first;
|
||||
l_iter = l_first = BM_FACE_FIRST_LOOP(f);
|
||||
do {
|
||||
const MLoopUV *luv = BM_ELEM_CD_GET_VOID_P(l_iter, cd_loop_uv_offset);
|
||||
minmax_v2v2_v2(min, max, luv->uv);
|
||||
} while ((l_iter = l_iter->next) != l_first);
|
||||
}
|
||||
|
||||
void BM_face_uv_transform(BMFace *f, const float matrix[2][2], const int cd_loop_uv_offset)
|
||||
{
|
||||
BMLoop *l_iter;
|
||||
BMLoop *l_first;
|
||||
l_iter = l_first = BM_FACE_FIRST_LOOP(f);
|
||||
do {
|
||||
MLoopUV *luv = BM_ELEM_CD_GET_VOID_P(l_iter, cd_loop_uv_offset);
|
||||
mul_m2_v2(matrix, luv->uv);
|
||||
} while ((l_iter = l_iter->next) != l_first);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if two loops that share an edge also have the same UV coordinates.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -37,6 +37,9 @@ void BM_face_uv_calc_center_median(const BMFace *f, const int cd_loop_uv_offset,
|
|||
float BM_face_uv_calc_cross(const BMFace *f, const int cd_loop_uv_offset) ATTR_WARN_UNUSED_RESULT
|
||||
ATTR_NONNULL();
|
||||
|
||||
void BM_face_uv_minmax(const BMFace *f, float min[2], float max[2], const int cd_loop_uv_offset);
|
||||
void BM_face_uv_transform(BMFace *f, const float matix[2][2], const int cd_loop_uv_offset);
|
||||
|
||||
bool BM_loop_uv_share_edge_check_with_limit(BMLoop *l_a,
|
||||
BMLoop *l_b,
|
||||
const float limit[2],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue