<?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>Operation: Stick Figure Army &#187; Uncategorized</title>
	<atom:link href="http://www.rockalypse.org/blogs/osfa/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rockalypse.org/blogs/osfa</link>
	<description>3D printing for everyone</description>
	<lastBuildDate>Mon, 16 Aug 2010 19:05:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>An Updated GUI</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/08/16/an-updated-gui/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/08/16/an-updated-gui/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 19:05:28 +0000</pubDate>
		<dc:creator>Sara</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rockalypse.org/blogs/osfa/?p=273</guid>
		<description><![CDATA[The OSFA software now flaunts an improved GUI with many new features. The first thing that users will notice after starting OSFA is splash screen and tool icons, as can be seen here: When starting a new project the user is allowed to input the size of their Canvas to work on. Once the user [...]]]></description>
			<content:encoded><![CDATA[<p>The OSFA software now flaunts an improved GUI with many new features. The first thing that users will notice after starting OSFA is splash screen and tool icons, as can be seen here:</p>
<div id="attachment_274" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/splashscreenshot.png"><img class="size-medium wp-image-274" title="splashscreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/splashscreenshot-300x205.png" alt="" width="300" height="205" /></a><p class="wp-caption-text">Introductory splash screen and tools window with icons</p></div>
<p>When starting a new project the user is allowed to input the size of their Canvas to work on.</p>
<div id="attachment_275" class="wp-caption aligncenter" style="width: 210px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/sizescreenshot.png"><img class="size-full wp-image-275" title="sizescreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/sizescreenshot.png" alt="" width="200" height="100" /></a><p class="wp-caption-text">The size window</p></div>
<p>Once the user inputs the size, OSFA calculates the number of sprinkles and displays the Canvas. In the preferences window, the user can select whether they would like a grid to be displayed. Each square in the grid represents one sprinkle.</p>
<div id="attachment_276" class="wp-caption aligncenter" style="width: 241px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/gridscreenshot.png"><img class="size-medium wp-image-276" title="gridscreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/gridscreenshot-231x300.png" alt="" width="231" height="300" /></a><p class="wp-caption-text">The user&#39;s canvas with a grid enabled</p></div>
<div id="attachment_277" class="wp-caption aligncenter" style="width: 210px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/preferencesscreenshot.png"><img class="size-full wp-image-277" title="preferencesscreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/preferencesscreenshot.png" alt="" width="200" height="100" /></a><p class="wp-caption-text">The preferences window</p></div>
<div id="attachment_278" class="wp-caption aligncenter" style="width: 241px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/nogridscreenshot.png"><img class="size-medium wp-image-278" title="nogridscreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/nogridscreenshot-231x300.png" alt="" width="231" height="300" /></a><p class="wp-caption-text">The user&#39;s canvas with the grid disabled</p></div>
<p>The user may then begin drawing their diagram. There are three different tiers that a user has to work with. If a sprinkle is designated as red then it will be the raised to the highest level when the image is converted to 3D, orange is the middle level, yellow the lowest. Therefore, the following 2D drawing:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/2dstairsscreenshot.png"><img class="aligncenter size-medium wp-image-279" title="2dstairsscreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/2dstairsscreenshot-300x261.png" alt="" width="300" height="261" /></a>will look like a rising and falling staircase in 3D, as can be seen here:</p>
<div id="attachment_280" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/3dstairsscreenshot.png"><img class="size-medium wp-image-280" title="3dstairsscreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/3dstairsscreenshot-300x125.png" alt="" width="300" height="125" /></a><p class="wp-caption-text">The above image converted to 3D</p></div>
<p>In the creation of their 2D image, the user has 3 different brush sizes available to them, 1&#215;1, 2&#215;2, and 3&#215;3:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/brushsizesscreenshot.png"><img class="aligncenter size-medium wp-image-281" title="brushsizesscreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/brushsizesscreenshot-280x300.png" alt="" width="280" height="300" /></a>The user can also create 3D shapes: hemispheres, cones, and cylinders, as well as Braille labels. In order to create a 3D shape the user selects the shape&#8217;s tool and then drags their mouse across the sprinkles they would like to be included in the shape. The selected pixels will appear gray, like so:</p>
<div id="attachment_282" class="wp-caption aligncenter" style="width: 290px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/creating3dshapescreenshot.png"><img class="size-medium wp-image-282" title="creating3dshapescreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/creating3dshapescreenshot-280x300.png" alt="" width="280" height="300" /></a><p class="wp-caption-text">In the process of creating a 3D shape</p></div>
<p>Upon release of the mouse, a 2D circle will appear that encompasses all of the sprinkles that were selected. The color of the circle denotes the 3D shape that will be created: hemispheres are green, cones are blue, cylinders are purple. Here is the 2D circle that was formed after the mouse was released in the above image:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/created3dshapescreenshot.png"><img class="aligncenter size-medium wp-image-283" title="created3dshapescreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/created3dshapescreenshot-280x300.png" alt="" width="280" height="300" /></a></p>
<p>The user can add as many 3D shapes as they would like:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/createdmultipleshapesscreenshot.png"><img class="aligncenter size-medium wp-image-284" title="createdmultipleshapesscreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/createdmultipleshapesscreenshot-280x300.png" alt="" width="280" height="300" /></a>Here is the 3D view of the three created shapes:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/blendershapesscreenshot.png"><img class="aligncenter size-medium wp-image-286" title="blendershapesscreenshot" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/08/blendershapesscreenshot-300x114.png" alt="" width="300" height="114" /></a>Also available are the eraser and clear all tools. They both do just as their name suggests. The eraser tool may also be used with any of the three brush sizes and, when dragged, rids of any tier colors that have been placed over the selected area. If the eraser tool is selected and then a 3D shape or Braille label is selected then that object is erased. The clear all tool clears the entire canvas.</p>
<p>Also, a user can open an image file. It will then be sprinklized and available for the user to edit with any of the features mentioned above.</p>
<p>Once a user is done they can use a tool bar option to send their image data to the Blender script which will render their 3D image for viewing as well as produce the STL file necessary for printing the object.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/08/16/an-updated-gui/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>using the admin web interface</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/07/21/using-the-admin-web-interface/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/07/21/using-the-admin-web-interface/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 21:58:26 +0000</pubDate>
		<dc:creator>Cory</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rockalypse.org/blogs/osfa/?p=272</guid>
		<description><![CDATA[Still playing with DJango I have been able to use the web interface to add and modify objects to the database.  Once the server is started, I can log in and add, view and make changes to existing objects.  In the dJango tutorial they use a Poll object as an example, as in a poll [...]]]></description>
			<content:encoded><![CDATA[<p>Still playing with DJango I have been able to use the web interface to add and modify objects to the database.  Once the server is started, I can log in and add, view and make changes to existing objects.  In the dJango tutorial they use a Poll object as an example, as in a poll survey poll with questions and possible choices to choose  from.  In this example, the Poll and Choice objects are defined ahead of time using classes in python.  Once that is done, you can manipulate these objects using the dJango API or the web interface.  I&#8217;ve experimented using both approaches, but typically if an admin is going to make changes they will probably be using the web interface.  You can also very easily add features like a search field, options for sorting and filtering results that make the user experience of viewing the web interface a pleasant one.  The way you add these features are all done through modifications to a python file, admin.py, which stores all of the information about how your custom web interface should look to the user.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/07/21/using-the-admin-web-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Printer Video</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/07/14/printer-video/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/07/14/printer-video/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 19:07:47 +0000</pubDate>
		<dc:creator>Sara</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rockalypse.org/blogs/osfa/?p=270</guid>
		<description><![CDATA[Here is a video we created yesterday for a presentation. It shows the printing of the list node shown in the last post. Linked List Node Print]]></description>
			<content:encoded><![CDATA[<p>Here is a video we created yesterday for a presentation. It shows the printing of the list node shown in the last post.</p>
<p><a href="http://www.youtube.com/watch?v=BpUHNW-A3YI">Linked List Node Print</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/07/14/printer-video/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Braille Labels</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/07/14/braille-labels/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/07/14/braille-labels/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 15:18:27 +0000</pubDate>
		<dc:creator>Sara</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rockalypse.org/blogs/osfa/?p=266</guid>
		<description><![CDATA[Recently, we&#8217;ve implemented a crucial feature to our program that will allow for better usability for blind students. Users can now create Braille labels to be embedded into their 3D objects. These labels can be placed anywhere within the image via our editor GUI. The previous implementation of hemispheres came in very handy during this [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, we&#8217;ve implemented a crucial feature to our program that will allow for better usability for blind students. Users can now create Braille labels to be embedded into their 3D objects. These labels can be placed anywhere within the image via our editor GUI.</p>
<p>The previous implementation of hemispheres came in very handy during this process. Braille letters consist of a 2 x 3 grid and the selection of spots in the grid that are filled with a hemisphere determines the letter it represents. Therefore, we only needed to figure out which locations would represent a spot on the grid and place a hemisphere at each of the necessary locations for each letter.</p>
<p>In the GUI, a user can select a sprinkle that they would like to represent the top left corner of the label and fill in the text box in the label dialog. Here is an image of a Braille label that we made and printed:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/07/braille.png"><img class="aligncenter size-medium wp-image-267" title="braille" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/07/braille-300x225.png" alt="" width="300" height="225" /></a></p>
<p>It is especially interesting to note the size of the hemispheres created. We needed to be sure that the hemispheres were big enough so that they could be distinguishable, yet small enough so that they don&#8217;t take up too much space. In the future, we plan to make the &#8220;font&#8221; size of the Braille lettering configurable.</p>
<p>Also, here is a picture of a linked list node that we recently designed in our GUI and printed:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/07/listNode.png"><img class="aligncenter size-medium wp-image-268" title="listNode" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/07/listNode-300x225.png" alt="" width="300" height="225" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/07/14/braille-labels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rainbow Sprinkles</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/06/28/rainbow-sprinkles/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/06/28/rainbow-sprinkles/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 15:50:03 +0000</pubDate>
		<dc:creator>Sara</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rockalypse.org/blogs/osfa/?p=259</guid>
		<description><![CDATA[In order to allow users to better interact with our program, we have begun development of a GUI. The creation of a simple user-friendly interface is especially important as we expect that many of our users may not be familiar with more technical interfaces, such as a Linux command line. The GUI implementation began when [...]]]></description>
			<content:encoded><![CDATA[<p>In order to allow users to better interact with our program, we have begun development of a GUI. The creation of a simple user-friendly interface is especially important as we expect that many of our users may not be familiar with more technical interfaces, such as a Linux command line.</p>
<p>The GUI implementation began when we needed a way for users to easily create hemispheres, and other 3D shapes, in their objects. Using the Canvas widget from the Tkinter Python module, and its ability to easily create rectangle objects in specific positions, we were able to represent the sprinklized 2D image as a collection of squares, one per sprinkle.</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/gui1.png"><img class="alignnone size-medium wp-image-260" title="gui1" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/gui1-300x254.png" alt="" width="300" height="254" /></a></p>
<p>To select an sprinkle, we implemented a mouse listener to pay attention to mouse clicks and keep track of which square the mouse was over. We then used an attribute of the Canvas widget, object tags, to keep track of which squares had been selected. When the user clicks a sprinkle, we are able to find which square (rectangle object) it&#8217;s represented by and place a selected tag on it. Once the user is done, we can go back and get all the sprinkles that had been tagged to determine the location and size of the 3D shape. To allow for better visibility of where and how big the object will be, when a square is selected, it changes colors. There is also a deselect feature (enacted by clicking on an already selected sprinkle) which removes the selected tag and changes the color back to black.</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/gui2.png"><img class="alignnone size-medium wp-image-264" title="gui2" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/gui2-300x254.png" alt="" width="300" height="254" /></a></p>
<p>In order to allow the user to easily select the image they wish to sprinklize, we have implemented a file picker, available through a &#8220;Choose your destiny&#8221; menu option.</p>
<p>After getting a basic GUI set up and having a way for users to easily select regions of their image, we thought it would be inice to allow for different textures in the 3D object. These may be especially useful in the future if, for instance, one would like to differentiate between colors in a diagram.</p>
<p>We attempted to do this by creating a &#8220;field&#8221; of tiny cones inside the selected area. This didn&#8217;t turn out as well as we had hoped as the cones were too small for the printer to produce. However, we will most likely come back to this feature in the future and see if we can tweak it for better results.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/06/28/rainbow-sprinkles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Four Plans and a Ziggurat</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/06/28/262/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/06/28/262/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 15:37:18 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Blender]]></category>
		<category><![CDATA[Cupcake]]></category>
		<category><![CDATA[hemispheres]]></category>
		<category><![CDATA[makerbot]]></category>
		<category><![CDATA[osfa]]></category>

		<guid isPermaLink="false">http://www.rockalypse.org/blogs/osfa/?p=262</guid>
		<description><![CDATA[After we figured out how to greatly simplify our 3d models, Sara and I turned out attention to creating different levels of elevation. As a concept this is pretty simple; we used different brightnesses in areas of our 2d picture to tell Blender which shapes we wanted to be the highest, second highest, etcetera., all [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } -->After we figured out how to greatly simplify our 3d models, Sara and I turned out attention to creating different levels of elevation.  As a concept this is pretty simple; we used different brightnesses in areas of our 2d picture to tell Blender which shapes we wanted to be the highest, second highest, etcetera., all based on assigning thresholds of pixel value to different “z axis” numbers, which in Blender would become the elevation of the sprinkles.</p>
<p>Thrilled with our success for all of half a day or so, we quickly came to the realization that because we were using sprinkles (which are square), even with a wide range of elevation options, making a smooth hemisphere with the Cupcake would be almost impossible.  It&#8217;d be like trying to create a pyramid or a dome and getting a ziggurat instead.</p>
<div id="attachment_263" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/ziggurat_Ur.jpg"><img class="size-medium wp-image-263" title="ziggurat_Ur" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/ziggurat_Ur-300x223.jpg" alt="" width="300" height="223" /></a><p class="wp-caption-text">Ziggurat!</p></div>
<p>So we began brainstorming ideas for creating half a sphere over the surface of our model in Blender, using only the Python scripts.  This was problematic to say the least because a) most of Blender&#8217;s power comes from the manipulatable interface of the model itself, as well as the hotkeys.  Both of which are useless when scripting; and b) There is no “create half sphere” handy hotkey period, even if we <em>could</em> use them.  In a fit of creative delusion, frustrated hair-pulling and occasional trips to the local icecream shop, we came up with four ideas.  (The last one worked, in case you were panicking  on our behalf.)</p>
<p>Idea 1 went something like this:  “If we create a whole sphere (Blender lets us do this pretty easily) and chop it in half, we&#8217;ll have half a sphere!”    Not only did we fail to find a reasonable way of removing half a sphere&#8217;s vertices, but we also realized that we&#8217;d have to fill in the bottom of what would essentially be an overturned bowl shape.  That idea was crossed out.  I&#8217;m sure it&#8217;s possible to do, but our fate lay along a different path etcetera etcetera.</p>
<p>Idea 2: “There&#8217;s this cool modifier called &#8216;Subsurf&#8217;!  It makes things all rounded!”  I&#8217;m not quite sure why this one was a flop.  I think it had something to do with my tendency to form vague ideas around nifty buttons in art programs.</p>
<p>Idea 3: “We could create branching arcs above the x-y plane, and just fill in the shell with vertices.”  See “Idea 2”.</p>
<p>Idea 4 (The One That Worked):  “Wait!  Boolean expressions!  Yes!”</p>
<p>The gist of what we ended up doing is that we realized boolean operations on different objects are pretty simple to script.  Boolean options in Blender work just as they do in logic. “And”, “or”, and “not”.  We used the Difference boolean operation on a cube and a whole sphere, after positioning them so that they overlap about halfway.  What this did was create a sort of ghost mesh of a half-sphere, by telling Blender “remove all of object A that intersects with object B”. (“Difference” is the only Boolean operation in Blender where it matters what order you specify the two objects).  So we ended up with a hemisphere (like we wanted), because the rest of that sphere shape overlapped with the dummy cube- which we deleted afterwards.</p>
<div id="attachment_265" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/pimpleBlah.jpg"><img class="size-medium wp-image-265" title="pimpleBlah" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/pimpleBlah-300x214.jpg" alt="" width="300" height="214" /></a><p class="wp-caption-text">Some domes</p></div>
<p>Now that we could create rounded surfaces wherever we wanted; the next step was to let the user specify where <em>they</em> wanted them, using a GUI.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/06/28/262/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designing the Interface</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/06/16/designing-the-interface/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/06/16/designing-the-interface/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 19:29:29 +0000</pubDate>
		<dc:creator>Cory</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.rockalypse.org/blogs/osfa/?p=255</guid>
		<description><![CDATA[During one of our recent meetings, we decided that while Sara and Stephanie continue working on constructing the guts of the image manipulation portion of the software, I would begin working on the front end or the interface for the software.  Last week I downloaded and started exploring Django, which is a python-driven framework for [...]]]></description>
			<content:encoded><![CDATA[<p>During one of our recent meetings, we decided that while Sara and Stephanie continue working on constructing the guts of the image manipulation portion of the software, I would begin working on the front end or the interface for the software.  Last week I downloaded and started exploring <a title="Link to the Django Project Home Page" href="http://www.djangoproject.com" target="_blank">Django</a>, which is a python-driven framework for the writing and deployment of web applications.  It features a rich API that can be accessed via python, separate admin and user interfaces so you can manage your projects, and even includes a server that you can use for testing purposes.  Despite the fact that a server is included, the docs explicitly discourage the use of this server in a production environment, and they state that it is only meant to test your web applications in a web browser during development.  I successfully installed django on the mac and have been working through the tutorial.  I have been able to do some basic things using the python interpreter and the django API.  The API is pretty extensive and there is a lot to learn, but luckily the docs and the tutorial are well written and give a great starting point.  My next task is to explore the admin options, which can be accessed via a web browser once the server is running.  Once logged in you can manage applications, users who have access etc.  I haven&#8217;t explored all the possibilities yet, but it is fun stuff!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/06/16/designing-the-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cranky Skeinforge, Internal Faces, and a Much Happier Printer&#8230;</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/06/10/cranky-skeinforge-internal-faces-and-a-much-happier-printer/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/06/10/cranky-skeinforge-internal-faces-and-a-much-happier-printer/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 18:58:59 +0000</pubDate>
		<dc:creator>Sara</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baseplate.org/blogs/osfa/?p=246</guid>
		<description><![CDATA[As we were joyously drawing, 3D-ifying, and printing various shapes, we noticed that during many of the prints, the printer head would partake in a good amount of jittering and seemingly random movements. The patterns it was creating to fill the objects didn&#8217;t make sense and we were curious as to why skeingforge, the program [...]]]></description>
			<content:encoded><![CDATA[<p>As we were joyously drawing, 3D-ifying, and printing various shapes, we noticed that during many of the prints, the printer head would partake in a good amount of jittering and seemingly random movements. The patterns it was creating to fill the objects didn&#8217;t make sense and we were curious as to why skeingforge, the program responsible for porting a 3D STL file to printer readable Gcode, would be telling the printer to make such patterns.</p>
<p>We looked at some of the layer patterns skeinforge was creating and we found layers like this abound:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/skeinforgebefore.jpg"><img class="aligncenter size-full wp-image-247" title="skeinforge(before)" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/skeinforgebefore.jpg" alt="" width="459" height="493" /></a></p>
<p>As you can see, there are many little squares visible inside the object and then skeinforge tried filling in around them. After getting slightly annoyed at skeinforge, we thought that maybe it wasn&#8217;t the program&#8217;s fault and considered what was being inputted into skeinforge to make it act in such a way.</p>
<p>Our creation of a 3D object is essentially placing many many cubes in a pattern corresponding to the original shape. Therefore, when there are multiple cubes placed together many faces were created that weren&#8217;t really necessary. They were actually obstructive to the process because when the object was sent to skeinforge, it tried to account for all the faces on all the cubes. The poor thing!</p>
<p>So we had to find some way so that only the outside faces, those that were necessary, were created. After much brain racking, white board diagrams, and thinking about each sprinkle&#8217;s role within the shape, we came up with a theory on how to fix our internal faces problem.</p>
<p>We decided that each sprinkle would need a top and a bottom face, as these faces will never be dublicated by another sprinkle. Then we had to look at the four sides of each sprinkle and decide where it should be allowed to have faces. We gave each sprinkle surrounding the current sprinkle, <em>s</em>, a number. Like so:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/sprinkles.jpg"><img class="aligncenter size-full wp-image-252" title="sprinkles" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/sprinkles.jpg" alt="" width="300" height="300" /></a>Then, in our Python program we had a four character string for <em>s</em>. If we looked at the sprinkle in the 1 position and saw that it wasn&#8217;t to be used in the final object, then we put a 1 as the first character in the string, indicating that, eventually, a face will need to be made facing that position. If the sprinkle at that position is not to be used, then a 0 would be put into the first character, indicating that a face should not be created there.</p>
<p>This method is done for all four positions for all sprinkles that were to be used in the object. Then we sent all the strings with their corresponding sprinkle coordinates into Blender.</p>
<p>Once in Blender we just have to look at the string of neighboring sprinkles to see where to make faces for each sprinkle. We then tested an object. In Blender we can see which faces have been created and it seems, with a few exceptions, that our method has worked.</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/nofaces2.jpg"><img class="aligncenter size-full wp-image-253" title="nofaces2" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/nofaces2.jpg" alt="" width="300" height="300" /></a></p>
<p>After exporting the STL and running it through skeinforge, there is a noticable difference in the filling patterns that are created. Here is an example of a layer produced by skeinforge now:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/skeinforgeafter.jpg"><img class="aligncenter size-full wp-image-254" title="skeinforge(after)" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/skeinforgeafter.jpg" alt="" width="715" height="493" /></a></p>
<p>The printer seems much happier while producing the objects as well. This is especially important, as loyalty is a key factor in the quest for world domination.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/06/10/cranky-skeinforge-internal-faces-and-a-much-happier-printer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stickzilla, or: Triangle Meshes Hate Us</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/06/10/stickzilla-or-triangle-meshes-hate-us/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/06/10/stickzilla-or-triangle-meshes-hate-us/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 18:24:35 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Blender]]></category>
		<category><![CDATA[hole in the triange mesh]]></category>
		<category><![CDATA[skeinforge]]></category>
		<category><![CDATA[Stickzilla]]></category>

		<guid isPermaLink="false">http://baseplate.org/blogs/osfa/?p=248</guid>
		<description><![CDATA[After we used Sprinklation to modify pictures into printer-friendly images, our next step was to give these Sprinkles a third dimension. For that we needed Blender, a vastly complex (but free!) 3D modeling program that lets you script in Python. One of the reasons we chose Python for this project in the first place was [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { size: 8.5in 11in; margin: 0.79in } 		P { margin-bottom: 0.08in } -->After we used Sprinklation to modify pictures into printer-friendly images, our next step was to give these Sprinkles a third dimension.  For that we needed Blender, a vastly complex (but free!) 3D modeling program that lets you script in Python.  One of the reasons we chose Python for this project in the first place was that so many CAD-type programs utilize it.</p>
<p>To script a 3D object you need to specify the coordinates of its vertices.  In the case of a Sprinkle- which is essentially a cube- eight of them.  But all we really need for <em>that</em> is the uppermost “origin” coordinate of each Sprinkle, and a Sprinkle&#8217;s length.  Those three elements are what we exported from our Python program as a text file- and then imported into Blender.  Once there we scripted the creation of each Sprinkle we were given, using an arbitrary value for the height of every one.  Changing this “z value” is something we&#8217;ll come back to later when we start exploring different topographical heights in our images.</p>
<p>This all sounds pretty straight-forward, but right here is about the time we started running into problems- all of which came up as marvelously cryptic error messages when we ran this Blender output through Skeinforge.  (Skeinforge is an open-source print-head mapping software that translates 3D models into something the Cupcake can use).</p>
<p>Our first problem had to do with a warped triangle-filled structure that we were getting instead of a clean, solid cube.  If you specify four vertices they should make a face, right?  I mean, a square face only has four vertices.  Turns out if you don&#8217;t list the vertices in order (clockwise or counter-clockwise), the entire thing twists itself up and then the computer explodes. (not really).</p>
<p>So for future reference, a “hole in the triangle mesh”, despite the fact that there aren&#8217;t supposed to be triangles in your image anywhere ever, means something along the lines of “you fail at playing connect-the-dots.”</p>
<p>Here are some pictures from Blender:</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/threeDstick.jpg"><img class="aligncenter size-full wp-image-249" title="threeDstick" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/threeDstick.jpg" alt="" width="500" height="300" /></a></p>
<p>We refer to him fondly as Stickzilla.</p>
<p><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/threeDstick2.jpg"><img class="aligncenter size-full wp-image-250" title="threeDstick2" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/threeDstick2.jpg" alt="" width="645" height="286" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/06/10/stickzilla-or-triangle-meshes-hate-us/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Advent of&#8230; the Sprinkle</title>
		<link>http://www.rockalypse.org/blogs/osfa/2010/06/03/the-advent-of-the-sprinkle/</link>
		<comments>http://www.rockalypse.org/blogs/osfa/2010/06/03/the-advent-of-the-sprinkle/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 22:06:49 +0000</pubDate>
		<dc:creator>Stephanie</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://baseplate.org/blogs/osfa/?p=237</guid>
		<description><![CDATA[Sara and I have returned for the summer session of Serious Programming Awesomeness, and we&#8217;re diving right into the world of 2d-to-3d transformations.  We&#8217;ve used Python and Blender together to take greyscale images and turn them into 3d constructs- this is going a long way toward bridging the gap between diagrams and tangible Cupcake-printed output. [...]]]></description>
			<content:encoded><![CDATA[<p>Sara and I have returned for the summer session of<span style="text-decoration: line-through"> Serious Programming</span> Awesomeness, and we&#8217;re diving right into the world of 2d-to-3d transformations.  We&#8217;ve used Python and Blender together to take greyscale images and turn them into 3d constructs- this is going a long way toward bridging the gap between diagrams and tangible Cupcake-printed output.</p>
<p>We have a long way to go toward a streamlined, elegant program, but the important thing is that we&#8217;re making great progress toward our first completely home-grown print job.  (Which means the beginning of scanned diagram prints, and <em>that</em> means using our doe-eyed little Cupcake printer to take over the world.  Aww, look at its cute opto-endstop wires spewing all over with happiness.)</p>
<p>Anyway, this is where the Sprinkle comes in.  Pixels are too small for a printer like the Cupcake to use- I mean, it&#8217;s possible, but it&#8217;d be sort of like using a fat marker to trace a line  and then an even thinner line, and expecting anyone to tell the difference.  At this point it&#8217;s much more efficient to work with the Cupcake instead of encouraging it to explode in gear-jittering frustration.</p>
<p>The Sprinkle is a construct that we came up with to simplify the breaking-up of pictures.  It&#8217;s like a pixel, but bigger.  In Python, we analyze a picture to determine which lines warrant printing, based on how much of a Sprinkle is &#8220;covered&#8221;.  It&#8217;s sort of like laying a transparent sheet of graph paper over a diagram and then checking which boxes are darkened past a certain threshold.  If a Sprinkle <em>is</em> chosen to become part of something so much bigger and more noble than itself, then its coordinates are stored and its contents subsequently blackened entirely, and mapped onto a second image.  The result is a somewhat blocky version that is a) simplified, and b) useful for the next step- adding a third dimension.</p>
<p>Both the Sprinkle size and the threshhold percentage (what decides whether or not a Sprinkle is going to be used) can be changed, giving us a little refinement in Sprinklation.  Here are some pictures.  I did not draw that stick figure and take no responsibility for its  face.</p>
<div id="attachment_238" class="wp-caption aligncenter" style="width: 173px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/stick.png"><img class="size-full wp-image-238" title="original" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/stick.png" alt="" width="163" height="392" /></a><p class="wp-caption-text">Original</p></div>
<div id="attachment_240" class="wp-caption aligncenter" style="width: 173px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/s7rgb150c701.jpg"><img class="size-full wp-image-240" title="s7rgb150c70" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/s7rgb150c701.jpg" alt="" width="163" height="388" /></a><p class="wp-caption-text">Sprinkle size, 7 pixels.  Threshold 70%</p></div>
<div id="attachment_241" class="wp-caption aligncenter" style="width: 173px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/s7rgb150c30.jpg"><img class="size-full wp-image-241" title="s7rgb150c30" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/s7rgb150c30.jpg" alt="" width="163" height="389" /></a><p class="wp-caption-text">Reduced threshold to 30%</p></div>
<div id="attachment_242" class="wp-caption aligncenter" style="width: 173px"><a href="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/s20rgb150c30.jpg"><img class="size-full wp-image-242" title="s20rgb150c30" src="http://www.rockalypse.org/blogs/osfa/wp-content/uploads/2010/06/s20rgb150c30.jpg" alt="" width="163" height="388" /></a><p class="wp-caption-text">Increased Sprinkle size to 20 pixels.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.rockalypse.org/blogs/osfa/2010/06/03/the-advent-of-the-sprinkle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
