<?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/"
	>

<channel>
	<title>Blender CodeBlender Code | Blender Code</title>
	<atom:link href="http://code.blender.org/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://code.blender.org</link>
	<description>developer musings on Blender</description>
	<lastBuildDate>Thu, 10 May 2012 11:25:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Node Editing Tweaks</title>
		<link>http://code.blender.org/index.php/2012/05/node-editing-tweaks/</link>
		<comments>http://code.blender.org/index.php/2012/05/node-editing-tweaks/#comments</comments>
		<pubDate>Sat, 05 May 2012 14:20:31 +0000</pubDate>
		<dc:creator>lukas</dc:creator>
				<category><![CDATA[General Development]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=763</guid>
		<description><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2012/05/custom_colors-215x170.png" class="attachment-thumbnail wp-post-image" alt="Custom color for frames, Screenshot by Sebastian König" title="custom_colors" />The &#8220;Frame&#8221; node has been in trunk for a few months now, but it is still in a somewhat unfinished state. So i&#8217;ve made a few additions that will make this node a lot more useful for organizing node layout. Thanks to Sebastian König for feedback and testing! The general idea is that the Frame node can complement the already present Group nodes. Node groups are in fact separate data blocks, linked into a node tree by the node group (so the term &#8220;group&#8221; is a bit misleading: the internal nodes are completely separate from the surrounding nodes). The frame nodes on the other hand are really just a way of grouping nodes inside the same tree, without the need for additional interfaces. Oh, and btw: We should change the name of this thing! &#8220;Frame&#8221; usually has a different meaning in Blender, but i still don&#8217;t have a convincing alternative &#8230; Time to get creative! NOTE: I will upload the patch to the codereview tool soon, for now here is a simple pasteall.org link if you want to try it out: http://www.pasteall.org/31531/diff NOTE 2: The patch is now submitted to the code review tool: http://codereview.appspot.com/6200062/ Potential changes before trunk merge will [...]]]></description>
			<content:encoded><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2012/05/custom_colors-215x170.png" class="attachment-thumbnail wp-post-image" alt="Custom color for frames, Screenshot by Sebastian König" title="custom_colors" /><p><span style="font-weight: normal;">The &#8220;Frame&#8221; node has been in trunk for a few months now, but it is still in a somewhat unfinished state. So i&#8217;ve made a few additions that will make this node a lot more useful for organizing node layout. Thanks to Sebastian König for feedback and testing!</span><br />
<span style="font-weight: normal;">The general idea is that the <em>Frame</em> node can complement the already present <em>Group</em> nodes. Node groups are in fact separate data blocks, linked into a node tree by the node group (so the term &#8220;group&#8221; is a bit misleading: the internal nodes are completely separate from the surrounding nodes). The frame nodes on the other hand are really just a way of grouping nodes inside the same tree, without the need for additional interfaces.</span></p>
<p><span style="font-weight: normal;">Oh, and btw: We should change the name of this thing! &#8220;Frame&#8221; usually has a different meaning in Blender, but i still don&#8217;t have a convincing alternative &#8230; Time to get creative! <img src='http://code.blender.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </span></p>
<p><span style="font-weight: normal;"><em>NOTE: I will upload the patch to the <a href="http://codereview.appspot.com/">codereview tool</a> soon, for now here is a simple pasteall.org link if you want to try it out:</em></span></p>
<p><span style="font-weight: normal;"><a href="http://www.pasteall.org/31531/diff"><em>http://www.pasteall.org/31531/diff</em></a></span></p>
<p><span style="font-weight: normal;"><em>NOTE 2: The patch is now submitted to the code review tool:</em></span></p>
<p><span style="font-weight: normal;"><em><a href="http://codereview.appspot.com/6200062/">http://codereview.appspot.com/6200062/</a></em></span></p>
<p><em>Potential changes before trunk merge will be uploaded there as well.</em></p>
<h3>Frame Node Bounding Boxes</h3>
<p>Frame nodes now behave as <em>Bounding Boxes</em> around the attached nodes. When moving a child node of a frame, the size will update automatically to make sure it is big enough for all children.</p>
<div id="attachment_766" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/05/bounding_box_opt1.gif"><img class="size-full wp-image-766" title="bounding_box_opt" src="http://code.blender.org/wp-content/uploads/2012/05/bounding_box_opt1.gif" alt="" width="300" height="225" /></a><p class="wp-caption-text">Shrinking bounding box</p></div>
<p>Frame nodes have an optional <em>Shrink</em> setting (accessible in the sidebar), which ensures that the bounding box is of minimal size. If disabled the frame will not change size when children are moved closer together.</p>
<div id="attachment_770" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/05/bbox_shrink_opt.gif"><img class="size-full wp-image-770" title="bbox_shrink_opt" src="http://code.blender.org/wp-content/uploads/2012/05/bbox_shrink_opt.gif" alt="" width="300" height="225" /></a><p class="wp-caption-text">Shrinking disabled</p></div>
<h3>Improved Node Resizing</h3>
<p>Resizing nodes now has immediate visual feedback in the form of changing mouse cursors. When hovering the mouse over the border of a node, the cursor changes to indicate the possible directions in which a node border can be dragged.</p>
<p>Previously node borders could only be grabbed at the lower right corner. This was in fact restricted to resizing the node width, so having the resize widget in the corner is misleading (indicating a possible resize of height too). Any change of height is in fact purely automatic (for regular nodes), caused by resizing the preview with constant aspect ratio. Node borders can now be grabbed at both the left and right size instead for horizontal resizing.</p>
<div id="attachment_771" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/05/node_resize_opt.gif"><img class="size-full wp-image-771" title="node_resize_opt" src="http://code.blender.org/wp-content/uploads/2012/05/node_resize_opt.gif" alt="" width="300" height="225" /></a><p class="wp-caption-text">New resize behavior</p></div>
<p>Manual resizing of frame nodes only works if the <em>Shrink</em> option is disabled. Otherwise the frame size is determined fully automatic by the placement of child nodes. Unlike regular nodes, frame nodes can then also be resized in the vertical direction from both top and bottom border.</p>
<div id="attachment_772" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/05/frame_resize_opt.gif"><img class="size-full wp-image-772" title="frame_resize_opt" src="http://code.blender.org/wp-content/uploads/2012/05/frame_resize_opt.gif" alt="" width="300" height="225" /></a><p class="wp-caption-text">Manually resizing a frame</p></div>
<h3>New Operators for Managing Frame Nodes</h3>
<p>The frame node basically implements a parent/child relationship similar to that found in objects: The frame acts as the parent node for all attached children (including other frames). When moving the parent, the children move with it (transform hierarchy).</p>
<p>For changing this hierarchy a number operators and tools have been implemented:</p>
<p>Similar to object parenting, nodes can be attached and released from frames with directly operators:</p>
<ul>
<li><em>CTRL+p</em> attaches a node to the active frame. The last selected (=active) node has to be a frame node.</li>
<li><em>ALT+p</em> releases a node from it&#8217;s current parent.</li>
</ul>
<div id="attachment_777" class="wp-caption alignright" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/05/animation_opt.gif"><img class="size-full wp-image-777" title="frame_attach_opt" src="http://code.blender.org/wp-content/uploads/2012/05/animation_opt.gif" alt="" width="300" height="225" /></a><p class="wp-caption-text">Attach to frame by dragging onto it</p></div>
<p>In addition, nodes can also be attached and released more conveniently using mouse dragging:</p>
<ul>
<li>Moving any number of nodes onto a frame (i.e. mouse cursor is over the frame when confirming) attaches them to the frame.</li>
<li><em>ALT+f</em> releases a node from it&#8217;s parent (like <em>ALT+p</em>) and immediately starts the modal transform operator<br />
<em>Note: We tried implementing a grabbing variant for this (grab+modifier key), but there is just no unused working combination left in the keymap &#8230;</em></li>
</ul>
<p>Similar to <em>Node Groups</em> there are also ways to create new frames around a selection of nodes:</p>
<ul>
<li><em>ALT+j</em> creates a new frame around the selected nodes (like <em>ALT+g</em> for creating a group)</li>
<li>&#8220;ungrouping&#8221; can be done by simply deleting a frame node. All immediate child nodes are then released.</li>
</ul>
<h3>Theme Colors for Node Selection</h3>
<p>Previously the active node and selected nodes were indicated using the &#8220;Text Highlight&#8221; theme color for both. Now this has been replaced by dedicated theme colors for the active node and for selection respectively, to allow better visual distinction of the selection state.</p>
<div id="attachment_773" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/05/funky_selection_theme_colors.png"><img class="size-medium wp-image-773" title="funky_selection_theme_colors" src="http://code.blender.org/wp-content/uploads/2012/05/funky_selection_theme_colors-300x168.png" alt="" width="300" height="168" /></a><p class="wp-caption-text">Funky theme colors (just for show)</p></div>
<h3>Custom Node Colors</h3>
<p>Nodes can now have an optional custom color displayed on their &#8220;body&#8221; part (that is, the node background except the header bar and the outline). This is meant to be used primarily in combination with frame nodes, as a way to visually separate different sections of a node tree.</p>
<p>The colors have a preset system, like the one already in place for tracks in the clip editor. Colors can be stored as presets and can be applied to all selected nodes using the <em>Copy Color</em> button next to the preset menu.</p>
<div id="attachment_774" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/05/custom_colors.png"><img class="size-medium wp-image-774" title="custom_colors" src="http://code.blender.org/wp-content/uploads/2012/05/custom_colors-300x126.png" alt="" width="300" height="126" /></a><p class="wp-caption-text">Custom color for frames, Screenshot by Sebastian König</p></div>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2012/05/node-editing-tweaks/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Orphaned areas help call</title>
		<link>http://code.blender.org/index.php/2012/04/orphaned-areas-help-call/</link>
		<comments>http://code.blender.org/index.php/2012/04/orphaned-areas-help-call/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 16:24:29 +0000</pubDate>
		<dc:creator>Sergey</dc:creator>
				<category><![CDATA[General Development]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=748</guid>
		<description><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2012/04/901104856_e0d79f232b-215x170.jpg" class="attachment-thumbnail wp-post-image" alt="901104856_e0d79f232b" title="901104856_e0d79f232b" />Hello, everyone. Blender is becoming more and more big, developers who used to be active were kidnapped by their real life and they can not spend much time on Blender development anymore, which lead to some orphaned areas which are not currently maintained or in which help with maintaining is needed. I went through our bug tracker and source code to collect a list of such areas. Maybe somebody will become interested in improving some of this areas? It&#8217;ll help us a lot! So, here&#8217;s a list of areas where help woudl be really welcome: Tablets and other non-standard input devices. In fact it&#8217;s pretty fun and not so difficult area to work in, the only real difficult here is that some bugs can be reproduced using only specific hardware. Transformation module.This module needs a bit more love. Some of issues here are caused by some design assumptions and some re-thinking might be needed here. There&#8217;s also couple of bugs there and think Martin Poirier (maintainer of this area) wouldn&#8217;t mind having help fixing them. Volumetric materials. This kind of materials were implemented a while ago and weren&#8217;t actually improved further last year or so. But they still have got some [...]]]></description>
			<content:encoded><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2012/04/901104856_e0d79f232b-215x170.jpg" class="attachment-thumbnail wp-post-image" alt="901104856_e0d79f232b" title="901104856_e0d79f232b" /><p>Hello, everyone.</p>
<p>Blender is becoming more and more big, developers who used to be active were kidnapped by their real life and they can not spend much time on Blender development anymore, which lead to some orphaned areas which are not currently maintained or in which help with maintaining is needed. I went through our bug tracker and source code to collect a list of such areas. Maybe somebody will become interested in improving some of this areas? It&#8217;ll help us a lot!<span id="more-748"></span></p>
<p>So, here&#8217;s a list of areas where help woudl be really welcome:</p>
<ul>
<li><strong>Tablets and other non-standard input devices</strong>. In fact it&#8217;s pretty fun and not so difficult area to work in, the only real difficult here is that some bugs can be reproduced using only specific hardware.</li>
<li><strong>Transformation module</strong>.This module needs a bit more love. Some of issues here are caused by some design assumptions and some re-thinking might be needed here. There&#8217;s also couple of bugs there and think Martin Poirier (maintainer of this area) wouldn&#8217;t mind having help fixing them.</li>
<li><strong>Volumetric materials</strong>. This kind of materials were implemented a while ago and weren&#8217;t actually improved further last year or so. But they still have got some unresolved design issues like having volumetrics on different layers and so.</li>
<li><strong>Keymaps</strong>. We have an additional Maya keymap in default Blender&#8217;s configuration, but it weren&#8217;t improving further, sometimes it doesn&#8217;t actually match Maya.</li>
<li><strong>Sequencer</strong>. It&#8217;s kind of complicated area with some internal design limitations and not actually clear architecture. There are plenty of things which might be improved here, but there&#8217;s no developer-time currently for this.</li>
<li><strong>Particles</strong>. Currently there&#8217;s only Janne Karhu who&#8217;s working in this area and he doesn&#8217;t have much time for bigger improvements / fixes. Would be nice to have somebody else who&#8217;ll be familiar with this code to help improve / resolve issues there.</li>
<li><strong>Simulations</strong>. All simulations like cloth, physics, softbody, fluid are kind of orphaned at this moment. There&#8217;s Daniel Genrich who&#8217;s currently trying to improve this areas, but for sure one developer can not cover all this areas and having more developers here would be  really helpful.</li>
<li><strong>Metaballs</strong>. It&#8217;s also fun area which basically works, but it was designed a while ago and there&#8217;s some internal limitations there like they are not thread safe. Nice project for evening entertainment to play with <img src='http://code.blender.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li><strong>Game engine</strong>. Well, it&#8217;s not actually orphaned, we&#8217;ve got some active developers there, but BGE is quite large project and few developers can not cover it all. And can think about couple of ways to improve this area a lot.</li>
</ul>
<p>Hope this will help attract more attention to areas where help is needed. <a href="http://wiki.blender.org/index.php/Dev:Doc/Contact">Connect with us via the webpage here</a>.</p>
<p>-sergey-</p>
<p>(Image shared from http://www.flickr.com/photos/purrfectly_kittenish/901104856/)</p>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2012/04/orphaned-areas-help-call/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Improving node group interface editing</title>
		<link>http://code.blender.org/index.php/2012/01/improving-node-group-interface-editing/</link>
		<comments>http://code.blender.org/index.php/2012/01/improving-node-group-interface-editing/#comments</comments>
		<pubDate>Thu, 19 Jan 2012 16:06:14 +0000</pubDate>
		<dc:creator>lukas</dc:creator>
				<category><![CDATA[General Development]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=699</guid>
		<description><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface18-215x170.png" class="attachment-thumbnail wp-post-image" alt="With just a few input nodes the interface can be reduced to meaningful parameters" title="node_group_interface18" />General remarks on node groups Node groups will hopefully get more attractive and useful in the future. A new asset manager is being worked on, which i hope will make it much easier to efficiently share and re-use complex node group setups too, in addition to objects, rigs, materials and the like. This may not be very important for compositing work, my impression is that in that domain artists usually &#8220;stack up&#8221; effects one after the other without reusing specific setups a lot. However, in the case of shader nodes (Cycles) and the upcoming particle nodes as well as future modifier nodes this scenario is much more likely. There are basically two different ways to make use of node groups (apart from simply saving layout space): Build up complex effects out of small elementary parts Examples: - Generic diffuse/specular/environment shader from different bsdf nodes, to be used as a &#8220;classic&#8221; material - Particle emitters from basic components, such as create new particles -&#62; distribute on mesh surface -&#62; initialize velocity from normals, etc. Combine these in a single node group and you have a complete particle emitter asset. - Procedural objects with modifier nodes, e.g. a &#8220;window&#8221; asset from simple [...]]]></description>
			<content:encoded><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface18-215x170.png" class="attachment-thumbnail wp-post-image" alt="With just a few input nodes the interface can be reduced to meaningful parameters" title="node_group_interface18" /><h3>General remarks on node groups</h3>
<div id="_mcePaste">Node groups will hopefully get more attractive and useful in the future. A new asset manager is being worked on, which i hope will make it much easier to efficiently share and re-use complex node group setups too, in addition to objects, rigs, materials and the like. This may not be very important for compositing work, my impression is that in that domain artists usually &#8220;stack up&#8221; effects one after the other without reusing specific setups a lot. However, in the case of shader nodes (Cycles) and the upcoming particle nodes as well as future modifier nodes this scenario is much more likely. There are basically two different ways to make use of node groups (apart from simply saving layout space):</div>
<div id="_mcePaste">
<ol>
<li>Build up complex effects out of small elementary parts<br />
Examples:<br />
- Generic diffuse/specular/environment shader from different bsdf nodes, to be used as a &#8220;classic&#8221; material<br />
- Particle emitters from basic components, such as create new particles -&gt; distribute on mesh surface -&gt; initialize velocity from normals, etc. Combine these in a single node group and you have a complete particle emitter asset.<br />
- Procedural objects with modifier nodes, e.g. a &#8220;window&#8221; asset from simple base shapes and user settings like dimensions, number of panes, frame thickness, and of course different material slots for all the parts<br />
The advantage of generating such complex effects from simple components instead of adding them as a new node type is customization: You can take an existing shader/particle effect/object, make a copy of it and then tweak any internal part to make a new one. All this can be done by artists or TDs, without having to write C code and either use their own Blender builds or get a patch accepted into trunk.</li>
<li>Interface reduction<br />
Often a node can be quite cumbersome to set up, especially if it is a complex node group with lots of different user options. Reducing the interface of such a node or node tree is a good way to create a usable tool by only exposing those settings that artists need frequent access to. Any setting that is not exposed will just use a default constant value internally.</li>
</ol>
</div>
<h3>Problems with editing node groups</h3>
<div>The current paradigm of &#8220;opening&#8221; node groups in a single top-level node tree has a couple of flaws:</div>
<h4>1. Only a single level of node group depth</h4>
<div>You <em>can</em> actually add node groups inside other node groups by now, but you can not actually edit them on that deeper level. The only way to work around this is by adding a second instance of that node group at the top level and edit it there.</div>
<div><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface8.png"><img class="aligncenter size-medium wp-image-710" title="node_group_interface8" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface8-300x158.png" alt="" width="300" height="158" /></a><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface9.png"><img class="aligncenter size-medium wp-image-711" title="node_group_interface9" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface9-300x158.png" alt="" width="300" height="158" /></a></div>
<h4>2. Only a single node group can be edited at a time</h4>
<div>This design is supposed to mimick the edit mode feature used for objects in the 3D view. However, the edit mode paradigm does not really apply to them. While objects are composed of different internal elements (vertices, edges, faces) and do not contain other objects in turn, node groups are recursive by nature (a node containing other nodes).</div>
<div>Removing this limitation is difficult: On the design level it would mean a lot of graphical overhead to edit groups inside other groups (inside other groups etc.). Each group currently has a list of interface sockets, taking up space. Also opening a group node usually leads to overlapping with nodes in the background, so the visual outcome is ugly and confusing. Furthermore the simple &#8220;tab-tab&#8221; switching between open/closed node group would not work any longer, since it can mean to open an internal node group as well as closing the parent group.</div>
<div>On a technical code level this change would have big implications on virtually every single node operator, since these work by detecting the active node tree and the active/selected nodes from the context. If any of the open group nodes (which all have their internal node tree) can be eligible for editing then each operator must be told explicitly which tree/nodes to work on.</div>
<h4>3. Input/Output columns in display</h4>
<div>Currently a node group has a number of sockets on the left and right displayed in columns, which translate to sockets on all instances (group nodes) of that tree. These &#8220;tree sockets&#8221; (as opposed to node sockets) are connected to the internal nodes.</div>
<div>
<div id="attachment_701" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface2.png"><img class="size-medium wp-image-700" title="node_group_interface2" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface2-300x165.png" alt="" width="300" height="165" /></a><p class="wp-caption-text">Complex Cycles node tree for a snowy mountain shader</p></div>
</div>
<div>The problem with this is that the tree sockets placement is completely automatic, unlike other nodes which can be placed freely. What&#8217;s more, the overall size of the node group editing windows (and therefore the tree socket columns) changes when moving nodes around (bounding box).</div>
<div>
<div id="attachment_701" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface4.png"><img class="size-medium wp-image-701" title="node_group_interface4" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface4-300x165.png" alt="" width="300" height="165" /></a><p class="wp-caption-text">Moving nodes around also moves the tree sockets</p></div>
</div>
<div>With a lot of group sockets you end up with lots of long connections, especially when some input is used at the far right of the group tree (and vice versa for outputs). Add to this the new &#8220;drop on link&#8221; operator that automatically inserts nodes on links and your node group editing becomes very hard to control and frequently does unintended things.</div>
<div>
<div id="attachment_702" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface5.png"><img class="size-medium wp-image-702" title="node_group_interface5" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface5-300x165.png" alt="" width="300" height="165" /></a><p class="wp-caption-text">Stupid long links getting in the way, i didn&#39;t want to insert that there</p></div>
</div>
<div>Just for the sake of completeness: The shader node tree above uses a combination of Z height limit and normal angle to Z axis in order to create masks for a snow-capped mountain. The details are not really important here, it&#8217;s just one of the more complex node trees i had lying around that is suited to demonstrating node group features. This is what the result looks like:</div>
<p><span style="font-weight: normal;"><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface19.png"><img class="aligncenter size-medium wp-image-733" title="node_group_interface19" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface19-300x188.png" alt="" width="300" height="188" /></a><br />
</span></p>
<h3>Solutions</h3>
<h4>Make a usable &#8220;frame&#8221; node</h4>
<p>There is a new node type called &#8220;Frame&#8221; in the Layout category that provides functionality expected from node groups (the naming should be changed as well, one suggestion was &#8220;Tray&#8221;). The current implementation is still experimental, but with a little bit of work it can be a great feature.</p>
<p>The basic idea is to use this as a kind of local grouping helper. Any node (including other &#8220;frame&#8221; nodes, groups, etc.) can be <strong>attached</strong> to it, much like object&#8217;s parent/child attachment. Moving a frame node also moves all attached nodes. They can be linked to nodes outside the frame. Hierarchies of frame nodes can be created as well.</p>
<p>Unlike &#8220;real&#8221; node groups these frames can not be instantiated (shared), but they could allow simple duplication of all attached nodes. Since this is a very common use case for group nodes they seem to be a good replacement for local grouping of nodes.</p>
<p>Here&#8217;s a list of proposed additional features:</p>
<ol>
<li>Clear indication of attachment (currently not visible)</li>
<li>Beside explicit operators for attaching/detaching nodes to frames: Moving nodes outside of a frame detaches them.</li>
<li>Moving nodes into a frame <em>while pressing a modifier key</em> attaches them to the frame (currently always attaches automatically).</li>
<li>Frames can be <strong>locked</strong>, i.e. no attached nodes can be moved, all buttons are inaccessible, no linking, etc. This way the frame can be handled as a fixed, local group and makes editing easier.</li>
<li>Frames can be <strong>collapsed</strong>, to free space in the layout. This has some design challenges though, like how to deal with links to/from the attached nodes.</li>
<li>Standard operators for duplication and deleting work both for a selected frame node alone as well as the frame plus all attached nodes (using a modifier key)</li>
<li>New operator for &#8220;make frame around nodes&#8221;, similar to current &#8220;make group from selected nodes&#8221;. Ungrouping simply means deleting the frame node (see above).</li>
</ol>
<p>Not included here are all sorts of UI display improvements, such as easier resizeable borders, custom color schemes and so on.</p>
<h4>
<div id="attachment_712" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface10.png"><img class="size-medium wp-image-712" title="node_group_interface10" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface10-300x163.png" alt="" width="300" height="163" /></a><p class="wp-caption-text">Frame node hierarchy, active node highlights parent frames</p></div></h4>
<h4>Edit node groups as separate trees</h4>
<p>Reusable, standalone node groups would be edited just like any standard node tree would be. When &#8220;opening&#8221; a node group the editor display will switch to the internal node tree, instead of pretending to display a specific instance of that group in its parent tree (which is in fact just the shared node tree). This way the editing of nested node groups works in a consistent way across all possible levels.</p>
<p>No more nodetree/edittree distinction in the node space struct is required, there&#8217;s just a single active nodetree. The node editor window can keep a history of node paths in order to allow a web-browser-like behavior:</p>
<ul>
<li>Opening a node group pushes a node path onto the history stack, before switching the node tree over to the group internals. (&#8220;Follow a link&#8221; in web browsing terms)</li>
<li>Closing the node group means popping a node path from the history and go back to the previous tree.</li>
</ul>
<p>This behavior may not be quite as immediate as the tab-tab edit mode currently possible, but it seems that this a tradeoff between flexibility and simplicity. For simple grouping the frame node type described above would be used instead. Node groups on the other hand will become the choice for long-term reusable node assets.</p>
<p>It may be a good idea to actually implement these nodes as a completely new node type &#8220;Asset&#8221;, instead of remodeling the existing Group node type. This way the usability can be tested and if successful the Group node type can be removed at some later date.</p>
<h4>Detach interface sockets from columns</h4>
<div>Instead add an actual node for each socket in the group tree interface. These would be specialized nodes with a single input/output respectively. All settings for a particular interface socket can be either displayed on the node itself or in the extended setting in the side bar (active node panel). This includes the socket name, data type, subtype (currently not directly editable), default values and optional custom limits. This has a couple of advantages:</div>
<div id="_mcePaste">
<ul>
<li>It reduces clutter in the layout. Interface nodes can be placed by the user just like any other node, thereby cleaning up the layout and making it much easier to understand. Inputs/outputs can be closer to the internal nodes that make use of them.</li>
<li>No more automatic unintended movement when the bounding box changes. Less problems with unintentional inserting of nodes in links.</li>
<li>Less space wasted on interface settings. Once the group socket has been set up properly the node can be collapsed and only takes a small amount of space.</li>
</ul>
</div>
<div>
<p><div id="attachment_713" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface13.png"><img class="size-medium wp-image-713" title="node_group_interface13" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface13-300x103.png" alt="" width="300" height="103" /></a><p class="wp-caption-text">Current way of linking sockets to the input/output columns</p></div>
<div id="attachment_714" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface14.png"><img class="size-medium wp-image-714" title="node_group_interface14" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface14-300x103.png" alt="" width="300" height="103" /></a><p class="wp-caption-text">Proposed input/output interface nodes</p></div>
</div>
<div>Some questions:</div>
<div id="_mcePaste">
<ul>
<li>How to set up the order of inputs/outputs?<br />
The column stacks make this quite intuitive, so i suggest to keep socket display there, but just display names. Changing the ordering there should use drag&amp;drop instead of buttons (much easier + also saves space).</li>
<li>Only one node for each input/output, having multiple nodes for the same socket would be too confusing. Using the same input in different places can still lead to long links, but it&#8217;s much more controllable then and is at least not worse than the current system.</li>
<li>It would be nice to still have some visual indication of which tree socket in the column associates to which internal node. This is not as important as it may seem at first, since there is no real functional connection between the order of sockets in the columns and their nodes. However, some sort of highlighting indicator when selecting the node or the column item would make it easier to recognize them quickly.</li>
</ul>
<h3>Generating top-level interfaces from node trees</h3>
<div>This feature is not actually a cure for an urgent problem, but will help increase usability for node assets. The idea is that any top-level node tree used as part of a material or texture or (later) modifiers and particles would be more usable with a compact interface (in buttons window) with just the important changeable settings.</div>
<div>As an example, consider a node tree setup for Cycles. Every material in Cycles consists of nodes, there is no hardcoded, non-node material system any longer &#8211; the node tree essentially <strong>is</strong> the material. Now, when using an existing material node tree there are usually a plethora of possible input parameters to consider: any unconnected node input in the tree must be considered by the user. There has been some effort by Brecht to implement a more &#8220;classic&#8221; list-style view of the nodes in the material buttons panel, but imho this is not of much help for large and complex node trees.</div>
<div>What i want to propose is to use the existing options for group node sockets as a means of creating an &#8220;outer&#8221; interface for such node trees. Basically what we are doing in node groups is <em>defining an interface</em> out of all the possible parameters used by internal nodes. Until now the only place where this interface is presented to the user are the group node instances: all exposed inputs and outputs of the group tree are translated to simple sockets on the group nodes linking to it. It would be quite simple to use the same system for displaying such an interface as buttons in the button space. Not only does this reduce the vast amount of possible input parameters to a sensible necessary subset (which can be extended when needed), but it also allows us to use meaningful names for parameters.</div>
<div>
<div id="attachment_717" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface16.png"><img class="size-medium wp-image-717 " title="node_group_interface16" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface16-300x165.png" alt="" width="300" height="165" /></a><p class="wp-caption-text">The snow shader example with current node tree list view</p></div>
<div id="attachment_718" class="wp-caption aligncenter" style="width: 310px"><a href="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface18.png"><img class="size-medium wp-image-718" title="node_group_interface18" src="http://code.blender.org/wp-content/uploads/2012/01/node_group_interface18-300x165.png" alt="" width="300" height="165" /></a><p class="wp-caption-text">With just a few input nodes the interface can be reduced to meaningful parameters</p></div>
</div>
</div>
<h3><em>UPDATE</em></h3>
<p>After implementing the first two of the features mentioned above (interface proxy nodes and browser-like tree editing), i&#8217;ve made a little video tour to show them in action:</p>
<p><a href="http://www.youtube.com/watch?v=Jk_Kk5yOYvA">Node Groups Editor Tour</a></p>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2012/01/improving-node-group-interface-editing/feed/</wfw:commentRss>
		<slash:comments>31</slash:comments>
		</item>
		<item>
		<title>Cycles Roadmap</title>
		<link>http://code.blender.org/index.php/2012/01/cycles-roadmap/</link>
		<comments>http://code.blender.org/index.php/2012/01/cycles-roadmap/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 15:52:22 +0000</pubDate>
		<dc:creator>brecht</dc:creator>
				<category><![CDATA[General Development]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=688</guid>
		<description><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2012/01/cycles_roadmap_featured-215x170.png" class="attachment-thumbnail wp-post-image" alt="cycles_roadmap_featured" title="cycles_roadmap_featured" />Now that Cycles is in a Blender release, the next step is to extend it further and improve performance. Remember that Cycles is intended to be a render engine for individuals / small studios, aimed primarily at rendering animations, and this goal is what we evaluate priorities of features by. For the next few months, the main priorities are: Render layers, passes, full sample, compositing layer, .. Performance improvements / noise reduction for typical two bounce animation scenes Some smaller things for completeness (blender integration stuff, ramps, multi GPU, ..) After that, we should get to some more exciting features, which ones are a bit unclear, but this will be influenced by project Mango. Volume rendering and motion blur seem like good candidates, but we&#8217;ll see. Performance work will be ongoing during Mango of course, and we see that quite broadly, it&#8217;s about low level performance tuning, better algorithms and better user control. Beyond that, there is a feature list which contains roughly what we&#8217;d like to see added over the next 2 years. Contributing If you&#8217;re a developer and would like to help out, you can look in these places: Feature ToDo Known Issues Bug Tracker If you need more [...]]]></description>
			<content:encoded><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2012/01/cycles_roadmap_featured-215x170.png" class="attachment-thumbnail wp-post-image" alt="cycles_roadmap_featured" title="cycles_roadmap_featured" /><p>Now that Cycles is in a Blender release, the next step is to extend it further and improve performance. Remember that Cycles is intended to be a render engine for individuals / small studios, aimed primarily at rendering animations, and this goal is what we evaluate priorities of features by.</p>
<p>For the next few months, the main priorities are:</p>
<ul>
<li>Render layers, passes, full sample, compositing layer, ..</li>
<li>Performance improvements / noise reduction for typical two bounce animation scenes</li>
<li>Some smaller things for completeness (blender integration stuff, ramps, multi GPU, ..)</li>
</ul>
<p><a href="http://code.blender.org/wp-content/uploads/2012/01/cycles_roadmap.png"><img class="aligncenter size-full wp-image-689" title="cycles_roadmap" src="http://code.blender.org/wp-content/uploads/2012/01/cycles_roadmap.png" alt="" width="792" height="181" /></a></p>
<p>After that, we should get to some more exciting features, which ones are a bit unclear, but this will be influenced by project Mango. Volume rendering and motion blur seem like good candidates, but we&#8217;ll see. Performance work will be ongoing during Mango of course, and we see that quite broadly, it&#8217;s about low level performance tuning, better algorithms and better user control.</p>
<p>Beyond that, there is a <a href="http://wiki.blender.org/index.php/Dev:2.6/Source/Render/Cycles/ToDo">feature list</a> which contains roughly what we&#8217;d like to see added over the next 2 years.</p>
<p><strong>Contributing</strong></p>
<p>If you&#8217;re a developer and would like to help out, you can look in these places:</p>
<ul>
<li><a href="http://wiki.blender.org/index.php/Dev:2.6/Source/Render/Cycles/ToDo">Feature ToDo</a></li>
<li><a href="http://wiki.blender.org/index.php/Dev:2.6/Source/Render/Cycles/KnownIssues">Known Issues</a></li>
<li><a href="http://projects.blender.org/tracker/?atid=498&amp;group_id=9&amp;func=browse">Bug Tracker</a></li>
</ul>
<p>If you need more details about how features should work, how to implement things or just to announce that you&#8217;re working on something, contact the <a href="http://lists.blender.org/mailman/listinfo/bf-cycles">bf-cycles mailing list</a>. Another way to help is to improve our <a href="http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles">documentation in the manual</a>.</p>
<p><strong>Not Priorities</strong></p>
<p>There are some things obviously missing that people would like to see added. Bidirectional path tracing, photon mapping, MLT and similar algorithm are not a priority for me, since we do not believe they are the main possible performance improvements for animation frames. Shading language support, resumable rendering, is another one that we do not think should get very high priority.</p>
<p><strong>GPU Rendering</strong></p>
<p>Lastly, GPU rendering can be somewhat of a bottleneck to development. It seems that with older cards and current OpenCL support in the drivers, we&#8217;d have to considerably complicate the code to get Cycles working fully, to the point where it would be too hard to add new features. This also means we&#8217;re dependent on improving driver implementations or language features. We&#8217;ll keep track of this, but also can&#8217;t justify spending too much time on this, to try to work around issues with every possible card / driver combination.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2012/01/cycles-roadmap/feed/</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Remesh Modifier</title>
		<link>http://code.blender.org/index.php/2011/12/remesh-modifier/</link>
		<comments>http://code.blender.org/index.php/2011/12/remesh-modifier/#comments</comments>
		<pubDate>Sat, 31 Dec 2011 01:12:26 +0000</pubDate>
		<dc:creator>nicholasbishop</dc:creator>
				<category><![CDATA[General Development]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=672</guid>
		<description><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/12/remesh01-215x170.png" class="attachment-thumbnail wp-post-image" alt="Remesh Modifier" title="RemeshModifier" />The dual-contouring remesh modifier is now in trunk. This modifier is based of code contributed to Blender by Tao Ju back in March. It implements the algorithm described in his paper &#8220;Dual Contouring of Hermite Data&#8221;. The general purpose of the modifier is to generate a new surface that follows the same shape as the input, but with more regular topology. The output of the modifier is all quads, and they are &#8220;nice&#8221; in the sense of not getting too skinny or irregular density, which should be useful for sculpting. The modifier also has some other interesting effects, such as removing small disconnected pieces, filling holes in the mesh, and outputting blocky remeshes (as with the purple and blue Suzannes in this post.) Big thanks to Tao Ju for his contribution! Thanks also to users who come up with designs for the modifier&#8217;s icon, and in particular to Zafio, whose icon is now the remesh icon. And another thanks to Sergey for reviewing the code. (Blender at its best: everyone else does the hard work and I just push the big red commit button.) Documentation and examples are on the Blender wiki, check out in particular nice example videos from Roberto [...]]]></description>
			<content:encoded><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/12/remesh01-215x170.png" class="attachment-thumbnail wp-post-image" alt="Remesh Modifier" title="RemeshModifier" /><p><a href="http://code.blender.org/wp-content/uploads/2011/12/remesh01.png"><img class="alignright size-medium wp-image-674" style="border-style: initial;border-color: initial;color: #0000ee;text-decoration: underline" src="http://code.blender.org/wp-content/uploads/2011/12/remesh01-300x168.png" alt="" width="300" height="168" /></a></p>
<p>The dual-contouring remesh modifier is now in trunk. This modifier is based of code <a href="http://lists.blender.org/pipermail/bf-committers/2011-March/030758.html">contributed</a> to Blender by Tao Ju back in March. It implements the algorithm described in his paper &#8220;<a rel="nofollow" href="http://www1.cse.wustl.edu/~taoju/research/dualContour.pdf">Dual Contouring of Hermite Data&#8221;</a>.</p>
<p>The general purpose of the modifier is to generate a new surface that follows the same shape as the input, but with more regular topology. The output of the modifier is all quads, and they are &#8220;nice&#8221; in the sense of not getting too skinny or irregular density, which should be useful for sculpting. The modifier also has some other interesting effects, such as removing small disconnected pieces, filling holes in the mesh, and outputting blocky remeshes (as with the purple and blue Suzannes in this post.)</p>
<p>Big thanks to Tao Ju for his contribution!</p>
<p>Thanks also to users who come up with <a href="http://blenderartists.org/forum/showthread.php?240751-Request-for-modifier-icon">designs for the modifier&#8217;s icon</a>, and in particular to <a href="http://www.zafio.com">Zafio</a>, whose <a href="http://blenderartists.org/forum/showthread.php?240751-Request-for-modifier-icon&amp;p=2015617&amp;viewfull=1#post2015617">icon</a> is now the remesh icon. And another thanks to Sergey for reviewing the code. (Blender at its best: everyone else does the hard work and I just push the big red commit button.)</p>
<p>Documentation and examples are on the <a href="http://wiki.blender.org/index.php/User:Nicholasbishop/RemeshModifier">Blender wiki</a>, check out in particular nice example videos from Roberto Roch.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2011/12/remesh-modifier/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Blender binary size</title>
		<link>http://code.blender.org/index.php/2011/12/blender-binary-size/</link>
		<comments>http://code.blender.org/index.php/2011/12/blender-binary-size/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 17:18:04 +0000</pubDate>
		<dc:creator>ton</dc:creator>
				<category><![CDATA[General Development]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=665</guid>
		<description><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/12/rt-215x170.png" class="attachment-thumbnail wp-post-image" alt="rt" title="rt" />I&#8217;m old enough to vividly remember floppy discs &#8211; and Blender fitting on it! That was Blender 2.04, in 2000. For fun here&#8217;s a graph showing the growth of 32 bit download zips (the release binaries). It&#8217;s a graph growing nicely with Moore&#8217;s Law. Roughly double size every 2 years. Expect a 100 MB Windows installer in 2015. Thanks Dan &#8216;troubled&#8217; for the graph work!]]></description>
			<content:encoded><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/12/rt-215x170.png" class="attachment-thumbnail wp-post-image" alt="rt" title="rt" /><p>I&#8217;m old enough to vividly remember floppy discs &#8211; and Blender fitting on it! That was Blender 2.04, in 2000. For fun here&#8217;s a graph showing the growth of 32 bit download zips (the release binaries). It&#8217;s a graph growing nicely with Moore&#8217;s Law. Roughly double size every 2 years. <img src='http://code.blender.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Expect a 100 MB Windows installer in 2015.</p>
<p>Thanks Dan &#8216;troubled&#8217; for the graph work!</p>
<p><a href="http://code.blender.org/wp-content/uploads/2011/12/rt.png"><img class="alignright size-full wp-image-666" title="rt" src="http://code.blender.org/wp-content/uploads/2011/12/rt.png" alt="" width="1087" height="692" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2011/12/blender-binary-size/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Dynamic Topology Sculpting</title>
		<link>http://code.blender.org/index.php/2011/10/dynamic-topology-sculpting/</link>
		<comments>http://code.blender.org/index.php/2011/10/dynamic-topology-sculpting/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 12:35:01 +0000</pubDate>
		<dc:creator>nicholasbishop</dc:creator>
				<category><![CDATA[General Development]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=625</guid>
		<description><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/10/Screenshot-at-2011-10-17-065606-215x170.png" class="attachment-thumbnail wp-post-image" alt="Dynamic Topology Sculpting" title="dyntopo-sculpt-00" />Hi all, Past couple months I&#8217;ve been working on implementing dynamic-topology sculpting for Blender. The implementation is based off the paper Freestyle: Sculpting meshes with self-adaptive topology by Lucian Stãnculescua, Raphaëlle Chainea, and Marie-Paule Canic. It&#8217;s getting stable enough to where people might find it fun to play with, so I thought I&#8217;d talk a bit about the tool and its current status. Quick demonstration videos: http://www.youtube.com/watch?v=GFFtR8wBtZ8, http://www.youtube.com/watch?v=F0X51O4RgWs High-level Overview The dynamic topology tool allows sculpt mode to change the topology of the mesh as you sculpt. It operates on triangles, so you have to convert quads to triangles before using it. The mesh is updated as you sculpt (during the stroke, not just at the end of a stroke.) The tool places restrictions on the lengths of triangle edges to ensure that the topology stays &#8220;nice&#8221; for sculpting (no long skinny triangles.) The triangle density is constant across the mesh; there&#8217;s no way currently to make the tool give more triangles in a particular area. The paper uses three basic operations to update the mesh: collapsing long edges, subdividing short edges, and merging close vertices. All three of these operations are implemented, but vertex-merge is currently disabled, as it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/10/Screenshot-at-2011-10-17-065606-215x170.png" class="attachment-thumbnail wp-post-image" alt="Dynamic Topology Sculpting" title="dyntopo-sculpt-00" /><p><a href="http://code.blender.org/wp-content/uploads/2011/10/Screenshot-at-2011-10-17-065606.png"><img class="alignright size-medium wp-image-626" src="http://code.blender.org/wp-content/uploads/2011/10/Screenshot-at-2011-10-17-065606-240x300.png" alt="Dynamic Topology Sculpting" width="240" height="300" /></a></p>
<p>Hi all,</p>
<p>Past couple months I&#8217;ve been working on implementing dynamic-topology sculpting for Blender. The implementation is based off the paper <em><a href="http://www.youtube.com/redirect?q=http%3A%2F%2Fwww.sciencedirect.com%2Fscience%2Farticle%2Fpii%2FS0097849311000720&amp;session_token=99UG95RurKUba5Wvqnlh9cOFHWx8MTMxODkzNzUwNkAxMzE4ODUxMTA2">Freestyle: Sculpting meshes with self-adaptive topology</a></em> by Lucian Stãnculescua, Raphaëlle Chainea, and Marie-Paule Canic. It&#8217;s getting stable enough to where people might find it fun to play with, so I thought I&#8217;d talk a bit about the tool and its current status.</p>
<p>Quick demonstration videos: <a href="http://www.youtube.com/watch?v=GFFtR8wBtZ8">http://www.youtube.com/watch?v=GFFtR8wBtZ8</a>, <a href="http://www.youtube.com/watch?v=F0X51O4RgWs">http://www.youtube.com/watch?v=F0X51O4RgWs</a></p>
<h1>High-level Overview</h1>
<p>The dynamic topology tool allows sculpt mode to change the topology of the mesh as you sculpt. It operates on triangles, so you have to convert quads to triangles before using it. The mesh is updated as you sculpt (during the stroke, not just at the end of a stroke.) The tool places restrictions on the lengths of triangle edges to ensure that the topology stays &#8220;nice&#8221; for sculpting (no long skinny triangles.) The triangle density is constant across the mesh; there&#8217;s no way currently to make the tool give more triangles in a particular area.</p>
<p>The paper uses three basic operations to update the mesh: collapsing long edges, subdividing short edges, and merging close vertices. All three of these operations are implemented, but vertex-merge is currently disabled, as it&#8217;s too crashy to use right now. These operations require adjacency data that is not normally present in Blender&#8217;s mesh representation. The paper recommends storing the three triangles adjacent to each triangle, as well as a single adjacent face for each vertex. This is enough to quickly calculate the 1-ring for vertices as needed. To make adding and removing vertices/faces easy, they&#8217;re stored in linked lists rather than the usual mesh arrays.</p>
<h1>Implementation Notes</h1>
<p>Most of the code lives in blenlib/dyntopo.c and blenlib/pbvh.c.</p>
<p>The linked-list representation is a bit similar to EditMesh, but smaller, simpler, and easier to integrate with the PBVH. The PBVH is the spatial data structure used in sculpt mode for making fast searches for which vertices to update and partial redraw. Ordinarily the PBVH contains arrays of mesh-element indices; these arrays are built just once when you enter sculpt mode. For dynamic topology sculpt, list bases for the vertices and faces were added to the PBVH nodes. At the end of each stroke, any modified nodes are checked to see if the number of faces they contain has grown too large, and if so they are split. (Empty nodes should also be collapsed, but I haven&#8217;t gotten around to that yet.)</p>
<h1>Testing</h1>
<p>Code is available from Gitorious, in the &#8220;adaptive&#8221; branch:</p>
<p><a href="https://gitorious.org/~nicholasbishop/blenderprojects/nicholasbishop-blender">https://gitorious.org/~nicholasbishop/blenderprojects/nicholasbishop-blender</a></p>
<pre>git clone git://gitorious.org/~nicholasbishop/blenderprojects/nicholasbishop-blender.git
git checkout adaptive</pre>
<p>Only CMake build system has been updated, but you could easily update scons too if you prefer that.</p>
<p>Usage is pretty simple: create a mesh, convert to all-triangles, enter sculpt mode, and click the &#8220;Dynamic Topology&#8221; button. Note that only the &#8220;simple&#8221; brushes work right now. Fancy things like smooth and grab will crash. Sculpting on a non-dynamic topology mesh will crash. Undo is disabled. Lots of other things I&#8217;ve forgotten about will also probably crash. Have fun! <img src='http://code.blender.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2011/10/dynamic-topology-sculpting/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>COLLADA momentum</title>
		<link>http://code.blender.org/index.php/2011/10/collada-momentum/</link>
		<comments>http://code.blender.org/index.php/2011/10/collada-momentum/#comments</comments>
		<pubDate>Sun, 16 Oct 2011 13:59:17 +0000</pubDate>
		<dc:creator>ton</dc:creator>
				<category><![CDATA[Code Design]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=610</guid>
		<description><![CDATA[<img width="213" height="170" src="http://code.blender.org/wp-content/uploads/2011/10/collada1-213x170.png" class="attachment-thumbnail wp-post-image" alt="collada" title="collada" />Open letter to everyone involved with managing/using COLLADA as proposed open 3d exchange format: This is a follow-up on the discussion I had with Khronos at Siggraph, especially on getting COLLADA supported better. In some ways things &#8211; on Blender side &#8211; improve steadily. But I also get disappointed reactions of professional users expecting things to work much better than we can provide still. From the Blender side I think we&#8217;re quite well equipped and supported now. There&#8217;s a small but active team of 4 people working on it. In order to keep momentum I have two suggestions for Khronos or the Collada team: 1) A call among Khronos members to support the OpenCollada(*) project in one way or another. It would be much advised if companies take &#8216;ownership&#8217; on this project too, getting officially involved. The OpenCollada website is now anonymous with a donation button without any visible projects or people running it. People in our team who submit bug reports to OpenCollada also wait far too long to get responses (&#62; 6 months). 2) The character animation im/export pipeline is still the most difficult and wanted target. I would bring together the stakeholders for this to define a [...]]]></description>
			<content:encoded><![CDATA[<img width="213" height="170" src="http://code.blender.org/wp-content/uploads/2011/10/collada1-213x170.png" class="attachment-thumbnail wp-post-image" alt="collada" title="collada" /><p><a href="http://code.blender.org/wp-content/uploads/2011/10/collada.png"><img class="alignright size-full wp-image-612" title="collada" src="http://code.blender.org/wp-content/uploads/2011/10/collada.png" alt="" width="213" height="44" /></a>Open letter to everyone involved with managing/using COLLADA as proposed open 3d exchange format:</p>
<p>This is a follow-up on the discussion I had with Khronos at Siggraph, especially on getting COLLADA supported better. In some ways things &#8211; on Blender side &#8211; improve steadily. But I also get disappointed reactions of professional users expecting things to work much better than we can provide still.</p>
<p>From the Blender side I think we&#8217;re quite well equipped and supported now. There&#8217;s a small but active team of 4 people working on it.</p>
<p>In order to keep momentum I have two suggestions for Khronos or the Collada team:</p>
<p>1) A call among Khronos members to support the OpenCollada(*) project in one way or another. It would be much advised if companies take &#8216;ownership&#8217; on this project too, getting officially involved. The OpenCollada website is now anonymous with a donation button without any visible projects or people running it. People in our team who submit bug reports to OpenCollada also wait far too long to get responses (&gt; 6 months).</p>
<p>2) The character animation im/export pipeline is still the most difficult and wanted target. I would bring together the stakeholders for this to define a &#8216;Character&#8217; badge, based on the minimal &amp; feasible specs related to that. That&#8217;s on one side the people who work on tools like Maya/Max/XSI/Houdini/C4D/Blender etc and the other side &#8216;users&#8217; such as Unity3D.</p>
<p>I know the Khronos group itself won&#8217;t allocate budgets to software development itself. Maybe the above two suggestions would fit in actions or organizational support Khronos members can provide somehow?</p>
<p>My own 2 cents on COLLADA: the advanced flexibility of the spec is both its strength as its weakness. In practice it means that you can align the definitions in files quite nice to how your own architecture works, forcing other programs to do conversion magic to own internal architecture again on reading that COLLADA file.<br />
Also the way how the conformance tests work now is very elaborate and complex (no companies or end-user tools have been listed to conform yet even!).</p>
<p>I realize that narrowing down the COLLADA spec is not going to happen easily, so I would suggest to reorganize (or refocus) the conformance testing system in a way both users as developers get predictable results quicker. That could be achieved by defining a sub-set for the Baseline badge which only validates;</p>
<p>- Baseline Model Badge: tria/quad models with UV coords and texture links and basic material definitions or references. Result should be efficient but minimal 3d model exchange.<br />
- Baseline Character Badge: Model as previous + deform groups, basic per-group and baked (per frame) motion matrices. Result should be efficient minimal 3d character export to game engines, and for animation film the motion of control-rigs only (assuming the character rigs themselves remain native).</p>
<p>For these badges I would not look at general API conformance, but simply bring together actual COLLADA users to provide the smallest &amp; simplest use cases &#8211; using minimal &amp; clear specs &#8211; and only validate this subset to confirm the badge.</p>
<p>This level is also what we currently support for FBX now, which is successfully used for the Blender-Unity pipeline now. It&#8217;s quite remarkable that we can get this work for this closed format well, and still struggle to achieve anything useful on that level with COLLADA instead.</p>
<p>I have only been involved indirectly with our Blender-COLLADA efforts, but I do know there&#8217;s been a whole lot of development time invested in it already in the past 4 years. The fact things still only work in a very basic way is quite disturbing. It shouldn&#8217;t be that difficult really. If something as basic like Model/Character I/O can&#8217;t be achieved among the main 3D tools in a short term, we might better conclude that COLLADA is not going to work for this ever&#8230;</p>
<p>Regards,</p>
<p>-Ton-</p>
<p>(* There&#8217;s also PyCollada http://pycollada.github.com/ and efforts in irc #blendercollada going on for a smaller and better maintained version of opencollada)</p>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2011/10/collada-momentum/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Call for screenshots + demo files</title>
		<link>http://code.blender.org/index.php/2011/09/call-for-screenshots-demo-files/</link>
		<comments>http://code.blender.org/index.php/2011/09/call-for-screenshots-demo-files/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 16:33:37 +0000</pubDate>
		<dc:creator>ton</dc:creator>
				<category><![CDATA[General Development]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=597</guid>
		<description><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/09/oscar-screenie-215x170.png" class="attachment-thumbnail wp-post-image" alt="oscar-screenie" title="oscar-screenie" />For the 2.60 release I like to get our blender.org feature pages updated, and provide (new) users a great collection of .blend files to play with. A selection of the .blend files then can also go to the the &#8220;Demo Loop&#8221;, a python script that loads files in a sequence and shows anims or renders. The Demo Loop has been used successfully at shows, and by vendors such as HP&#8217;s workstation division (sponsored us for Siggraph with systems!). You can try the Add-on &#8220;Demo mode&#8221; for it, but be warned&#8230; it had a bug which only got fixed today. Update: the spam filter here blocked posts with many urls, we do our best manually approving it now! Call for screenshots: Use CTRL+F3 in Blender to save, preferably as png file. Use full monitor size windows, 1920&#215;1080 or 1920&#215;1200 pixels would be great. Screenshots with different themes, fonts, languages etc. are welcome too. Call for demo files: Make sure it runs fine in 2.59 release from blender.org (Cycles demos are great too, we can spread that separately for now) Files should either have a short animation (turn table anim for objects, character anims, etc) or be interesting to render/composite (F12), or [...]]]></description>
			<content:encoded><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/09/oscar-screenie-215x170.png" class="attachment-thumbnail wp-post-image" alt="oscar-screenie" title="oscar-screenie" /><p><a href="http://code.blender.org/wp-content/uploads/2011/09/oscar-screenie.png"><img class="alignright size-thumbnail wp-image-599" title="oscar-screenie" src="http://code.blender.org/wp-content/uploads/2011/09/oscar-screenie-215x170.png" alt="" width="215" height="170" /></a>For the 2.60 release I like to get our blender.org feature pages updated, and provide (new) users a great collection of .blend files to play with. A selection of the .blend files then can also go to the the &#8220;Demo Loop&#8221;, a python script that loads files in a sequence and shows anims or renders. The Demo Loop has been used successfully at shows, and by vendors such as HP&#8217;s workstation division (sponsored us for Siggraph with systems!). You can try the Add-on &#8220;Demo mode&#8221; for it, but be warned&#8230; it had a bug which only got fixed today.</p>
<p><span style="color: #0000ff;">Update: the spam filter here blocked posts with many urls, we do our best manually approving it now!</span></p>
<h3><strong>Call for screenshots:</strong></h3>
<ul>
<li>Use CTRL+F3 in Blender to save, preferably as png file.</li>
<li>Use full monitor size windows, 1920&#215;1080 or 1920&#215;1200 pixels would be great.</li>
<li>Screenshots with different themes, fonts, languages etc. are welcome too.</li>
</ul>
<h3><strong>Call for demo files:</strong></h3>
<ul>
<li>Make sure it runs fine in 2.59 release from blender.org<br />
(Cycles demos are great too, we can spread that separately for now)</li>
<li> Files should either have a short animation (turn table anim for objects, character anims, etc) or be interesting to render/composite (F12), or have a cool GE experience (Pkey).</li>
<li>Make sure you pack in all texture maps in the .blend</li>
<li>Physics sim files: put in directory below .blend, use relative paths, and zip it all.</li>
<li>Best render demos are when it doesn&#8217;t take long, 20-30 seconds or so.</li>
<li>Files will be shown using the default theme colors.</li>
<li>Keep files a bit small&#8230; no limit here, but we can only include a few 50-100 MB files for download.</li>
</ul>
<h3><strong>License as Creative Commons 3.0 Attribution</strong></h3>
<ul>
<li>Default attribution would be:<br />
(CC-by) Blender, www.blender.org</li>
<li>You can optionally add your name and/or URL to the attribution.</li>
<li>Purpose is to (also) ensure everyone will be forced to credit Blender well!</li>
</ul>
<h3><strong>Upload to web!</strong></h3>
<ul>
<li>You can use your own website or dropboxes of course</li>
<li>Or use our anonymous ftp:<br />
- ftp to ftp.blender.org<br />
- username: anonymous<br />
- cd to directory incoming/ and upload the file(s)<br />
Files will appear in public at url http://download.blender.org/ftp/incoming/</li>
<li>Post here the url of the file(s) and your attribution options.</li>
</ul>
<p>Thanks!</p>
<p>-Ton-</p>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2011/09/call-for-screenshots-demo-files/feed/</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>Improved Internationalization and Localization</title>
		<link>http://code.blender.org/index.php/2011/09/improved-internationalization-and-localization/</link>
		<comments>http://code.blender.org/index.php/2011/09/improved-internationalization-and-localization/#comments</comments>
		<pubDate>Tue, 20 Sep 2011 13:57:58 +0000</pubDate>
		<dc:creator>Sergey</dc:creator>
				<category><![CDATA[General Development]]></category>
		<category><![CDATA[google summer of code]]></category>

		<guid isPermaLink="false">http://code.blender.org/?p=585</guid>
		<description><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/09/interface-215x170.png" class="attachment-thumbnail wp-post-image" alt="interface" title="interface" />Hello, Blender Community. Last week I was working together with Xiangquan Xiao to finish his Google Summer of Code project related on improving internationalization and localization in Blender. Localization was changed a bit since Blender 2.49. Now you can translate visible interface (labels, buttons, menus) and/or tooltips. In comparison with 2.49 there&#8217;s no option to separate translation of buttons and menus. It is because of internal changes of Blender itself &#8212; mostly related on RNA (which is actually getting translated and it&#8217;s quite difficult to predict if operator name would be used for button or menu). Usage Usage of localization is pretty simple. Go to User Preferences, System tab and in the right bottom you&#8217;ll see Use International Fonts checkbox. If you enable it, you&#8217;ll see Language used for translation and two check boxes: translate interface and translate tooltips. Interface will be translated as soon as you set language and enable translation of interface/tooltips. Known issues Unfortunately, there are some known issues: Translations aren&#8217;t full. It was more a project to bring up &#8220;platform&#8221; which will allow making translation easy. We need translators to translate all remained messages in .po files. I think details how this can be done would [...]]]></description>
			<content:encoded><![CDATA[<img width="215" height="170" src="http://code.blender.org/wp-content/uploads/2011/09/interface-215x170.png" class="attachment-thumbnail wp-post-image" alt="interface" title="interface" /><p><a href="http://code.blender.org/wp-content/uploads/2011/09/interface.png"><img class="alignleft size-medium wp-image-590" title="interface" src="http://code.blender.org/wp-content/uploads/2011/09/interface-300x166.png" alt="" width="300" height="166" /></a>Hello, Blender Community. Last week I was working together with Xiangquan Xiao to finish his Google Summer of Code project related on improving internationalization and localization in Blender.</p>
<p>Localization was changed a bit since Blender 2.49. Now you can translate visible interface (labels, buttons, menus) and/or tooltips. In comparison with 2.49 there&#8217;s no option to separate translation of buttons and menus. It is because of internal changes of Blender itself &#8212; mostly related on RNA (which is actually getting translated and it&#8217;s quite difficult to predict if operator name would be used for button or menu).</p>
<h3>Usage</h3>
<p><a href="http://code.blender.org/wp-content/uploads/2011/09/user-preferences.png"><img class="alignright size-medium wp-image-586" title="user preferences" src="http://code.blender.org/wp-content/uploads/2011/09/user-preferences-300x191.png" alt="" width="300" height="191" /></a>Usage of localization is pretty simple. Go to User Preferences, System tab and in the right bottom you&#8217;ll see Use International Fonts checkbox. If you enable it, you&#8217;ll see Language used for translation and two check boxes: translate interface and translate tooltips. Interface will be translated as soon as you set language and enable translation of interface/tooltips.</p>
<h3>Known issues</h3>
<p>Unfortunately, there are some known issues:</p>
<ul>
<li>Translations aren&#8217;t full. It was more a project to bring up &#8220;platform&#8221; which will allow making translation easy. We need translators to translate all remained messages in .po files. I think details how this can be done would be published separately.</li>
<li>If you&#8217;re running Linux, make sure locale for your language is generated. If locale isn&#8217;t generated, you&#8217;ll have a message in terminal when try to switch translation on. To define new locale you can use this command: sudo localedef -i ru_RU -f UTF-8 ru_RU.UTF-8</li>
<li>I&#8217;ve noticed really slow startup time and memory usage up to 800-900Mb on my laptop. Spent plenty of time to figure problem out and i found, that it&#8217;s video driver issue. My laptop has got some of Intel HD graphics (integrated into processor). Upgrading driver from Intel&#8217;s driver download center solved this issue.</li>
</ul>
<p>This project should be really easy to use, so let&#8217;s keep this post clear. Thanks for your time <img src='http://code.blender.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>-Sergey-</p>
]]></content:encoded>
			<wfw:commentRss>http://code.blender.org/index.php/2011/09/improved-internationalization-and-localization/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (request URI is rejected)

Served from: code.blender.org @ 2012-05-16 11:49:44 -->
