[Bf-blender-cvs] [5c5ee7c] soc-2016-pbvh-painting: Added initial PBVH creation for weight painting on toggle. PBVH is visible using gui debug number 14.

Nathan Vollmer noreply at git.blender.org
Mon May 23 05:42:56 CEST 2016


Commit: 5c5ee7c228946f07e9e36a436e32d8f2b9b1f108
Author: Nathan Vollmer
Date:   Sun May 22 21:42:51 2016 -0600
Branches: soc-2016-pbvh-painting
https://developer.blender.org/rB5c5ee7c228946f07e9e36a436e32d8f2b9b1f108

Added initial PBVH creation for weight painting on toggle. PBVH is visible using gui debug number 14.

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

M	source/blender/blenkernel/intern/DerivedMesh.c
M	source/blender/editors/sculpt_paint/paint_vertex.c
M	source/blender/editors/space_view3d/drawobject.c

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

diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 1bfc3d9..cb779d8 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -2587,7 +2587,7 @@ static void mesh_build_data(
 	ob->lastDataMask = dataMask;
 	ob->lastNeedMapping = need_mapping;
 
-	if ((ob->mode & OB_MODE_SCULPT) && ob->sculpt) {
+	if (ob->mode & (OB_MODE_SCULPT | OB_MODE_WEIGHT_PAINT) && ob->sculpt) {
 		/* create PBVH immediately (would be created on the fly too,
 		 * but this avoids waiting on first stroke) */
 
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 15ab4ca..8bd3b8d 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -1725,6 +1725,16 @@ static void do_weight_paint_vertex(
 	}
 }
 
+
+/**** Toggle operator for turning vertex paint mode on or off     /
+/       copied from sculpt.c                                  ****/
+static void vertex_paint_init_session(Scene *scene, Object *ob)
+{
+	ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session");
+
+	BKE_sculpt_update_mesh_elements(scene, scene->toolsettings->sculpt, ob, 0, false);
+}
+
 /* *************** set wpaint operator ****************** */
 
 /**
@@ -1787,6 +1797,12 @@ static int wpaint_mode_toggle_exec(bContext *C, wmOperator *op)
 
 	WM_event_add_notifier(C, NC_SCENE | ND_MODE, scene);
 
+	/* Create vertex/weight paint mode session data */
+	if (ob->sculpt)
+		BKE_sculptsession_free(ob);
+
+	vertex_paint_init_session(scene, ob);
+
 	return OPERATOR_FINISHED;
 }
 
@@ -2116,8 +2132,9 @@ static void wpaint_stroke_update_step(bContext *C, struct PaintStroke *stroke, P
 	Brush *brush = BKE_paint_brush(&wp->paint);
 	struct WPaintData *wpd = paint_stroke_mode_data(stroke);
 	ViewContext *vc;
-	Object *ob;
+	Object *ob = CTX_data_active_object(C);
 	Mesh *me;
+	
 	float mat[4][4];
 	float paintweight;
 	int *indexar;
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 65f1f37..6870e3f 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -4160,6 +4160,9 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D
 	else if (dt == OB_PAINT) {
 		draw_mesh_paint(v3d, rv3d, ob, dm, draw_flags);
 
+		/* For drawing the PBVH */
+		dm->drawFacesSolid(dm, NULL, 0, GPU_object_material_bind);
+
 		/* since we already draw wire as wp guide, don't draw over the top */
 		draw_wire = OBDRAW_WIRE_OFF;
 	}




More information about the Bf-blender-cvs mailing list