Commit Graph

19 Commits

Author SHA1 Message Date
Tamito Kajiyama
6bc5d5258f Stroke geometry modifiers
Added a set of stroke geometry modifiers to the Geometry tab of line styles
in the Parameter Editor mode.  Now the following stroke geometry modifiers are
available, each with a set of animateable parameters:
- Sampling: changes the resolution of stroke backbone polylines.
- Bezier Curve: replace stroke backbone with a Bezier approximation of the
  stroke backbone.
- Sinus Displacement: add sinus displacement to stroke backbone.
- Spatial Noise: add spatial noise to stroke backbone.
- Perlin Noise 1D: add one-dimensional Perlin noise to stroke backbone.
- Perlin Noise 2D: add two-dimensional Perlin noise to stroke backbone.
- Backbone Stretcher: stretch the beginning and the end of strokes.
- Tip Remover: remove a piece of stroke at the beginning and the end of strokes.

To branch users: When you have a .blend file with Freestyle options specified,
you may want to add a Sampling modifier with the 'sampling' value set to 5.
This value specifies a resolution of polylines for line drawing in Freestyle.
If no sampling modifier is specified, your line drawing will result in coarse
polylines.  Before geometry modifiers were introduced, this initial sampling
was automatically done.  Now the initial sampling is a tunable parameter that
can be omitted, allowing better control on polyline resolution.
2011-08-19 14:05:11 +00:00
Tamito Kajiyama
66950123f1 Added a proper getName() method to MaterialBoundaryUP0D. 2011-08-13 00:26:18 +00:00
Tamito Kajiyama
8e4e36874c Removed unnecessary debug print statements. 2011-08-13 00:19:58 +00:00
Tamito Kajiyama
5057810bda New line style option for splitting chains of feature edges at material boundaries. 2011-08-13 00:05:25 +00:00
Tamito Kajiyama
0a9094a8e3 New line style modifiers for changing line color, alpha transparency, and
line thickness based on object materials.  Accessible material attributes
are diffuse color, specular color, specular hardness, and alpha.
2011-07-24 23:29:19 +00:00
Tamito Kajiyama
4c3140004a Fixed a bug introduced in the last commit to address the issue
of cap shaders.
2011-07-03 07:48:19 +00:00
Tamito Kajiyama
5a516098fc Fixed cap shaders that failed with zero length strokes. 2011-07-02 16:27:52 +00:00
Tamito Kajiyama
3e11ad64d5 Fix for the Distance from Object modifier. The problem was
reported by ikeahloe.  Thanks!
2011-04-12 22:30:18 +00:00
Tamito Kajiyama
949a752ddd Made stroke rendering stability fixes, with the aim of addressing
occasional unexpected long lines.

1. The Parameter Editor mode was extended to prevent strokes from
doing quick U-turns that "enable" a known bug in strip creation
that generates unexpected long lines in question.

2. A verbose warning message was added to make the existence of
the strip creation bug visible to users.  When the bug affects the
stroke rendering, the following warning shows up in the console:

> Warning: problem in strip creation (the strip is most likely doing a U-turn).

3. The extrapolation option of CurveMapping (used in alpha and
thickness modifiers in the Parameter Editor mode) was identified
as another source of unexpected long lines.  Now the extrapolation
option is unconditionally disabled (even when users enable it
through the GUI).
2011-01-31 20:57:39 +00:00
Tamito Kajiyama
79547351fe Fix for a bug in the Distance from Object modifiers.
The bug was reported by Jonathan Hudson, thanks!
2010-12-04 09:58:58 +00:00
Tamito Kajiyama
a9e50bde82 A few attempts to reduce the amount of memory consumption in Freestyle.
* Made changes to the Controller so that dynamically allocated
memory areas (e.g. imported mesh data, winged edges, and a view map)
are released soon after they become unnecessary.

* Added a new feature edge selection criterion based on image border.

When the "Selection by Image Border" option is enabled, feature edges
are selected only if they are within the border of the image being
rendered.  The border is defined either by the frame size or a border
region (specified by the Shift-B key in a 3D View window).  When large
scenes are rendered, this clipping by the image border leads to less
memory consumption.

* Enabled the "Silhouette", "Border", and "Crease" edge types of
the Selection by Edge Types option by default.

When no edge types are specified, all feature edges including "Ridge",
"Valley" and "Suggestive Contour" are detected at the cost of extra
memory consumption.  Disabling these three edge types and enabling
some other edge type leads to less memory consumption.  This change
is intended to help new Freestyle users by providing a typical, low
memory consumption default setting.

* Slightly rearranged the UI controls for feature edge selection.
2010-12-03 23:17:49 +00:00
Tamito Kajiyama
1bfcba31d2 New feature edge selection criterion based on object groups.
The Freestyle tab in the Render buttons has a couple of new
options "Group" and "Group Negation".  The Group option specifies
a group of objects (defined through the Groups tab in the Object
buttons), while the Group Negation value is either INCLUSIVE or
EXCLUSIVE.  If INCLUSIVE, feature edges belonging to some object
in the group are selected.  Otherwise, those feature edges not
belonging to any object in the group are selected.
2010-12-02 23:50:10 +00:00
Tamito Kajiyama
86e433728d Added support for dashed line in the Parameter Editor mode. 2010-10-23 20:42:26 +00:00
Tamito Kajiyama
cc77207ca4 Fix for missing toggle switches to enable/disable linesets. Also gave
uniform property name "use" to all toggle switches in Freestyle-related
options, according to recent RNA renaming.
2010-10-10 23:34:27 +00:00
Tamito Kajiyama
84f5a9a718 Added support for three types of stroke caps that determines the shape
of both ends of strokes.  The three cap types are: 1) butt caps (flat);
2) round caps (half-circle); and 3) square caps (flat and extended).
Also implemented an option to join those feature edges of the same
object.  These options are available in the "Stroke" tab of the
"Freestyle: Line Style" panel in the Render buttons.
2010-10-10 22:50:32 +00:00
Tamito Kajiyama
4cfdedbe61 Implemented "Distance from Object" color/alpha/thickness modifiers
in the new Parameter Editor mode.
2010-08-01 22:11:57 +00:00
Tamito Kajiyama
092313a89d Implemented "Distance from Camera" color/alpha/thickness modifier in
the new Parameter Editor mode.  Refactored shader class definitions
and the way of iteration over stroke vertices.
2010-08-01 16:02:34 +00:00
Tamito Kajiyama
a99a466fee * Made the Parameter Editor mode much more functional. Edge selection
criteria, as well as the color/alpha/thickness Along Stroke modifiers
now work.

* Added more curve blend types.  The default is set to "MIX".
2010-07-28 00:43:45 +00:00
Tamito Kajiyama
25ce805a58 * Implemented the basic stroke rendering functionality for the new
Parameter Editor mode.  This is a WIP commit.  Only the base line
color, base alpha transparency, and base line thickness are respected.
More additions are anticipated to account for other parameters.

* Added FRS_finish_stroke_rendering() to clean Freestyle-related
temporary resources after stroke rendering.

* Some functions in FRS_freestyle.cpp are now declared as static
functions, so as not to mess up the program-wide name space.

* Made the StyleModule class inheritable, and defined new subclass
BlenderStyleModule that takes a Text object instead of a file name.
2010-07-26 01:23:27 +00:00