diff --git a/config.toml b/config.toml index c424339..63beec9 100644 --- a/config.toml +++ b/config.toml @@ -1,5 +1,5 @@ -name = "From the Office of the Chief Sundries Officer and Head of R&D" -title = "From the Office of the Chief Sundries Officer and Head of R&D" +name = "Office of the Chief Sundries Officer and Head of R&D" +title = "From the Desk of the Chief Sundries Officer and Head of R&D" # The URL the site will be built for base_url = "https://proclamations.nebcorp-hias.com" diff --git a/content/sundries/a-very-digital-artifact/index.md b/content/sundries/a-very-digital-artifact/index.md index 3337a6f..d7243b3 100644 --- a/content/sundries/a-very-digital-artifact/index.md +++ b/content/sundries/a-very-digital-artifact/index.md @@ -3,7 +3,7 @@ title = "A Thoroughly Digital Artifact" slug = "a-thoroughly-digital-artifact" date = "2023-01-17" [taxonomies] -tags = ["3dprinting", "CAD", "GIS", "CNC", "art", "sundries", "proclamation"] +tags = ["3dprinting", "CAD", "GIS", "CNC", "art", "sundry", "proclamation", "research"] +++ ![A plywood slab carved with CNC into a topographic representation of California][main_image] @@ -87,10 +87,11 @@ The CNC shop had requested a model in a format called [ST**P**](https://www.fastradius.com/resources/everything-you-need-to-know-about-step-files/). `.stp` is the extension for a "STEP" file; STEP is supposed to be short for "standard for the exchange of product data", so someone was playing pretty fast and loose with their initialisms, but I -digress. The main thing about STEP files is that CAD programs can really easily convert them -into their native internal solid body representation, which allows easy manipulation. Another thing -about them is that a CAD program can usually turn a manifold mesh into an STP file, unless the mesh is -too complicated and your computer doesn't have enough RAM (*note: foreshadowing*[^chekhovs-ram]). +digress. The main thing about STEP files is that CAD programs can really easily convert them into +their native internal solid body representation, which allows easy manipulation. Another thing about them is that a CAD program can usually turn a manifold mesh +into an STP file, unless the mesh is too complicated and your computer doesn't have enough RAM +(*note: foreshadowing*[^chekhovs-ram]). ![an overly-complicated mesh of a cube][meshy-cube] *
this cube's mesh has too many vertices and edges, I hope my computer has enough @@ -554,8 +555,8 @@ different tools. This also meant that I would run into limits due to translation overhead when going between them. Let me explain. I'd get a mesh in Blender, export it to a neutral mesh format like [OBJ](https://en.wikipedia.org/wiki/Wavefront_.obj_file) that both programs understand well, and it -would be a 60 megabyte file. My computer has 32 **giga**bytes, more 500 times more memory than -that, so you'd think it would not be a problem. +would be a 60 megabyte file. My computer has 32 **giga**bytes, more than 500 times more memory than +that, so you'd think it would not be a problem. The act of asking FreeCAD to import that OBJ file as a *mesh*, and not even as a solid body, caused the memory use to go to 21 gigabytes. This is a lot, but the computer still had plenty of room left @@ -566,7 +567,8 @@ When I attempted to convert that mesh into a solid body, though, memory use ball encompass all available RAM, and my system slowed to a nearly imperceptible crawl until my frantic `ctrl-c`s were finally registered by the [signal handlers](https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html) in FreeCAD -before I could use it again. This happened a lot. +before I could use it again. This happened *a lot*. At last, the prophecy had +come to pass. I went through many rounds of attempting to clean up the mesh and reduce its complexity, but I don't have many notes or intermediate artifacts from this time. A lot of that was being a beginner at both @@ -581,12 +583,13 @@ conspired to make this portion of the process a total slog with very little to s Finally, after a couple weeks of trying and failing to get something into FreeCAD that I could then work with (like melding it with a thick base and trimming that base to follow the shape of the -state), I had had enough. I have some notes from the time: +state), I had had enough. I have some notes from the time, from right after I'd started a test print +of my latest model: -> I'm finally printing something out. I've given up on converting it into a parametric -CAD-like object; it seems this is a Hard Problem, but I'm not sure why. My goal with doing that was -to give a parametric CAD file to a local CNC milling shop, per their request, since when I suggested -a mesh-based file (STL), the guy was like "I can't do much manipulation with that to make it more +> I'm finally printing something out. I've given up on converting it into [something CAD-friendly]; +it seems this is a Hard Problem, but I'm not sure why. My goal with doing that was to give a +CAD-friendly file to a local CNC milling shop, per their request, since when I suggested a +mesh-based file (STL), the guy was like "I can't do much manipulation with that to make it more manufacturable, so a real CAD file would be best". > > But at least with an STL file, I can print it myself. So that's going now, we'll see how it turns @@ -598,13 +601,13 @@ When that print was done, here's what it looked like: ![a piece of literal dogshit][crappy_test_print] -In case you were not revolted enough, I invite you to cast your gaze upon this eldritch abomination: +In case you were not revolted enough, then please allow me to direct your gaze upon this eldritch abomination: ![close-up of extremely bad print results][crappy-close-up] As bad as it looked, it felt even worse to touch. Setting aside the hideous base with its weird artifacts due to those areas not being a single flat polygon, but rather several polygons that were -not parallel or co-planar (modeling artifact), there was just too much high-frequency detail in the +not parallel or co-planar (modeling artifact), there was still just too much high-frequency detail in the terrain, and it was a total mismatch with the 3D printed medium. The real thing was going to be carved out of wood by a [CNC @@ -634,11 +637,12 @@ simplification](https://graphics.stanford.edu/courses/cs468-10-fall/LectureSlide the geometry was practically homeopathic. ![the final model in blender][final-model] +*
by the principles of homeopathy, the fewer the vertices, the more potent the mesh
* Check out this close-up of Mt Shasta: ![close-up of Shasta in the final model][final-shasta] -*
a less lonely Mt Shasta
* +*
a chonkier, less lonesome Mt Shasta
* Present, but not obnoxious. I printed out another test print to make sure it looked as good in physical reality: @@ -652,25 +656,158 @@ can still look at and interact with a 3D model of it in the browser on that site of neat. A couple different strangers uploaded pictures of their prints of it, which I thought was cool! +I brought the mesh into FreeCAD and finally was able to create the STP[^fancy-iges] file the shop had +asked for, a mere twenty-five days after I'd last spoken with them. + # Final cut -# Thank yous, lessons learned, and open questions +I emailed the file to the shop, and said, -thank you: wife, steve at the shop, friends indulging my oversharing, NASA, Blender, FreeCAD +> As modeled, there's probably more high-frequency detail in the mountains than is necessary, as I'm +> going for something that feels nice to the touch so smoother is better. It's also modeled at a +> slightly larger scale than necessary, though not too far off (it's 500x577mm, and I'm interested +> in the 400-500mm range for width; the relief height is in the 20-30mm range depending on scale). I +> was imagining it would be carved with contour cuts in some thick nice ply, though I'm happy to +> hear better ideas; I have literally no experience with making something like this. -lesson: I started basically knowing nothing, but now retracing my steps I feel like I understand everything -much better than when I was first racing through the material trying to get to a point where I could -just produce the artifact. +The shop came back with, -lesson: pipeline of geotiff -> mask -> scaled heightmap -> mesh -> solid body +> I can’t smooth out the cuts, I can only cut what is there. That being said, if I use a rounded cutter, it will round out the valleys but not the peaks as it won’t go into areas that it can’t reach. +> +> Hope that makes sense. +> +> Let me know if this will work for you or not. If you think it will, I will try to program the toolpaths and see what it will look like. -lesson: see whole article about GIS stuff +I definitely didn't want to lose the sharp seams in the bottoms of the valleys. -question: could I do it better in blender? freecad? could I have used gdal_polygonize (doubtful, -given how much I had to blur and decimate)? +> Me: I guess what I was really saying is that if some detail is lost due to using a larger cutting +head that's probably fine. I wouldn't necessarily want the valleys to be made more concave than they +already are, though. Does that make sense? +> +> Shop: Yes, that makes sense. I can use a Vee cutter and it will cut the sharp edges in the +valleys." + +It felt nice to be understood! Next came the issue of cost: + +> I ran the numbers on both sizes using a .01” step-over cut, meaning that is how far apart the +> finish cuts will be from each other. +> +> You will probably see some tool marks depending on what type of material is used. +> +> The larger one is coming in at around $850.00 and the 12” one at $350.00. +> +> I can go tighter, say .005” step-over and it will probably not show many marks but I won’t know +> until I run it. +> +> If I do that it will double the cut time so close to doubling the price. + +One of the things that my wife had said she wanted to do with the carving of California was sand and +finish it herself, so the coarser 0.01-inch step-over cut was not really a problem. Even the +0.005-inch cut would still require a final sanding before staining or sealing. + +The "larger one" the shop referred to was for a 20-inch wide carving, which would be huge anyway; 12 +inches was fine. Still, $350 was at the top of what I had hoped/expected to spend. I hoped it was +worth it! + +After a few more back-and-forths and days, I got a message from the shop saying it was ready. They +also said, + +> I decided to run these with half the original step-over, which means it takes twice as long but +> the finish is almost smooth. I think you will be pleased with it. + +Whoa! This meant he had used the 0.005-inch cutting resolution, and the job had taken twice as long +as originally quoted. Like the [kind and generous tailor from *The Hudsucker +Proxy*](https://getyarn.io/yarn-clip/0f78e11f-df94-42e4-8bdf-b11c39326f7c), he had given me the +double-stitch anyway, even though I had insisted that single stitch was fine. I was very excited and +grateful, and couldn't wait to see it. + +## Pics or it didn't happen + +When I got there, it was almost exactly what I had imagined and hoped it would be. Obviously, you've +seen the photo at the top of the page, but please enjoy this CNC-carved topographic California porn. + +![portrait of the whole state][wood-portrait] +*
some nice soft lighting
* + +![our old friend, the Sutter Buttes][wood-buttes] +*
sutter buttes, we meet again
* + +![down low view, like the shot from Blender][wood-blender] +*
recognize this angle, from blender?
* + +![close up of Shasta][wood-shasta] +*
lookin' good, shasta
* + +I wasn't the only one pleased with it; my wife was delighted when she saw it. + +MISSION ACCOMPLISHED, HAPPY *belated* BIRTHDAY! + +# Thank yous + +Obviously, I have tons of people to thank for their help with this, either directly or +indirectly. First and foremost, my wife, for everything but especially the inspiration and also +patience with me during this process. + +A close second goes to Steve at [Triumph CNC](https://www.triumphcnc.com/). He asked me what I was +going to do with it, and when I said give it to my wife as a gift, he said, "Oh, that's great! I +feel even better about using the smaller step-over now." If you need some CNC milling done in Los +Angeles, maybe give them a call! + +Along the way during this journey I got a lot of feedback and suggestions from friends and +colleagues, so thank you, 'rades[^short-for-comrades]! + +Of course, this would all have been unthinkably difficult not so long ago, but thanks to things like +NASA's missions and public GIS datasets, almost anyone can do something like this. + +And not just public, government data and organizations, but private, passion-driven free software +projects like Blender and FreeCAD rival functionality available only in multi-thousand-dollar +commercial packages. I'm in awe of their accomplishments; they are true wonders of the modern world. + +# Things I learned, and some lessons + +I said early on that I knew basically nothing about any of this, and that was true. I had had some +earlier casual experience with both Blender and FreeCAD, and many, many years ago I had taken a +semester of engineering drafting my first year of college. But I knew basically nothing about GIS, +about the different map projections, about shapefiles, about any of the tools or jargon. Likewise, +I have no experience or instruction in any kind of CNC milling; my scant 3D printing experience +doesn't really apply. + +This article is as close as I could get to serializing nearly everything I had to learn and do to +create that carving. + +And at the time it was happening, it didn't feel like I was retaining all of it, or that I really, +truly understood everything I had done; I was hurrying as fast as I could toward a particular +goal. But in the course of writing this, I was basically retracing my steps, and found that I really +did have a pretty good handle on it. One of my favorite things to do is learn stuff, so this was a +great outcome for me! + +If I were to do this again, or if I were starting for the first time with the benefit of someone +else's experience, there are obviously a few things I would do differently. First off, I'd see if I +could find a lower-resolution dataset. One arc second is way overkill; at the scale of a topo +carving that you can hold in your hands, a resolution of several arc *minutes* (one arc minute is +one [nautical mile](https://en.wikipedia.org/wiki/Nautical_mile), which is about 1.1 regular +(terrestrial?) miles) would probably be enough. + +I'd also use the USGS [national map downloader](https://apps.nationalmap.gov/downloader/) site to +get just the California data; you can upload a shapefile and it'll give you back a masked +geotiff. If I had started from that, it would have shaved at least two weeks off the time it took me +to make the thing; I could have jumped immediately into being frustrated in Blender and FreeCAD. + +Speaking of, I wish I could give some guidance on effectively using Blender and FreeCAD, but that's +a journey only you can plot. That's probably not true, but I still feel like a doofus in those +tools, so I don't feel like it's worth anyone's time to hear from me about them. Good luck in your +quest! --- +[wood-portrait]: wood-full-portrait.jpg "portrait shot of the whole carving" + +[wood-buttes]: wood_sutter_buttes.jpg "our old friend, the Sutter Buttes" + +[wood-blender]: wooden_like_blender.jpg "down low view, like the shot from Blender" + +[wood-shasta]: wooden_shasta_close-up.jpg "close up of Shasta" + [final-print]: final_printed.jpg "the final test print of the final model" [final-shasta]: final_shasta.png "close-up of Shasta in the final model" @@ -744,3 +881,8 @@ heightmap shown above, so you can imagine all the dead-ends I went down and did write-up. [^zero-forty-oneth]: I think this was just the first fractional value that I tried, and it was fine. + +[^fancy-iges]: I actually produced an [IGES](https://en.wikipedia.org/wiki/IGES) file; STP is basically +fancy IGES, and my model didn't include the extra info in STP files like material and color anyway. + +[^short-for-comrades]: pronounced "rads", and is short for "comrades". diff --git a/content/sundries/a-very-digital-artifact/wood-full-portrait.jpg b/content/sundries/a-very-digital-artifact/wood-full-portrait.jpg new file mode 100644 index 0000000..ded9fae Binary files /dev/null and b/content/sundries/a-very-digital-artifact/wood-full-portrait.jpg differ diff --git a/content/sundries/a-very-digital-artifact/wood_sutter_buttes.jpg b/content/sundries/a-very-digital-artifact/wood_sutter_buttes.jpg new file mode 100644 index 0000000..839a55b Binary files /dev/null and b/content/sundries/a-very-digital-artifact/wood_sutter_buttes.jpg differ diff --git a/content/sundries/a-very-digital-artifact/wooden_like_blender.jpg b/content/sundries/a-very-digital-artifact/wooden_like_blender.jpg new file mode 100644 index 0000000..ef61b8c Binary files /dev/null and b/content/sundries/a-very-digital-artifact/wooden_like_blender.jpg differ diff --git a/content/sundries/a-very-digital-artifact/wooden_shasta_close-up.jpg b/content/sundries/a-very-digital-artifact/wooden_shasta_close-up.jpg new file mode 100644 index 0000000..5fed889 Binary files /dev/null and b/content/sundries/a-very-digital-artifact/wooden_shasta_close-up.jpg differ