[Bf-blender-cvs] [704811de55a] greasepencil-object: GPencil: Set 3D or 2D mode for baked strokes

Antonio Vazquez noreply at git.blender.org
Sat Apr 4 11:05:40 CEST 2020


Commit: 704811de55a4c32aa904bca3841d0edc8a313676
Author: Antonio Vazquez
Date:   Sat Apr 4 09:38:52 2020 +0200
Branches: greasepencil-object
https://developer.blender.org/rB704811de55a4c32aa904bca3841d0edc8a313676

GPencil: Set 3D or 2D mode for baked strokes

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

M	source/blender/blenkernel/intern/gpencil_geom.c
M	source/blender/editors/gpencil/gpencil_mesh.c
M	source/blender/editors/object/object_add.c

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

diff --git a/source/blender/blenkernel/intern/gpencil_geom.c b/source/blender/blenkernel/intern/gpencil_geom.c
index aa297093f19..5adb5fb06c9 100644
--- a/source/blender/blenkernel/intern/gpencil_geom.c
+++ b/source/blender/blenkernel/intern/gpencil_geom.c
@@ -2237,8 +2237,6 @@ void BKE_gpencil_convert_mesh(Main *bmain,
   }
 
   bGPdata *gpd = (bGPdata *)ob_gp->data;
-  /* Set object in 3D mode. */
-  gpd->draw_mode = GP_DRAWMODE_3D;
 
   /* Use evaluated data to get mesh with all modifiers on top. */
   Object *ob_eval = (Object *)DEG_get_evaluated_object(depsgraph, ob_mesh);
diff --git a/source/blender/editors/gpencil/gpencil_mesh.c b/source/blender/editors/gpencil/gpencil_mesh.c
index b45a0cb9852..6a60ba530c4 100644
--- a/source/blender/editors/gpencil/gpencil_mesh.c
+++ b/source/blender/editors/gpencil/gpencil_mesh.c
@@ -137,6 +137,8 @@ static int gp_bake_mesh_animation_exec(bContext *C, wmOperator *op)
   }
 
   bGPdata *gpd = (bGPdata *)ob_gpencil->data;
+  gpd->draw_mode = (project_type == GP_REPROJECT_KEEP) ? GP_DRAWMODE_3D : GP_DRAWMODE_2D;
+
   GP_SpaceConversion gsc = {NULL};
   SnapObjectContext *sctx = NULL;
   if (project_type != GP_REPROJECT_KEEP) {
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index 4b85eb8c9b6..8ddc91772a1 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -2219,7 +2219,7 @@ static int convert_exec(bContext *C, wmOperator *op)
   Nurb *nu;
   MetaBall *mb;
   Mesh *me;
-  Object *gpencil_ob = NULL;
+  Object *ob_gpencil = NULL;
   const short target = RNA_enum_get(op->ptr, "target");
   bool keep_original = RNA_boolean_get(op->ptr, "keep_original");
 
@@ -2350,15 +2350,19 @@ static int convert_exec(bContext *C, wmOperator *op)
       mat4_to_loc_rot_size(loc, rot, size, ob->obmat);
       mat3_to_eul(eul, rot);
 
-      gpencil_ob = ED_gpencil_add_object(C, loc, local_view_bits);
-      copy_v3_v3(gpencil_ob->loc, loc);
-      copy_v3_v3(gpencil_ob->rot, eul);
-      copy_v3_v3(gpencil_ob->scale, size);
+      ob_gpencil = ED_gpencil_add_object(C, loc, local_view_bits);
+      copy_v3_v3(ob_gpencil->loc, loc);
+      copy_v3_v3(ob_gpencil->rot, eul);
+      copy_v3_v3(ob_gpencil->scale, size);
       unit_m4(matrix);
+      /* Set object in 3D mode. */
+      bGPdata *gpd = (bGPdata *)ob_gpencil->data;
+      gpd->draw_mode = GP_DRAWMODE_3D;
+
       BKE_gpencil_convert_mesh(bmain,
                                depsgraph,
                                scene,
-                               gpencil_ob,
+                               ob_gpencil,
                                ob,
                                angle,
                                thickness,
@@ -2370,19 +2374,19 @@ static int convert_exec(bContext *C, wmOperator *op)
       gpencilConverted = true;
 
       /* Remove unused materials. */
-      int actcol = gpencil_ob->actcol;
-      for (int slot = 1; slot <= gpencil_ob->totcol; slot++) {
-        while (slot <= gpencil_ob->totcol &&
-               !BKE_object_material_slot_used(gpencil_ob->data, slot)) {
-          gpencil_ob->actcol = slot;
-          BKE_object_material_slot_remove(CTX_data_main(C), gpencil_ob);
+      int actcol = ob_gpencil->actcol;
+      for (int slot = 1; slot <= ob_gpencil->totcol; slot++) {
+        while (slot <= ob_gpencil->totcol &&
+               !BKE_object_material_slot_used(ob_gpencil->data, slot)) {
+          ob_gpencil->actcol = slot;
+          BKE_object_material_slot_remove(CTX_data_main(C), ob_gpencil);
 
           if (actcol >= slot) {
             actcol--;
           }
         }
       }
-      gpencil_ob->actcol = actcol;
+      ob_gpencil->actcol = actcol;
     }
     else if (ob->type == OB_MESH) {
       ob->flag |= OB_DONE;
@@ -2523,10 +2527,10 @@ static int convert_exec(bContext *C, wmOperator *op)
            * Nurbs Surface are not supported.
            */
           ushort local_view_bits = (v3d && v3d->localvd) ? v3d->local_view_uuid : 0;
-          gpencil_ob = ED_gpencil_add_object(C, ob->loc, local_view_bits);
-          copy_v3_v3(gpencil_ob->rot, ob->rot);
-          copy_v3_v3(gpencil_ob->scale, ob->scale);
-          BKE_gpencil_convert_curve(bmain, scene, gpencil_ob, ob, false, false, true);
+          ob_gpencil = ED_gpencil_add_object(C, ob->loc, local_view_bits);
+          copy_v3_v3(ob_gpencil->rot, ob->rot);
+          copy_v3_v3(ob_gpencil->scale, ob->scale);
+          BKE_gpencil_convert_curve(bmain, scene, ob_gpencil, ob, false, false, true);
           gpencilConverted = true;
         }
       }



More information about the Bf-blender-cvs mailing list