<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Freestyle integration into Blender</title>
	<atom:link href="http://freestyleintegration.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://freestyleintegration.wordpress.com</link>
	<description>»Log of the integration process, its challenges and (hopefully…) its solutions</description>
	<lastBuildDate>Mon, 20 May 2013 06:19:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='freestyleintegration.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Freestyle integration into Blender</title>
		<link>http://freestyleintegration.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://freestyleintegration.wordpress.com/osd.xml" title="Freestyle integration into Blender" />
	<atom:link rel='hub' href='http://freestyleintegration.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Development updates on October 23</title>
		<link>http://freestyleintegration.wordpress.com/2012/10/23/development-updates-on-october-23/</link>
		<comments>http://freestyleintegration.wordpress.com/2012/10/23/development-updates-on-october-23/#comments</comments>
		<pubDate>Tue, 23 Oct 2012 21:09:01 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1657</guid>
		<description><![CDATA[Development in the Freestyle branch for the last two months was kind of quiet but still includes several important bug fixes and improvements in rendering stability and quality.  Here is a short summary of code base updates from a technical perspective. Code base updates 1. Experimental fix for incorrect view edge visibility Given a 3D [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1657&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Development in the Freestyle branch for the last two months was kind of quiet but still includes several important bug fixes and improvements in rendering stability and quality.  Here is a short summary of code base updates from a technical perspective.</p>
<h2>Code base updates</h2>
<p>1. Experimental fix for incorrect view edge visibility</p>
<p>Given a 3D scene populated with mesh objects, Freestyle generates a data structure called view map consisting of view edges.  Each view edge is basically a polyline, i.e., a series of connected straight edges (referred to as FEdges) originated from the input mesh objects.</p>
<p>The problem addressed here is an ages old issue that the visibility of view edges in the view map may be incorrect. The main cause of this issue is that view edges are constructed from a series of FEdges without testing the visibility of individual edges being concatenated.  In a subsequent processing stage the view edges are split into pieces if two view edges intersect with each other in the 2D image coordinate system.  The visibility of the view edges is then computed by taking account of occluding faces in the 3D scene.  In many cases this procedure results in correct line visibility, but not always (that is the problem).</p>
<p>A simple solution experimentally implemented here is not to chain FEdges at all.  Instead, view edges are constructed from at most one FEdge now.  This leads to better line visibility results, but at the cost of a much larger view edge count, which may impose a performance penalty in the following processing stages.  For now this solution is only applied to sharp FEdges (roughly corresponding to edges in the input mesh data; specifically, silhouette, crease, border, edge mark, contour, external contour, and material boundary).</p>
<p>A better solution would be to reorder the three steps of view edges construction mentioned above, i.e., first splitting FEdges at 2D intersection, computing the visibility of the FEdges, and then concatenating them to build view edges.  This solution will require a bigger refactoring, and thus is left for future work at the moment.</p>
<p>2. Performance improvements of temporary scene generation for stroke rendering</p>
<p>Two-dimensional strokes (e.g., silhouette and crease lines) are automatically generated from a given 3D scene and superimposed on top of the Combined pass.  For this purpose, a temporary scene populated by mesh data representing the 2D strokes is created and rendered with the Blender Internal (BI).</p>
<p>Individual strokes are translated into distinct mesh objects, resulting in a large number of mesh objects. This is especially true when chaining is disabled and strokes are made of at most one view edge.  Because of the aforementioned change in the view map construction, the view map is likely populated by a large number of view edges (e.g., on the order of ten thousand).  As a result, the temporary scene generation may take an appreciable amount of time.  This issue was reported by a branch user with a fairly complex 3D scene that results in more than 11000 strokes.</p>
<p>In <a href="http://lists.blender.org/pipermail/bf-committers/2012-October/037759.html">a discussion of this issue</a> in the bf-committers mailing list, Joshua Leung (aligorith) kindly provided the dev team with insightful performance analysis results concerning the generation of many mesh objects at once.  As a matter of fact, mesh objects are full Blender objects and not intended to be a lightweight data structure for quick throwaway geometry generation in a time-critical loop.  A solution suggested by Joshua is to extend the BI to render stroke meshes through a new lightweight data structure specifically designed for that purpose.  Another possible direction is to rely on an external 2D rendering engine as <a href="http://freestyleintegration.wordpress.com/2010/02/09/weekly-update-february-1-7/">discussed earlier</a>.  Because of other priority tasks in the branch development, these solutions are kept for future options.</p>
<p>For now, a quick attempt was made to optimize the performance of temporary scene generation directly based on the performance analysis results by Joshua.  The following plots compare the performance of stroke mesh generation before (left) and after the performance optimization (right).</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2012/10/add_object_perf.png"><img class="alignnone size-full wp-image-1660" title="add_object_perf_tn" alt="" src="http://freestyleintegration.files.wordpress.com/2012/10/add_object_perf_tn.jpg?w=250&#038;h=198" height="198" width="250" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2012/10/add_object_perf_fix.png"><img class="alignnone size-full wp-image-1659" title="add_object_perf_fix_tn" alt="" src="http://freestyleintegration.files.wordpress.com/2012/10/add_object_perf_fix_tn.jpg?w=250&#038;h=202" height="202" width="250" /></a></p>
<p>The performance improvement is significant with the average time per stroke 15 times shorter than the non-optimized timing result.  Still it can be seen that the elapsed time per mesh object tends to increase over time (because of a linear search over existing objects in the scene to make object names unique).  Additionally, there is some non-linear time component, whose source is unknown at the moment and further performance analysis is required.</p>
<p>3. Additional improvements</p>
<ul>
<li>Fix for OCIO-based color management not working properly with Freestyle.</li>
<li>New button to make a copy of the active modifier in the Parameter Editor mode.  Code contribution by flokkievids, thanks!</li>
</ul>
<h2>User artwork showcase</h2>
<p>An active user base is a key for a successful free software project.  In this sense the Freestyle integration project is very well supported by an increasing number of computer graphics artists all over the world.  Here is a mini gallery of selected artwork by three branch users.</p>
<p><a href="http://www.youtube.com/watch?v=zELslElux34">&#8220;Fries&#8221; by Rylan Wright (RONIN)</a> is a funny stop motion animation clip showing a conversation between two friends of him trying to figure out what to have for lunch.</p>
<p style="text-align:center;"><a href="http://www.youtube.com/watch?v=zELslElux34"><img class="alignnone size-full wp-image-1658" title="ronin_fries_youtube" alt="" src="http://freestyleintegration.files.wordpress.com/2012/10/ronin_fries_youtube.jpg?w=500&#038;h=305" height="305" width="500" /></a></p>
<p>The following fan-art image of Japanese Anime &#8220;Kei-On!&#8221; is done by Mohe &amp; Shiratama (<a href="http://munjeri.com/">Moonlight Jellyfish</a>).  Their modeling and rendering workflow is illustrated in <a href="http://munjeri.sblo.jp/article/50067083.html">this blog article</a> (in Japanese).</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2012/10/mohe_shiratama_kon.jpg"><img class="alignnone size-full wp-image-1662" title="mohe_shiratama_kon_tn" alt="" src="http://freestyleintegration.files.wordpress.com/2012/10/mohe_shiratama_kon_tn.jpg?w=450&#038;h=394" height="394" width="450" /></a></p>
<p><a href="https://vimeo.com/51360752">&#8220;Japanese Railway&#8217;s 140th Anniversary&#8221; by mato.sus304</a> is a series of cool scenery shots showing trains in urban areas.  A making-of blog article about the production workflow of this movie clip is available <a href="http://matosus304.blog106.fc2.com/blog-entry-235.html">here</a> (in Japanese).</p>
<p style="text-align:center;"><a href="https://vimeo.com/51360752"><img class="alignnone size-full wp-image-1663" title="mato_sus304_vimeo" alt="" src="http://freestyleintegration.files.wordpress.com/2012/10/mato_sus304_vimeo.png?w=500&#038;h=281" height="281" width="500" /></a></p>
<p>Thank you RONIN, Mohe &amp; Shiratama, and mato.sus304 for using Freestyle for the excellent artwork!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1657/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1657/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1657&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2012/10/23/development-updates-on-october-23/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/10/add_object_perf_tn.jpg" medium="image">
			<media:title type="html">add_object_perf_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/10/add_object_perf_fix_tn.jpg" medium="image">
			<media:title type="html">add_object_perf_fix_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/10/ronin_fries_youtube.jpg" medium="image">
			<media:title type="html">ronin_fries_youtube</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/10/mohe_shiratama_kon_tn.jpg" medium="image">
			<media:title type="html">mohe_shiratama_kon_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/10/mato_sus304_vimeo.png" medium="image">
			<media:title type="html">mato_sus304_vimeo</media:title>
		</media:content>
	</item>
		<item>
		<title>Development updates on August 5</title>
		<link>http://freestyleintegration.wordpress.com/2012/08/05/development-updates-on-august-5/</link>
		<comments>http://freestyleintegration.wordpress.com/2012/08/05/development-updates-on-august-5/#comments</comments>
		<pubDate>Sun, 05 Aug 2012 11:40:04 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1609</guid>
		<description><![CDATA[Since the last blog update, the Freestyle branch made a slow but steady progress.  Here is a brief summary of new elements and user-visible changes in the Freestyle rendering engine and its user interface. General usability improvements 1. New options for specifying unit line thickness has been added in the Post Processing tab in the [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1609&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Since the last blog update, the Freestyle branch made a slow but steady progress.  Here is a brief summary of new elements and user-visible changes in the Freestyle rendering engine and its user interface.</p>
<h2>General usability improvements</h2>
<p>1. New options for specifying unit line thickness has been added in the Post Processing tab in the Render buttons.  These options allow you to define unit line thickness in two different modes:</p>
<ul>
<li>Absolute mode: The unit line thickness is given by a user-specified number in units of pixels.  The default value is 1.</li>
<li>Relative mode: The unit line thickness is scaled by the proportion of the present vertical image resolution to 480 pixels.  For instance, the unit line thickness is 1 with the image height set to 480, 1.5 with 720, and 2 with 960.</li>
</ul>
<p><img class="aligncenter" title="line_thickness_ui" src="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_ui.png?w=281&#038;h=265" alt="" width="281" height="265" /><br />
2. A long-standing bug due to an inappropriate removal of singular points in stroke creation was fixed.</p>
<p>The previous stroke creation procedure was trying to clean stroke topology by removing overlapping stroke vertices in the same 2D location.  The idea was to avoid having to address this kind of singularity during subsequent stroke shading.  In-depth analyses revealed, however, that this was a wrong way to ensure clean stroke topology, since just deleting overlapping vertices may break the continuity of the underlying series of FEdges on top of which the stroke has been built.  Such a break of linked FEdges was a major cause of frequent failure in CurvePoint::getFEdge().</p>
<p>The implemented solution aims to address the singularity issue by adding small offsets to the 2D location of overlapping vertices and making them non-overlapping to each other.  Since the offsets only result in sub-pixel differences, the impact on visual outcomes is expected to be negligible.</p>
<p>In addition, an attempt was made to fix an instability issue in stroke rendering due to a failure of Normal2DF0D with smooth FEdges.  The fix is to avoid generating new FEdgeSmooth instances whose length is shorter than epsilon.</p>
<p>3. The response of the ESC key for stopping Freestyle rendering has been improved throughout the rendering process.  The rendering with Freestyle consists of several steps including: (1) mesh data loading, (2) winged edge construction, (3) silhouette edge detection, (4) view map construction, and (5) stroke drawing.  All these steps have been extended to frequently check if the ESC key is pressed, so that users can abort time-consuming rendering at any point of time.</p>
<p>4. New operators have been introduced for adding the data paths to Freestyle edge/face mark properties of selected edges/polygons into the active keying set.  These operators are intended to make it easy to keyframe a number of Freestyle edge/face marks.</p>
<ul>
<li>Add Edge Marks to Keying Set (bpy.ops.scene.freestyle_add_edge_marks_to_keying_set)</li>
<li>Add Face Marks to Keying Set (bpy.ops.scene.freestyle_add_face_marks_to_keying_set)</li>
</ul>
<p>These operators are accessible from <a href="http://wiki.blender.org/index.php/Doc:2.6/Manual/Interface/Menus">the Space bar menu</a> by entering the operator names, as illustrated in the following screen captures.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2012/08/edge_mark_keying.png"><img class="alignnone size-full wp-image-1616" title="edge_mark_keying_tn" src="http://freestyleintegration.files.wordpress.com/2012/08/edge_mark_keying_tn.jpg?w=320&#038;h=192" alt="" width="320" height="192" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2012/08/face_mark_keying.png"><img class="alignnone size-full wp-image-1618" title="face_mark_keying_tn" src="http://freestyleintegration.files.wordpress.com/2012/08/face_mark_keying_tn.jpg?w=320&#038;h=192" alt="" width="320" height="192" /></a></p>
<p>5. The lower limit of Kr derivative epsilon has been changed from 0 to -1000 so as to permit a negative value.</p>
<h2>New elements in the Parameter Editor mode</h2>
<p>1. New options for controlling the position of stroke thickness have been introduced.  These options enable a better control on the position of stroke thickness with respect to stroke backbone geometry.  Three predefined positions are:</p>
<ul>
<li>center: thickness is evenly split to the left and right side of the stroke geometry.</li>
<li>inside: strokes are drawn within object boundary.</li>
<li>outside: strokes are drawn outside the object boundary.</li>
</ul>
<p>Another option called &#8220;relative&#8221; allows you to specify the relative position by a number between 0 (inside) and 1 (outside).</p>
<p><img class="alignnone size-full wp-image-1635 aligncenter" title="line_thickness_position_ui" src="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_position_ui.png?w=281&#038;h=234" alt="" width="281" height="234" /></p>
<p>The following renders show the effects of the three predefined positions.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_center.png"><img class="alignnone size-full wp-image-1621" title="line_thickness_center_tn" src="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_center_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_inside.png"><img class="alignnone size-full wp-image-1623" title="line_thickness_inside_tn" src="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_inside_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_outside.png"><img class="alignnone size-full wp-image-1625" title="line_thickness_outside_tn" src="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_outside_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a></p>
<p>The following render is an example of the relative position with the thickness ratio set to 0.3.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_relative.png"><img class="alignnone size-full wp-image-1627" title="line_thickness_relative_tn" src="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_relative_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a></p>
<p>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 drawn using the &#8220;center&#8221; option.</p>
<p>The thickness position options are also applied only when chaining is disabled or the Plain chaining is used with the Same Object option enabled (as shown below).  The default &#8220;center&#8221; positioning is used otherwise.</p>
<p><img class="alignnone size-full wp-image-1628 aligncenter" title="chaining_options" src="http://freestyleintegration.files.wordpress.com/2012/08/chaining_options.png?w=281&#038;h=481" alt="" width="281" height="481" /></p>
<p>2. Sphere radius and Kr derivative epsilon have been recovered in the Parameter Editor mode.  Several users requested the recovery as the removal of the two parameters was considered over-simplification for advanced users (see <a href="http://freestyleintegration.wordpress.com/2012/04/03/development-updates-on-april-2/">the blog article on April 2</a> for the rationale of the removal).  As in the Python Scripting mode, the two parameters are in the &#8220;advanced edge detection options&#8221; section and disabled by default.</p>
<h2>Bug fixes</h2>
<ul>
<li>Fix for Freestyle-related UI components showing up in the Render buttons when Cycles was selected.</li>
<li>Fix for NaN (not a number) in the Z component of projected points.  This issue arose when the Z depth of the bounding box of the scene being rendered is zero.</li>
<li>Fix for emitted objects of a particle system not rendered properly.  The problem was reported by octane98 with a sample .blend file.  Thanks!</li>
<li>Fix for the WithinImageBorderUP1D predicate not working with a ViewEdge such that none of the SVertices are within the image boundary but an FEdge intersects with the image boundary.</li>
<li>Fix for X and Y aspect ratios not working properly with Freestyle stroke rendering.  The problem was reported by octane98 through the BA Freestyle thread.  Thanks!</li>
<li>Fix for the Selection by Group not working correctly when the specified group was empty. The problem was reported by vicentecarro with an example .blend file to reproduce the issue.  Thanks!</li>
<li>Fix for a crash due to a corruption of data for addressing degenerate triangles in imported mesh data.</li>
<li>Fix for a crash in the single layer mode with Freestyle enabled.</li>
</ul>
<h2>Freestyle user activities</h2>
<p>Freestyle branch users are active and keep sharing their results and new ideas through the BlenderArtists.org, personal blogs, and so on.  Recently mclelun has started <a href="http://blenderartists.org/forum/showthread.php?259391-toon-shader-overweight-boss">new project “the Overweight Boss”</a> using Blender and Freestyle.  Here is a couple of excellent results from him.  The dev team is very grateful for his achievement!</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2012/08/mclelun_overweight_boss_still.jpg"><img class="alignnone size-full wp-image-1632" title="mclelun_overweight_boss_still_tn" src="http://freestyleintegration.files.wordpress.com/2012/08/mclelun_overweight_boss_still_tn.jpg?w=320&#038;h=180" alt="" width="320" height="180" /></a></p>
<p style="text-align:center;"><a href="http://www.youtube.com/watch?v=_TN5muvcQi0"><img class="alignnone size-full wp-image-1630" title="mclelun_overweight_boss_anim_tn" src="http://freestyleintegration.files.wordpress.com/2012/08/mclelun_overweight_boss_anim_tn.jpg?w=320&#038;h=193" alt="" width="320" height="193" /></a></p>
<p><a href="http://blendernpr.org/">BlenderNPR.org</a> is a new hub site for gathering information about non-photorealistic (NPR) rendering with Blender.  Freestyle tips and results are part of the new site’s main topics.  In addition, <a href="http://blendernpr.org/how-you-improve-blender-freestyle/">a new discussion thread</a> has been open for collecting feature requests, new ideas and thoughts to improve Freestyle.  If you have something that you want to see in Freestyle in the future, you are definitely encouraged to post it in <a href="http://blendernpr.org/how-you-improve-blender-freestyle/">this discussion thread</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1609/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1609/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1609&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2012/08/05/development-updates-on-august-5/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_ui.png" medium="image">
			<media:title type="html">line_thickness_ui</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/edge_mark_keying_tn.jpg" medium="image">
			<media:title type="html">edge_mark_keying_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/face_mark_keying_tn.jpg" medium="image">
			<media:title type="html">face_mark_keying_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_position_ui.png" medium="image">
			<media:title type="html">line_thickness_position_ui</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_center_tn.jpg" medium="image">
			<media:title type="html">line_thickness_center_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_inside_tn.jpg" medium="image">
			<media:title type="html">line_thickness_inside_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_outside_tn.jpg" medium="image">
			<media:title type="html">line_thickness_outside_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/line_thickness_relative_tn.jpg" medium="image">
			<media:title type="html">line_thickness_relative_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/chaining_options.png" medium="image">
			<media:title type="html">chaining_options</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/mclelun_overweight_boss_still_tn.jpg" medium="image">
			<media:title type="html">mclelun_overweight_boss_still_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/08/mclelun_overweight_boss_anim_tn.jpg" medium="image">
			<media:title type="html">mclelun_overweight_boss_anim_tn</media:title>
		</media:content>
	</item>
		<item>
		<title>Development updates on April 2</title>
		<link>http://freestyleintegration.wordpress.com/2012/04/03/development-updates-on-april-2/</link>
		<comments>http://freestyleintegration.wordpress.com/2012/04/03/development-updates-on-april-2/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 01:45:34 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1585</guid>
		<description><![CDATA[The Blender Freestyle branch spent a few months of relatively less development activities due to limited time resources.  Here is a short summary of new features and bug fixes since the last blog update. New features and changes in the Parameter Editor mode The following two stroke geometry modifiers have been added. 2D Offset: Adds [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1585&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The Blender Freestyle branch spent a few months of relatively less development activities due to limited time resources.  Here is a short summary of new features and bug fixes since the last blog update.</p>
<h2>New features and changes in the Parameter Editor mode</h2>
<p>The following two stroke geometry modifiers have been added.</p>
<ul>
<li>2D Offset: Adds two-dimensional offsets to stroke backbone geometry.</li>
<li>2D Transform: Applies two-dimensional scaling and rotation to stroke backbone geometry.</li>
</ul>
<p>The 2D Offset geometry modifier has four parameters: start, end, X and Y.  The first two parameters add offset values in the direction perpendicular to the stroke direction.  The offset values are linearly interpolated from the beginning to the end of a stroke.  The X and Y parameters add absolute horizontal and vertical offset values.  The following image illustrates the effects of these parameters.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2012/04/2d_offset_examples.png"><img class="alignnone size-full wp-image-1587" title="2d_offset_examples_tn" src="http://freestyleintegration.files.wordpress.com/2012/04/2d_offset_examples_tn.jpg?w=400&#038;h=150" alt="" width="400" height="150" /></a></p>
<p>The 2D Transform modifier transforms stroke geometry by X and Y scaling factors and a rotation angle.  The center (pivot) of these 2D transformations can be: the stroke center, the beginning and the end of the stroke, a point along the stroke (specified by a value between 0 and 1, called stroke pivot parameter), and absolute 2D point (specified by X and Y coordinate values).</p>
<p>Example renders below demonstrate the effects of 2D offset, scaling and rotation (from left to right), where three external contours were modified separately with different modifier parameters.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2012/04/toycar_contours_translated.png"><img class="alignnone size-full wp-image-1594" title="toycar_contours_translated_tn" src="http://freestyleintegration.files.wordpress.com/2012/04/toycar_contours_translated_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2012/04/toycar_contours_scaled.png"><img class="alignnone size-full wp-image-1592" title="toycar_contours_scaled_tn" src="http://freestyleintegration.files.wordpress.com/2012/04/toycar_contours_scaled_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2012/04/toycar_contours_rotated.png"><img class="alignnone size-full wp-image-1590" title="toycar_contours_rotated_tn" src="http://freestyleintegration.files.wordpress.com/2012/04/toycar_contours_rotated_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a></p>
<p>With a view to a better use of screen space, the locations of edge type options within the Selection by Edge Types have been rearranged as shown below.  Frequently used edge types come first, and less used ones come after.</p>
<p><img class="alignnone size-full wp-image-1588 aligncenter" title="lineset_options" src="http://freestyleintegration.files.wordpress.com/2012/04/lineset_options.png?w=368&#038;h=415" alt="" width="368" height="415" /></p>
<p>The two edge types &#8220;Ridge&#8221; and &#8220;Valley&#8221; have been unified into &#8220;Ridge &amp; Valley&#8221;, since the Valley edge type is merely an alias of Ridge in the present Freestyle implementation.</p>
<p>Sphere radius and Kr derivative epsilon were removed from the Parameter Editor mode.  Now sphere radius of 1.0 and Kr derivative epsilon of 0.0 are used by default.  The rationale of the removal is two-fold: little predictability and very minor artistic values.  The effects of these parameters are hard to estimate in advance, which likely leads to a frustration of users due to repeated trials and unpredicted results.  Therefore, the two parameters are considered to have quite limited artistic values.  Proper definitions of the two parameters more and less require the knowledge of differential geometry and would not make sense to most artists for which the Parameter Editor is intended.</p>
<p>Sphere radius and Kr derivative epsilon are still available in the Python Scripting mode, but now in an &#8220;advanced options&#8221; section that is disabled and hidden by default.  In this way new users are properly warned, while expert users with specific technical needs can enable these options if they want.  The same default values mentioned above are used when the two parameters are disabled in the Python Scripting mode.</p>
<h2>Fix for degenerate triangles in imported mesh data</h2>
<p>A line visibility issue was identified by means of a .blend file supplied by a branch user.  The issue was caused by so-called degenerate triangles that are triangular faces whose area is zero.  It is useful to distinguish two types of degenerate triangles as follows.  Let A, B and P denote the three vertices of a triangle.  The triangle is said a degenerate triangle if:</p>
<ol>
<li>A and B are in the same position in the 3D space; or</li>
<li>the distance between point P and line segment AB is zero.</li>
</ol>
<p>Note that the former condition is a special case of the latter.  Degenerate triangles in the first form can be (and have been) addressed in the same way as the standard Remove Doubles command in Blender.  Those in the second form, on the other hand, are more difficult to address and thus require special treatment.</p>
<p>For what concerns line visibility in Freestyle, degenerate triangles become harmless if they are transformed into non-zero area triangles.  Hence, a preprocessor of imported mesh data from Blender to Freestyle was implemented to resolve degenerate triangles in the second form, where two different approaches to the solution of the issue have been attempted.</p>
<p>One approach is to check if a degenerate triangle is part of a quad face.  This checking is easily done by testing if three of the four vertices are colinear (i.e., they are lying on a line).  If that is the case, then depending on how the quad is separated into two triangles, one of them can be a degenerate triangle.  Degenerate triangles of this form is addressed by rotating the diagonal edge of the quad face without affecting the visual outcome.</p>
<p>The other approach is to add a very small offset to P so that the resulting triangles have a non-zero area.  The visual side-effect of this solution is likely to occur at a sub-pixel level, and thus considered negligible.</p>
<p>Several other attempts were made to explore the best way to handle degenerate triangles, and the two solutions above are found the most effective.  The dev team still keeps close eyes to the line visibility issue due to degenerate triangles.  More fixes will follow if some other sources of degenerate triangles are identified.  Problem reports on this matter are very welcome.</p>
<h2>Bug fixes and miscellaneous improvements</h2>
<p>The following user-visible bugs were fixed, many of which were kindly reported by branch users.</p>
<ul>
<li>Color management was not working properly with Freestyle.</li>
<li>Color ramps were not immediately updated during the manipulation of a color picker.</li>
<li>The Selection by Image Border was not working correctly.</li>
<li>A crash due to invalid pointers within a copied line set was fixed.  Now the line set buffer is cleared when a new .blend file is opened, so that a line set may not be copied and pasted between .blend files.</li>
<li>The Backbone Stretcher geometry modifier had a hard-coded limit that the effect was applied to stokes with 2D length longer than 50.  Now the geometry modifier can be applied to strokes of any length.</li>
<li>A crash with FSAA enabled and Freestyle disabled was fixed.</li>
<li>Line style names were not made unique after a new name was set.</li>
</ul>
<p>The dev team is grateful to branch users for their active testing of the software and problem reports.</p>
<h2>Freestyle artwork by branch users</h2>
<p>An increasing number of Blender artists have been sharing their results with Freestyle, through the BlenderArtists.org Freestyle thread, personal blogs, tweets and so on.  Here, two excellent pieces of artwork by RONIN (left) and s12a (right) are presented.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2012/04/ronin_solders.jpg"><img class="alignnone size-full wp-image-1596" title="RONIN_solders_tn" src="http://freestyleintegration.files.wordpress.com/2012/04/ronin_solders_tn.jpg?w=357&#038;h=400" alt="" width="357" height="400" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2012/04/s12a_nymph.jpg"><img class="alignnone size-full wp-image-1598" title="s12a_nymph_tn" src="http://freestyleintegration.files.wordpress.com/2012/04/s12a_nymph_tn.jpg?w=300&#038;h=400" alt="" width="300" height="400" /></a></p>
<p>Many thanks for your contributions, RONIN and s12a!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1585/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1585/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1585&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2012/04/03/development-updates-on-april-2/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/04/2d_offset_examples_tn.jpg" medium="image">
			<media:title type="html">2d_offset_examples_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/04/toycar_contours_translated_tn.jpg" medium="image">
			<media:title type="html">toycar_contours_translated_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/04/toycar_contours_scaled_tn.jpg" medium="image">
			<media:title type="html">toycar_contours_scaled_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/04/toycar_contours_rotated_tn.jpg" medium="image">
			<media:title type="html">toycar_contours_rotated_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/04/lineset_options.png" medium="image">
			<media:title type="html">lineset_options</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/04/ronin_solders_tn.jpg" medium="image">
			<media:title type="html">RONIN_solders_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2012/04/s12a_nymph_tn.jpg" medium="image">
			<media:title type="html">s12a_nymph_tn</media:title>
		</media:content>
	</item>
		<item>
		<title>Development updates on December 18</title>
		<link>http://freestyleintegration.wordpress.com/2011/12/19/development-updates-on-december-18/</link>
		<comments>http://freestyleintegration.wordpress.com/2011/12/19/development-updates-on-december-18/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 01:02:33 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1540</guid>
		<description><![CDATA[Since the last blog update, the development in the Blender Freestyle branch mainly focused on stability improvements, as well as on an extended capability of the Parameter Editor mode, which is intended to be an artist-friendly GUI for interactive manipulation of line style parameters.  Major additions and changes are highlighted as follows. Updates in the [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1540&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Since the last blog update, the development in the Blender Freestyle branch mainly focused on stability improvements, as well as on an extended capability of the Parameter Editor mode, which is intended to be an artist-friendly GUI for interactive manipulation of line style parameters.  Major additions and changes are highlighted as follows.</p>
<h2>Updates in the Parameter Editor mode</h2>
<p>The function of the &#8216;+&#8217; button to the right of a line style name in the Freestyle: Line Style tab has been changed so as to make a copy of the active line style instead of creating a new line style with default settings.  This is meant to be consistent with the creation of new data blocks in other parts of Blender (for instance, creating a new material will result in a copy of the active material).  Also a button to make a single-user copy of a line style (i.e., the button that indicates the number of users) has been implemented.</p>
<p style="text-align:center;"><img class="alignnone size-full wp-image-1580" title="linestyle_new" src="http://freestyleintegration.files.wordpress.com/2011/12/linestyle_new1.png?w=373&#038;h=581" alt="" width="373" height="581" /></p>
<p>Copy and paste operations for line sets have been added to make it easy to duplicate the settings of a line set.</p>
<p><img class="size-full wp-image-1541 aligncenter" title="lineset_copy_paste" src="http://freestyleintegration.files.wordpress.com/2011/12/lineset_copy_paste.png?w=317&#038;h=607" alt="" width="317" height="607" /></p>
<p>It is recalled that line sets have a reference to a line style.  When the settings of a line set A having a reference to a line style X is pasted into a line set B, the latter line set will have a reference to X.  That is, the paste operation changes the line style references, but does not modify the settings of line styles.  If you also want a copy of the referenced line style after the paste operation, you have to make it using the copy operation for line styles as described above.</p>
<p>An extended set of conditions for feature edge selection by edge types has been introduced.  Each edge type check button in the Selection by Edge Types has now an associated toggle button to exclude the edge type from the feature edge selection.  This allows you to select, for instance, those edges that are silhouette lines but not external contours by enabling the two edge types and also the toggle button for external contours, as shown in the screen shot below.</p>
<p><img class="size-full wp-image-1543 aligncenter" title="edge_types_toggle_buttons" src="http://freestyleintegration.files.wordpress.com/2011/12/edge_types_toggle_buttons.png?w=373&#038;h=488" alt="" width="373" height="488" /></p>
<p>A new option for disabling the chaining of feature edges has been added to the ‘Stroke’ panel of the Freestyle: Line Style tab.  This option is useful for examining the initial set of feature edges in the view map.</p>
<p>New options for splitting chains of feature edges by a minimum and maximum 2D angle and by a 2D length limit have been added to the ‘Stroke’ panel of the Freestyle: Line Style tab.  These options are useful for splitting long strokes into small pieces.  See the example renders of the Guiding Lines geometry modifier below for an example use of splitting by 2D length.</p>
<p>Three new stroke geometry modifiers have been implemented.</p>
<ul>
<li>Polygonization</li>
<li>Guiding Lines</li>
<li>Blueprint</li>
</ul>
<p>The Polygonization geometry modifier transforms smooth strokes into jagged polylines.  The &#8220;error&#8221; parameter specifies how much deviation is allowed from the original stroke geometry (the larger the error parameter is, the more jagged the resulting polylines are).  The following test renders illustrate the effect of the Polygonization modifier: (a) without applying the modifier, strokes along arcs are smooth; (b) with the polygonization modifier applied with the error parameter set to 5, the strokes are transformed into jagged polylines; and (c) the error parameter set to 20 gives more jagged polylines.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/12/polygonization_1.png"><img class="alignnone size-full wp-image-1559" title="polygonization_1_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/polygonization_1_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/12/polygonization_2.png"><img class="alignnone size-full wp-image-1561" title="polygonization_2_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/polygonization_2_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/12/polygonization_3.png"><img class="alignnone size-full wp-image-1563" title="polygonization_3_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/polygonization_3_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a></p>
<p>The Guiding Lines geometry modifier replaces a stroke with a straight line connecting both ends of the stroke.  This modifier will produce reasonable results when strokes are short enough, because shorter strokes are more likely to be well approximated by straight lines.  Therefore, it is recommended to use this modifier together with the splitting options (by 2D angle or by 2D length) mentioned above.  The following images show how splitting and geometry modifiers can be combined: (a) smooth strokes along arcs are split into small pieces by the 2D Length option; (b) the Guiding Lines gemoetry modifier is then applied to approximate the split stroke segments by straight lines; and (c) the Backbone Stretch geometry modifier is further applied to extend both ends of each straight stroke.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/12/guiding_lines_1.png"><img class="alignnone size-full wp-image-1553" title="guiding_lines_1_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/guiding_lines_1_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/12/guiding_lines_2.png"><img class="alignnone size-full wp-image-1555" title="guiding_lines_2_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/guiding_lines_2_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/12/guiding_lines_3.png"><img class="alignnone size-full wp-image-1557" title="guiding_lines_3_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/guiding_lines_3_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a></p>
<p>The render below is a combination of the Guiding Lines and Spatial Noise geometry modifiers.  Both modifiers were applied to two identical line sets to duplicate the guiding lines.  The line sets contain only external contours.  The Spatial Noise modifier was applied before the Guiding Lines modifier, so that two sets of guiding lines display some variability.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/12/toycar_guiding_lines.png"><img class="alignnone size-full wp-image-1565" title="toycar_guiding_lines_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/toycar_guiding_lines_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p>The Blueprint geometry modifier produces a blueprint using circular, elliptic, and square contour strokes.  A blueprint here refers to those lines drawn in the beginning of free-hand drawing to capture the silhouette of objects with a simple shape such as circles, ellipses and squares, as illustrated below.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/12/blueprint_circles.png"><img class="alignnone size-full wp-image-1547" title="blueprint_circles_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/blueprint_circles_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/12/blueprint_ellipses.png"><img class="alignnone size-full wp-image-1549" title="blueprint_ellipses_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/blueprint_ellipses_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/12/blueprint_squares.png"><img class="alignnone size-full wp-image-1551" title="blueprint_squares_tn" src="http://freestyleintegration.files.wordpress.com/2011/12/blueprint_squares_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a></p>
<p>The Perlin Noise 1D geometry modifier had an issue that noise frequency was relative to the stroke length (i.e., the number of noise displacement values was the same for strokes of different lengths).  This resulted in very noisy short strokes and much less noisy long strokes.  Now the noise frequency is relative to the distance from the starting point of a stroke.  That is, two strokes of the same length will be distorted by the same number of noise displacement values, whereas longer strokes will have more noise displacement values along stroke.</p>
<h2>Stability improvements</h2>
<ul>
<li>A fix was made to address duplicated feature edges due to a numerical instability of line clipping by near/far Z planes.</li>
<li>View map construction was not properly taking face marks into account.  This caused incorrect (and unpredictable) feature edge selection results when face marks were used.</li>
<li>A crash caused by temporary scenes for stroke rendering was fixed.  Freestyle generates a temporary scene containing a number of stroke meshes to achieve stroke rendering using the Blender internal renderer.  This temporary scene may appear in the outliner and undergo user interaction when the stroke rendering takes a long time.  The crash was due to the deletion of the scene without taking care of references to the scene from screens, one of which was the outliner.</li>
<li>The interaction between Blender and Freestyle was revised to address a crash when two scenes in the compositor have different render resolution (i.e., image width and height, scaled by a percent parameter).</li>
<li>Stroke rendering instability with stroke geometry shaders was addressed.  Stroke::Resample(int nPoints) was not properly working when a wrong value was returned from Stroke::getLength2D(), resulting in repeated warning messages &#8220;Warning: incorrect points number&#8221; during stroke rendering.  The main cause was that stroke geometry shaders did not update the two-dimensional (2D) length (also referred to as curvilinear abscissa) after they modified the 2D points of stroke vertices.  Now all stroke geometry shaders make explicit calls for Stroke::UpdateLength() that has been introduced for recomputing the 2D length.</li>
<li>A bug in Operators.recursiveSplit() that splitting could not take place within the last segment of a chain was fixed.</li>
</ul>
<h2>Remarks on the merge into the trunk</h2>
<p>The dev team has been receiving an increasing number of questions from branch users concerning the merge into the trunk (i.e., official release of Blender).  It is remarked that the merge has already been agreed with the core Blender developers of the trunk, and the only major question is when the merge is done.</p>
<p>In June 2010, the dev team defined <a href="http://freestyleintegration.wordpress.com/2010/06/07/weekly-update-may-24-june-6/">a list of unfinished components</a> that need to be done before the merge is finally asked.  The list includes three major components: (a) GUI for the Parameter Editor mode; (b) feature edge detection at the intersection of two faces; and (c) Freestyle Python API improvements.  Subjective achievement rates of the three components are 90%, 0%, and 80%, respectively.  In other words, the Freestyle branch needs more development before it gets ready for code review that is required for the merge to happen.</p>
<p>At the moment <a href="http://lists.blender.org/pipermail/bf-committers/2011-December/034792.html">the official release of Blender 2.62 is planned in February 2012</a>, but it is unlikely that Freestyle is included into this release because of the short deadline for code review in January.</p>
<p>Considering an admittedly limited amount of time resources, it is still difficult to predict when all the unfinished components are done and the code review for the merge can be asked.  We appreciate the understanding and patience of branch users.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1540/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1540/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1540&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2011/12/19/development-updates-on-december-18/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/linestyle_new1.png" medium="image">
			<media:title type="html">linestyle_new</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/lineset_copy_paste.png" medium="image">
			<media:title type="html">lineset_copy_paste</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/edge_types_toggle_buttons.png" medium="image">
			<media:title type="html">edge_types_toggle_buttons</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/polygonization_1_tn.jpg" medium="image">
			<media:title type="html">polygonization_1_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/polygonization_2_tn.jpg" medium="image">
			<media:title type="html">polygonization_2_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/polygonization_3_tn.jpg" medium="image">
			<media:title type="html">polygonization_3_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/guiding_lines_1_tn.jpg" medium="image">
			<media:title type="html">guiding_lines_1_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/guiding_lines_2_tn.jpg" medium="image">
			<media:title type="html">guiding_lines_2_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/guiding_lines_3_tn.jpg" medium="image">
			<media:title type="html">guiding_lines_3_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/toycar_guiding_lines_tn.jpg" medium="image">
			<media:title type="html">toycar_guiding_lines_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/blueprint_circles_tn.jpg" medium="image">
			<media:title type="html">blueprint_circles_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/blueprint_ellipses_tn.jpg" medium="image">
			<media:title type="html">blueprint_ellipses_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/12/blueprint_squares_tn.jpg" medium="image">
			<media:title type="html">blueprint_squares_tn</media:title>
		</media:content>
	</item>
		<item>
		<title>Development updates on October 25</title>
		<link>http://freestyleintegration.wordpress.com/2011/10/25/development-updates-on-october-25/</link>
		<comments>http://freestyleintegration.wordpress.com/2011/10/25/development-updates-on-october-25/#comments</comments>
		<pubDate>Tue, 25 Oct 2011 00:47:56 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1494</guid>
		<description><![CDATA[Since the last blog post, branch development mainly focused on stability improvements of the Freestyle renderer and new functionality for fine control of feature edge selection. Stability improvements with the face smoothness option Several branch users kindly reported that Freestyle failed when the Face Smoothness option was enabled and object materials were used to determine [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1494&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Since the last blog post, branch development mainly focused on stability improvements of the Freestyle renderer and new functionality for fine control of feature edge selection.</p>
<h2>Stability improvements with the face smoothness option</h2>
<p>Several branch users kindly reported that Freestyle failed when the Face Smoothness option was enabled and object materials were used to determine line colors.  When the Face Smoothness option is enabled, the view map computed from a given 3D scene is populated by not only sharp FEdges (i.e., edges in the original meshes) but also smooth FEdges (i.e., newly constructed edges across faces).  This situation often resulted in a failure of the getFEdge() method (defined in the Interface0D class and its subclasses) used to obtain the FEdge between two given 0D elements (such as SVertices and CurvePoints).  The instability of getFEdge() caused many related issues because the method is widely used in other predicates and functions that rely on it.  The most prominent example of related user-visible problems is a failure of the built-in MaterialF0D class that retrieves object materials of given 0D elements, as seen in the problem reports from branch users.</p>
<p>The persistent failure of getFEdge() was resulting from several bugs in the view map construction algorithm.  These bugs were fixed through careful code revisions and intensive testing.  Also, the built-in MaterialF0D turned out to be incapable of handling Curve objects (such as chains and strokes), so that a new CurveMaterialF0D class has been introduced to address the material retrieval in the case of Curve objects.</p>
<p>These changes have improved the stability of the renderer with the Face Smoothness enabled.  The dev team is very grateful to those branch users who provided the bug reports together with .blend files to reproduce the issues.  The .blend files were indeed indispensable test cases during the bug hunting.</p>
<h2>Fine control of feature edge selection with mesh face and edge marks</h2>
<p>With the aim of allowing for fine control of feature edge selection, new &#8220;face marks&#8221; and &#8220;edge marks&#8221; have been introduced in mesh data blocks.  In the edit mode of a mesh object, face marks can be put to selected faces by choosing Mesh &gt; Faces &gt; Mark Freestyle Face from the menu of a 3D View window or Ctrl-F &gt; Mark Freestyle Face from the context menu.  Similarly, edge marks can be put to selected edges by Mesh &gt; Edges &gt; Mark Freestyle Edge or Ctrl-E &gt; Mark Freestyle Edge.  These marks should work fine with the Subdivision Surface and Mirror modifiers.</p>
<p>Moreover, two new conditions for feature edge selection have been added to the Parameter Editor mode, as described below:</p>
<ol>
<li>The Selection by Edge Types option now includes the new Edge Mark type, which can be used to (de)select feature edges having edge marks.  This option can be used to add to (or remove from) the view map arbitrary edges of mesh objects.</li>
<li>Selection by Face Marks option has been newly introduced, in which face marks are used for feature edge selection in two ways.  One option is called &#8220;One Face&#8221; which is to (de)select feature edges if one of faces on the left and right of each feature edge has a face mark.  The other option is &#8220;Both Faces&#8221; to (de)select feature edges if both faces on the left and right have a face mark.  Those feature edges that meet the conditions are selected if the Inclusive option is enabled; they are deselected if the Exclusive option is turned on.</li>
</ol>
<p>The following screenshot shows the new GUI controls (highlighted in red) based on face and edge marks.</p>
<p><img class="alignnone size-full wp-image-1515 aligncenter" title="gui_edge_face_marks" src="http://freestyleintegration.files.wordpress.com/2011/10/gui_edge_face_marks.png?w=321&#038;h=464" alt="" width="321" height="464" /></p>
<p>Edge marks are useful when you want to draw lines along particular mesh edges.  The following example images demonstrate the use of edge marks.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/10/edge_marks_test_view3d.png"><img class="alignnone size-full wp-image-1500" title="edge_marks_test_view3d_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/edge_marks_test_view3d_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/10/edge_marks_test_marks_disabled.png"><img class="alignnone size-full wp-image-1496" title="edge_marks_test_marks_disabled_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/edge_marks_test_marks_disabled_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p>The image on the left shows a sphere mesh with edge marks (in the edit mode).  In a 3D View window, edge marks are displayed in light green.  The image on the right is a render without the Edge Mark type enabled in the Selection by Edge Types option (the black line shows the silhouette of the sphere).  The image below is a rendering result with the Edge Mark type enabled.  The blue lines indicate those resulting from mesh edges with edge marks.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/10/edge_marks_test_marks_enabled.png"><img class="alignnone size-full wp-image-1498" title="edge_marks_test_marks_enabled_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/edge_marks_test_marks_enabled_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p>Face marks are useful for removing lines from certain portions of mesh surfaces.  Suppose that two faces of the default cube have face marks as shown in the image on the left below.  Marked faces are displayed in light green.  The image on the right is a rendering result without using the Selection by Face Marks option.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_view3d.png"><img class="alignnone size-full wp-image-1512" title="face_marks_test_view3d_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_view3d_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_no_sel.png"><img class="alignnone size-full wp-image-1510" title="face_marks_test_no_sel_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_no_sel_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p>The following images show how rendering results vary with four combinations of the Inclusive/Exclusive and One Face/Both Faces toggle options.  Notice that only the edge between the two marked faces is (de)selected when the Both Faces option is used, while all the edges touching the marked faces are (de)selected when the One Face option is enabled.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_inclusive_one.png"><img class="alignnone size-full wp-image-1508" title="face_marks_test_inclusive_one_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_inclusive_one_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_inclusive_both.png"><img class="alignnone size-full wp-image-1506" title="face_marks_test_inclusive_both_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_inclusive_both_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_exclusive_one.png"><img class="alignnone size-full wp-image-1504" title="face_marks_test_exclusive_one_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_exclusive_one_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_exclusive_both.png"><img class="alignnone size-full wp-image-1502" title="face_marks_test_exclusive_both_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_exclusive_both_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<h2>Renders from branch users</h2>
<p>In the meantime, branch users have been sharing their renders made with Blender and Freestyle.  Here are some selected rendering results.</p>
<p><a href="http://www.blendswap.com/3D-models/characters/freestyle-sintel-lite/">Toon rendering of Sintel</a> by jikz (the model is base on <a href="http://www.blendswap.com/3D-models/characters/sintel-lite-2-57b/">Sintel Lite 2.57b</a> by BenDansie):</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/10/jikz_sintel_1.png"><img class="alignnone size-full wp-image-1517" title="jikz_sintel_1_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/jikz_sintel_1_tn.jpg?w=213&#038;h=320" alt="" width="213" height="320" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/10/jikz_sintel_2.png"><img class="alignnone size-full wp-image-1519" title="jikz_sintel_2_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/jikz_sintel_2_tn.jpg?w=213&#038;h=320" alt="" width="213" height="320" /></a></p>
<p><a href="http://blenderartists.org/forum/showthread.php?234203-de-Waag">Architectural line drawing</a> by flokkievids:</p>
<p><a href="http://freestyleintegration.files.wordpress.com/2011/10/flokkievids_de_waag.png"><img class="alignnone size-full wp-image-1514 aligncenter" title="flokkievids_de_waag_tn" src="http://freestyleintegration.files.wordpress.com/2011/10/flokkievids_de_waag_tn.jpg?w=400&#038;h=225" alt="" width="400" height="225" /></a></p>
<p>Many thanks to jikz and flokkievids for the excellent contributions!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1494/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1494/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1494&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2011/10/25/development-updates-on-october-25/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/gui_edge_face_marks.png" medium="image">
			<media:title type="html">gui_edge_face_marks</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/edge_marks_test_view3d_tn.jpg" medium="image">
			<media:title type="html">edge_marks_test_view3d_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/edge_marks_test_marks_disabled_tn.jpg" medium="image">
			<media:title type="html">edge_marks_test_marks_disabled_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/edge_marks_test_marks_enabled_tn.jpg" medium="image">
			<media:title type="html">edge_marks_test_marks_enabled_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_view3d_tn.jpg" medium="image">
			<media:title type="html">face_marks_test_view3d_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_no_sel_tn.jpg" medium="image">
			<media:title type="html">face_marks_test_no_sel_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_inclusive_one_tn.jpg" medium="image">
			<media:title type="html">face_marks_test_inclusive_one_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_inclusive_both_tn.jpg" medium="image">
			<media:title type="html">face_marks_test_inclusive_both_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_exclusive_one_tn.jpg" medium="image">
			<media:title type="html">face_marks_test_exclusive_one_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/face_marks_test_exclusive_both_tn.jpg" medium="image">
			<media:title type="html">face_marks_test_exclusive_both_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/jikz_sintel_1_tn.jpg" medium="image">
			<media:title type="html">jikz_sintel_1_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/jikz_sintel_2_tn.jpg" medium="image">
			<media:title type="html">jikz_sintel_2_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/10/flokkievids_de_waag_tn.jpg" medium="image">
			<media:title type="html">flokkievids_de_waag_tn</media:title>
		</media:content>
	</item>
		<item>
		<title>Development updates on September 25</title>
		<link>http://freestyleintegration.wordpress.com/2011/09/25/development-updates-on-september-25/</link>
		<comments>http://freestyleintegration.wordpress.com/2011/09/25/development-updates-on-september-25/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 16:39:45 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1470</guid>
		<description><![CDATA[The work on the Freestyle integration into Blender is still ongoing.  Since the last updates, a number of new functionalities and stability improvements has been implemented as summarized below. Enhancement of the Parameter Editor mode New line style controls have been added to the Parameter Editor mode that is intended to be an artist-friendly GUI for manipulating [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1470&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>The work on the Freestyle integration into Blender is still ongoing.  Since the last updates, a number of new functionalities and stability improvements has been implemented as summarized below.</p>
<h2>Enhancement of the Parameter Editor mode</h2>
<p>New line style controls have been added to the Parameter Editor mode that is intended to be an artist-friendly GUI for manipulating line styles without any user efforts on Python scripting.  Recent major additions and changes are described as follows.</p>
<ul>
<li>A new line style option for sketchy chaining of feature edges has been added.  The conventional default chaining method is now called Plain, while the new chaining option is called Sketchy.  The latter option allows for generating chains of feature edges with sketchy multiple strokes.  Both Plain and Sketchy chaining options have the Same Object toggle button in common, whereas the Sketchy option has an additional option called Rounds.  With the Same Object option enabled, only feature edges of the same object are chained.  The Rounds option specifies the number of rounds in sketchy strokes.  The following render shows a visual effect of sketchy chaining (3 rounds, with the Spatial Noise geometry modifier specified to enhance the sketchy appearance of strokes).</li>
</ul>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/09/sketchy_chaining.png"><img class="alignnone size-full wp-image-1488" title="sketchy_chaining_tn" src="http://freestyleintegration.files.wordpress.com/2011/09/sketchy_chaining_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<ul>
<li>A calligraphic thickness modifier has been implemented.  This modifier gives strokes variable thickness that looks as if they are drawn with a broad and flat pen for calligraphy.  The following test render illustrates a typical effect of calligraphic thickness.</li>
</ul>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/09/geometry_calligraphy.png"><img class="alignnone size-full wp-image-1474" title="geometry_calligraphy_tn" src="http://freestyleintegration.files.wordpress.com/2011/09/geometry_calligraphy_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<ul>
<li>A new parameter called Angle has been added to the Perlin Noise 1D and 2D geometry modifiers to specify a displacement direction in degrees (zero degree indicates the positive X direction).  The following images demonstrate how the Angle parameter makes a difference in rendering results (left: the Angle parameter set to 45 degrees; right: 135 degrees).</li>
</ul>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/09/perlin_angle_45.png"><img class="alignnone size-full wp-image-1480" title="perlin_angle_45_tn" src="http://freestyleintegration.files.wordpress.com/2011/09/perlin_angle_45_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/09/perlin_angle_135.png"><img class="alignnone size-full wp-image-1482" title="perlin_angle_135_tn" src="http://freestyleintegration.files.wordpress.com/2011/09/perlin_angle_135_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<ul>
<li>The behavior of the Perlin Noise 1D geometry modifier has been changed so that it works differently from the Perlin Noise 2D geometry modifier.  Now the Perlin Noise 1D modifier distorts strokes using the curvilinear abscissa of stroke vertices as the input of the Perlin noise generator.  It is remarked that curvilinear abscissa is a scalar value between 0 and 1.  The first and last vertices of a stroke have the values 0 and 1, respectively, and the values for other stroke vertices are linearly interpolated over the stroke.  Therefore, the Perlin Noise 1D modifier gives identical noise displacements to strokes if the strokes have the same length and sampling interval (the latter is specified by the Sampling geometry modifier).  In contrast, the Perlin Noise 2D modifier generates noisy displacements using 2D coordinates of stroke vertices as the input of the noise generator.  Therefore, strokes in different positions in a render will be distorted with different displacements by the Perlin 2D noise generator even if the strokes have the same length and sampling interval.  The differences between the Perlin Noise 1D and 2D modifiers are illustrated in the following test renders.  The image on the left shows a set of vertical lines and another set of star-shaped strokes, both distorted by the Perlin Noise 1D modifier.  Strokes in each set of lines have identical noisy displacements, because of the same stroke length and sampling interval.  The image on the right shows a render of the same scene with the Perlin Noise 2D modifier, which gives different displacements to each of the strokes because of their 2D positions in the image that are different from each other.</li>
</ul>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/09/perlin_noise_test_1d.png"><img class="alignnone size-full wp-image-1484" title="perlin_noise_test_1d_tn" src="http://freestyleintegration.files.wordpress.com/2011/09/perlin_noise_test_1d_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/09/perlin_noise_test_2d.png"><img class="alignnone size-full wp-image-1486" title="perlin_noise_test_2d_tn" src="http://freestyleintegration.files.wordpress.com/2011/09/perlin_noise_test_2d_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<ul>
<li>New line style options for selecting chains by min/max 2D lengths have been added.  Using these options you can select strokes that are longer and/or shorter than specified stroke lengths.</li>
</ul>
<h2>Link and Append</h2>
<p>A proper support for the Link and Append commands has been implemented.  Now you can link/append line styles as well as scenes with line styles from within other .blend files.</p>
<h2>Stability improvements and bug fixes</h2>
<p>An attempt to fix the long-standing issue of occasional infinite straight lines has been made.  The fix is still not the best solution, but seems to yield much better results as illustrated in the following test renders (left: examples of unwanted infinite lines due to the bug; right: infinite lines no longer appear after the bug fix).</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/09/infinite_lines_bug.png"><img class="alignnone size-full wp-image-1476" title="infinite_lines_bug_tn" src="http://freestyleintegration.files.wordpress.com/2011/09/infinite_lines_bug_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/09/infinite_lines_fixed.png"><img class="alignnone size-full wp-image-1478" title="infinite_lines_fixed_tn" src="http://freestyleintegration.files.wordpress.com/2011/09/infinite_lines_fixed_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p>Since the solution looks quite effective, a temporary workaround (implemented by means of a custom chaining rule) for infinite straight lines was removed.  This change has resulted in much cleaner strokes.  If you have suffered from a lot of segmented strokes that are supposed to be a single straightforward stroke, then using the latest Freestyle branch would be a solution for the issue.</p>
<p>In addition, several other bug fixes have been made to improve the general stability of the Freestyle renderer.  Most of the bugs were reported by branch users, some with example .blend files for reproducing the problems.  These reports were really invaluable, and we appreciate the feedback from the branch users.</p>
<h2>Concluding remarks</h2>
<p>That is all for now.  More additions to the Parameter Editor mode as well as further development work on other priority tasks (i.e., <a href="http://freestyleintegration.wordpress.com/2010/06/07/weekly-update-may-24-june-6/">unfinished components</a> that must be completed before the merge into the trunk is asked) are anticipated in the next weeks.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1470/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1470/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1470&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2011/09/25/development-updates-on-september-25/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/09/sketchy_chaining_tn.jpg" medium="image">
			<media:title type="html">sketchy_chaining_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/09/geometry_calligraphy_tn.jpg" medium="image">
			<media:title type="html">geometry_calligraphy_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/09/perlin_angle_45_tn.jpg" medium="image">
			<media:title type="html">perlin_angle_45_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/09/perlin_angle_135_tn.jpg" medium="image">
			<media:title type="html">perlin_angle_135_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/09/perlin_noise_test_1d_tn.jpg" medium="image">
			<media:title type="html">perlin_noise_test_1d_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/09/perlin_noise_test_2d_tn.jpg" medium="image">
			<media:title type="html">perlin_noise_test_2d_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/09/infinite_lines_bug_tn.jpg" medium="image">
			<media:title type="html">infinite_lines_bug_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/09/infinite_lines_fixed_tn.jpg" medium="image">
			<media:title type="html">infinite_lines_fixed_tn</media:title>
		</media:content>
	</item>
		<item>
		<title>Development updates on August 28</title>
		<link>http://freestyleintegration.wordpress.com/2011/08/28/development-updates-on-august-28/</link>
		<comments>http://freestyleintegration.wordpress.com/2011/08/28/development-updates-on-august-28/#comments</comments>
		<pubDate>Sun, 28 Aug 2011 22:19:41 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1441</guid>
		<description><![CDATA[Since the last blog post, several functionality improvements were made in the Freestyle branch as reported below. Stroke geometry modifiers A new set of line style options for modifying stroke geometry was introduced in the Parameter Editor mode.  Stroke geometry refers to the backbone polyline of a stroke.  Now stroke geometry can be modified by a list of stroke geometry [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1441&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Since the last blog post, several functionality improvements were made in the Freestyle branch as reported below.</p>
<h2>Stroke geometry modifiers</h2>
<p>A new set of line style options for modifying stroke geometry was introduced in the Parameter Editor mode.  Stroke geometry refers to the backbone polyline of a stroke.  Now stroke geometry can be modified by a list of stroke geometry modifiers specified in the Geometry tab (previously referred to as Distort).  At the moment the following geometry modifiers are available, each with a set of animateable parameters:</p>
<ul>
<li>Sampling: Changes the resolution of stroke backbone polylines.</li>
<li>Bezier Curve: Replace stroke backbone with a Bezier approximation of the stroke backbone.</li>
<li>Sinus Displacement: Add sinus displacement to stroke backbone.</li>
<li>Spatial Noise: Add spatial noise to stroke backbone.</li>
<li>Perlin Noise 1D: Add one-dimensional Perlin noise to stroke backbone.</li>
<li>Perlin Noise 2D: Add two-dimensional Perlin noise to stroke backbone.</li>
<li>Backbone Stretcher: Stretch the beginning and the end of stroke backbone.</li>
<li>Tip Remover: Remove a piece of stroke at the beginning and the end of stroke backbone.</li>
</ul>
<p><strong>Note to branch users:</strong> When you have a .blend file with Freestyle options specified, you need to add a Sampling modifier with the Sampling parameter value set to 5, which is the default polyline resolution previously used for line drawing in Freestyle.  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.  If no sampling modifier is specified, your line drawing will result in coarse polylines.</p>
<p>Images below are a few example renders made with the following stroke geometry modifiers used: (a) no geometry modifiers, showing baseline stroke backbones; (b) Bezier Curve modifier; (c) Sinus Displacement modifier; (d) Backbone Stretcher and Spatial Noise modifiers.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/08/geometry_plain.png"><img class="alignnone size-full wp-image-1445" title="geometry_plain_tn" src="http://freestyleintegration.files.wordpress.com/2011/08/geometry_plain_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/08/geometry_bezier.png"><img class="alignnone size-full wp-image-1443" title="geometry_bezier_tn" src="http://freestyleintegration.files.wordpress.com/2011/08/geometry_bezier_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/08/geometry_sinus_displacement.png"><img class="alignnone size-full wp-image-1447" title="geometry_sinus_displacement_tn" src="http://freestyleintegration.files.wordpress.com/2011/08/geometry_sinus_displacement_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/08/geometry_spatial_noise.png"><img class="alignnone size-full wp-image-1449" title="geometry_spatial_noise_tn" src="http://freestyleintegration.files.wordpress.com/2011/08/geometry_spatial_noise_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<h2>Fill Range by Selection</h2>
<p>A new push button Fill Range by Selection was added to the Distance from Camera and Distance from Object modifiers (see figures below).  This button allows you to automatically fill the Range Min and Max entries based on selected mesh objects.  For the Distance from Camera modifier, the Range Min (Max) entry is filled with the minimum (maximum) distance between the active camera and the vertices of selected mesh objects.  For the Distance from Object modifier, the distance between the target object and the mesh vertices is measured.</p>
<p style="text-align:center;"><img class="alignnone size-full wp-image-1450" title="fill_range_distance_from_camera" src="http://freestyleintegration.files.wordpress.com/2011/08/fill_range_distance_from_camera.png?w=430&#038;h=429" alt="" width="430" height="429" />  <img class="alignnone size-full wp-image-1451" title="fill_range_distance_from_object" src="http://freestyleintegration.files.wordpress.com/2011/08/fill_range_distance_from_object.png?w=430&#038;h=460" alt="" width="430" height="460" /></p>
<h2>Stroke splitting at material boundary</h2>
<p>A new toggle button for splitting strokes at material boundary was added to the Strokes tab.  This option divides strokes into pieces at material boundary.  The following renders illustrate the effect of the splitting option: (a) disabling the option results in a smooth (blurred) transition of stroke colors across material boundary; (b) enabling the option permits a flat color transition at material boundary.</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/08/material_color_test1.png"><img class="alignnone size-full wp-image-1454" title="material_color_test1_tn" src="http://freestyleintegration.files.wordpress.com/2011/08/material_color_test1_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/08/material_color_test2.png"><img class="alignnone size-full wp-image-1455" title="material_color_test2_tn" src="http://freestyleintegration.files.wordpress.com/2011/08/material_color_test2_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1441/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1441/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1441&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2011/08/28/development-updates-on-august-28/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/08/geometry_plain_tn.jpg" medium="image">
			<media:title type="html">geometry_plain_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/08/geometry_bezier_tn.jpg" medium="image">
			<media:title type="html">geometry_bezier_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/08/geometry_sinus_displacement_tn.jpg" medium="image">
			<media:title type="html">geometry_sinus_displacement_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/08/geometry_spatial_noise_tn.jpg" medium="image">
			<media:title type="html">geometry_spatial_noise_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/08/fill_range_distance_from_camera.png" medium="image">
			<media:title type="html">fill_range_distance_from_camera</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/08/fill_range_distance_from_object.png" medium="image">
			<media:title type="html">fill_range_distance_from_object</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/08/material_color_test1_tn.jpg" medium="image">
			<media:title type="html">material_color_test1_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/08/material_color_test2_tn.jpg" medium="image">
			<media:title type="html">material_color_test2_tn</media:title>
		</media:content>
	</item>
		<item>
		<title>Development updates on July 31</title>
		<link>http://freestyleintegration.wordpress.com/2011/08/01/development-updates-on-july-31/</link>
		<comments>http://freestyleintegration.wordpress.com/2011/08/01/development-updates-on-july-31/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 01:07:16 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1414</guid>
		<description><![CDATA[It has been a while since the last development updates.  This absence of branch activities was mainly because of time constraints the main dev (T.K.) had during the last few months.  Due to restricted time resources, commits to the branch were mostly limited to merges of changes from the trunk and bug fixes based on problem reports from branch [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1414&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>It has been a while since the last development updates.  This absence of branch activities was mainly because of time constraints the main dev (T.K.) had during the last few months.  Due to restricted time resources, commits to the branch were mostly limited to merges of changes from the trunk and bug fixes based on problem reports from branch users.  The issues addressed include: (1) a wrong use of matrix inversion in the Distance from Object modifier; (2) composite node parameter animation not working with Freestyle; (3) a memory leak in silhouette edge detection; (4) linker errors for building blenderplayer; and (5) a bug in line caps due to zero-length strokes.  The dev team appreciate the feedback from the branch users who kindly reported these issues, some with .blend files to help us reproduce the problems.</p>
<p>In addition, the Parameter Editor mode of the Freestyle graphical user interface was enhanced with new Material modifiers that allow you to change the line color, alpha transparency, and line thickness of strokes by object materials.  The screenshot below shows the GUI controls of the Material color modifier.</p>
<p><img class="alignnone size-full wp-image-1429 aligncenter" title="material_color_modifier" src="http://freestyleintegration.files.wordpress.com/2011/07/material_color_modifier.png?w=308&#038;h=287" alt="" width="308" height="287" /></p>
<p>The following set of rendering results demonstrates a typical use the Material color modifier: (a) the stroke color is constant (i.e., the base color is black); (b) the Material color modifier is applied and the base color is replaced by the the diffuse color of object materials (i.e., blend = Mix, influence = 1.0); (c) same as (b) but the diffuse color of object materials is blended into the base color (blend = Add and influence = 0.4).</p>
<p style="text-align:center;"><a href="http://freestyleintegration.files.wordpress.com/2011/07/material_color_test1.png"><img class="alignnone size-full wp-image-1421" title="material_color_test1_tn" src="http://freestyleintegration.files.wordpress.com/2011/07/material_color_test1_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a>  <a href="http://freestyleintegration.files.wordpress.com/2011/07/material_color_test2.png"><img class="alignnone size-full wp-image-1423" title="material_color_test2_tn" src="http://freestyleintegration.files.wordpress.com/2011/07/material_color_test2_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /> </a> <a href="http://freestyleintegration.files.wordpress.com/2011/07/material_color_test3.png"><img class="alignnone size-full wp-image-1425" title="material_color_test3_tn" src="http://freestyleintegration.files.wordpress.com/2011/07/material_color_test3_tn.jpg?w=240&#038;h=180" alt="" width="240" height="180" /></a></p>
<h2>Artwork with Freestyle for Blender</h2>
<p>In the meantime, several branch users released excellent animation shorts and movie clips made partly with Freestyle.  First, Chris Burton and his colleagues released a finished animation short &#8220;<a href="http://www.iceboxstudios.co.uk/light-end">The Light at the End</a>&#8220;.  This is one of the most impressive pieces of artwork that give you a real sense of how line drawing with Freestyle looks like.</p>
<p><img class="alignnone size-full wp-image-1428 aligncenter" title="the_light_at_the_end" src="http://freestyleintegration.files.wordpress.com/2011/07/the_light_at_the_end.png?w=733&#038;h=416" alt="" width="733" height="416" /></p>
<p>Dolf Veenvliet (macouno) has been using Freestyle for his <a href="http://www.entoforms.com/">Entoforms</a> project.  Entoforms are little creatures generated by a program that &#8220;grows&#8221; them through a kind of DNA strings.  The use of Freestyle is meant to give a &#8220;drawn&#8221; look to 3D renders according to <a href="http://www.entoforms.com/2011/04/13/tandem-educta/">one of project blog posts</a>.</p>
<p><a href="http://www.youtube.com/watch?v=Yx5dx00CPgU"><img class="size-full wp-image-1427 aligncenter" title="entoforms" src="http://freestyleintegration.files.wordpress.com/2011/07/entoforms.png?w=702&#038;h=446" alt="" width="702" height="446" /></a></p>
<p>And last but not least, Ike AhLoe released a finished animation short &#8220;<a href="http://vimeo.com/23832392">Clocked In</a>&#8220;.  During the production of this artwork, he contributed to the Freestyle integration project through a number of bug reports and development updates.</p>
<p><img class="size-full wp-image-1426 aligncenter" title="clocked_in" src="http://freestyleintegration.files.wordpress.com/2011/07/clocked_in.png?w=734&#038;h=413" alt="" width="734" height="413" /></p>
<p>We are very grateful for the authors of these art products, since the early adoption of the Freestyle renderer should have been tough and time-consuming due to bugs and limitations.  We hope these frontier examples encourage further use of Freestyle in future 3D art projects.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1414/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1414/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1414&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2011/08/01/development-updates-on-july-31/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/07/material_color_modifier.png" medium="image">
			<media:title type="html">material_color_modifier</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/07/material_color_test1_tn.jpg" medium="image">
			<media:title type="html">material_color_test1_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/07/material_color_test2_tn.jpg" medium="image">
			<media:title type="html">material_color_test2_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/07/material_color_test3_tn.jpg" medium="image">
			<media:title type="html">material_color_test3_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/07/the_light_at_the_end.png" medium="image">
			<media:title type="html">the_light_at_the_end</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/07/entoforms.png" medium="image">
			<media:title type="html">entoforms</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/07/clocked_in.png" medium="image">
			<media:title type="html">clocked_in</media:title>
		</media:content>
	</item>
		<item>
		<title>Development updates on March 17</title>
		<link>http://freestyleintegration.wordpress.com/2011/03/18/development-updates-on-march-17/</link>
		<comments>http://freestyleintegration.wordpress.com/2011/03/18/development-updates-on-march-17/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 02:48:44 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1393</guid>
		<description><![CDATA[View map construction is the most time-consuming part of the Freestyle rendering process.  In fact, the view map construction was impossibly slow when it came to large scenes.  This was a known issue that was meant to be addressed after all to-do items were finished and the long-awaited merge into the trunk was done, mainly because of the lack [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1393&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>View map construction is the most time-consuming part of the Freestyle rendering process.  In fact, the view map construction was impossibly slow when it came to large scenes.  This was a known issue that was meant to be addressed after all to-do items were finished and the long-awaited merge into the trunk was done, mainly because of the lack of development resources.  In last December, however, the Freestyle integration project received a big code contribution from Alexander Beels.  His focus was exactly on optimizing the view map construction code.  He made this possible by identifying the performance bottlenecks and carefully redesigning the internal data processing.  Starting from the initial version in December, Alex&#8217;s optimization patch underwent several rounds of code review and testing in collaboration with the dev team.  He made substantial efforts on examining different optimization strategies and implementations.  After more than three months of dedicated research and development, his work resulted in a highly efficient view map construction code that is now available in revision 35525 of the Freestyle branch.  As illustrated with several test scenes below, the optimized view map code offers surprising performance gains.  Many thanks to Alex for the excellent achievement!</p>
<h2>Technical overview of the optimization</h2>
<p>Now let us describe Alex&#8217;s optimization work from a technical perspective.  The performance improvements have been mainly done in two major components of the view map construction: silhouette edge detection, and edge visibility calculation.</p>
<p>Silhouette edge detection is to find feature edges of interest that constitute a basis of line drawing in Freestyle.  To optimize this data processing for speed, Alex made careful changes to the code base so as to exploit compilers&#8217; optimization capability.  This modification leads to a shorter rendering time independently of the spatial structure of a given scene.</p>
<p>The detected feature edges then undergo the edge visibility calculation where an integer value expressing quantitative visibility is assigned to each feature edge.  The edge visibility is determined by a raycasting algorithm with the help of a spatial grid structure that allows efficient traversal of faces in the 3D space (i.e., tris and quads) from the view point of a camera.  As a matter of fact, the non-optimized old view map code relied on a grid data structure that was implemented with the assumption that the faces were evenly distributed within the 3D bounding box.  In addition, the old code was internally creating a list of occluders by copying polygons again and again, which slowed down the view map construction.  Alex devised new grid data structures (SphericalGrid for perspective cameras and BoxGrid for orthographic cameras; automatically switched based on the camera types) that do not assume the ideal even distribution of polygons, as well as a heuristic grid density calculation algorithm that enables an adaptive population of the grid structures with polygons.  Moreover, an iterator is employed for obtaining the occluders on demand instead of making a local copy of them.</p>
<p>Based on these internal improvements, two optimized edge visibility calculation algorithms have been added: a &#8220;traditional&#8221; algorithm for emulating old visibility algorithms, and a &#8220;cumulative&#8221; algorithm for improved, more consistent line visibility.  Both algorithms exploit the new spatial grid data structures for fast raycasting.  Each optimized algorithm comes with two variations: culled and unculled.  The culled visibility algorithms exclude most of the feature edges outside the image boundary.  This will result in much faster visibility calculation at the cost of possible alterations to the results of edge chaining.  The unculled algorithms take all feature edges into account.  The latter is useful when off-image edges matter for chaining.</p>
<h2>﻿New rendering options</h2>
<p>A new option &#8220;Raycasting Algorithm&#8221; has been added to the Freestyle tab to allow users to choose a raycasting algorithm.  Available choices are:</p>
<ul>
<li>Normal Ray Casting</li>
<li>Fast Ray Casting</li>
<li>Very Fast Ray Casting</li>
<li>Culled Traditional Visibility Detection</li>
<li>Unculled Traditional Visibility Detection</li>
<li>Culled Cumulative Visibility Detection</li>
<li>Unculled Cumulative Visibility Detection</li>
</ul>
<p>The first three algorithms are those available in the original Freestyle (the &#8220;normal&#8221; raycasting was used unconditionally, though).  The &#8220;fast&#8221; and &#8220;very fast&#8221; raycasting algorithms achieve a faster calculation at the cost of less visibility accuracy.  The other four are newly introduced optimized options.  The visibility accuracy of the &#8220;traditional&#8221; algorithms are the same with the &#8220;normal&#8221; algorithm, while that of the &#8220;cumulative&#8221; algorithms is supposed to be the same with or better than the &#8220;normal&#8221; case.  Performance improvements over the old algorithms depend on the scenes to be rendered.  The recommended options for branch users are the culled/unculled cumulative visibility algorithms.  These two options are intended to replace the other algorithms in the future.</p>
<h2>Performance results</h2>
<p>To conclude this brief introduction of Alex&#8217;s wonderful optimization work, some performance results are shown below using four test scenes.  In all cases, the non-optimized &#8221;normal&#8221; visibility algorithm in revision 35506 was compared with the culled cumulative visibility algorithm.</p>
<p><span style="text-decoration:underline;">Ichiotsu (orthographic)</span></p>
<p><a href="http://freestyleintegration.files.wordpress.com/2011/03/ichiotsu_ortho.png"><img class="alignnone size-full wp-image-1402" title="ichiotsu_ortho_tn" src="http://freestyleintegration.files.wordpress.com/2011/03/ichiotsu_ortho_tn.jpg?w=213&#038;h=320" alt="" width="213" height="320" /></a></p>
<p>73448 vertices, 72260 faces, orthographic camera.</p>
<table border="1" cellpadding="5">
<col span="1"></col>
<col span="3"></col>
<tbody>
<tr>
<td rowspan="2">　</td>
<td style="text-align:center;">Normal</td>
<td style="text-align:center;" colspan="2">Culled cumulative</td>
</tr>
<tr>
<td style="text-align:center;">Time [sec]</td>
<td style="text-align:center;">Time [sec]</td>
<td style="text-align:center;">Speedup</td>
</tr>
<tr>
<td>Silhouette edge detection</td>
<td style="text-align:center;">5.062</td>
<td style="text-align:center;">3.993</td>
<td style="text-align:center;">1.268</td>
</tr>
<tr>
<td>View map building</td>
<td style="text-align:center;">14.27</td>
<td style="text-align:center;">1.126</td>
<td style="text-align:center;">12.67</td>
</tr>
<tr>
<td>Sum</td>
<td style="text-align:center;">19.33</td>
<td style="text-align:center;">5.119</td>
<td style="text-align:center;"><strong>3.777</strong></td>
</tr>
</tbody>
</table>
<p><span style="text-decoration:underline;">Ichiotsu (perspective)</span></p>
<p><a href="http://freestyleintegration.files.wordpress.com/2011/03/ichiotsu_persp.png"><img class="alignnone size-full wp-image-1404" title="ichiotsu_persp_tn" src="http://freestyleintegration.files.wordpress.com/2011/03/ichiotsu_persp_tn.jpg?w=213&#038;h=320" alt="" width="213" height="320" /></a></p>
<p>73448 vertices, 72260 faces, perspective camera.</p>
<table border="1" cellpadding="5">
<col span="1"></col>
<col span="3"></col>
<tbody>
<tr>
<td rowspan="2">　</td>
<td style="text-align:center;">Normal</td>
<td style="text-align:center;" colspan="2">Culled cumulative</td>
</tr>
<tr>
<td style="text-align:center;">Time [sec]</td>
<td style="text-align:center;">Time [sec]</td>
<td style="text-align:center;">Speedup</td>
</tr>
<tr>
<td>Silhouette edge detection</td>
<td style="text-align:center;">5.084</td>
<td style="text-align:center;">4.182</td>
<td style="text-align:center;">1.216</td>
</tr>
<tr>
<td>View map building</td>
<td style="text-align:center;">15.98</td>
<td style="text-align:center;">1.301</td>
<td style="text-align:center;">12.28</td>
</tr>
<tr>
<td>Sum</td>
<td style="text-align:center;">21.06</td>
<td style="text-align:center;">5.483</td>
<td style="text-align:center;"><strong>3.841</strong></td>
</tr>
</tbody>
</table>
<p><span style="text-decoration:underline;">Lily</span></p>
<p><a href="http://freestyleintegration.files.wordpress.com/2011/03/lily.png"><img class="alignnone size-full wp-image-1406" title="lily_tn" src="http://freestyleintegration.files.wordpress.com/2011/03/lily_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p>64011 vertices, 60346 faces, perspective camera.</p>
<table border="1" cellpadding="5">
<col span="1"></col>
<col span="3"></col>
<tbody>
<tr>
<td rowspan="2">　</td>
<td style="text-align:center;">Normal</td>
<td style="text-align:center;" colspan="2">Culled cumulative</td>
</tr>
<tr>
<td style="text-align:center;">Time [sec]</td>
<td style="text-align:center;">Time [sec]</td>
<td style="text-align:center;">Speedup</td>
</tr>
<tr>
<td>Silhouette edge detection</td>
<td style="text-align:center;">17.66</td>
<td style="text-align:center;">0.4280</td>
<td style="text-align:center;">41.27</td>
</tr>
<tr>
<td>View map building</td>
<td style="text-align:center;">13.07</td>
<td style="text-align:center;">2.422</td>
<td style="text-align:center;">5.397</td>
</tr>
<tr>
<td>Sum</td>
<td style="text-align:center;">30.74</td>
<td style="text-align:center;">2.850</td>
<td style="text-align:center;"><strong>10.78</strong></td>
</tr>
</tbody>
</table>
<p><span style="text-decoration:underline;">A scene by Greg Sandor (from <a href="http://www.3drender.com/challenges/">Lighting Challenge #15: Film Noir</a>)</span></p>
<p><a href="http://freestyleintegration.files.wordpress.com/2011/03/film_noir.png"><img class="alignnone size-full wp-image-1400" title="film_noir_tn" src="http://freestyleintegration.files.wordpress.com/2011/03/film_noir_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p>109180 vertices, 189191 faces, perspective camera.</p>
<table border="1" cellpadding="5">
<col span="1"></col>
<col span="3"></col>
<tbody>
<tr>
<td rowspan="2">　</td>
<td style="text-align:center;">Normal</td>
<td style="text-align:center;" colspan="2">Culled cumulative</td>
</tr>
<tr>
<td style="text-align:center;">Time [sec]</td>
<td style="text-align:center;">Time [sec]</td>
<td style="text-align:center;">Speedup</td>
</tr>
<tr>
<td>Silhouette edge detection</td>
<td style="text-align:center;">0.5670</td>
<td style="text-align:center;">0.3080</td>
<td style="text-align:center;">1.841</td>
</tr>
<tr>
<td>View map building</td>
<td style="text-align:center;">2045.0</td>
<td style="text-align:center;">10.74</td>
<td style="text-align:center;">190.5</td>
</tr>
<tr>
<td>Sum</td>
<td style="text-align:center;">2045.5</td>
<td style="text-align:center;">11.04</td>
<td style="text-align:center;"><strong>185.2</strong></td>
</tr>
</tbody>
</table>
<p>The first two examples indicate that the new grid data structures for perspective and orthographic cameras have comparable performance.  The third test showed a huge performance gain in silhouette edge detection.  The last big scene resulted in an incredible speedup rate in the view map building phase.  Remarkably, these amazing performance results are solely by means of Alex&#8217;s optimization work.  Again, thank you Alex!  This is really great!</p>
<p>Branch users are encouraged to test the new raycasting algorithms from both performance and artistic perspectives.  Performance reports and rendering results are highly welcome, possibly through <a href="http://blenderartists.org/forum/showthread.php?89986-Freestyle-for-Blender">the Freestyle thread in BlenderArtists.org</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1393/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1393/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1393&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2011/03/18/development-updates-on-march-17/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/03/ichiotsu_ortho_tn.jpg" medium="image">
			<media:title type="html">ichiotsu_ortho_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/03/ichiotsu_persp_tn.jpg" medium="image">
			<media:title type="html">ichiotsu_persp_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/03/lily_tn.jpg" medium="image">
			<media:title type="html">lily_tn</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/03/film_noir_tn.jpg" medium="image">
			<media:title type="html">film_noir_tn</media:title>
		</media:content>
	</item>
		<item>
		<title>Development updates on February 26</title>
		<link>http://freestyleintegration.wordpress.com/2011/02/27/development-updates-february-26/</link>
		<comments>http://freestyleintegration.wordpress.com/2011/02/27/development-updates-february-26/#comments</comments>
		<pubDate>Sun, 27 Feb 2011 00:39:37 +0000</pubDate>
		<dc:creator>The dev team</dc:creator>
				<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://freestyleintegration.wordpress.com/?p=1384</guid>
		<description><![CDATA[During the last two months both this blog and the integration work were quiet mainly due to very limited time resources.  However, all the changes in the trunk have been merged into the Freestyle branch on a weekly basis.  In addition, a few problems that affected many branch users have been addressed as summarized below. [&#8230;]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1384&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>During the last two months both this blog and the integration work were quiet mainly due to very limited time resources.  However, all the changes in the trunk have been merged into the Freestyle branch on a weekly basis.  In addition, a few problems that affected many branch users have been addressed as summarized below.</p>
<p><strong>1. Fixes for unexpected long straight lines</strong></p>
<p>First, the issue of occasional unexpected long straight lines has been partially addressed.  Branch users may encounter this issue when a number of frames for animation is rendered.  A typical situation is that a few frames (e.g., one or two out of a hundred frames) suffer from weird long straight lines that are not in the scene data.  An example of such a long straight line is shown in the image below.  This problem is mostly due to a known bug in stroke mesh generation.  The bug is that quick U-turns in stroke topology are not handled properly.  A fix for this bug is planned as part of a comprehensive improvement of stroke mesh generation described in <a href="http://freestyleintegration.wordpress.com/2010/09/23/weekly-update-september-1-21/">a blog post in last September</a>.  As a quick remedy for now, the Parameter Editor mode has been extended so as to prevent strokes from doing quick U-turns.</p>
<p><a href="http://freestyleintegration.files.wordpress.com/2011/02/long_line_bug.png"><img class="size-full wp-image-1386 aligncenter" title="long_line_bug_tn" src="http://freestyleintegration.files.wordpress.com/2011/02/long_line_bug_tn.jpg?w=320&#038;h=240" alt="" width="320" height="240" /></a></p>
<p>Branch users writing custom style modules may be interested in the way how the fix is implemented.  Take a look at AngleLargerThanBP1D() in scripts/freestyle/style_modules/parameter_editor.py.  This predicate is used with ChainPredicateIterator() to allow two consecutive edges to be chained only when the angle of the two edges is larger than a given threshold.</p>
<p>In the meantime, another issue was identified as a source of unexpected long straight lines.  This issue arose when stroke thickness was specified by a curve mapping of a thickness modifier in the Parameter Editor mode.  In some occasions the curve mapping resulted in extrapolation, which gave an extremely large thickness value.  Now the extrapolation option is unconditionally disabled to prevent this issue, even when users turn on the option through the GUI.</p>
<p><strong>2. Consolidation of stroke drawing</strong></p>
<p>Second, consolidation of stroke drawing has been made through several related bug fixes.  After <a href="http://freestyleintegration.wordpress.com/2010/11/28/weekly-update-november-15-28/">the introduction of face smoothness in last November</a>, branch users may have seen a warning message shown below in the middle of stroke drawing:</p>
<blockquote><p>Warning: you should not be there&#8230;</p></blockquote>
<p>This warning turned out to be due to those edges in the view map that have a two-dimensional length almost or exactly equal to zero.  When such a zero-length edge was in a chain of edges on which a stroke was drawn, a number of style module API functions such as MaterialF0D() failed.  In addition, MaterialF0D() had another bug that an error condition was ignored due to a wrong return value.  In the end, these bugs jointly caused stroke color to be left undefined.</p>
<p>This stroke drawing instability has been addressed by automatically removing the zero-length edges (and chains of them) before stroke drawing begins and after stroke splitting is performed (e.g., using Operators.sequentialSplit()).  The bug in MaterialF0D was also fixed.</p>
<p>Moreover, possible memory leaks due to errors in user-defined style modules have been fixed.  Since scripting errors during style module coding are inevitable, these fixes improve the stability of the program regardless of having temporary programming errors in user-defined predicates, chaining iterators, and shaders.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/freestyleintegration.wordpress.com/1384/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/freestyleintegration.wordpress.com/1384/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=freestyleintegration.wordpress.com&#038;blog=10837344&#038;post=1384&#038;subd=freestyleintegration&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://freestyleintegration.wordpress.com/2011/02/27/development-updates-february-26/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:content url="http://2.gravatar.com/avatar/5724a636de65ba35c736696f0aeb7566?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">The dev team</media:title>
		</media:content>

		<media:content url="http://freestyleintegration.files.wordpress.com/2011/02/long_line_bug_tn.jpg" medium="image">
			<media:title type="html">long_line_bug_tn</media:title>
		</media:content>
	</item>
	</channel>
</rss>
