Merge branch 'master' into blender2.8
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 22 Feb 2018 14:22:44 +0000 (15:22 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 22 Feb 2018 14:22:44 +0000 (15:22 +0100)
Conflicts:
source/blender/bmesh/intern/bmesh_mesh.c

1  2 
source/blender/blenkernel/BKE_mesh.h
source/blender/blenkernel/intern/mesh_evaluate.c
source/blender/bmesh/intern/bmesh_mesh.c
source/blender/editors/mesh/mesh_data.c
source/blender/editors/transform/transform_conversions.c

index ce5d4e3ea642e3e3f572c1d61b076962abac5529,31d889863b2d104724881cf754a6d753f36cd4aa..9ff842e36f12e44e3872d4efa30eb421118bb90e
@@@ -193,7 -188,21 +193,14 @@@ void BKE_mesh_calc_normals_looptri
          const struct MLoop *mloop,
          const struct MLoopTri *looptri, int looptri_num,
          float (*r_tri_nors)[3]);
 -void BKE_mesh_loop_tangents_ex(
 -        const struct MVert *mverts, const int numVerts, const struct MLoop *mloops,
 -        float (*r_looptangent)[4], float (*loopnors)[3], const struct MLoopUV *loopuv,
 -        const int numLoops, const struct MPoly *mpolys, const int numPolys,
 -        struct ReportList *reports);
 -void BKE_mesh_loop_tangents(
 -        struct Mesh *mesh, const char *uvmap, float (*r_looptangents)[4], struct ReportList *reports);
  
+ void BKE_edges_sharp_from_angle_set(
+         const struct MVert *mverts, const int numVerts,
+         struct MEdge *medges, const int numEdges,
+         struct MLoop *mloops, const int numLoops,
+         struct MPoly *mpolys, const float (*polynors)[3], const int numPolys,
+         const float split_angle);
  /**
   * References a contiguous loop-fan with normal offset vars.
   */
index 8533083af223dc27330877d0449fd0524b54ea3c,8d6e7ae5b29d661ec56145ca411d271b0be5eeaf..d178b48ab60a6dea3b5a8d5680d04404c808f58e
@@@ -1019,8 -1025,21 +1025,22 @@@ void BM_loops_calc_normal_vcos
        }
  }
  
 -static void UNUSED_FUNCTION(bm_mdisps_space_set)(Object *ob, BMesh *bm, int from, int to)
+ /** Define sharp edges as needed to mimic 'autosmooth' from angle threshold.
+  *
+  * Used when defining an empty custom loop normals data layer, to keep same shading as with autosmooth!
+  */
+ void BM_edges_sharp_from_angle_set(BMesh *bm, const float split_angle)
+ {
+       if (split_angle >= (float)M_PI) {
+               /* Nothing to do! */
+               return;
+       }
+       bm_mesh_edges_sharp_tag(bm, NULL, NULL, NULL, split_angle, true);
+ }
 +static void UNUSED_FUNCTION(bm_mdisps_space_set)(
 +        Object *ob, BMesh *bm, int from, int to, eObjectMode object_mode)
  {
        /* switch multires data out of tangent space */
        if (CustomData_has_layer(&bm->ldata, CD_MDISPS)) {