[Bf-blender-cvs] [78dc8141122] lanpr-under-gp: LineArt: Preview ranges and skipping in baking.

YimingWu noreply at git.blender.org
Wed Sep 23 04:32:59 CEST 2020


Commit: 78dc8141122662602da13130e3d3d4df6cf0a8b8
Author: YimingWu
Date:   Wed Sep 23 10:32:35 2020 +0800
Branches: lanpr-under-gp
https://developer.blender.org/rB78dc8141122662602da13130e3d3d4df6cf0a8b8

LineArt: Preview ranges and skipping in baking.

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

M	release/scripts/startup/bl_ui/properties_render.py
M	source/blender/editors/lineart/lineart_cpu.c
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_scene.c

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

diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 5b8b3877ab9..0797adc2d9f 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -772,6 +772,16 @@ class RENDER_PT_lineart_baking(RenderButtonsPanel, Panel):
         layout.use_property_decorate = False
 
         layout.prop(lineart, "gpencil_overwrite", text='Overwrite')
+
+        layout.prop(lineart, "baking_final_range")
+
+        if not lineart.baking_final_range:
+            col = layout.column(align=True)
+            col.prop(lineart, "baking_preview_start", text='Start')
+            col.prop(lineart, "baking_preview_end", text='End')
+
+        layout.prop(lineart, "baking_skip")
+
         layout.operator('scene.lineart_bake_strokes')
 
 
diff --git a/source/blender/editors/lineart/lineart_cpu.c b/source/blender/editors/lineart/lineart_cpu.c
index 1497cdb14cc..dc7b3ea1b98 100644
--- a/source/blender/editors/lineart/lineart_cpu.c
+++ b/source/blender/editors/lineart/lineart_cpu.c
@@ -4112,12 +4112,16 @@ static int lineart_gpencil_bake_strokes_invoke(bContext *C,
                                                const wmEvent *UNUSED(event))
 {
   Scene *scene = CTX_data_scene(C);
+  SceneLineart *lineart = &scene->lineart;
   Depsgraph *dg = CTX_data_depsgraph_pointer(C);
   int frame;
-  int frame_begin = MAX2(scene->r.sfra, 1);
-  int frame_end = scene->r.efra;
+  int frame_begin = ((lineart->flags & LRT_BAKING_FINAL_RANGE) ? (scene->r.sfra, 1) :
+                                                                 lineart->baking_preview_start);
+  int frame_end = ((lineart->flags & LRT_BAKING_FINAL_RANGE) ? scene->r.efra :
+                                                               lineart->baking_preview_end);
   int frame_total = frame_end - frame_begin;
   int frame_orig = scene->r.cfra;
+  int frame_increment = lineart->baking_skip + 1;
   LineartGpencilModifierData *lmd;
   LineartRenderBuffer *rb;
   int use_types;
@@ -4126,7 +4130,7 @@ static int lineart_gpencil_bake_strokes_invoke(bContext *C,
   lineart_share.wm = CTX_wm_manager(C);
   lineart_share.main_window = CTX_wm_window(C);
 
-  for (frame = frame_begin; frame <= frame_end; frame++) {
+  for (frame = frame_begin; frame <= frame_end; frame += frame_increment) {
 
     /* Reset flags. LRT_SYNC_IGNORE prevent any line art modifiers run calculation function when
      * depsgraph calls for modifier evalurates. */
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index ee1f5d75c2c..ce5072e5517 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1673,6 +1673,7 @@ typedef enum eLineartMainFlags {
   LRT_ALLOW_DUPLI_OBJECTS = (1 << 9),
   LRT_ALLOW_OVERLAPPING_EDGES = (1 << 10),
   LRT_ALLOW_CLIPPING_BOUNDARIES = (1 << 11),
+  LRT_BAKING_FINAL_RANGE = (1 << 12),
 } eLineartMainFlags;
 
 typedef struct SceneLineart {
@@ -1690,14 +1691,17 @@ typedef struct SceneLineart {
   /** 0-1 range for cosine angle */
   float crease_threshold;
 
-  int _pad;
-
   /**  0-PI angle, for splitting strokes at sharp points */
   float angle_splitting_threshold;
 
   /* CPU mode */
   float chaining_geometry_threshold;
   float chaining_image_threshold;
+
+  /* Baking */
+  int baking_preview_start;
+  int baking_preview_end;
+  int baking_skip; /* 0 for every frame, 1 for every other frame and so on. */
 } SceneLineart;
 
 typedef struct SceneGpencil {
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 65d20fcec6d..0e6f478701e 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -7454,6 +7454,24 @@ static void rna_def_scene_lineart(BlenderRNA *brna)
   RNA_def_property_ui_range(prop, 0.0f, 0.3f, 0.001f, 4);
   RNA_def_property_range(prop, 0.0f, 1.0f);
   RNA_def_property_update(prop, NC_SCENE, "rna_lineart_update");
+
+  prop = RNA_def_property(srna, "baking_final_range", PROP_BOOLEAN, PROP_NONE);
+  RNA_def_property_boolean_sdna(prop, NULL, "flags", LRT_BAKING_FINAL_RANGE);
+  RNA_def_property_boolean_default(prop, 1);
+  RNA_def_property_ui_text(
+      prop, "Final Range", "Bake final frame ranges instead of preview range.");
+
+  prop = RNA_def_property(srna, "baking_preview_start", PROP_INT, PROP_NONE);
+  RNA_def_property_ui_text(prop, "Preview start", "First frame to be baked in preview.");
+  RNA_def_property_range(prop, 0, 100000);
+
+  prop = RNA_def_property(srna, "baking_preview_end", PROP_INT, PROP_NONE);
+  RNA_def_property_ui_text(prop, "Preview end", "Last frame to be baked in preview.");
+  RNA_def_property_range(prop, 0, 100000);
+
+  prop = RNA_def_property(srna, "baking_skip", PROP_INT, PROP_NONE);
+  RNA_def_property_ui_text(prop, "Skip", "Skipping frames when baking.");
+  RNA_def_property_range(prop, 0, 1000);
 }
 
 void RNA_def_scene(BlenderRNA *brna)



More information about the Bf-blender-cvs mailing list