UI: Freestyle UI Upgrade

Suggested and funded by [[ https://blendernpr.org/| BNPR ]], this patch aims to update the long not-updated Freestyle UI

**Why do the UI upgrade:**

  - Freestyle UI doesn't match the rest of Blender UI, it was neglected for a long time
  - The current UI makes Freestyle workflows tedious and distracting

**Highlights:**

For before/after screenshots see https://developer.blender.org/D10505

Video:
https://youtu.be/qaXhuJW_c9U

Workflow video (older revision): https://youtu.be/IqbjIq_A800

Doc patch (WIP): https://github.com/bnpr/FreestyleUIUpgrade/blob/main/freestyle-ui-upgrade-docs.diff

Reviewed By: #user_interface, Blendify, HooglyBoogly, Severin

Differential Revision: https://developer.blender.org/D10505
This commit is contained in:
Iyad Ahmed 2021-09-13 10:29:24 -04:00 committed by Aaron Carlisle
parent c9c890f196
commit 6f52ebba19
5 changed files with 876 additions and 456 deletions

File diff suppressed because it is too large Load Diff

View File

@ -115,10 +115,6 @@ static const string OPTIONS_FILE("options.xml");
static const string OPTIONS_CURRENT_DIRS_FILE("current_dirs.xml");
static const string OPTIONS_QGLVIEWER_FILE("qglviewer.xml");
// Default options
static const real DEFAULT_SPHERE_RADIUS = 1.0;
static const real DEFAULT_DKR_EPSILON = 0.0;
} // namespace Config
} /* namespace Freestyle */

View File

@ -65,9 +65,6 @@ using namespace Freestyle;
extern "C" {
#define DEFAULT_SPHERE_RADIUS 1.0f
#define DEFAULT_DKR_EPSILON 0.0f
struct FreestyleGlobals g_freestyle;
// Freestyle configuration
@ -433,14 +430,8 @@ static void prepare(Render *re, ViewLayer *view_layer, Depsgraph *depsgraph)
}
// set parameters
if (config->flags & FREESTYLE_ADVANCED_OPTIONS_FLAG) {
controller->setSphereRadius(config->sphere_radius);
controller->setSuggestiveContourKrDerivativeEpsilon(config->dkr_epsilon);
}
else {
controller->setSphereRadius(DEFAULT_SPHERE_RADIUS);
controller->setSuggestiveContourKrDerivativeEpsilon(DEFAULT_DKR_EPSILON);
}
controller->setSphereRadius(config->sphere_radius);
controller->setSuggestiveContourKrDerivativeEpsilon(config->dkr_epsilon);
controller->setFaceSmoothness((config->flags & FREESTYLE_FACE_SMOOTHNESS_FLAG) ? true : false);
controller->setCreaseAngle(RAD2DEGF(config->crease_angle));
controller->setVisibilityAlgo((config->flags & FREESTYLE_CULLING) ?

View File

@ -40,7 +40,7 @@ enum {
FREESTYLE_RIDGES_AND_VALLEYS_FLAG = 1 << 1,
FREESTYLE_MATERIAL_BOUNDARIES_FLAG = 1 << 2,
FREESTYLE_FACE_SMOOTHNESS_FLAG = 1 << 3,
FREESTYLE_ADVANCED_OPTIONS_FLAG = 1 << 4,
/* FREESTYLE_ADVANCED_OPTIONS_FLAG = 1 << 4, */ /* UNUSED */
FREESTYLE_CULLING = 1 << 5,
FREESTYLE_VIEW_MAP_CACHE = 1 << 6,
FREESTYLE_AS_RENDER_PASS = 1 << 7,

View File

@ -4597,12 +4597,12 @@ void rna_def_freestyle_settings(BlenderRNA *brna)
{FREESTYLE_CONTROL_SCRIPT_MODE,
"SCRIPT",
0,
"Python Scripting Mode",
"Python Scripting",
"Advanced mode for using style modules written in Python"},
{FREESTYLE_CONTROL_EDITOR_MODE,
"EDITOR",
0,
"Parameter Editor Mode",
"Parameter Editor",
"Basic mode for interactive style parameter editing"},
{0, NULL, 0, NULL, NULL},
};
@ -4613,7 +4613,7 @@ void rna_def_freestyle_settings(BlenderRNA *brna)
{FREESTYLE_QI_RANGE,
"RANGE",
0,
"QI Range",
"Quantitative Invisibility",
"Select feature edges within a range of quantitative invisibility (QI) values"},
{0, NULL, 0, NULL, NULL},
};
@ -4930,14 +4930,6 @@ void rna_def_freestyle_settings(BlenderRNA *brna)
prop, "Face Smoothness", "Take face smoothness into account in view map calculation");
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_Scene_freestyle_update");
prop = RNA_def_property(srna, "use_advanced_options", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", FREESTYLE_ADVANCED_OPTIONS_FLAG);
RNA_def_property_ui_text(
prop,
"Advanced Options",
"Enable advanced edge detection options (sphere radius and Kr derivative epsilon)");
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_Scene_freestyle_update");
prop = RNA_def_property(srna, "use_view_map_cache", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", FREESTYLE_VIEW_MAP_CACHE);
RNA_def_property_ui_text(
@ -4957,11 +4949,13 @@ void rna_def_freestyle_settings(BlenderRNA *brna)
prop = RNA_def_property(srna, "sphere_radius", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sphere_radius");
RNA_def_property_float_default(prop, 1.0);
RNA_def_property_range(prop, 0.0, 1000.0);
RNA_def_property_ui_text(prop, "Sphere Radius", "Sphere radius for computing curvatures");
RNA_def_property_update(prop, NC_SCENE | ND_RENDER_OPTIONS, "rna_Scene_freestyle_update");
prop = RNA_def_property(srna, "kr_derivative_epsilon", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_default(prop, 0.0);
RNA_def_property_float_sdna(prop, NULL, "dkr_epsilon");
RNA_def_property_range(prop, -1000.0, 1000.0);
RNA_def_property_ui_text(