[Bf-blender-cvs] [d157584f599] greasepencil-object: Enable grid in different axis

Antonioya noreply at git.blender.org
Sat Jul 28 16:30:00 CEST 2018


Commit: d157584f5993fbee35f0f4acaa3b3507ab38ea55
Author: Antonioya
Date:   Sat Jul 28 16:29:49 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rBd157584f5993fbee35f0f4acaa3b3507ab38ea55

Enable grid in different axis

Before only Y axis was supported.

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

M	release/scripts/startup/bl_ui/space_view3d.py
M	source/blender/blenloader/intern/versioning_280.c
M	source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
M	source/blender/editors/space_view3d/space_view3d.c
M	source/blender/makesdna/DNA_view3d_types.h
M	source/blender/makesrna/intern/rna_space.c

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

diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py
index 67260e42ec3..10c15b6e8ce 100644
--- a/release/scripts/startup/bl_ui/space_view3d.py
+++ b/release/scripts/startup/bl_ui/space_view3d.py
@@ -4736,7 +4736,9 @@ class VIEW3D_PT_overlay_gpencil_options(Panel):
         layout.prop(overlay, "use_gpencil_grid", text="Show Plane Grid")
         if overlay.use_gpencil_grid:
             layout.prop(overlay, "gpencil_grid_scale")
-            layout.prop(overlay, "gpencil_grid_lines")
+            row = layout.row()
+            row.prop(overlay, "gpencil_grid_lines")
+            row.prop(overlay, "gpencil_grid_axis")
 
         layout.prop(overlay, "use_gpencil_onion_skin", text="Onion Skin")
 
diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c
index 5a323d3c969..b7b549c96d7 100644
--- a/source/blender/blenloader/intern/versioning_280.c
+++ b/source/blender/blenloader/intern/versioning_280.c
@@ -992,6 +992,7 @@ void blo_do_versions_280(FileData *fd, Library *UNUSED(lib), Main *bmain)
 							v3d->gpencil_grid_scale = 1.0f; // Scale
 							v3d->gpencil_grid_lines = GP_DEFAULT_GRID_LINES; // NUmber of lines
 							v3d->gpencil_paper_opacity = 0.5f;
+							v3d->gpencil_grid_axis = V3D_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 cdb73c151a5..159ea4d2eb7 100644
--- a/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
+++ b/source/blender/draw/engines/gpencil/gpencil_draw_cache_impl.c
@@ -602,11 +602,31 @@ GPUBatch *DRW_gpencil_get_edlin_geom(bGPDstroke *gps, float alpha, short UNUSED(
 
 static void set_grid_point(GPUVertBuf *vbo, int idx, uchar col_grid[3],
 						uint pos_id, uint color_id,
-						float x, float y, float z)
+						float v1, float v2, const int axis)
 {
 	GPU_vertbuf_attr_set(vbo, color_id, idx, col_grid);
 
-	float pos[3] = { x, y, z };
+	float pos[3];
+	/* Set the grid in the selected axis (default is always Y axis) */
+	if (axis & V3D_GP_GRID_AXIS_X) {
+		pos[0] = 0.0f;
+		pos[1] = v1;
+		pos[2] = v2;
+	}
+	else if (axis & V3D_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;
+	}
+
+
+
 	GPU_vertbuf_attr_set(vbo, pos_id, idx, pos);
 }
 
@@ -629,6 +649,11 @@ GPUBatch *DRW_gpencil_get_grid(void)
 		v3d->gpencil_grid_scale = 1.0f;
 	}
 
+	if (v3d->gpencil_grid_axis == 0) {
+		v3d->gpencil_grid_axis |= V3D_GP_GRID_AXIS_Y;
+	}
+
+	const int axis = v3d->gpencil_grid_axis;
 	const char *grid_unit = NULL;
 	const int gridlines = v3d->gpencil_grid_lines; 
 	const float grid_scale = v3d->gpencil_grid_scale * ED_scene_grid_scale(scene, &grid_unit);
@@ -650,33 +675,33 @@ GPUBatch *DRW_gpencil_get_grid(void)
 	for (int a = 1; a <= gridlines; a++) {
 		const float line = a * grid_scale;
 
-		set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid, 0.0f, -line);
+		set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid, -line, axis);
 		idx++;
-		set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid, 0.0f, -line);
+		set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid, -line, axis);
 		idx++;
-		set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid, 0.0f, +line);
+		set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid, +line, axis);
 		idx++;
-		set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid, 0.0f, +line);
+		set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid, +line, axis);
 		idx++;
 
-		set_grid_point(vbo, idx, col_grid, pos_id, color_id, -line, 0.0f, -grid);
+		set_grid_point(vbo, idx, col_grid, pos_id, color_id, -line, -grid, axis);
 		idx++;
