[Bf-blender-cvs] [8bb97b6318f] soc-2018-npr: Fixed not updating normal error. now all lines properly calculated.

Nick Wu noreply at git.blender.org
Thu Jul 19 17:45:23 CEST 2018


Commit: 8bb97b6318f86da86a6e0f99d9356cdb24bf1db8
Author: Nick Wu
Date:   Thu Jul 19 15:50:50 2018 +0800
Branches: soc-2018-npr
https://developer.blender.org/rB8bb97b6318f86da86a6e0f99d9356cdb24bf1db8

Fixed not updating normal error. now all lines properly calculated.

===================================================================

M	source/blender/draw/engines/lanpr/lanpr_ops.c

===================================================================

diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 6c92a610304..1d7c1b9e1ac 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -618,6 +618,9 @@ void lanpr_CutLineIntegrated(LANPR_RenderBuffer *rb, LANPR_RenderLine *rl, real
 			break;
 		}
 	}
+	if (!BeginSegment && TNS_DOUBLE_CLOSE_ENOUGH(1, End)) {
+		untouched = 1;
+	}
 	for (rls = BeginSegment; rls; rls = rls->Item.pNext) {
 		if (TNS_DOUBLE_CLOSE_ENOUGH(rls->at, End)) {
 			EndSegment = rls;
@@ -639,7 +642,10 @@ void lanpr_CutLineIntegrated(LANPR_RenderBuffer *rb, LANPR_RenderLine *rl, real
 	}
 
 	if (!ns) ns = memStaticAquireThread(&rb->RenderDataPool, sizeof(LANPR_RenderLineSegment));
-	if (!ns2) ns2 = memStaticAquireThread(&rb->RenderDataPool, sizeof(LANPR_RenderLineSegment));
+	if (!ns2) {
+		if (untouched) { ns2 = ns; EndSegment = ns2; }
+		else ns2 = memStaticAquireThread(&rb->RenderDataPool, sizeof(LANPR_RenderLineSegment));
+	}
 
 	if (BeginSegment) {
 		if (BeginSegment != ns) {
@@ -1590,7 +1596,9 @@ void lanpr_MakeRenderGeometryBuffersObject(Object *o, real *MVMat, real *MVPMat,
 		bm = BM_mesh_create(&allocsize,
 		                    &((struct BMeshCreateParams) {.use_toolflags = true, }));
 		BM_mesh_bm_from_me(bm, o->data, &((struct BMeshFromMeshParams) {.calc_face_normal = true, }));
+		BM_mesh_elem_hflag_disable_all(bm, BM_FACE | BM_EDGE, BM_ELEM_TAG, false);
 		BM_mesh_triangulate(bm, MOD_TRIANGULATE_QUAD_BEAUTY, MOD_TRIANGULATE_NGON_BEAUTY, false, NULL, NULL, NULL);
+		BM_mesh_normals_update(bm);
 		BM_mesh_elem_table_ensure(bm, BM_VERT | BM_EDGE | BM_FACE);
 		BM_mesh_elem_index_ensure(bm, BM_VERT | BM_EDGE | BM_FACE);



More information about the Bf-blender-cvs mailing list