diff options
author | Sebastian Parborg <darkdefende@gmail.com> | 2019-09-09 20:41:12 +0300 |
---|---|---|
committer | Sebastian Parborg <darkdefende@gmail.com> | 2019-09-09 20:41:12 +0300 |
commit | ee9fb174f45d481a5a76522e80bcc9df58e28528 (patch) | |
tree | 7bc49fb6f8eb3fea64787ccaedb8f6e82a1f5540 /source | |
parent | 9f859528e99c0ab4d21154ebb55a008c00a861db (diff) |
Added function to calculate the total area of a mesh.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh_evaluate.c | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index a260621ac2c..af40eef6ab5 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -477,6 +477,7 @@ void BKE_mesh_calc_poly_center(const struct MPoly *mpoly, float BKE_mesh_calc_poly_area(const struct MPoly *mpoly, const struct MLoop *loopstart, const struct MVert *mvarray); +float BKE_mesh_calc_area(const struct Mesh *me); float BKE_mesh_calc_poly_uv_area(const struct MPoly *mpoly, const struct MLoopUV *uv_array); void BKE_mesh_calc_poly_angles(const struct MPoly *mpoly, const struct MLoop *loopstart, diff --git a/source/blender/blenkernel/intern/mesh_evaluate.c b/source/blender/blenkernel/intern/mesh_evaluate.c index 38762109167..7a1dcb4a5fd 100644 --- a/source/blender/blenkernel/intern/mesh_evaluate.c +++ b/source/blender/blenkernel/intern/mesh_evaluate.c @@ -2320,6 +2320,24 @@ float BKE_mesh_calc_poly_area(const MPoly *mpoly, const MLoop *loopstart, const } } +float BKE_mesh_calc_area(const Mesh *me) +{ + MVert *mvert = me->mvert; + MLoop *mloop = me->mloop; + MPoly *mpoly = me->mpoly; + + MPoly *mp; + int i = me->totpoly; + float total_area = 0; + + for (mp = mpoly; i--; mp++) { + MLoop *ml_start = &mloop[mp->loopstart]; + + total_area += BKE_mesh_calc_poly_area(mp, ml_start, mvert); + } + return total_area; +} + float BKE_mesh_calc_poly_uv_area(const MPoly *mpoly, const MLoopUV *uv_array) { |