[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