-		set_grid_point(vbo, idx, col_grid, pos_id, color_id, -line, 0.0f, +grid);
+		set_grid_point(vbo, idx, col_grid, pos_id, color_id, -line, +grid, axis);
 		idx++;
-		set_grid_point(vbo, idx, col_grid, pos_id, color_id, +line, 0.0f, -grid);
+		set_grid_point(vbo, idx, col_grid, pos_id, color_id, +line, -grid, axis);
 		idx++;
-		set_grid_point(vbo, idx, col_grid, pos_id, color_id, +line, 0.0f, +grid);
+		set_grid_point(vbo, idx, col_grid, pos_id, color_id, +line, +grid, axis);
 		idx++;
 	}
 	/* center lines */
-	set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid, 0.0f, 0.0f);
+	set_grid_point(vbo, idx, col_grid, pos_id, color_id, -grid, 0.0f, axis);
 	idx++;
-	set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid, 0.0f, 0.0f);
+	set_grid_point(vbo, idx, col_grid, pos_id, color_id, +grid, 0.0f, axis);
 	idx++;
 
-	set_grid_point(vbo, idx, col_grid, pos_id, color_id, 0.0f, 0.0f, -grid);
+	set_grid_point(vbo, idx, col_grid, pos_id, color_id, 0.0f, -grid, axis);
 	idx++;
-	set_grid_point(vbo, idx, col_grid, pos_id, color_id, 0.0f, 0.0f, +grid);
+	set_grid_point(vbo, idx, col_grid, pos_id, color_id, 0.0f, +grid, axis);
 	idx++;
 
 	return GPU_batch_create_ex(GPU_PRIM_LINES, vbo, NULL, GPU_BATCH_OWNS_VBO);
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 19149270b7e..1fe3a39e49d 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -345,6 +345,7 @@ static SpaceLink *view3d_new(const ScrArea *UNUSED(sa), const Scene *scene)
 	v3d->gpencil_grid_scale = 1.0; // Scales
 	v3d->gpencil_grid_lines = GP_DEFAULT_GRID_LINES; // NUmber of Lines
 	v3d->gpencil_paper_opacity = 0.5f;
+	v3d->gpencil_grid_axis = V3D_GP_GRID_AXIS_Y;
 
 	v3d->bundle_size = 0.2f;
 	v3d->bundle_drawtype = OB_PLAINAXES;
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index 6980f5862ad..f2b3fec81e6 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -270,7 +270,7 @@ typedef struct View3D {
 	float gpencil_grid_scale;
 	float gpencil_paper_opacity;
 	int   gpencil_grid_lines;
-	char pad6[4];
+	int   gpencil_grid_axis;
 
 	/* Stereoscopy settings */
 	short stereo3d_flag;
@@ -491,4 +491,11 @@ enum {
 #define RV3D_CAMZOOM_MIN_FACTOR  0.1657359312880714853f
 #define RV3D_CAMZOOM_MAX_FACTOR 44.9852813742385702928f
 
+/* View3d.gpencil_grid_axis */
+enum {
+	V3D_GP_GRID_AXIS_X = (1 << 1),
+	V3D_GP_GRID_AXIS_Y = (1 << 2),
+	V3D_GP_GRID_AXIS_Z = (1 << 3)
+};
+
 #endif
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index d08b1bb8f50..51972374533 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -309,6 +309,13 @@ const EnumPropertyItem rna_enum_file_sort_items[] = {
 	{0, NULL, 0, NULL, NULL}
 };
 
+static const EnumPropertyItem rna_enum_gpencil_grid_axis_items[] = {
+	{V3D_GP_GRID_AXIS_X, "X", 0, "X", ""},
+	{V3D_GP_GRID_AXIS_Y, "Y", 0, "Y", ""},
+	{V3D_GP_GRID_AXIS_Z, "Z", 0, "Z", ""},
+	{0, NULL, 0, NULL, NULL}
+};
+
 #ifdef RNA_RUNTIME
 
 #include "DNA_anim_types.h"
@@ -2881,6 +2888,12 @@ static void rna_def_space_view3d_overlay(BlenderRNA *brna)
 	RNA_def_property_ui_text(prop, "Lines", "Number of lines");
 	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
 
+	prop = RNA_def_property(srna, "gpencil_grid_axis", PROP_ENUM, PROP_NONE);
+	RNA_def_property_enum_sdna(prop, NULL, "gpencil_grid_axis");
+	RNA_def_property_enum_items(prop, rna_enum_gpencil_grid_axis_items);
+	RNA_def_property_ui_text(prop, "Axis", "Axis to display grid");
+	RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
 	/* Paper opacity factor */
 	prop = RNA_def_property(srna, "gpencil_paper_opacity", PROP_FLOAT, PROP_NONE);
 	RNA_def_property_float_sdna(prop, NULL, "gpencil_paper_opacity");



More information about the Bf-blender-cvs mailing list