Commit Graph

177 Commits

Author SHA1 Message Date
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
Tamito Kajiyama
d347a27a97 * Bug fixes by Stéphane Grabli with respect to pyZDependingThicknessShader,
pyMaterialColorShader, pyBluePrintEllipsesShader and pyBluePrintSquaresShader.

* Fixes for Vector instantiation that now takes only a sequence object of
2, 3, or 4 elements -- an API change in revision 28417.

* Deleted vector.py that is no longer used.
2010-07-06 20:07:07 +00:00
Tamito Kajiyama
2385c51360 Renamed FrsCurve, FrsNoise and FrsMaterial Python extension types
to those names without the "Frs" prefix.  These types are part of
the Freestyle module, so that there is no need to make their names
globally unique.
2010-05-09 18:05:33 +00:00
Tamito Kajiyama
dfe2f8dc03 Merged changes in the trunk up to revision 28247. 2010-04-18 02:03:19 +00:00
Tamito Kajiyama
cc3ca0f041 Fixed a TabError: inconsistent use of tabs and spaces in indentation. 2010-04-10 14:29:11 +00:00
Tamito Kajiyama
1ff038397f Made standard style modules compatible with Python 3. 2009-09-27 00:58:38 +00:00
Tamito Kajiyama
1ed4d4cbfb Reverted all changes (i.e., deletion) in release/scripts/freestyle. 2009-09-19 22:02:15 +00:00
Tamito Kajiyama
be50ce61be Merged
https://svn.blender.org/svnroot/bf-blender/branches/soc-2008-mxcurioni (r22789) and
https://svn.blender.org/svnroot/bf-blender/trunk/blender (r23338)
with the "Ignore ancestry" and "Ignore line endings" options enabled (using
TortoiseSVN on Windows).

After the merge operation, all changes (i.e., deletion) in source/blender/freestyle/
were reverted in order to keep the primary source tree of the Freestyle renderer.
2009-09-18 22:25:49 +00:00
Tamito Kajiyama
993ded0aff Replaced missing integrateDouble() by integrate() newly implemented
in revision 21954.
2009-07-28 00:34:22 +00:00
Tamito Kajiyama
9f79d8ae67 * freestyle_init.py: Removed all classes for wrapping extension types.
This allows users to test the types of those objects that are returned
by API functions, by means of usual Python idioms such as "type(I) is T"
and "isinstance(I, T)".

* Removed all occurrences of ViewVertex::castToTVertex() in the following
modules and rewrote the code segments using it by means of the "type(I)
is T" idiom mentioned above:

  ChainingIterators.py
  PredicatesU1D.py

* Replaced all occurrences of vector.Vec2, vector.Vec3, Vec2f and Vec3f
by Blender.Mathutils.Vector in the following modules:

  anisotropic_diffusion.py
  Functions0D.py
  shaders.py
  sketchy_topology_broken.py

* shaders.py: Fixed NameError's concerning math.pow().

* shaders.py: Added a Python equivalent of getFEdge function, defined
in source\blender\freestyle\intern\view_map\Functions0D.cpp as follows:

  FEdge* Functions0D::getFEdge(Interface0D& it1, Interface0D& it2) {
    return it1.getFEdge(it2);
  }

* shaders.py: Replaced fe.qi() by fe.viewedge().qi().

* contour.py: Fixed the import statement for freestyle_init.py.
2009-07-27 20:13:47 +00:00
Tamito Kajiyama
c49bdd1a14 Made appropriate changes according to the fix in Revision 19287 concerning the IntegrationType type. 2009-03-14 13:23:35 +00:00
Tamito Kajiyama
17555efed7 Added changes to support Python's native iterator protocol in Stroke and StrokeVertexIterator.
freestyle_init.py
* Added a generic getName() method that allows subclasses to omit the method to return their class names.

BPy_Convert.cpp
BPy_Convert.h
* Added to BPy_StrokeVertexIterator_from_StrokeVertexIterator() a second argument to specify the direction (reversed or not) of the iterator to be created.

BPy_Stroke.cpp
* Added support for Python's native iterator protocol.
* Added code to parse the optional argument of strokeVerticesBegin().

BPy_StrokeVertexIterator.cpp
BPy_StrokeVertexIterator.h
* Added support for Python's native iterator protocol.

Stroke.cpp
* Fixed a null pointer reference.

Stroke.h
* Added new method Stroke::strokeVerticeAt(i) that returns the i-th StrokeVertex of the Stroke.
2008-12-01 11:14:33 +00:00
Maxime Curioni
204f48c74e soc-2008-mxcurioni: sending files in release/scripts/freestyle folder 2008-09-30 04:17:39 +00:00