[Bf-blender-cvs] [5cfcee8c393] blender2.8: GP: Reorganize Canvas Grid

Antonioya noreply at git.blender.org
Sun Nov 4 13:00:45 CET 2018


Commit: 5cfcee8c393de6781423c9ef83716c94237fddfd
Author: Antonioya
Date:   Sun Nov 4 13:00:19 2018 +0100
Branches: blender2.8
https://developer.blender.org/rB5cfcee8c393de6781423c9ef83716c94237fddfd

GP: Reorganize Canvas Grid

Now the grid is always controlled by the topbar selector and not in the canvas panel. To have two places to define orientation was confuse.

The orientation by default (no lock) is always to view plane.

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

M	release/scripts/startup/bl_ui/properties_data_gpencil.py
M	source/blender/blenkernel/intern/gpencil.c
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
M	source/blender/draw/engines/gpencil/gpencil_engine.c
M	source/blender/draw/engines/gpencil/gpencil_engine.h
M	source/blender/editors/gpencil/gpencil_edit.c
M	source/blender/editors/gpencil/gpencil_fill.c
M	source/blender/editors/gpencil/gpencil_primitive.c
M	source/blender/makesdna/DNA_gpencil_types.h
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_gpencil.c
M	source/blender/makesrna/intern/rna_sculpt_paint.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_gpencil.py b/release/scripts/startup/bl_ui/properties_data_gpencil.py
index 1ca3d9adc2b..949a48ed7f1 100644
--- a/release/scripts/startup/bl_ui/properties_data_gpencil.py
+++ b/release/scripts/startup/bl_ui/properties_data_gpencil.py
@@ -379,7 +379,6 @@ class DATA_PT_gpencil_canvas(DataButtonsPanel, Panel):
         row = layout.row(align=True)
         col = row.column()
         col.prop(grid, "lines", text="Subdivisions")
-        col.prop(grid, "axis", text="Plane")
 
 
 class DATA_PT_custom_props_gpencil(DataButtonsPanel, PropertyPanel, Panel):
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 63d7f3697f0..c540d6e0c35 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -457,7 +457,6 @@ bGPdata *BKE_gpencil_data_addnew(Main *bmain, const char name[])
 	ARRAY_SET_ITEMS(gpd->grid.color, 0.5f, 0.5f, 0.5f); // Color
 	ARRAY_SET_ITEMS(gpd->grid.scale, 1.0f, 1.0f); // Scale
 	gpd->grid.lines = GP_DEFAULT_GRID_LINES; // Number of lines
-	gpd->grid.axis = GP_GRID_AXIS_Y;
 
 	/* onion-skinning settings (datablock level) */
 	gpd->onion_flag |= (GP_ONION_GHOST_PREVCOL | GP_ONION_GHOST_NEXTCOL);
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 7243cb5b522..c470a3a6d96 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -2170,7 +2170,6 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
 			ARRAY_SET_ITEMS(gpd->grid.color, 0.5f, 0.5f, 0.5f); // Color
 			ARRAY_SET_ITEMS(gpd->grid.scale, 1.0f, 1.0f); // Scale
 			gpd->grid.lines = GP_DEFAULT_GRID_LINES; // Number of lines
-			gpd->grid.axis = GP_GRID_AXIS_Y;
 		}
 	}
 
