From eeeb845d33e81afbc8ed127e6ab4ae7b18472a54 Mon Sep 17 00:00:00 2001 From: Folkert de Vries Date: Fri, 10 Jul 2015 21:57:23 +0900 Subject: Freestyle: new stroke modifiers This patch introduces a couple new stroke modifiers. The ones currently implemented are based on prototypes by @kjym3 and myself. The new modifiers: - Tangent - Thickness noise - Crease Angle - Simplification - Curvature 3D The documentation for these new modifier types can be found [[ http://www.blender.org/manual/render/freestyle/parameter_editor/index.html | in the manual ]]: {F134441} (left: AnisotropicThicknessShader, right: NoiseThicknessShader) {F140499} (left: Curvature 3D, right: Simplification) Author: Folkert de Vries (flokkievids) Reviewers: kjym3 Subscribers: #user_interface, plasmasolutions, kjym3 Projects: #bf_blender Differential Revision: https://developer.blender.org/D963 --- source/blender/blenloader/intern/readfile.c | 73 ++++++++++++++++++++++++++++ source/blender/blenloader/intern/writefile.c | 72 +++++++++++++++++++++++++++ 2 files changed, 145 insertions(+) (limited to 'source/blender/blenloader') diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 9976594ad0b..2eba2b274b3 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -7371,6 +7371,30 @@ static void direct_link_linestyle_color_modifier(FileData *fd, LineStyleModifier m->color_ramp = newdataadr(fd, m->color_ramp); } break; + case LS_MODIFIER_TANGENT: + { + LineStyleColorModifier_Tangent *m = (LineStyleColorModifier_Tangent *)modifier; + m->color_ramp = newdataadr(fd, m->color_ramp); + } + break; + case LS_MODIFIER_NOISE: + { + LineStyleColorModifier_Noise *m = (LineStyleColorModifier_Noise *)modifier; + m->color_ramp = newdataadr(fd, m->color_ramp); + } + break; + case LS_MODIFIER_CREASE_ANGLE: + { + LineStyleColorModifier_CreaseAngle *m = (LineStyleColorModifier_CreaseAngle *)modifier; + m->color_ramp = newdataadr(fd, m->color_ramp); + } + break; + case LS_MODIFIER_CURVATURE_3D: + { + LineStyleColorModifier_Curvature_3D *m = (LineStyleColorModifier_Curvature_3D *)modifier; + m->color_ramp = newdataadr(fd, m->color_ramp); + } + break; } } @@ -7405,6 +7429,34 @@ static void direct_link_linestyle_alpha_modifier(FileData *fd, LineStyleModifier direct_link_curvemapping(fd, m->curve); } break; + case LS_MODIFIER_TANGENT: + { + LineStyleAlphaModifier_Tangent *m = (LineStyleAlphaModifier_Tangent *)modifier; + m->curve = newdataadr(fd, m->curve); + direct_link_curvemapping(fd, m->curve); + } + break; + case LS_MODIFIER_NOISE: + { + LineStyleAlphaModifier_Noise *m = (LineStyleAlphaModifier_Noise *)modifier; + m->curve = newdataadr(fd, m->curve); + direct_link_curvemapping(fd, m->curve); + } + break; + case LS_MODIFIER_CREASE_ANGLE: + { + LineStyleAlphaModifier_CreaseAngle *m = (LineStyleAlphaModifier_CreaseAngle *)modifier; + m->curve = newdataadr(fd, m->curve); + direct_link_curvemapping(fd, m->curve); + } + break; + case LS_MODIFIER_CURVATURE_3D: + { + LineStyleAlphaModifier_Curvature_3D *m = (LineStyleAlphaModifier_Curvature_3D *)modifier; + m->curve = newdataadr(fd, m->curve); + direct_link_curvemapping(fd, m->curve); + } + break; } } @@ -7439,6 +7491,27 @@ static void direct_link_linestyle_thickness_modifier(FileData *fd, LineStyleModi direct_link_curvemapping(fd, m->curve); } break; + case LS_MODIFIER_TANGENT: + { + LineStyleThicknessModifier_Tangent *m = (LineStyleThicknessModifier_Tangent *)modifier; + m->curve = newdataadr(fd, m->curve); + direct_link_curvemapping(fd, m->curve); + } + break; + case LS_MODIFIER_CREASE_ANGLE: + { + LineStyleThicknessModifier_CreaseAngle *m = (LineStyleThicknessModifier_CreaseAngle *)modifier; + m->curve = newdataadr(fd, m->curve); + direct_link_curvemapping(fd, m->curve); + } + break; + case LS_MODIFIER_CURVATURE_3D: + { + LineStyleThicknessModifier_Curvature_3D *m = (LineStyleThicknessModifier_Curvature_3D *)modifier; + m->curve = newdataadr(fd, m->curve); + direct_link_curvemapping(fd, m->curve); + } + break; } } diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index aa44b484f03..25d3f4f0dfb 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -3354,6 +3354,18 @@ static void write_linestyle_color_modifiers(WriteData *wd, ListBase *modifiers) case LS_MODIFIER_MATERIAL: struct_name = "LineStyleColorModifier_Material"; break; + case LS_MODIFIER_TANGENT: + struct_name = "LineStyleColorModifier_Tangent"; + break; + case LS_MODIFIER_NOISE: + struct_name = "LineStyleColorModifier_Noise"; + break; + case LS_MODIFIER_CREASE_ANGLE: + struct_name = "LineStyleColorModifier_CreaseAngle"; + break; + case LS_MODIFIER_CURVATURE_3D: + struct_name = "LineStyleColorModifier_Curvature_3D"; + break; default: struct_name = "LineStyleColorModifier"; /* this should not happen */ } @@ -3373,6 +3385,18 @@ static void write_linestyle_color_modifiers(WriteData *wd, ListBase *modifiers) case LS_MODIFIER_MATERIAL: writestruct(wd, DATA, "ColorBand", 1, ((LineStyleColorModifier_Material *)m)->color_ramp); break; + case LS_MODIFIER_TANGENT: + writestruct(wd, DATA, "ColorBand", 1, ((LineStyleColorModifier_Tangent *)m)->color_ramp); + break; + case LS_MODIFIER_NOISE: + writestruct(wd, DATA, "ColorBand", 1, ((LineStyleColorModifier_Noise *)m)->color_ramp); + break; + case LS_MODIFIER_CREASE_ANGLE: + writestruct(wd, DATA, "ColorBand", 1, ((LineStyleColorModifier_CreaseAngle *)m)->color_ramp); + break; + case LS_MODIFIER_CURVATURE_3D: + writestruct(wd, DATA, "ColorBand", 1, ((LineStyleColorModifier_Curvature_3D *)m)->color_ramp); + break; } } } @@ -3396,6 +3420,18 @@ static void write_linestyle_alpha_modifiers(WriteData *wd, ListBase *modifiers) case LS_MODIFIER_MATERIAL: struct_name = "LineStyleAlphaModifier_Material"; break; + case LS_MODIFIER_TANGENT: + struct_name = "LineStyleAlphaModifier_Tangent"; + break; + case LS_MODIFIER_NOISE: + struct_name = "LineStyleAlphaModifier_Noise"; + break; + case LS_MODIFIER_CREASE_ANGLE: + struct_name = "LineStyleAlphaModifier_CreaseAngle"; + break; + case LS_MODIFIER_CURVATURE_3D: + struct_name = "LineStyleAlphaModifier_Curvature_3D"; + break; default: struct_name = "LineStyleAlphaModifier"; /* this should not happen */ } @@ -3415,6 +3451,18 @@ static void write_linestyle_alpha_modifiers(WriteData *wd, ListBase *modifiers) case LS_MODIFIER_MATERIAL: write_curvemapping(wd, ((LineStyleAlphaModifier_Material *)m)->curve); break; + case LS_MODIFIER_TANGENT: + write_curvemapping(wd, ((LineStyleAlphaModifier_Tangent *)m)->curve); + break; + case LS_MODIFIER_NOISE: + write_curvemapping(wd, ((LineStyleAlphaModifier_Noise *)m)->curve); + break; + case LS_MODIFIER_CREASE_ANGLE: + write_curvemapping(wd, ((LineStyleAlphaModifier_CreaseAngle *)m)->curve); + break; + case LS_MODIFIER_CURVATURE_3D: + write_curvemapping(wd, ((LineStyleAlphaModifier_Curvature_3D *)m)->curve); + break; } } } @@ -3441,6 +3489,18 @@ static void write_linestyle_thickness_modifiers(WriteData *wd, ListBase *modifie case LS_MODIFIER_CALLIGRAPHY: struct_name = "LineStyleThicknessModifier_Calligraphy"; break; + case LS_MODIFIER_TANGENT: + struct_name = "LineStyleThicknessModifier_Tangent"; + break; + case LS_MODIFIER_NOISE: + struct_name = "LineStyleThicknessModifier_Noise"; + break; + case LS_MODIFIER_CREASE_ANGLE: + struct_name = "LineStyleThicknessModifier_CreaseAngle"; + break; + case LS_MODIFIER_CURVATURE_3D: + struct_name = "LineStyleThicknessModifier_Curvature_3D"; + break; default: struct_name = "LineStyleThicknessModifier"; /* this should not happen */ } @@ -3460,6 +3520,15 @@ static void write_linestyle_thickness_modifiers(WriteData *wd, ListBase *modifie case LS_MODIFIER_MATERIAL: write_curvemapping(wd, ((LineStyleThicknessModifier_Material *)m)->curve); break; + case LS_MODIFIER_TANGENT: + write_curvemapping(wd, ((LineStyleThicknessModifier_Tangent *)m)->curve); + break; + case LS_MODIFIER_CREASE_ANGLE: + write_curvemapping(wd, ((LineStyleThicknessModifier_CreaseAngle *)m)->curve); + break; + case LS_MODIFIER_CURVATURE_3D: + write_curvemapping(wd, ((LineStyleThicknessModifier_Curvature_3D *)m)->curve); + break; } } } @@ -3510,6 +3579,9 @@ static void write_linestyle_geometry_modifiers(WriteData *wd, ListBase *modifier case LS_MODIFIER_2D_TRANSFORM: struct_name = "LineStyleGeometryModifier_2DTransform"; break; + case LS_MODIFIER_SIMPLIFICATION: + struct_name = "LineStyleGeometryModifier_Simplification"; + break; default: struct_name = "LineStyleGeometryModifier"; /* this should not happen */ } -- cgit v1.2.3