]> git.quilime.com - notes.git/commitdiff
Organizing and styling.
authorGabriel Dunne <gdunne@quilime.com>
Wed, 30 Apr 2014 00:00:59 +0000 (17:00 -0700)
committerGabriel Dunne <gdunne@quilime.com>
Wed, 30 Apr 2014 00:00:59 +0000 (17:00 -0700)
_config.yml
_layouts/default.html
_layouts/post.html
_posts/2014-04-23-gh-td.markdown
_posts/2014-04-24-generativeforms-projectionmapping.markdown [deleted file]
_posts/2014-04-24-tetra-field.markdown [new file with mode: 0644]
_posts/2014-04-24-woodmitres.markdown
css/letter_gothic.ttf [new file with mode: 0755]
css/main.css
index.html
publish.sh

index aea8c540e21ce7dc2a95c2ac53db966a4a44fa3d..e3cbc1025f3018baa6b8a1580ff063d8c985241b 100644 (file)
@@ -1,6 +1,9 @@
-name : process notes
+name : notes
+author: Gabriel Dunne
+author_url : http://gabrieldunne.com
+author_email : gabe@gabrieldunne.com
 markdown : redcarpet
 pygments : true
-permalink : /:month-:day-:year/:title.html
+permalink : /:title.html
 baseurl : /process
 exclude: [ publish.sh ]
\ No newline at end of file
index 84a81e4480b049305cbd9894c3ce393785cef4e9..a782cc81e89342adfb1074ab4deae431923e9f66 100644 (file)
@@ -5,32 +5,24 @@
         <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
         <title>{{ page.title }}</title>
         <meta name="viewport" content="width=device-width">
-
-        <!-- syntax highlighting CSS -->
         <link rel="stylesheet" href="{{ site.baseurl }}/css/syntax.css">
-
-        <!-- Custom CSS -->
         <link rel="stylesheet" href="{{ site.baseurl }}/css/main.css">
-
     </head>
+
     <body>
 
         <div class="site">
+          {{ content }}          
+        </div>
 
+        <div class="sidebar">
           <div class="header">
-            <h1 class="title"><a href="{{ site.baseurl }}">{{ site.name }}</a></h1>
-          </div>
-
-          {{ content }}
-
-          <div class="footer">
-            <p>
-              &copy {{ site.time | date : "%Y" }} <a href="http://gabrieldunne.com">Gabriel Dunne</a>
-            </p>
-          </div>
+            <span class="title">&larr; <a href="{{ site.baseurl }}">{{ site.name }}</a></span>
+          </div>        
         </div>
 
         <script src="{{ site.baseurl }}/js/script.js"></script>
+
     </body>
 </html>
 
index 62d329357f03c76973f301db7166a725bca73c1a..8b8516126da2bb227e8afdbcc79ef5484a9f2305 100644 (file)
@@ -1,9 +1,12 @@
 ---
 layout: default
 ---
-<h2>{{ page.title }}</h2>
+<h1>{{ page.title }}</h1>
 
-<p class="meta">{{ page.date | date_to_string }}, by {{ page.author }}</p>
+<p class="meta">
+{{ page.date | date: "%Y/%m/%d" }} <br />
+{{ site.author }}
+</p>
 
 <div class="post">
 {{ content }}
index 8328d3f2ce3dd4da23ec93ba495b72b7836803e0..77bba6278006a18b6ddd9c84f1421fc9a5a4831c 100644 (file)
@@ -3,30 +3,26 @@ layout: post
 title:  "Grasshopper -> TouchDesigner Bridge"
 date:   2014-04-23
 categories: articles
-author : Gabriel Dunne
 ---
 
-by Gabriel Dunne
-
 ## Abstract
 
