Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-06-12 13:35:02 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-06-12 13:35:02 +0400
commit31e667c10eec08aadf1a8fc156ffefcaf63a24ec (patch)
tree5bd6837a8239aa0d83e18f43d3c728d7cb28daa0 /source/blender/blenkernel/intern/mesh.c
parent8e2e590484dbdb2da433649fac8521b91f384ca2 (diff)
solidify: dont add poly-normal layer to the derived mesh, since this is no longer a convention.
Diffstat (limited to 'source/blender/blenkernel/intern/mesh.c')
-rw-r--r--source/blender/blenkernel/intern/mesh.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 2eb318c316f..d02884f1a7b 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -1907,7 +1907,7 @@ void BKE_mesh_calc_normals_mapping_ex(MVert *mverts, int numVerts,
if (only_face_normals == FALSE) {
/* vertex normals are optional, they require some extra calculations,
* so make them optional */
- BKE_mesh_calc_normals_poly(mverts, numVerts, mloop, mpolys, numLoops, numPolys, pnors);
+ BKE_mesh_calc_normals_poly(mverts, numVerts, mloop, mpolys, numLoops, numPolys, pnors, false);
}
else {
/* only calc poly normals */
@@ -1994,13 +1994,24 @@ static void mesh_calc_normals_poly_accum(MPoly *mp, MLoop *ml,
}
void BKE_mesh_calc_normals_poly(MVert *mverts, int numVerts, MLoop *mloop, MPoly *mpolys,
- int UNUSED(numLoops), int numPolys, float (*r_polynors)[3])
+ int UNUSED(numLoops), int numPolys, float (*r_polynors)[3],
+ const bool only_face_normals)
{
float (*pnors)[3] = r_polynors;
float (*tnorms)[3];
int i;
MPoly *mp;
+ if (only_face_normals) {
+ BLI_assert(pnors != NULL);
+
+#pragma omp parallel for if (numPolys > BM_OMP_LIMIT)
+ for (i = 0; i < numPolys; i++) {
+ BKE_mesh_calc_poly_normal(&mpolys[i], mloop + mpolys[i].loopstart, mverts, pnors[i]);
+ }
+ return;
+ }
+
/* first go through and calculate normals for all the polys */
tnorms = MEM_callocN(sizeof(*tnorms) * numVerts, __func__);
@@ -2037,7 +2048,7 @@ void BKE_mesh_calc_normals(Mesh *mesh)
{
BKE_mesh_calc_normals_poly(mesh->mvert, mesh->totvert,
mesh->mloop, mesh->mpoly, mesh->totloop, mesh->totpoly,
- NULL);
+ NULL, false);
}
void BKE_mesh_calc_normals_tessface(MVert *mverts, int numVerts, MFace *mfaces, int numFaces, float (*faceNors_r)[3])