Age | Commit message (Collapse) | Author |
|
in the definitions of Python wrappers.
|
|
of _POSIX_C_SOURCE and _XOPEN_SOURCE. There are no functional changes.
Tested with GCC 4.4.1 on Ubuntu 9.10 (karmic).
|
|
a compiler warning in pipeline.c with regard to the missing prototype
definition of free_libblock().
|
|
the diffuse and Z depth information accessible from style modules when
the border option is enabled.
|
|
diffuse and Z depth information through style modules won't work
correctly with the border option. Another fix will follow.
|
|
was turned off.
|
|
|
|
removing ListBase BlenderStrokeRenderer::objects and relying on
Base freestyle_scene::base instead.
|
|
The render pipeline has been extended to better work with
Freestyle stroke rendering. Struct Render has a new member
ListBase freestyle_renders to keep Render instances generated
through stroke rendering in Freestyle. The number of
elements (LinkData instances with LinkData::data pointing to a
Render instance) in freestyle_renders is the same as the scene
render layers of the scene being rendered. When the k-th scene
render layer has the Freestyle option enabled, the k-th element
of freestyle_renders refers to a Render instance that holds
Freestyle render results for the scene layer. This association
between the scene render layer and the Render instance is used to
merge the Freestyle render results into the corresponding render
results for the scene render layer.
|
|
rendering.
RE_BlenderFrame() and RE_BlenderAnim() are Blender's internal
top-level rendering API functions for a single frame and a series of
frames, respectively. These functions rely on global variables to
keep render pipeline states. Freestyle's stroke rendering was also
using RE_BlenderFrame to render a temporary scene of stroke meshes.
These nested calls of the top-level rendering API functions were
causing broken render pipeline states and eventually led to a crash.
This commit is intended to fix the issue, by introducing an rendering
API function RE_RenderFreestyleStrokes specifically used for stroke
rendering in Freestyle. The new function does not do anything with
regard to the global variables in the rendering API implementation.
|
|
|
|
|
|
AppCanvas::readDepthPixels() that caused a crash when
the aspect ratio was not 1:1.
|
|
Transparent strokes are rendered by means of transparent vertex colors.
To make this possible, Blender's internal renderer has been slightly
extended to allow transparent vertex colors. When Material::vcol_alpha
is non-zero, the renderer takes MCol::a into account.
|
|
because of incomplete functionality.
When two transparent strokes intersect, the stroke drawn first is
completely overridden by the stroke drawn after the first stroke,
instead of two stroke colors being blended at the intersection.
|
|
Availability of pixel-based density and Z depth information depends
on passes of a render layer being rendered.
- Density information is available if the diffuse pass of the render
layer is enabled. It is accessible through the DensityF0D and
DensityF1D functions provided by the Freestyle Python API. These
functions return 0 if the diffuse pass is disabled.
- Z depth information is available if the Z pass is enabled. It can
be accessed through LocalAverageDepthF0D and LocalAverageDepthF1D.
These functions return 0 if the Z pass is disabled.
|
|
the Info window.
|
|
ESC key press checks are performed 1) before entering Freestyle, and
2) after the completion of the view map creation.
|
|
|
|
Made Controller::_EPSILON constant with the value 1e-6. Previously,
the _EPSILON value was computed based on the minimum edge size within
the scene being rendered (in some cases, the computed value resulted
in zero). This does not seem to make sense, because _EPSILON has been
used as a tolerance threshold of floating-point arithmetic errors
throughout the view map creation. Since Blender uses single-precision
real values for mesh data representations, the new constant _EPSILON
value looks more adequate.
|
|
Made an attempt to fix "2D intersection out of range" warnings.
These warnings may cause "3D intersection out of range" warnings,
which often lead to a crash.
|
|
In Freestyle, strokes are represented with triangle strips, and stroke
colors are realized using vertex colors in order to enable variable
stroke colors (i.e., each triangle has a different color). Stroke
colors in Freestyle are in the RGBA format, while vertex colors in
Blender do not have an alpha component. Therefore, we here employ a
2-pass rendering approach as follows. First, the alpha component of
an image is rendered by using the red component of vertex colors as
the alpha component of stroke colors (1st pass). The render result is
saved into a temporary buffer. Then, the vertex colors of stroke
meshes are replaced with RGB values, and the RGB components of the
image is rendered (2nd pass). Finally, the RGB and alpha components
are merged to produce the render result in the RGBA format.
|
|
The FEdgeXDetector class for silhouette edge detection and the
ViewMapBuilder class for view map creation are enhanced. All changes
are related to view point handling (i.e., the camera location). In
the perspective projection, the visibility of feature edges and edge
types (e.g., borders and crease lines) are computed based on a fixed
view point, whereas the view point in the orthographic projection is
an arbitrary point on the XY plane at the origin and is determined so
that a line segment from the view point to a point in the 3D space is
perpendicular to the XY plane. All view point related portions of the
class definitions were modified so as to deal with the two different
camera modes.
|
|
the aspect ratio is not equal to 1:1.
|
|
Previously mesh vertices imported from vlak nodes were transformed
from the camera coordinate system to the object local coordinate
system. This causes a difficulty in recovering object local vertices
when mesh deforming modifiers (e.g., curve, cloth, and soft body) have
been applied. Now the view map creation is done based on mesh
vertices in the camera coordinate system. Advantages of this approach
includes: 1) faster mesh importing because of less matrix-based
transformations; and 2) proper handling of meshes with deforming
modifiers.
|
|
to redefinition of M_PI.
|
|
The renderer now takes the aspect ratio settings into account.
|
|
rendering. When objects exists out of the viewing frustrum and
near the near clipping plane, feature edges in the 3D camera
coordinate system are projected to an extremely far location from
the camera view in the 2D image space. These feature edges
result in very long strokes with a large number of stroke
vertices, which temporarily require a significant memory storage,
causing a fatal "out of memory" error. This problem is partially
addressed by the changes in the present commit.
|
|
A straightforward clipping algorithm was implemented to
eliminate vertices that are out of the interval from the
near to far clipping distance defined by the active camera.
Previously, objects that come behind the camera could lead
to a crash. The changes in this commit is intended to
address this issue. When meshes are partially clipped, new
edges are added. These edges can result in visible strokes
if they are within the camera view.
|
|
|
|
GeomUtils::intersect2dSeg2dSegParametric() was not properly tested.
Now two collinear line segments are not considered an intersection.
|
|
Now the 2D-to-3D inverse projection transformation is performed by the
direct solver first when it is applicable (i.e., when division by zero
does not occur). Otherwise the iterative solver is used (it is always
applicable because there is no risk of division by zero). Both solvers
were consolidated through several bug fixes.
|
|
in order to check if the given FEdge is perpendicular to the near/far
clipping plane of the viewing frustrum. Also added a direct solver
of the 2D-to-3D inverse projection transformation problem (currently
disabled by #if 0).
|
|
|
|
instability issues regarding the view map creation. A new iterative
solver of the 2D-to-3D inverse projection transformation problem was
implemented. Instead of directly solving the problem in the direction
from the 2D to 3D space, the new solver starts with an initial guess of
an approximated solution and asymptotically approaches to the true
solution by iteratively performing the forward 3D-to-2D projection
transformation and improving the approximation. Preliminary tests with
one simple and another complex scenes showed that the solver converges
quickly (more and less 20 iterations in many cases, with a stopping
criterion of a residual distance between the true and approximated
solutions less than 1e-6 Blender Unit).
|
|
redefinition of M_PI.
|
|
|
|
|
|
from within style modules. Calling this function is only valid within
style modules. Calling it from the Python Interactive Console results
in an error as follows:
>>> import Freestyle
>>> Freestyle.getCurrentScene()
Traceback (most recent call last):
File "<console>", line 1, in <module>
TypeError: current scene not available
>>>
|
|
The following files were according to the Math Lib reorganization
(see the commit log of revision 24464 for more information):
source/blender/freestyle/intern/blender_interface/BlenderFileLoader.cpp
source/blender/freestyle/intern/blender_interface/BlenderFileLoader.h
The file release/scripts/ui/properties_render.py was also updated
according the RNA UI API renaming in revision 24795.
|
|
initializing Freestyle and specifying contexts, making the API a bit messy.
Now FRS_initialize() is only for initialization, and contexts are specified
by new FRS_set_context() function just before starting rendering.
|
|
2.4x) from within Freestyle. Now Freestyle configuration parameters
are edited without relying on the notion of the current scene. This
resolved a few related issues as described below:
- A bug in Freestyle configuration management with respect to
multiple scenes was fixed. Now Freestyle configuration parameters
(e.g., style modules, ridges/valleys, suggestive contours) can be
specified for each render layer of each scene. Composition of
multiple render layers from different scenes should work as expected.
- A crash after undoing was fixed as well.
* Removed unused external Freestyle functions and global variables
from FRS_freestyle.h and FRS_freestyle.cpp.
|
|
instead of add_empty_text() plus file I/O code of its own.
|
|
|
|
considered True even if their integer values are 0.
|
|
|
|
Updated buttons_render.py to have Freestyle buttons
Added "empty" BlenderTextureManager as preliminary step to remove last remnants of OpenGL and to allow Freestyle to run on my machine.
|
|
end of a file.
* Fixed compiler warnings due to an invalid argument to PyList_New().
NULL was used instead of 0 to create an empty list.
|
|
#include statements as a workaround of symbol conflicts involving
rad1 and rad2 in the header file. As a side note, a different
solution of the issue was attempted in revision 17518 of the branch.
|
|
The issue was caused by the order of libraries given to the linker. More
specifically, libbf_python.a should precede libbf_freestyle.a, which is
assured by choosing an appropriate 'priority' value of a BlenderLib.
|