Commit Graph

89 Commits

Author SHA1 Message Date
1f2136b329 Python/Depsgraph: bpy.data.*.is_updated now detects add/remove of any datablock.
Previously this only worked for some datablocks relevant to rendering, now it
can be used to detect if any type of datablock was added or removed (but not
yet to detect if it was modified, we need many more depsgraph tags for that).

Most of the changes are some function parameter changes, the important parts
are the DAG_id_type_tag calls.

Reviewed By: sergey, brecht

Differential Revision: https://developer.blender.org/D195
2014-01-15 16:47:53 +01:00
74a4ac85f4 Changes to Freestyle default parameters:
- The "Same Object" chaining option enabled (see follow-up discussions in Bug #36629).
- Sphere radius set to 0.1 (was 1.0 resulting in a longer computation time).
2013-09-08 17:56:04 +00:00
397da50002 style cleanup: switch statements, include break statements within braces & indent.
also indent case's within the switch (we already did both of these almost everywhere)
2013-07-19 15:23:42 +00:00
fa3699f067 fix errors in code
- BKE_mball_center_median(), didn't work.
- clip_refresh was removing handlers from wrong space.
- new_modifier, replace strcpy with BLI_strncpy
2013-07-13 05:50:35 +00:00
8df319f5e6 minor fixes for freestyle
- update copying code for linestyles to copy gaps
- update copying code for freestyle line modifiers to copy mapping flags and seeds
- fix drawing code for Material modifiers after a recent refactoring
2013-04-25 16:23:23 +00:00
7dde355185 fix [#34958] keyframe many items would fail if there was a (") in the text. 2013-04-23 20:10:22 +00:00
7072f234d3 Updated default line style parameters.
- Line color set to black.
- Line thickness set to 3.
Based on review comments by IRIE Shinsuke.
2013-03-30 16:42:59 +00:00
62cede96d3 A major code update for making the DNA file specification of Freestyle settings
and RNA for it independent of the build flag for enabling Freestyle.  Suggested
by Sergey Sharybin through a code review of the branch.

* Many #ifdef WITH_FREESTYLE blocks were removed to always have Freestyle-specific
DNA file specification and RNA for it built in Blender.  This will allow Freestyle
setting survive even when a non-Freestyle build is used for loading and saving
files.  It is noted that operations are still conditionally built through #ifdef
WITH_FREESTYLE blocks.

* To this end, new blenkernel files BKE_freestyle.h and intern/freestyle.c have
been added.  All API functions in FRS_freestyle_config.h as well as some of those
in FRS_freestyle.h were moved to the new files.  Now the relocated API functions
have BKE_ prefix instead of FRS_.
2013-03-23 03:00:37 +00:00
0fd8e638b6 Fix for default values different from the factory settings.
Suggested by IRIE Shinsuke through a code review of the branch.
2013-03-21 21:30:05 +00:00
cde0230a98 Removed goto's as suggested first by Bastien Montagne and also by Sergey Sharybin
through a code review of the branch.
2013-03-20 00:08:42 +00:00
e1ce7f3f85 Code clean-up suggested by Sergey Sharybin through a code review of the branch.
* Removed the checks of NULL pointers after malloc/calloc.
* Replaced repeated cast operations with a temporary variable initialized with one cast operation.
* Removed an unused switch block (meant to be a place to put per-modifier resource management code).
2013-03-19 23:54:14 +00:00
c1ceab1281 Merged changes in the trunk up to revision 55357.
Resolved conflicts:
release/datafiles/startup.blend
source/blender/editors/space_nla/nla_buttons.c

Also updated source/blender/blenkernel/intern/linestyle.c as a follow-up of
recent changes for the use of bool.
2013-03-18 00:48:59 +00:00
53d845ba69 A big cleaning patch by Bastien Montagne (thanks a lot!)
* Split and moved Cycles’ render layers panels into the render_layer
context as well (would be nice to hide this context when not needed,
e.g. with the BGE, but this is not so easy to do nicely...).

* Fixed some inconsistencies with trunk (probably due to svn merge
glitches) using r52858 as reference.  Also recovered the missing
release/bin/blender-softwaregl file.

* A bunch of style code fixes in Blender's own code (not Freestyle
itself yet): line lengths, spaces around operators, block formatting,
headers, etc.  In rna_linestyle.c, color_blend_items was replaced by
ramp_blend_items (exported from rna_material.c).
2012-12-11 22:00:22 +00:00
5083e0737f All angle properties were switched from degrees to radians (using PROP_ANGLE
RNA subtype), since Freestyle internally use angles in radians.
A patch set by Bastien Montagne (many thanks!)

NOTICE FOR BRANCH USERS:
This commit may break line drawing settings of already saved Freestyle files.
All angles are now treated as radians instead of degrees, so collections of
angle values might be necessary in order to recover previous visual results.
Affected properties are:
- Crease Angle in the edge detection options
- Min 2D Angle in the 'Splitting' section of a line style
- Max 2D Angle in the 'Splitting' section of a line style
- 'orientation' parameter of the Calligraphy thickness modifier
- 'angle' parameter of the PerlinNoise1D geometry modifier
- 'angle' parameter of the PerlinNoise2D geometry modifier
- 'angle' parameter of the 2DTransform geometry modifier
2012-12-09 23:19:46 +00:00
3c4987f983 Fix for a number of compiler warnings as well as a bug hidden by the warnings.
Patch contribution by Bastien Montagne, thanks!
2012-12-08 22:24:41 +00:00
8925ed1420 Merged changes in the trunk up to revision 46557.
Conflicts resolved:
source/blender/blenkernel/intern/material.c
source/blender/blenkernel/intern/subsurf_ccg.c
source/blender/blenloader/intern/readfile.c
source/blender/editors/animation/anim_channels_defines.c
source/blender/makesrna/intern/rna_scene.c

Additional changes:
* Fix for recent changes of BKE_* function renaming.
* Fix for an "attempt to free NULL pointer" in BlenderStrokeRenderer::RenderStrokeRepBasic().
2012-05-11 22:48:41 +00:00
e94abda66d New options in the Parameter Editor mode for controling the position of stroke thickness.
The new options enable a better control on the position of stroke thickness with
respect to stroke backbone geometry.  Three predefined positions are:
* center: thickness is evenly split to the left and right side of the stroke geometry.
* inside: strokes are drawn within object boundary.
* outside: strokes are drawn outside the object boundary.
Another option called "relative" allows users to specify the relative position by a
number between 0 (inside) and 1 (outside).

The thickness position options are applied only to strokes of the edge types SILHOUETTE
and BORDER, since these are the only edge types defined in terms of object boundary.
Strokes of other edge types are always using the "center" option.
2012-04-07 17:28:09 +00:00
f88501a44d Added two stroke geometry modifiers:
- 2D Offset: Adds two-dimensional offsets to stroke backbone geometry.
- 2D Transform: Applies two-dimensional scaling and rotation to stroke backbone geometry.
2012-01-04 00:23:34 +00:00
32db495e50 Updates on the Parameter Editor mode:
* Added a new chain splitting option for dividing chains into pieces having
a given curvilinear 2D length.

* Rearranged the UI controls of chain splitting options according to the
actual order of processing.

* Made changes for converting each view edge into a chain in the case of
not using chaining.
2011-12-11 23:41:15 +00:00
624e91a77a Implemented a button to make a single-user copy of a line style. 2011-11-14 00:43:37 +00:00
e7a4d45435 Added to the Parameter Editor mode new stroke geometry modifier `Blueprint'
that produces a blueprint using circular, elliptic, and square contour strokes.
Related changes and bug fixes were made as follows:

* The randomness in radius and center has been transformed into optional
parameters of the pyBluePrintCirclesShader and pyBluePrintEllipsesShader.
Also a new optional parameter to control the randomness of backbone
stretching has been added to the pyBluePrintSquaresShader.

* A bug in the pyBluePrintSquaresShader that invisible stroke vertices at
corners of rectangular contour strokes were not properly drawn.  The problem
was due to the changes of the / operator between Python 2.x to 3.x.  Even
when the two operands of the division operator are integers, Python 3.x
gives a floating-point number when the quotient is not an integer.  The fix
was just to replace the / operator by the // operator for integer division.

* An unpleasant discontinuity in circular and elliptical contour strokes
was fixed.

* The length parameter of the Backbone Stretcher geometry modifier has been
renamed to `backbone_length' in line with the parameter of the same name in
the pyBluePrintSquaresShader.
2011-11-11 20:35:03 +00:00
ac6bdfb653 Added two stroke geometry modifiers: Parameterization and Guiding Lines. 2011-11-01 09:47:41 +00:00
16702c1729 Merged changes in the trunk up to revision 41225.
Conflicts resolved:
source/blender/render/intern/source/pipeline.c
2011-10-29 15:46:14 +00:00
5582d9fac1 Rearranged the organization of chaining options in line styles.
New there are only two chaining types: plain and sketchy.  Both chaining types
have the "same object" option.  With this option enabled, only feature edges of
the same object are chained.  The sketchy chaining also has the "rounds" option
to specify the number of rounds in a sketchy multiple touch.

Also removed a temporary workaround (implemented by means of a custom chaining
rule) for infinite straight lines, which has resulted in much cleaner strokes.
2011-09-19 23:24:14 +00:00
38f24637d4 Added new line style options for sketchy chaining of feature edges.
The default chaining option is now called "Natural", while the new chaining options
are "Sketchy: Topology Preserved" and "Sketchy: Topology broken".  The latter two
options allow for generating chains of feature edges with a sketchy multiple touch.
The "Sketchy: Topology Preserved" option takes account of the topology of objects
in the view map, while the "Sketchy: Topology broken" ignores the edge topology.
The "rounds" option specifies the number of rounds in sketchy strokes.
2011-09-19 22:40:44 +00:00
513293a256 Added new line style options for selecting chains by min/max 2D lengths. 2011-09-18 22:59:51 +00:00
6be21a9125 Implemented a calligraphic thickness modifier in the Parameter Editor mode.
Also fixed a typo in the docstring of the CalligraphicShader.
2011-09-11 19:57:38 +00:00
edde9f2666 Added an 'angle' parameter to the Perlin Noise 1D and 2D geometry modifiers
to specify a displacement direction in degrees.
2011-08-30 00:29:12 +00:00
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
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
2f52fa7820 Fix for properly unlinking target object pointers when objects are deleted
from scenes.
2010-11-29 21:24:55 +00:00
bc1b41eca5 * Another attempt to fix the bug partly addressed in revision 31419.
* Fix for the missing function declaration of strcpy.  This caused
a linker error in the Debug build with x64 VC 2008 and CMake.
2010-10-24 16:10:45 +00:00
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
56303415e4 Added support for animation of line style parameters.
Most stylization parameters in line style datablocks are now
animatable by means of keyframes.  Right click on a line
style parameter, and you will see a list of keyframe-related
commands in the context menu.

Concerning the implementation, RNA path resolution has been
extended to properly address color ramps in line style color
modifiers.  File I/O has been also improved to load/save the
animation data associated with line style datablocks.

Known issue: Freestyle-related options in render layers are
not animatable at the moment, because of general inability (or
maybe a bug) that keyframes cannot be inserted with respect to
render layer options.
2010-09-18 00:31:22 +00:00
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
2ef3384504 Changed the default line color of a line style from white to black. 2010-07-25 22:49:40 +00:00
bd68a72869 A WIP commit for proof-of-concept implementations of line style modifiers.
A number of UI elements were newly introduced to control line color, alpha
transparency and line thickness by means of base color/alpha/thickness plus
modifiers that alter the base values.  To begin with, three basic modifiers
were prototyped with the aim of putting the new UI framework in practice
and evaluating if it works properly.

The Parameter Editor mode is still in a work-in-progress state and totally
useless from users' viewpoint.
2010-07-20 17:57:33 +00:00
0f5c19c32c More on the new GUI for the Parameter Editor mode. This is a WIP commit.
* Moved render layer-specific Freestyle options to a separate "Freestyle"
tab (in addition to the "Freestyle: Line Style" tab that has been introduced
in the previous commit).

* Added UI controls for specifying feature edge selection criteria in the
Parameter Editor mode.  Feature edge selection starts with a set of all
feature edges in the view map.  Each line set specifies edge selection
criteria (e.g., to select only visible crease edges) by enabling appropriate
UI controls (e.g., by turning on the "Crease" and "Visibility" toggle
buttons).  Selected criteria are combined by logical conjunction.  Logical
disjunction (e.g., "crease edges or contours") is represented by two or
more line sets.

* Slightly rearranged several UI controls in the Python Scripting mode.
2010-06-27 00:03:34 +00:00
ee61785384 A step toward a new user-friendly GUI for manipulating line style parameters.
This commit is just meant to give the new GUI framework a concrete shape.
There is no usefulness in newly introduced elements at the moment.

Freestyle options in render layers now include a pull-down menu named Control
Mode that allows you to choose either the Python Scripting or Parameter Editor
mode.  The Python Scripting mode is the conventional way of controlling
Freestyle by directly using style modules written in Python.  The Parameter
Editor is a new control mode that is intended to be used by everyone without
relying on Python programming.

In the Parameter Editor mode, you can specify multiple line sets for each
render layer.  A line set defines feature edge selection criteria, as
well as a line style for drawing the selected feature edges using specific
line stylization parameters.  Line style is a new datablock type, meaning
that a line style can be shared by multiple line sets (possibly those in
different render layers in different scenes).

Much more additions are anticipated in subsequent commits to implement UI
controls for specifying feature edge selection criteria and line stylization
parameters.
2010-06-25 22:45:42 +00:00