[Bf-blender-cvs] [7155130911e] greasepencil-object: GPencil: New function to get derived array
Antonioya
noreply at git.blender.org
Tue May 21 20:26:06 CEST 2019
Commit: 7155130911e3e761bd7e3ae6444d0beea361137a
Author: Antonioya
Date: Tue May 21 19:52:59 2019 +0200
Branches: greasepencil-object
https://developer.blender.org/rB7155130911e3e761bd7e3ae6444d0beea361137a
GPencil: New function to get derived array
This utility is used to get the difference between original point and derived point
===================================================================
M source/blender/blenkernel/BKE_gpencil.h
M source/blender/blenkernel/intern/gpencil.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index 3c84c991019..643355f92bb 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -299,4 +299,7 @@ float BKE_gpencil_multiframe_falloff_calc(
extern void (*BKE_gpencil_batch_cache_dirty_tag_cb)(struct bGPdata *gpd);
extern void (*BKE_gpencil_batch_cache_free_cb)(struct bGPdata *gpd);
+/** Get matrix for transformation between original and derived point */
+void BKE_gpencil_derived_matrix_get(struct bGPDspoint *pt, float r_mat[4][4]);
+
#endif /* __BKE_GPENCIL_H__ */
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 439005ca1b4..96847fda80b 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -1971,3 +1971,34 @@ bool BKE_gpencil_trim_stroke(bGPDstroke *gps)
}
return intersect;
}
+
+void BKE_gpencil_derived_matrix_get(bGPDspoint *pt, float r_mat[4][4])
+{
+ float loc[3], scale[3];
+ float v1o[2], v2o[2], v3o[2];
+ float v1d[2], v2d[2], v3d[2];
+ float angle[3];
+
+ if (pt->runtime.pt_orig == NULL) {
+ unit_m4(r_mat);
+ return;
+ }
+
+ bGPDspoint *pt_orig = pt->runtime.pt_orig;
+
+ ARRAY_SET_ITEMS(loc, pt_orig->x - pt->x, pt_orig->y - pt->y, pt_orig->z - pt->z);
+ ARRAY_SET_ITEMS(scale, 1.0f, 1.0f, 1.0f);
+
+ ARRAY_SET_ITEMS(v1d, pt->y, pt->z); /* X axis */
+ ARRAY_SET_ITEMS(v2d, pt->x, pt->z); /* Y axis */
+ ARRAY_SET_ITEMS(v3d, pt->x, pt->y); /* Z axis */
+
+ ARRAY_SET_ITEMS(v1o, pt_orig->y, pt_orig->z); /* X axis */
+ ARRAY_SET_ITEMS(v2o, pt_orig->x, pt_orig->z); /* Y axis */
+ ARRAY_SET_ITEMS(v3o, pt_orig->x, pt_orig->y); /* Z axis */
+
+ angle[0] = angle_signed_v2v2(v1d, v1o);
+ angle[1] = angle_signed_v2v2(v2d, v2o);
+ angle[2] = angle_signed_v2v2(v3d, v3o);
+ loc_eul_size_to_mat4(r_mat, loc, angle, scale);
+}
More information about the Bf-blender-cvs
mailing list