diff --git a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
index 8e7d16e60ba..d388b617d60 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -615,29 +615,45 @@ GPUBatch *DRW_gpencil_get_edlin_geom(bGPDstroke *gps, float alpha, short UNUSED(
 static void set_grid_point(
         GPUVertBuf *vbo, int idx, float col_grid[4],
         uint pos_id, uint color_id,
-        float v1, float v2, int axis)
+        float v1, float v2, const int axis)
 {
 	GPU_vertbuf_attr_set(vbo, color_id, idx, col_grid);
 
 	float pos[3];
-	/* Set the grid in the selected axis (default is always Y axis) */
-	if (axis & GP_GRID_AXIS_X) {
-		pos[0] = 0.0f;
-		pos[1] = v1;
-		pos[2] = v2;
-	}
-	else if (axis & GP_GRID_AXIS_Z) {
-		pos[0] = v1;
-		pos[1] = v2;
-		pos[2] = 0.0f;
-	}
-	else {
-		pos[0] = v1;
-		pos[1] = 0.0f;
-		pos[2] = v2;
-	}
-
+	/* Set the grid in the selected axis */
+	switch (axis)
+	{
+		case GP_LOCKAXIS_X:
+		{
+			pos[0] = 0.0f;
+			pos[1] = v1;
+			pos[2] = v2;
+			break;
+		}
+		case GP_LOCKAXIS_Y:
+		{
+			pos[0] = v1;
+			pos[1] = 0.0f;
+			pos[2] = v2;
+			break;
+		}
+		case GP_LOCKAXIS_Z:
+		{
+			pos[0] = v1;
+			pos[1] = v2;
+			pos[2] = 0.0f;
+			break;
+		}
+		default:
+		{
+			/* aligned to view */
+			pos[0] = v1;
+			pos[1] = v2;
+			pos[2] = 0.0f;
+			break;
+		}
 
+	}
 
 	GPU_vertbuf_attr_set(vbo, pos_id, idx, pos);
 }
@@ -670,32 +686,7 @@ GPUBatch *DRW_gpencil_get_grid(Object *ob)
 	copy_v3_v3(col_grid, gpd->grid.color);
 	col_grid[3] = v3d->overlay.gpencil_grid_opacity;
 
-	/* if use locked axis, copy value */
-	int axis = gpd->grid.axis;
-	if ((gpd->grid.axis & GP_GRID_AXIS_LOCK) == 0) {
-
-		axis = gpd->grid.axis;
-	}
-	else {
-		switch (ts->gp_sculpt.lock_axis) {
-			case GP_LOCKAXIS_X:
-			{
-				axis = GP_GRID_AXIS_X;
-				break;
-			}
-			case GP_LOCKAXIS_NONE:
-			case GP_LOCKAXIS_Y:
-			{
-				axis = GP_GRID_AXIS_Y;
-				break;
-			}
-			case GP_LOCKAXIS_Z:
-			{
-				axis = GP_GRID_AXIS_Z;
-				break;
-			}
-		}
-	}
+	const int axis = ts->gp_sculpt.lock_axis;
 
 	const char *grid_unit = NULL;
 	const int gridlines = (gpd->grid.lines <= 0) ? 1 : gpd->grid.lines;
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.c b/source/blender/draw/engines/gpencil/gpencil_engine.c
index ba64288d147..9308bdbd084 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.c
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.c
@@ -598,10 +598,22 @@ void GPENCIL_cache_populate(void *vedata, Object *ob)
 			MEM_SAFE_FREE(e_data.batch_grid);
 
 			e_data.batch_grid = DRW_gpencil_get_grid(ob);
+
+			/* define grid orientation */
+			if (ts->gp_sculpt.lock_axis != GP_LOCKAXIS_VIEW) {
+				copy_m4_m4(stl->storage->grid_matrix, ob->obmat);
+			}
+			else {
+				/* align always to view */
+				invert_m4_m4(stl->storage->grid_matrix, draw_ctx->rv3d->viewmat);
+				/* copy ob location */
+				copy_v3_v3(stl->storage->grid_matrix[3], ob->obmat[3]);
+			}
+
 			DRW_shgroup_call_add(
-			        stl->g_data->shgrps_grid,
-			        e_data.batch_grid,
-			        ob->obmat);
+				stl->g_data->shgrps_grid,
+				e_data.batch_grid,
+				stl->storage->grid_matrix);
 		}
 	}
 }
diff --git a/source/blender/draw/engines/gpencil/gpencil_engine.h b/source/blender/draw/engines/gpencil/gpencil_engine.h
index e2e6bf4edf0..8e68fdef952 100644
--- a/source/blender/draw/engines/gpencil/gpencil_engine.h
+++ b/source/blender/draw/engines/gpencil/gpencil_engine.h
@@ -134,6 +134,8 @@ typedef struct GPENCIL_Storage {
 	float winmat[4][4], wininv[4][4];
 	float view_vecs[2][4]; /* vec4[2] */
 
+	float grid_matrix[4][4];
+
 	Object *camera; /* camera pointer for render mode */
 } GPENCIL_Storage;
 
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index d8580f872f4..12dc3451902 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -2866,7 +2866,7 @@ static int gp_strokes_reproject_exec(bContext *C, wmOperator *op)
 	int lock_axis = ts->gp_sculpt.lock_axis;
 	float origin[3];
 