-A proof-of-concept patch that sends polygon mesh geometry from Grasshopper to TouchDesigner realtime via OSC.
-
-## Software
-[Rhino3D](http://rhino3d.com)  
-[Grasshopper3D](http://www.grasshopper3d.com/)  
-[TouchDesigner](https://www.derivative.ca/)  
-
-## Grasshopper Plugins
-[gHowl](http://www.grasshopper3d.com/group/ghowl)  
-[GhPython](http://www.food4rhino.com/project/ghpython)  
-
-
+A proof-of-concept patch that sends polygon mesh geometry from Grasshopper to TouchDesigner realtime via OSC. The ability to share mesh data between Grasshopper and TouchDesigner allows for a streamlined workflow when projection-mapping geometry. It eliminates a mesh export/import step, and doesn't rely on TouchDesigner's mesh editing tools. It streamlines the process of fabricating objects, as it closely links the fabrication process of the form to the projection mapping process. Grasshopper, a parametric geometry environment, allows for great control over the verticies, planes, and normals of a 3D mesh, which gets sent to the TouchDesigner graphics environment. Any changes to a mesh done in Grasshopper translates to TouchDesigner in real time. This is a proof of concept and unoptomized for large meshes.
 
+### Software
+- [Rhino3D](http://rhino3d.com)
+- [Grasshopper3D](http://www.grasshopper3d.com/)
+  - [gHowl](http://www.grasshopper3d.com/group/ghowl)
+  - [GhPython](http://www.food4rhino.com/project/ghpython)
+- [TouchDesigner](https://www.derivative.ca/)
 
-The ability to share mesh data between Grasshopper and TouchDesigner allows for a streamlined workflow when projection-mapping geometry. It reduces the amount of mesh import/exporting, and doesn't rely on TouchDesigner for mesh editing, which is where Grasshopper excels. Additionally, it streamlines the process of fabricating objects, as it closely links the fabrication process of the form to the projection mapping process. Grasshopper, a parametric geometry environment, allows for great control over the verticies, planes, and normals of a 3D mesh, which gets sent to the TouchDesigner graphics environment via OSC. Any changes to a mesh done in Grasshopper will translate to TouchDesigner in real time. This is a proof of concept and unoptomized for large meshes.
+### Screenshots
 
+#### Rhino/Grasshopper
+![](https://raw.githubusercontent.com/quilime/gh-td/master/screenshots/sender_gh.PNG)
 
-TODO: [ screenshot ]
+#### TouchDesigner
+![](https://raw.githubusercontent.com/quilime/gh-td/master/screenshots/receive_01.PNG)
 
-TODO: [ tutorial ]
+### Source
+[https://github.com/quilime/gh-td](https://github.com/quilime/gh-td)
diff --git a/_posts/2014-04-24-generativeforms-projectionmapping.markdown b/_posts/2014-04-24-generativeforms-projectionmapping.markdown
deleted file mode 100644 (file)
index 7bcb472..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
----
-layout: post
-title:  "Projection Mapping Generative Forms with Grasshopper and TouchDesigner"
-date:   2014-04-24
-categories: articles
-author: Gabriel Dunne
----
-
-![Finished](https://farm6.staticflickr.com/5505/11228006956_0a33de14b9_c.jpg)
-
-This article is a documentation of a process for making generative geometric forms for use in projection mapping. 
-
-# Requirements
-
-## Software
-- [Rhino3D](http://rhino3d.com)
-- [Grasshopper3D](http://www.grasshopper3d.com/)  
-  - [gHowl](http://www.grasshopper3d.com/group/ghowl)  
-  - [GhPython](http://www.food4rhino.com/project/ghpython)  
-- [TouchDesigner](https://www.derivative.ca/)
-
-## Hardware
-- Digital Projector
-- Windows PC with TouchDesigner supported videocard.
-
-## Fabrication Tools
-- Laser Cutter
-
-## Materials
-- 10mm Plywood Stock
-- Cyanoacrylate Super Glue
-- Neodynimum Magnets
-- Angle Brackets
-- Gap-filling paint/primer
-
-I arrived at this design during an experiment on rapid fabrication closely linked with the process of projection-mapping. It consists of a series of projection-mapped truncated tetrahedrons made out of 10mm plywood. They vary in size, orientation, and all have an arbirary boolean intersection with a vertical plane, allowing them all have unique placements on the wall. Rhino/Grasshopper was used to generate the geometry, and TouchDesigner was used for the projection graphics. The polygon mesh information used for projections are received by TouchDesigner from Grasshopper via my [Grasshopper -> TouchDesigner Bridge]({% post_url 2014-04-23-gh-td %}).
-
-This iteration does not include a solution mitered corners, due to the physical tendancies of the laser cutter, which simplifies the fabrication process considerably. My current process is designing a precise, repeatable solution for generating mitres when fabricating polygonal shapes. 
-
-# Design
-
-The geometry was created in Grasshopper.
-
-[grasshopper patch/screenshot]
-
-Grasshopper process.
-
-# Fabrication Process
-
-![Lasering](https://farm4.staticflickr.com/3698/10585763365_b0047bf023_c.jpg)
-
-Forms were cut with a LaserSaur laser cutter from sheets of lightweight, low-grade 10mm ply.
-
-![Gluing](https://farm8.staticflickr.com/7308/10585766255_f3b95369ae_c.jpg)
-
-Panels are superglued together by hand. The interior support structure relies on two angle wedges, which are superglued to the interior of the forms.
-
-![Painting](https://farm8.staticflickr.com/7430/10585792186_6a42ecb673_c.jpg)
-
-After the glue dries (very I gave them multiple coats of white primer and gap filler.
-
-# Installation
-
-Ultra strong neodynium magnets were used as a mounting solution. I tried the methods of inserting large-headed nails or screws into the wall, or simply gaff-taping an opposing magnet. The gaff-tape method was a temporary, but works.
-
-[magnet shot]
-
-# Projection Mapping
-
-[touch designer graphics page/screenshot]
-
-
diff --git a/_posts/2014-04-24-tetra-field.markdown b/_posts/2014-04-24-tetra-field.markdown
new file mode 100644 (file)
index 0000000..071c673
--- /dev/null
@@ -0,0 +1,88 @@
+---
+layout: post
+title:  "Tetra Field"
+date:   2014-04-24
+categories: articles
+author: Gabriel Dunne
+---
+
+![Finished](https://farm6.staticflickr.com/5505/11228006956_0a33de14b9_c.jpg)
+
+*Tetra Field*   
+Gabriel Dunne  
+2014   
+plywood, projector, touchdesigner, grasshopper
+
+
+## Introduction
+
+*Tetra Field* consists of a series of projection-mapped truncated tetrahedrons laser-cut from 10mm bitch ply. They vary in size, orientation, truncation, and all have an arbirary boolean intersection with a vertical plane, resulting in each having unique placement on the wall. 
+
+I arrived at this design during an experiment on rapid fabrication closely linked with the process of projection-mapping. 
+
+Rhino/Grasshopper was used to generate the geometry, and TouchDesigner was used for the projection graphics. The polygon mesh information  from Grasshopper is shared by TouchDesigner from via my [Grasshopper -> TouchDesigner Bridge]({% post_url 2014-04-23-gh-td %}). This allows the fabrication process of the object, and and the projection graphics to be highly linked and related. 
+
+Further Software Iterations: This project did not solve the problem of aligning the projector to the sculptures. For this project, projecting and capturing GrayCode patterns would have been the most reliable method, but the shape of the objects was so simple, I mounted them on the wall, and knowing the projector distance, I oriented the graphics manually. For future iterations, I want to experiment with embedded fiber-optics in verticies that would be tracked with an IR camera for a precise, real-time alignment. A huge challenge involved in projection mapping objects is the sheer amount of time it takes to align projections, and creating a real-time mapping solution allows for articulated and or moving installations.
+
+Future Fabrication Iterations: This iteration does not include a solution mitered corners, due to the physical tendancies of the laser cutter, which simplifies the fabrication process considerably. My current process is designing a precise, repeatable solution for generating mitres when fabricating polygonal shapes. However, the lack of mitres in this design reveals a perfect channel between faces that highlights the polygon edge.
+
+## Materials
+
+### Software
+- [Rhino3D](http://rhino3d.com)
+- [Grasshopper3D](http://www.grasshopper3d.com/)
+  - [gHowl](http://www.grasshopper3d.com/group/ghowl)
+  - [GhPython](http://www.food4rhino.com/project/ghpython)
+- [TouchDesigner](https://www.derivative.ca/)
+
+### Hardware
+- DLP or LCD Projector
+- Windows PC with TouchDesigner-supported videocard (NVidia).
+
+### Fabrication Tools
+- Laser Cutter
+
+### Material List
+- 10mm Plywood Stock trimmed to fit laser bed
+- Cyanoacrylate Super Glue
+- Neodynimum Magnets
+- Angle Brackets
+- Gap-filling paint/primer
+- silicon caulk
+- gaffers tape
+
+
+
+# Design
+
+Geometry was created in Grasshopper via the LunchBox toolkit.
+
+[grasshopper patch/screenshot]
+
+Grasshopper process.
+
+# Fabrication Process
+
+![Lasering](https://farm4.staticflickr.com/3698/10585763365_b0047bf023_c.jpg)
+
+Forms were cut with a LaserSaur laser cutter from sheets of lightweight, low-grade 10mm ply.
+
+![Gluing](https://farm8.staticflickr.com/7308/10585766255_f3b95369ae_c.jpg)
+
+Panels are superglued together by hand. The interior support structure relies on two angle wedges, which are superglued to the interior of the forms.
+
+![Painting](https://farm8.staticflickr.com/7430/10585792186_6a42ecb673_c.jpg)
+
+After the glue dries (very I gave them multiple coats of white primer and gap filler. The brazing of the laser on the plywood is a tough surface to paint completely white, and required multiple coats.
+
+# Installation
+
+Ultra strong neodynium magnets were used as a mounting solution. I tried the methods of inserting large-headed nails or screws into the wall, or simply gaff-taping an opposing magnet. The gaff-tape method was a temporary, but works.
+
+[magnet shot]
+
+# Projection Mapping
+
+[touch designer graphics page/screenshot]
+
+
index 5ba55aca62e62b63af56176df1588d9cd72f9978..35d9cacce4391f78275cd3650a14fb0ce2a7935e 100644 (file)
@@ -1,12 +1,12 @@
 ---
 layout: post
-title:  "Creating Arbitrary Mitre Angles in Wood Panels"
+title:  "Arbitrary Mitre Angles for Wood"
 date:   2014-04-24
 categories: articles
 author: Gabriel Dunne
 ---
 
-# Truncated Tetrahedron Stool/Table
+## Truncated Tetrahedron Stool/Table
 
 I'm continuing my interations with the Tetrahedron model. I like using it for experiments because of it's a very basic "root" shape. This article will cover the creation of a truncated tetrahedron shape out of 3/4" material, with mitred joins.
 
@@ -87,7 +87,7 @@ Tetrahedron!
 
 
 
-# Truncation
+## Truncation
 
 Now, we need to truncate our shape.
 
@@ -156,7 +156,7 @@ Then, I make trace all the edges, do 3pt orients, and align them to the cutting
 
 
 
-# Creating Thickness
+## Creating Thickness
 
 We need to:
 1. Offset mesh by .75
@@ -168,7 +168,7 @@ you only need to do this for each individual piece, and then duplicate them.
 
 
 
-# Measuring the Mitre Angles
+## Measuring the Mitre Angles
 
 We need to draw some guidlines for measuring perpendicular to the edge of the face.
 
@@ -224,7 +224,8 @@ We have one more special angle to cut, for the parts of the form that rest on th
 
 We're done cutting!
 
-# Assembly
+
+## Assembly
 
 We'll work upside down, and build the form up. Place the top of the form upside down on the worksurface
 
diff --git a/css/letter_gothic.ttf b/css/letter_gothic.ttf
new file mode 100755 (executable)
index 0000000..75b31b1
Binary files /dev/null and b/css/letter_gothic.ttf differ
index 8545e06ed8069d9aca6110fcc7bf97f1727eae85..5217ea4cf958bbbfeb4b54935bd992dd399a6a32 100755 (executable)
   padding: 0;
 }
 
+@font-face
+{
+  font-family: lettergothic;
+  src: url(letter_gothic.ttf);
+}
+
 html, body { height: 100%; }
 
 body {
-  background-color: #FFF;
-  font: 14px sans-serif;
+  background-color: #eee;
+  font: 12px menlo, "andale mono", monospace, sans-serif;
 }
 
-h1, h2, h3, h4, h5, h6 {
+h1,h2,h3, h4, h5, h6 {
   font-size: 1em;
+  color:#000;
+  line-height:1em;
+  font-weight:bold;
+  margin: 1em 0;
+}
+h1 { 
+  margin:1em 0; 
+  font-size:2.8em;
+  padding-bottom:0.1em;
+  text-align:center;
+  font-family:lettergothic;
+  border-bottom:1px solid #aaa;
+}
+h2, h3 { 
+  text-align:center;
+  margin:3em 0 2em 0; 
+  font-size:1em;
+  text-decoration:underline;
+}
+h3 {
+  text-align:left;
+  margin:1.5em 0 0.5em;
 }
 
-h1 { margin: 2em 0; }
-h2 { margin-top:1em; }
 p { margin: 1em 0; }
 
 a         { color: #00a; }
 a:hover   { color: #000; }
 a:visited { color: #a0a; }
 
+blockquote { padding:1em; font-style:italic; }
+
+p { text-align:left; }
+
+
 /*****************************************************************************/
 /*
 /* Home
 /*
 /*****************************************************************************/
 .posts {
+  margin:0;
+  padding:0;
   list-style-type: none;
   margin-bottom: 2em;
 }
 
 .posts li {
-  line-height: 1.75em;
+  padding-bottom: .2em;
 }
 
 .posts span {
@@ -48,6 +81,18 @@ a:visited { color: #a0a; }
   font-family: Monaco, "Courier New", monospace;
 }
 
+/* sidebar */
+.sidebar {
+  position:fixed;
+  top:2em;
+  left:1em;
+  text-align:left;
+}
+.sidebar .meta {
+  text-align:left;
+}
+
+
 /*****************************************************************************/
 /*
 /* Site
@@ -55,8 +100,9 @@ a:visited { color: #a0a; }
 /*****************************************************************************/
 
 .site {
-  margin: 2em 8em 2em 2em;
-  max-width:800px;  
+  margin: 2em auto 2em auto;
+  padding: 0 6em;
+  max-width: 800px;
   line-height: 1.5em;
 }
 
@@ -93,6 +139,7 @@ a:visited { color: #a0a; }
 
 .meta {
   color: #aaa;
+  text-align:center;
 }
 
 .footer {
@@ -148,6 +195,8 @@ a:visited { color: #a0a; }
   border: none;
 }
 
+.post img { max-width:800px; }
+
 /* terminal */
 .post pre.terminal {
   border: 1px solid #000;
index 43b8fb0bee8e6de33582376b71b10c1d67549bb5..6d860a90f9ef8d8319964ea63c7f51f3e667e155 100644 (file)
@@ -8,11 +8,11 @@ title: notes
   <ul class="posts">
     {% for post in site.posts %}
       <li>
-      <span>{{ post.date | date_to_string }}</span>
-      &mdash;
       <a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a>
+      &mdash;
+      <span>{{ post.date | date_to_string }}</span>
       </li>
     {% endfor %}
   </ul>
-  
+
 </div>
index 12091a3154b12a9262823eee43df3e475b27191b..138a90b3956463e47390c6c4a0920cc0aca72049 100755 (executable)
@@ -2,4 +2,5 @@
 
 jekyll build
 
+ssh quilime@quilime.com 'rm -rf /home/quilime/gabrieldunne-site/process'
 rsync -avz _site/ quilime@quilime.com:/home/quilime/gabrieldunne-site/process/ --delete