[Bf-blender-cvs] [04819900440] greasepencil-object: GP "Add Monkey" - Primitive geometry can now have arbitrary transforms applied to it when created
Joshua Leung
noreply at git.blender.org
Fri Mar 16 07:23:11 CET 2018
Commit: 0481990044088b35eb7ce94390aa5bbc004be900
Author: Joshua Leung
Date: Fri Mar 16 03:02:45 2018 +1300
Branches: greasepencil-object
https://developer.blender.org/rB0481990044088b35eb7ce94390aa5bbc004be900
GP "Add Monkey" - Primitive geometry can now have arbitrary transforms applied to it when created
===================================================================
M source/blender/blenkernel/BKE_gpencil.h
M source/blender/blenkernel/intern/gpencil.c
M source/blender/editors/gpencil/gpencil_add_monkey.c
M source/blender/editors/include/ED_gpencil.h
M source/blender/editors/object/object_add.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h
index 83a97c0a0df..5a919fb0327 100644
--- a/source/blender/blenkernel/BKE_gpencil.h
+++ b/source/blender/blenkernel/BKE_gpencil.h
@@ -98,7 +98,10 @@ void BKE_gpencil_frame_delete_laststroke(struct bGPDlayer *gpl, struct bGPDframe
*/
#define GP_PRIM_DATABUF_SIZE 5
-void BKE_gpencil_stroke_add_points(struct bGPDstroke *gps, const float *array, const int totpoints);
+void BKE_gpencil_stroke_add_points(
+ struct bGPDstroke *gps,
+ const float *array, const int totpoints,
+ const float mat[4][4]);
struct bGPDstroke *BKE_gpencil_add_stroke(
struct bGPDframe *gpf, struct Palette *palette, struct PaletteColor *palcolor, int totpoints,
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index 66d85ccb06a..50063a6be4b 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -521,8 +521,9 @@ bGPdata *BKE_gpencil_data_addnew(Main *bmain, const char name[])
* Populate stroke with point data from data buffers
*
* \param array Flat array of point data values. Each entry has GP_PRIM_DATABUF_SIZE values
+ * \param mat 4x4 transform matrix to transform points into the right coordinate space
*/
-void BKE_gpencil_stroke_add_points(bGPDstroke *gps, const float *array, const int totpoints)
+void BKE_gpencil_stroke_add_points(bGPDstroke *gps, const float *array, const int totpoints, const float mat[4][4])
{
for (int i = 0; i < totpoints; i++) {
bGPDspoint *pt = &gps->points[i];
@@ -531,6 +532,8 @@ void BKE_gpencil_stroke_add_points(bGPDstroke *gps, const float *array, const in
pt->x = array[x];
pt->y = array[x + 1];
pt->z = array[x + 2];
+ mul_m4_v3(mat, &pt->x);
+
pt->pressure = array[x + 3];
pt->strength = array[x + 4];
}
diff --git a/source/blender/editors/gpencil/gpencil_add_monkey.c b/source/blender/editors/gpencil/gpencil_add_monkey.c
index 6f32ea50970..5ad151bd960 100644
--- a/source/blender/editors/gpencil/gpencil_add_monkey.c
+++ b/source/blender/editors/gpencil/gpencil_add_monkey.c
@@ -1347,7 +1347,7 @@ static const float data35[261 * GP_PRIM_DATABUF_SIZE] = {
/* Monkey API */
/* add a 2D Suzanne (original model created by Matias Mendiola) */
-void ED_gpencil_create_monkey(bContext *C, bGPdata *gpd)
+void ED_gpencil_create_monkey(bContext *C, bGPdata *gpd, float mat[4][4])
{
Scene *scene = CTX_data_scene(C);
Main *bmain = CTX_data_main(C);
@@ -1377,120 +1377,123 @@ void ED_gpencil_create_monkey(bContext *C, bGPdata *gpd)
ARRAY_SET_ITEMS(color_Pupils->fill, 0.153f, 0.057f, 0.063f, 1.0f);
/* layers */
+ // TODO: validate existence
bGPDlayer *Colors = BKE_gpencil_layer_addnew(gpd, "Colors", false);
bGPDlayer *Lines = BKE_gpencil_layer_addnew(gpd, "Lines", true);
/* frames */
+ // TODO: validate existence
bGPDframe *frameColor = BKE_gpencil_frame_addnew(Colors, CFRA);
bGPDframe *frameLines = BKE_gpencil_frame_addnew(Lines, CFRA);
+ /* generate strokes */
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin, 538, "Skin", 3);
- BKE_gpencil_stroke_add_points(gps, data0, 538);
+ BKE_gpencil_stroke_add_points(gps, data0, 538, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Eyes, 136, "Eyes", 3);
- BKE_gpencil_stroke_add_points(gps, data1, 136);
+ BKE_gpencil_stroke_add_points(gps, data1, 136, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin, 2, "Skin", 3);
- BKE_gpencil_stroke_add_points(gps, data2, 2);
+ BKE_gpencil_stroke_add_points(gps, data2, 2, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Light, 1, "Skin_Light", 3);
- BKE_gpencil_stroke_add_points(gps, data3, 1);
+ BKE_gpencil_stroke_add_points(gps, data3, 1, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Light, 1, "Skin_Light", 3);
- BKE_gpencil_stroke_add_points(gps, data4, 1);
+ BKE_gpencil_stroke_add_points(gps, data4, 1, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Light, 48, "Skin_Light", 3);
- BKE_gpencil_stroke_add_points(gps, data5, 48);
+ BKE_gpencil_stroke_add_points(gps, data5, 48, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Light, 47, "Skin_Light", 3);
- BKE_gpencil_stroke_add_points(gps, data6, 47);
+ BKE_gpencil_stroke_add_points(gps, data6, 47, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Light, 162, "Skin_Light", 3);
- BKE_gpencil_stroke_add_points(gps, data7, 162);
+ BKE_gpencil_stroke_add_points(gps, data7, 162, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Light, 55, "Skin_Light", 3);
- BKE_gpencil_stroke_add_points(gps, data8, 55);
+ BKE_gpencil_stroke_add_points(gps, data8, 55, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Light, 70, "Skin_Light", 3);
- BKE_gpencil_stroke_add_points(gps, data9, 70);
+ BKE_gpencil_stroke_add_points(gps, data9, 70, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Light, 227, "Skin_Light", 3);
- BKE_gpencil_stroke_add_points(gps, data10, 227);
+ BKE_gpencil_stroke_add_points(gps, data10, 227, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Shadow, 1, "Skin_Shadow", 3);
- BKE_gpencil_stroke_add_points(gps, data11, 1);
+ BKE_gpencil_stroke_add_points(gps, data11, 1, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Shadow, 123, "Skin_Shadow", 3);
- BKE_gpencil_stroke_add_points(gps, data12, 123);
+ BKE_gpencil_stroke_add_points(gps, data12, 123, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Shadow, 125, "Skin_Shadow", 3);
- BKE_gpencil_stroke_add_points(gps, data13, 125);
+ BKE_gpencil_stroke_add_points(gps, data13, 125, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Shadow, 45, "Skin_Shadow", 3);
- BKE_gpencil_stroke_add_points(gps, data14, 45);
+ BKE_gpencil_stroke_add_points(gps, data14, 45, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Shadow, 44, "Skin_Shadow", 3);
- BKE_gpencil_stroke_add_points(gps, data15, 44);
+ BKE_gpencil_stroke_add_points(gps, data15, 44, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Shadow, 84, "Skin_Shadow", 3);
- BKE_gpencil_stroke_add_points(gps, data16, 84);
+ BKE_gpencil_stroke_add_points(gps, data16, 84, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Shadow, 56, "Skin_Shadow", 3);
- BKE_gpencil_stroke_add_points(gps, data17, 56);
+ BKE_gpencil_stroke_add_points(gps, data17, 56, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Shadow, 59, "Skin_Shadow", 3);
- BKE_gpencil_stroke_add_points(gps, data18, 59);
+ BKE_gpencil_stroke_add_points(gps, data18, 59, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Skin_Shadow, 100, "Skin_Shadow", 3);
- BKE_gpencil_stroke_add_points(gps, data19, 100);
+ BKE_gpencil_stroke_add_points(gps, data19, 100, mat);
gps = BKE_gpencil_add_stroke(frameColor, palette, color_Eyes, 136, "Eyes", 3);
- BKE_gpencil_stroke_add_points(gps, data20, 136);
+ BKE_gpencil_stroke_add_points(gps, data20, 136, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 353, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data21, 353);
+ BKE_gpencil_stroke_add_points(gps, data21, 353, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 309, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data22, 309);
+ BKE_gpencil_stroke_add_points(gps, data22, 309, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 209, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data23, 209);
+ BKE_gpencil_stroke_add_points(gps, data23, 209, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 133, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data24, 133);
+ BKE_gpencil_stroke_add_points(gps, data24, 133, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 389, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data25, 389);
+ BKE_gpencil_stroke_add_points(gps, data25, 389, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 41, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data26, 41);
+ BKE_gpencil_stroke_add_points(gps, data26, 41, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 77, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data27, 77);
+ BKE_gpencil_stroke_add_points(gps, data27, 77, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 257, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data28, 257);
+ BKE_gpencil_stroke_add_points(gps, data28, 257, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 205, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data29, 205);
+ BKE_gpencil_stroke_add_points(gps, data29, 205, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 33, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data30, 33);
+ BKE_gpencil_stroke_add_points(gps, data30, 33, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 37, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data31, 37);
+ BKE_gpencil_stroke_add_points(gps, data31, 37, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 201, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data32, 201);
+ BKE_gpencil_stroke_add_points(gps, data32, 201, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Pupils, 69, "Pupils", 3);
- BKE_gpencil_stroke_add_points(gps, data33, 69);
+ BKE_gpencil_stroke_add_points(gps, data33, 69, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Pupils, 57, "Pupils", 3);
- BKE_gpencil_stroke_add_points(gps, data34, 57);
+ BKE_gpencil_stroke_add_points(gps, data34, 57, mat);
gps = BKE_gpencil_add_stroke(frameLines, palette, color_Black, 261, "Black", 3);
- BKE_gpencil_stroke_add_points(gps, data35, 261);
+ BKE_gpencil_stroke_add_points(gps, data35, 261, mat);
}
diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h
index ac9d875a9d3..8efbfc627c7 100644
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list