-	if ((mode == GP_REPROJECT_AXIS) && (lock_axis == GP_LOCKAXIS_NONE)) {
+	if ((mode == GP_REPROJECT_AXIS) && (lock_axis == GP_LOCKAXIS_VIEW)) {
 		BKE_report(op->reports, RPT_ERROR, "To reproject by axis, a lock axis must be set before");
 		return OPERATOR_CANCELLED;
 	}
@@ -2909,7 +2909,7 @@ static int gp_strokes_reproject_exec(bContext *C, wmOperator *op)
 
 				/* Project stroke in the axis locked */
 				if (mode == GP_REPROJECT_AXIS) {
-					if (lock_axis > GP_LOCKAXIS_NONE) {
+					if (lock_axis > GP_LOCKAXIS_VIEW) {
 						ED_gp_get_drawing_reference(v3d, scene, ob, gpl,
 							ts->gpencil_v3d_align, origin);
 						ED_gp_project_point_to_plane(ob, rv3d, origin,
diff --git a/source/blender/editors/gpencil/gpencil_fill.c b/source/blender/editors/gpencil/gpencil_fill.c
index f940b18dac6..9b6a36ce8af 100644
--- a/source/blender/editors/gpencil/gpencil_fill.c
+++ b/source/blender/editors/gpencil/gpencil_fill.c
@@ -918,7 +918,7 @@ static void gpencil_stroke_from_buffer(tGPDfill *tgpf)
 	}
 
 	/* if axis locked, reproject to plane locked */
-	if ((tgpf->lock_axis > GP_LOCKAXIS_NONE) && ((ts->gpencil_v3d_align & GP_PROJECT_DEPTH_VIEW) == 0)) {
+	if ((tgpf->lock_axis > GP_LOCKAXIS_VIEW) && ((ts->gpencil_v3d_align & GP_PROJECT_DEPTH_VIEW) == 0)) {
 		float origin[3];
 		ED_gp_get_drawing_reference(
 		        tgpf->v3d, tgpf->scene, tgpf->ob, tgpf->gpl,
diff --git a/source/blender/editors/gpencil/gpencil_primitive.c b/source/blender/editors/gpencil/gpencil_primitive.c
index baa8bc5d181..338fb7f5c6a 100644
--- a/source/blender/editors/gpencil/gpencil_primitive.c
+++ b/source/blender/editors/gpencil/gpencil_primitive.c
@@ -369,7 +369,7 @@ static void gp_primitive_update_strokes(bContext *C, tGPDprimitive *tgpi)
 	}
 
 	/* if axis locked, reproject to plane locked */
-	if (tgpi->lock_axis > GP_LOCKAXIS_NONE) {
+	if (tgpi->lock_axis > GP_LOCKAXIS_VIEW) {
 		bGPDspoint *tpt = gps->points;
 		float origin[3];
 		ED_gp_get_drawing_reference(tgpi->v3d, tgpi->scene, tgpi->ob, tgpi->gpl,
diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h
index 42070839fac..fcaf8b00cde 100644
--- a/source/blender/makesdna/DNA_gpencil_types.h
+++ b/source/blender/makesdna/DNA_gpencil_types.h
@@ -335,7 +335,7 @@ typedef struct bGPgrid {
 	char _pad1[4];
 
 	int   lines;
-	int   axis;
+	char pad_[4];
 } bGPgrid;
 
 /* Grease-Pencil Annotations - 'DataBlock' */
@@ -480,14 +480,6 @@ typedef enum eGP_DepthOrdering {
 	GP_XRAY_BACK  = 2
 } eGP_DepthOrdering;
 
-/* gpencil_grid_axis */
-enum {
-	GP_GRID_AXIS_LOCK = (1 << 0),
-	GP_GRID_AXIS_X    = (1 << 1),
-	GP_GRID_AXIS_Y    = (1 << 2),
-	GP_GRID_AXIS_Z    = (1 << 3),
-};
-
 /* ***************************************** */
 /* Mode Checking Macros */
 
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 31627760aa3..795a48532ce 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -973,7 +973,7 @@ typedef enum eGP_EditBrush_Types {
 
 /* GP_BrushEdit_Settings.lock_axis */
 typedef enum eGP_Lockaxis_Types {
-	GP_LOCKAXIS_NONE = 0,
+	GP_LOCKAXIS_VIEW = 0,
 	GP_LOCKAXIS_X = 1,
 	GP_LOCKAXIS_Y = 2,
 	GP_LOCKAXIS_Z = 3
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c
index c6bf4317064..1dbca8b27c9 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -72,13 +72,6 @@ static EnumPropertyItem rna_enum_gpencil_onion_modes_items[] = {
 	{ 0, NULL, 0, NULL, NULL }
 };
 
-static const EnumPropertyItem rna_enum_gpencil_grid_axis_items[] = {
-	{GP_GRID_AXIS_LOCK, "LOCK", 0, "Drawing Plane", "Use current drawing locked axis" },
-	{GP_GRID_AXIS_X, "X", 0, "Y-Z", ""},
-	{GP_GRID_AXIS_Y, "Y", 0, "X-Z", ""},
-	{GP_GRID_AXIS_Z, "Z", 0, "X-Y", ""},
-	{0, NULL, 0, NULL, NULL}
-};
 #endif
 
 #ifdef RNA_RUNTIME
@@ -1332,12 +1325,6 @@ static void rna_def_gpencil_grid(BlenderRNA *brna)
 	RNA_def_property_array(prop, 2);
 	RNA_def_property_ui_text(prop, "Offset", "Offset of the canvas");
 	RNA_def_pro

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list