[Bf-blender-cvs] [2a86495125a] greasepencil-object: Improve thickness fix when no locked axis
Antonio Vazquez
noreply at git.blender.org
Tue Nov 7 13:46:21 CET 2017
Commit: 2a86495125ad6188c18fccc2cff07db554f4a802
Author: Antonio Vazquez
Date: Tue Nov 7 13:46:09 2017 +0100
Branches: greasepencil-object
https://developer.blender.org/rB2a86495125ad6188c18fccc2cff07db554f4a802
Improve thickness fix when no locked axis
There was some problems with the thickness when the axis was not locked that were not fixed in previous commit.
===================================================================
M source/blender/editors/gpencil/gpencil_paint.c
M source/blender/editors/gpencil/gpencil_utils.c
===================================================================
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index 238fcdff617..5294514d5fa 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -698,10 +698,8 @@ static short gp_stroke_addpoint(
/* convert screen-coordinates to appropriate coordinates (and store them) */
gp_stroke_convertcoords(p, &pt->x, &pts->x, NULL);
- /* if axis locked, reproject to plane locked (only in 3d space) */
- if (p->lock_axis > GP_LOCKAXIS_NONE) {
- gp_reproject_toplane(p, gps);
- }
+ /* reproject to plane (only in 3d space) */
+ gp_reproject_toplane(p, gps);
/* if parented change position relative to parent object */
gp_apply_parent_point(obact, gpd, gpl, pts);
/* copy pressure and time */
@@ -884,10 +882,8 @@ static void gp_stroke_newfrombuffer(tGPsdata *p)
/* convert screen-coordinates to appropriate coordinates (and store them) */
gp_stroke_convertcoords(p, &ptc->x, &pt->x, NULL);
- /* if axis locked, reproject to plane locked (only in 3d space) */
- if (p->lock_axis > GP_LOCKAXIS_NONE) {
- gp_reproject_toplane(p, gps);
- }
+ /* reproject to plane (only in 3d space) */
+ gp_reproject_toplane(p, gps);
/* if parented change position relative to parent object */
gp_apply_parent_point(obact, gpd, gpl, pt);
/* copy pressure and time */
@@ -907,10 +903,8 @@ static void gp_stroke_newfrombuffer(tGPsdata *p)
/* convert screen-coordinates to appropriate coordinates (and store them) */
gp_stroke_convertcoords(p, &ptc->x, &pt->x, NULL);
- /* if axis locked, reproject to plane locked (only in 3d space) */
- if (p->lock_axis > GP_LOCKAXIS_NONE) {
- gp_reproject_toplane(p, gps);
- }
+ /* reproject to plane (only in 3d space) */
+ gp_reproject_toplane(p, gps);
/* if parented change position relative to parent object */
gp_apply_parent_point(obact, gpd, gpl, pt);
@@ -930,10 +924,8 @@ static void gp_stroke_newfrombuffer(tGPsdata *p)
/* convert screen-coordinates to appropriate coordinates (and store them) */
gp_stroke_convertcoords(p, &ptc->x, &pt->x, NULL);
- /* if axis locked, reproject to plane locked (only in 3d space) */
- if (p->lock_axis > GP_LOCKAXIS_NONE) {
- gp_reproject_toplane(p, gps);
- }
+ /* reproject to plane (only in 3d space) */
+ gp_reproject_toplane(p, gps);
/* if parented change position relative to parent object */
gp_apply_parent_point(obact, gpd, gpl, pt);
/* copy pressure and time */
@@ -1054,10 +1046,8 @@ static void gp_stroke_newfrombuffer(tGPsdata *p)
}
}
- /* if axis locked, reproject to plane locked (only in 3d space) */
- if (p->lock_axis > GP_LOCKAXIS_NONE) {
- gp_reproject_toplane(p, gps);
- }
+ /* reproject to plane (only in 3d space) */
+ gp_reproject_toplane(p, gps);
/* change position relative to parent object */
gp_apply_parent(obact, gpd, gpl, gps);
diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c
index 92856346926..f94e8fe1d4d 100644
--- a/source/blender/editors/gpencil/gpencil_utils.c
+++ b/source/blender/editors/gpencil/gpencil_utils.c
@@ -1196,11 +1196,18 @@ void ED_gp_project_stroke_to_plane(Object *ob, RegionView3D *rv3d, bGPDstroke *g
/* normal vector for a plane locked to axis */
zero_v3(plane_normal);
- plane_normal[axis] = 1.0f;
-
- /* if object, apply object rotation */
- if (ob && (ob->type == OB_GPENCIL)) {
- mul_mat3_m4_v3(ob->obmat, plane_normal);
+ if (axis < 0) {
+ /* if the axis is not locked, need a vector to the view direction
+ * in order to get the right size of the stroke.
+ */
+ ED_view3d_global_to_vector(rv3d, origin, plane_normal);
+ }
+ else {
+ plane_normal[axis] = 1.0f;
+ /* if object, apply object rotation */
+ if (ob && (ob->type == OB_GPENCIL)) {
+ mul_mat3_m4_v3(ob->obmat, plane_normal);
+ }
}
/* Reproject the points in the plane */
@@ -1236,16 +1243,16 @@ void ED_gp_project_point_to_plane(Object *ob, RegionView3D *rv3d, const float or
/* if the axis is not locked, need a vector to the view direction
* in order to get the right size of the stroke.
*/
- ED_view3d_global_to_vector(rv3d, &pt->x, plane_normal);
+ ED_view3d_global_to_vector(rv3d, origin, plane_normal);
}
else {
plane_normal[axis] = 1.0f;
+ /* if object, apply object rotation */
+ if (ob && (ob->type == OB_GPENCIL)) {
+ mul_mat3_m4_v3(ob->obmat, plane_normal);
+ }
}
- /* if object, apply object rotation */
- if (ob && (ob->type == OB_GPENCIL)) {
- mul_mat3_m4_v3(ob->obmat, plane_normal);
- }
/* Reproject the points in the plane */
/* get a vector from the point with the current view direction of the viewport */
More information about the Bf-blender-cvs
mailing list