[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59935] trunk/blender/source/blender: move mesh evaluation functions (normal, mapping, smooth group...

Campbell Barton ideasman42 at gmail.com
Mon Sep 9 04:11:47 CEST 2013


Revision: 59935
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59935
Author:   campbellbarton
Date:     2013-09-09 02:11:44 +0000 (Mon, 09 Sep 2013)
Log Message:
-----------
move mesh evaluation functions (normal, mapping, smooth group... etc, calculations) into mesh_evaluate.c.
mesh.c was over 4k lines and complex functions mixed in with general library management.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_mesh.h
    trunk/blender/source/blender/blenkernel/CMakeLists.txt
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/blenkernel/intern/mesh_validate.c
    trunk/blender/source/blender/blenkernel/intern/multires.c
    trunk/blender/source/blender/blenloader/intern/versioning_legacy.c

Added Paths:
-----------
    trunk/blender/source/blender/blenkernel/intern/mesh_evaluate.c

Modified: trunk/blender/source/blender/blenkernel/BKE_mesh.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_mesh.h	2013-09-09 01:34:39 UTC (rev 59934)
+++ trunk/blender/source/blender/blenkernel/BKE_mesh.h	2013-09-09 02:11:44 UTC (rev 59935)
@@ -31,8 +31,6 @@
  *  \ingroup bke
  */
 
-/***/
-
 struct ID;
 struct BoundBox;
 struct DispList;
@@ -60,108 +58,25 @@
 struct UvMapVert;
 struct UvElementMap;
 struct UvElement;
+
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-struct BMesh *BKE_mesh_to_bmesh(struct Mesh *me, struct Object *ob);
 
-/*
- * this function recreates a tessellation.
- * returns number of tessellation faces.
- *
- * use_poly_origindex sets whether or not the tessellation faces' origindex
- * layer should point to original poly indices or real poly indices.
- *
- * use_face_origindex sets the tessellation faces' origindex layer
- * to point to the tessellation faces themselves, not the polys.
- *
- * if both of the above are 0, it'll use the indices of the mpolys of the MPoly
- * data in pdata, and ignore the origindex layer altogether.
- */
-int BKE_mesh_recalc_tessellation(struct CustomData *fdata, struct CustomData *ldata, struct CustomData *pdata,
-                                 struct MVert *mvert,
-                                 int totface, int totloop, int totpoly,
-                                 const bool do_face_normals);
+/* *** mesh.c *** */
 
-/* for forwards compat only quad->tri polys to mface, skip ngons.
- */
-int BKE_mesh_mpoly_to_mface(struct CustomData *fdata, struct CustomData *ldata,
-                            struct CustomData *pdata, int totface, int totloop, int totpoly);
+struct BMesh *BKE_mesh_to_bmesh(struct Mesh *me, struct Object *ob);
 
-/*calculates a face normal.*/
-void BKE_mesh_calc_poly_normal(struct MPoly *mpoly, struct MLoop *loopstart,
-                               struct MVert *mvarray, float no[3]);
-
-void BKE_mesh_calc_poly_normal_coords(struct MPoly *mpoly, struct MLoop *loopstart,
-                                      const float (*vertex_coords)[3], float no[3]);
-
-void BKE_mesh_calc_poly_center(struct MPoly *mpoly, struct MLoop *loopstart,
-                               struct MVert *mvarray, float cent[3]);
-
-float BKE_mesh_calc_poly_area(struct MPoly *mpoly, struct MLoop *loopstart,
-                              struct MVert *mvarray, const float polynormal[3]);
-
-void BKE_mesh_calc_poly_angles(struct MPoly *mpoly, struct MLoop *loopstart,
-                               struct MVert *mvarray, float angles[]);
-
-int *BKE_mesh_calc_smoothgroups(const struct MEdge *medge, const int totedge,
-                                const struct MPoly *mpoly, const int totpoly,
-                                const struct MLoop *mloop, const int totloop,
-                                int *r_totgroup, const bool use_bitflags);
-
-void BKE_mesh_calc_relative_deform(
-        const struct MPoly *mpoly, const int totpoly,
-        const struct MLoop *mloop, const int totvert,
-
-        const float (*vert_cos_src)[3],
-        const float (*vert_cos_dst)[3],
-
-        const float (*vert_cos_org)[3],
-              float (*vert_cos_new)[3]);
-
-/* Find the index of the loop in 'poly' which references vertex,
- * returns -1 if not found */
 int poly_find_loop_from_vert(const struct MPoly *poly,
                              const struct MLoop *loopstart,
                              unsigned vert);
 
-/* Fill 'adj_r' with the loop indices in 'poly' adjacent to the
- * vertex. Returns the index of the loop matching vertex, or -1 if the
- * vertex is not in 'poly' */
 int poly_get_adj_loops_from_vert(unsigned adj_r[3], const struct MPoly *poly,
                                  const struct MLoop *mloop, unsigned vert);
 
-/* Return the index of the edge vert that is not equal to 'v'. If
- * neither edge vertex is equal to 'v', returns -1. */
 int BKE_mesh_edge_other_vert(const struct MEdge *e, int v);
 
-/* update the hide flag for edges and polys from the corresponding
- * flag in verts */
-void BKE_mesh_flush_hidden_from_verts_ex(const struct MVert *mvert,
-                                         const struct MLoop *mloop,
-                                         struct MEdge *medge, const int totedge,
-                                         struct MPoly *mpoly, const int totpoly);
-void BKE_mesh_flush_hidden_from_verts(struct Mesh *me);
-
-void BKE_mesh_flush_hidden_from_polys_ex(struct MVert *mvert,
-                                         const struct MLoop *mloop,
-                                         struct MEdge *medge, const int totedge,
-                                         const struct MPoly *mpoly, const int totpoly);
-void BKE_mesh_flush_hidden_from_polys(struct Mesh *me);
-
-
-void BKE_mesh_flush_select_from_polys_ex(struct MVert *mvert,       const int totvert,
-                                         const struct MLoop *mloop,
-                                         struct MEdge *medge,       const int totedge,
-                                         const struct MPoly *mpoly, const int totpoly);
-void BKE_mesh_flush_select_from_polys(struct Mesh *me);
-void BKE_mesh_flush_select_from_verts_ex(const struct MVert *mvert, const int totvert,
-                                         const struct MLoop *mloop,
-                                         struct MEdge *medge,       const int totedge,
-                                         struct MPoly *mpoly,       const int totpoly);
-void BKE_mesh_flush_select_from_verts(struct Mesh *me);
-
 void BKE_mesh_unlink(struct Mesh *me);
 void BKE_mesh_free(struct Mesh *me, int unlink);
 struct Mesh *BKE_mesh_add(struct Main *bmain, const char *name);
@@ -191,64 +106,92 @@
 void BKE_mesh_material_index_remove(struct Mesh *me, short index);
 void BKE_mesh_material_index_clear(struct Mesh *me);
 void BKE_mesh_smooth_flag_set(struct Object *meshOb, int enableSmooth);
-void BKE_mesh_convert_mfaces_to_mpolys(struct Mesh *mesh);
-void BKE_mesh_do_versions_convert_mfaces_to_mpolys(struct Mesh *mesh);
-void BKE_mesh_convert_mfaces_to_mpolys_ex(struct ID *id,
-                                          struct CustomData *fdata, struct CustomData *ldata, struct CustomData *pdata,
-                                          int totedge_i, int totface_i, int totloop_i, int totpoly_i,
-                                          struct MEdge *medge, struct MFace *mface,
-                                          int *totloop_r, int *totpoly_r,
-                                          struct MLoop **mloop_r, struct MPoly **mpoly_r);
 
-void BKE_mesh_calc_normals_tessface(struct MVert *mverts, int numVerts, struct MFace *mfaces, int numFaces, float (*faceNors_r)[3]);
-
-/* used for unit testing; compares two meshes, checking only
- * differences we care about.  should be usable with leaf's
- * testing framework I get RNA work done, will use hackish
- * testing code for now.*/
 const char *BKE_mesh_cmp(struct Mesh *me1, struct Mesh *me2, float thresh);
 
 struct BoundBox *BKE_mesh_boundbox_get(struct Object *ob);
 void BKE_mesh_texspace_get(struct Mesh *me, float r_loc[3], float r_rot[3], float r_size[3]);
 void BKE_mesh_texspace_copy_from_object(struct Mesh *me, struct Object *ob);
 
-/* if old, it converts mface->edcode to edge drawflags */
-void BKE_mesh_make_edges(struct Mesh *me, const bool use_old);
+float (*BKE_mesh_vertexCos_get(struct Mesh *me, int *r_numVerts))[3];
 
-void BKE_mesh_strip_loose_faces(struct Mesh *me); /* Needed for compatibility (some old read code). */
-void BKE_mesh_strip_loose_polysloops(struct Mesh *me);
-void BKE_mesh_strip_loose_edges(struct Mesh *me);
+/* vertex level transformations & checks (no derived mesh) */
 
-/* Calculate vertex and face normals, face normals are returned in *faceNors_r if non-NULL
- * and vertex normals are stored in actual mverts.
- */
+bool BKE_mesh_minmax(struct Mesh *me, float r_min[3], float r_max[3]);
+void BKE_mesh_translate(struct Mesh *me, const float offset[3], const bool do_keys);
+
+void BKE_mesh_ensure_navmesh(struct Mesh *me);
+
+void BKE_mesh_tessface_calc(struct Mesh *mesh);
+void BKE_mesh_tessface_ensure(struct Mesh *mesh);
+void BKE_mesh_tessface_clear(struct Mesh *mesh);
+
+void BKE_mesh_do_versions_cd_flag_init(struct Mesh *mesh);
+
+
+void BKE_mesh_mselect_clear(struct Mesh *me);
+void BKE_mesh_mselect_validate(struct Mesh *me);
+int  BKE_mesh_mselect_find(struct Mesh *me, int index, int type);
+int  BKE_mesh_mselect_active_get(struct Mesh *me, int type);
+void BKE_mesh_mselect_active_set(struct Mesh *me, int index, int type);
+
+
+
+/* *** mesh_evaluate.c *** */
+
 void BKE_mesh_calc_normals_mapping(
         struct MVert *mverts, int numVerts,
         struct MLoop *mloop, struct MPoly *mpolys, int numLoops, int numPolys, float (*polyNors_r)[3],
         struct MFace *mfaces, int numFaces, int *origIndexFace, float (*faceNors_r)[3]);
-/* extended version of 'BKE_mesh_calc_normals_poly' with option not to calc vertex normals */
 void BKE_mesh_calc_normals_mapping_ex(
         struct MVert *mverts, int numVerts,
         struct MLoop *mloop, struct MPoly *mpolys, int numLoops, int numPolys, float (*polyNors_r)[3],
         struct MFace *mfaces, int numFaces, int *origIndexFace, float (*faceNors_r)[3],
         const bool only_face_normals);
-
 void BKE_mesh_calc_normals_poly(
         struct MVert *mverts, int numVerts,
         struct MLoop *mloop, struct MPoly *mpolys,
         int numLoops, int numPolys, float (*polyNors_r)[3],
         const bool only_face_normals);
-
 void BKE_mesh_calc_normals(struct Mesh *me);
+void BKE_mesh_calc_normals_tessface(
+        struct MVert *mverts, int numVerts,
+        struct MFace *mfaces, int numFaces,
+        float (*faceNors_r)[3]);
 
-/* Return a newly MEM_malloc'd array of all the mesh vertex locations
- * (_numVerts_r_ may be NULL) */
-float (*BKE_mesh_vertexCos_get(struct Mesh *me, int *r_numVerts))[3];
 
+void BKE_mesh_calc_poly_normal(
+        struct MPoly *mpoly, struct MLoop *loopstart,
+        struct MVert *mvarray, float no[3]);
+void BKE_mesh_calc_poly_normal_coords(
+        struct MPoly *mpoly, struct MLoop *loopstart,
+        const float (*vertex_coords)[3], float no[3]);
+void BKE_mesh_calc_poly_center(
+        struct MPoly *mpoly, struct MLoop *loopstart,
+        struct MVert *mvarray, float cent[3]);

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list